@cybermp-community/server-types 1.0.6 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,21 +1,19 @@
1
- MIT License
1
+ Creative Commons Attribution-ShareAlike 4.0 International
2
2
 
3
3
  Copyright (c) 2026 CyberMP Community Developers
4
4
 
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
5
+ This work is licensed under the Creative Commons Attribution-ShareAlike 4.0
6
+ International License. To view a copy of this license, visit
7
+ https://creativecommons.org/licenses/by-sa/4.0/ or send a letter to
8
+ Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
11
9
 
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
10
+ You are free to:
11
+ - Share: copy and redistribute the material in any medium or format
12
+ - Adapt: remix, transform, and build upon the material for any purpose,
13
+ even commercially
14
14
 
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
15
+ Under the following terms:
16
+ - Attribution: You must give appropriate credit, provide a link to the
17
+ license, and indicate if changes were made.
18
+ - ShareAlike: If you remix, transform, or build upon the material, you
19
+ must distribute your contributions under the same license as the original.
package/README.md CHANGED
@@ -30,4 +30,4 @@ This repository is developed by [CyberMP Community Developers](https://gitlab.co
30
30
 
31
31
  ## ⚖️ License
32
32
 
33
- This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
33
+ This project is licensed under the СС BY-SA 4.0 License - see the [LICENSE](LICENSE) file for details.
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cybermp-community/server-types",
3
- "version": "1.0.6",
3
+ "version": "1.1.1",
4
4
  "description": "TypeScript type definitions for the CyberMP server-side environment.",
5
- "license": "MIT",
5
+ "license": "CC BY-SA 4.0",
6
6
  "author": {
7
7
  "name": "An1by",
8
8
  "url": "https://gitlab.com/an1by"
@@ -29,6 +29,9 @@
29
29
  "src"
30
30
  ],
31
31
  "scripts": {
32
+ "format": "biome format --write .",
33
+ "lint": "biome lint .",
34
+ "check": "biome check .",
32
35
  "bump": "npm version patch --no-git-tag-version",
33
36
  "pub": "npm publish --access public"
34
37
  },
@@ -40,5 +43,8 @@
40
43
  "server",
41
44
  "cp2077",
42
45
  "types"
43
- ]
44
- }
46
+ ],
47
+ "devDependencies": {
48
+ "@biomejs/biome": "^2.0.0"
49
+ }
50
+ }
@@ -1,10 +1,10 @@
1
- import type { MpPlayer } from './entities/player';
1
+ import type { MpPlayer } from './players';
2
2
 
3
3
  export interface MpCommands {
4
4
  /**
5
5
  * Register a command in the server scope.
6
6
  * @param commandName Command name without "/".
7
- * @param callback Callback with id and args.
7
+ * @param callback Callback with player and args.
8
8
  */
9
9
  add(
10
10
  commandName: string,
@@ -1,5 +1,9 @@
1
- import type { MpPlayer } from './player';
2
- import type { Rotation, Vector3 } from '../shared';
1
+ import type { MpObject } from '../objects';
2
+ import type { MpPed } from '../peds';
3
+ import type { MpPickup } from '../pickups';
4
+ import type { Rotation, Vector3 } from '../shared';
5
+ import type { MpVehicle } from '../vehicles';
6
+ import type { MpPlayer } from './player';
3
7
 
4
8
  export enum EntityType {
5
9
  Player = 1,
@@ -10,17 +14,25 @@ export enum EntityType {
10
14
  GameObject = 6,
11
15
  }
12
16
 
13
- export interface MpEntity {
14
- readonly id: number;
15
- readonly owner: MpPlayer;
16
- readonly firstOwner: MpPlayer;
17
- readonly position: Vector3;
18
- readonly rotation: Rotation;
19
- readonly yaw: number;
20
- readonly type: EntityType;
21
- readonly exist: boolean;
22
-
23
- dimension: number;
17
+ export type MpAnyEntity =
18
+ | MpPlayer
19
+ | MpVehicle
20
+ | MpObject
21
+ | MpPed
22
+ | MpPickup
23
+ | MpEntity<EntityType.GameObject>;
24
+
25
+ export interface MpEntity<TEntityType extends EntityType = EntityType> {
26
+ readonly id: number;
27
+ readonly owner: MpPlayer;
28
+ readonly firstOwner: MpPlayer;
29
+ readonly position: Vector3;
30
+ readonly rotation: Rotation;
31
+ readonly yaw: number;
32
+ readonly type: TEntityType;
33
+ readonly exist: boolean;
34
+
35
+ dimension: number;
24
36
  streamingRadius: number;
25
37
 
26
38
  getMeta<T = any>(key: string): T;
@@ -31,4 +43,4 @@ export interface MpEntities<T extends MpEntity = MpEntity> {
31
43
  exists(entity: T | number): boolean;
32
44
 
33
45
  at(entity: T | number): T;
34
- }
46
+ }
@@ -1,16 +1,18 @@
1
- import type { MpEntities, MpEntity } from './entity';
1
+ import type { EntityType, MpEntities, MpEntity } from './entity';
2
2
  import type { Vector3 } from '../shared';
3
3
  import type { MpVehicle } from '../vehicles';
4
4
 
5
- export type PlayerIdentifierType = 'steam' | 'ip';
5
+ export type MpPlayerIdentifierType = 'steam' | 'ip';
6
+ export type PlayerIdentifierType = MpPlayerIdentifierType;
6
7
 
7
- export interface MpPlayer extends MpEntity {
8
+ export interface MpPlayer extends MpEntity<EntityType.Player> {
8
9
  readonly velocity: Vector3;
9
10
  readonly health: number;
10
11
  readonly nickname: string;
11
12
  readonly ping: number;
12
13
  readonly vehicle: MpVehicle | null;
13
14
  readonly lastVehicle: MpVehicle | null;
15
+ readonly ip: string;
14
16
 
15
17
  kick(reason?: string): void;
16
18
  getIdentifier(type: PlayerIdentifierType): string;
@@ -1,5 +1,5 @@
1
- import { MpPlayer } from "../entities";
2
- import { MpEventsMap } from "./map";
1
+ import type { MpPlayer } from "../players";
2
+ import type { MpEventsMap } from "./map";
3
3
 
4
4
  export interface MpEvents {
5
5
  /**
@@ -49,4 +49,4 @@ export interface MpEvents {
49
49
  eventName: string,
50
50
  ...args: any[]
51
51
  ): void;
52
- }
52
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./events";
2
+ export * from "./map";
3
+ export * from "./types";
@@ -0,0 +1,102 @@
1
+ import type { VehicleSeat } from '../vehicles';
2
+ import type { EntityType } from '../entities';
3
+ import type { GameHash, Vector3Object } from '../shared';
4
+ import type {
5
+ DamageEventData,
6
+ DoorStateChangeEventData,
7
+ ExplosionEventData,
8
+ FireEventData,
9
+ LiftStateChangeEventData,
10
+ MeleeActionEventData,
11
+ PickupChangeEventData,
12
+ PickupCreateEventData,
13
+ PickupDespawnEventData,
14
+ PlayerAppearanceChangeEventData,
15
+ PlayerDeathEventData,
16
+ ShootActionEventData,
17
+ ThrowGrenadeEventData,
18
+ VehicleCustomizationChangeEventData,
19
+ VehicleDestructionChangeEventData,
20
+ VehicleHittedByPlayerEventData,
21
+ VehicleWeaponShootEventData,
22
+ } from './types';
23
+
24
+ export interface MpEventsMap {
25
+ anyResourceStart(resourceName: string): void;
26
+ anyResourceStop(resourceName: string): void;
27
+ anyServerResourceStart(resourceName: string): void;
28
+ anyServerResourceStop(resourceName: string): void;
29
+ resourceStart(): void;
30
+ resourceStop(): void;
31
+ resourcesRefresh(): void;
32
+
33
+ playerConnecting(tempId: number, name: string): void;
34
+ playerConnected(playerId: number, tempId: string): void;
35
+ playerSpawn(playerId: number): void;
36
+ playerRespawn(playerId: number, data: Vector3Object): void;
37
+ playerDespawn(playerId: number): void;
38
+ playerDeath(playerId: number, data: PlayerDeathEventData): void;
39
+ playerDisconnected(playerId: number, reason: string): void;
40
+ playerAppearanceChange(
41
+ playerId: number,
42
+ data: PlayerAppearanceChangeEventData,
43
+ ): undefined | boolean;
44
+ playerHealing(playerId: number): undefined | boolean;
45
+ playerKnockdown(playerId: number): undefined | boolean;
46
+
47
+ damage(playerId: number, data: DamageEventData): undefined | boolean;
48
+ meleeAction(playerId: number, data: MeleeActionEventData): undefined | boolean;
49
+ shootAction(playerId: number, data: ShootActionEventData): undefined | boolean;
50
+ weaponReload(playerId: number, weaponHash: GameHash): undefined | boolean;
51
+ throwGrenade(playerId: number, data: ThrowGrenadeEventData): undefined | boolean;
52
+
53
+ fire(playerId: number, data: FireEventData): undefined | boolean;
54
+ explosion(playerId: number, data: ExplosionEventData): undefined | boolean;
55
+
56
+ doorStateChange(
57
+ playerId: number,
58
+ data: DoorStateChangeEventData,
59
+ ): undefined | boolean;
60
+ liftStateChange(
61
+ playerId: number,
62
+ data: LiftStateChangeEventData,
63
+ ): undefined | boolean;
64
+
65
+ entitySpawn(id: number, type: EntityType): void;
66
+ entityDespawn(id: number, type: EntityType): void;
67
+ objectSpawn(id: number): void;
68
+ objectDespawn(id: number): void;
69
+ pedSpawn(id: number): void;
70
+ pedDespawn(id: number): void;
71
+ gameObjectSpawn(id: number): void;
72
+ gameObjectDespawn(id: number): void;
73
+
74
+ vehicleCustomizationChange(
75
+ playerId: number,
76
+ data: VehicleCustomizationChangeEventData,
77
+ ): void;
78
+ vehicleDestructionChange(
79
+ playerId: number,
80
+ data: VehicleDestructionChangeEventData,
81
+ ): void;
82
+ vehicleSpawn(id: number): void;
83
+ vehicleDespawn(id: number): void;
84
+ vehicleWeaponShoot(
85
+ id: number,
86
+ data: VehicleWeaponShootEventData,
87
+ ): undefined | boolean;
88
+ vehicleHittedByPlayer(
89
+ id: number,
90
+ data: VehicleHittedByPlayerEventData,
91
+ ): undefined | boolean;
92
+ exitVehicle(id: number): void;
93
+ enterVehicle(id: number, seat: VehicleSeat): void;
94
+
95
+ pickupChange(playerId: number, data: PickupChangeEventData): undefined | boolean;
96
+ pickupRaise(playerId: number, data: PickupDespawnEventData): undefined | boolean;
97
+ pickupDrop(playerId: number, data: PickupCreateEventData): undefined | boolean;
98
+ pickupSpawn(id: number): void;
99
+ pickupDespawn(id: number): void;
100
+ }
101
+
102
+ export type { MeleeActionType } from './types';
@@ -0,0 +1,184 @@
1
+ import type { GameHash, Vector3Object } from '../shared';
2
+
3
+ export interface DamageEventData {
4
+ damageType: number;
5
+ weaponHash: GameHash;
6
+ totalDamage: number;
7
+ killerId: number;
8
+ victimId: number;
9
+ hitComponent: number;
10
+ hitPositionX: number;
11
+ hitPositionY: number;
12
+ hitPositionZ: number;
13
+ hitDirectionX: number;
14
+ hitDirectionY: number;
15
+ hitDirectionZ: number;
16
+ damageValues: number[];
17
+ flags: number[];
18
+ compName: string;
19
+ dismembermentParts: any[];
20
+ hitReactionZones: any[];
21
+ hitShapeTypes: any[];
22
+ hitShapeNames: string[];
23
+ physicsMaterials: string[];
24
+ }
25
+
26
+ export enum MeleeActionType {
27
+ QuickMelee = 1,
28
+ ComboAttack1 = 2,
29
+ ComboAttack2 = 3,
30
+ StrongAttack = 4,
31
+ FinalAttack = 5,
32
+ JumpAttack = 6,
33
+ SprintAttack = 7,
34
+ CrouchAttack = 8,
35
+ }
36
+
37
+ export type MeleeActionEventData = Vector3Object & {
38
+ type: MeleeActionType;
39
+ weaponHash: GameHash;
40
+ instigatorID: number;
41
+ };
42
+
43
+ export type ShootActionEventData = Vector3Object & {
44
+ weaponHash: GameHash;
45
+ instigatorID: number;
46
+ };
47
+
48
+ export interface ThrowGrenadeEventData {
49
+ weaponHash: GameHash;
50
+ type: number;
51
+ isQuickThrow: boolean;
52
+ accelerationZ: number;
53
+ initialVelocity: number;
54
+ forwardX: number;
55
+ forwardY: number;
56
+ forwardZ: number;
57
+ aimposX: number;
58
+ aimposY: number;
59
+ aimposZ: number;
60
+ }
61
+
62
+ export type DoorStateChangeEventData = Vector3Object & {
63
+ hashObject: GameHash;
64
+ state: boolean;
65
+ };
66
+
67
+ export type LiftStateChangeEventData = Vector3Object & {
68
+ hashObject: GameHash;
69
+ playerID: number;
70
+ targetFloor: number;
71
+ currentFloor: number;
72
+ maxFloor: number;
73
+ };
74
+
75
+ export type ExplosionEventData = Vector3Object & {
76
+ isVehicle: boolean;
77
+ vehicleID: number;
78
+ hashObject: GameHash;
79
+ objNetID: number;
80
+ };
81
+
82
+ export interface AppearancePropertyData {
83
+ meshType: number;
84
+ isEnabed: boolean;
85
+ pathToMesh: GameHash;
86
+ appearanceHash: GameHash;
87
+ chunkMask: GameHash;
88
+ }
89
+
90
+ export interface AppearanceWeightPropertyData {
91
+ targetHash: GameHash;
92
+ regionHash: GameHash;
93
+ weight: number;
94
+ }
95
+
96
+ export interface PlayerAppearanceChangeEventData {
97
+ skinneds: AppearancePropertyData[];
98
+ garments: AppearancePropertyData[];
99
+ morphs: AppearancePropertyData[];
100
+ weights: AppearanceWeightPropertyData[];
101
+ }
102
+
103
+ export interface PlayerDeathEventData {
104
+ killerId?: number;
105
+ }
106
+
107
+ export interface VehicleCustomizationChangeEventData {
108
+ isVehicleWasCustomized: boolean;
109
+ isEnabledVehCustomization: boolean;
110
+ isDisabledVehCustomizationByDamage: boolean;
111
+ lightsColorDefined: boolean;
112
+ lightsColorHue: number;
113
+ primaryColorR: number;
114
+ primaryColorG: number;
115
+ primaryColorB: number;
116
+ primaryColorDefined: boolean;
117
+ secondaryColorR: number;
118
+ secondaryColorG: number;
119
+ secondaryColorB: number;
120
+ secondaryColorDefined: boolean;
121
+ vehicleID: number;
122
+ hashAppearance: GameHash;
123
+ }
124
+
125
+ export interface VehicleDestructionChangeEventData {
126
+ vehicleID: number;
127
+ brokenGlass: number;
128
+ brokenLights: number;
129
+ flatTire: number;
130
+ windshieldShattered: boolean;
131
+ }
132
+
133
+ export interface VehicleWeaponShootEventData {
134
+ type: number;
135
+ numBullets: number;
136
+ vehicleType: number;
137
+ waeponHash: GameHash;
138
+ slotHash: GameHash;
139
+ animHash: GameHash;
140
+ weaponPosX: number;
141
+ weaponPosY: number;
142
+ weaponPosZ: number;
143
+ offsetPosX: number;
144
+ offsetPosY: number;
145
+ offsetPosZ: number;
146
+ tracePosX: number;
147
+ tracePosY: number;
148
+ tracePosZ: number;
149
+ }
150
+
151
+ export interface VehicleHittedByPlayerEventData {
152
+ componentNameHash: GameHash;
153
+ tweaponHash: GameHash;
154
+ byOwner: boolean;
155
+ }
156
+
157
+ export type FireEventData = Vector3Object & {
158
+ hashObject: GameHash;
159
+ dirX: number;
160
+ dirY: number;
161
+ dirZ: number;
162
+ };
163
+
164
+ export interface PickupChangeEventData {
165
+ pickupNetId: number;
166
+ pickupHash: GameHash;
167
+ pickupHashes: GameHash[];
168
+ }
169
+
170
+ export interface PickupDespawnEventData {
171
+ pickupNetId: number;
172
+ pickupHash: GameHash;
173
+ isBag: boolean;
174
+ }
175
+
176
+ export type PickupCreateEventData = Vector3Object & {
177
+ pickupNetId: number;
178
+ pickupHash: GameHash;
179
+ pickupHashes: GameHash[];
180
+ isBag: boolean;
181
+ };
182
+
183
+ export type PickupDropEventData = PickupCreateEventData;
184
+
package/src/exports.ts ADDED
@@ -0,0 +1,12 @@
1
+ export type MpExports = MpExternalExports & MpCreateExport;
2
+
3
+ interface MpExternalExports {
4
+ [module: string]: {
5
+ [name: string]: <T extends unknown[] = unknown[], R = unknown>(...args: T) => R | Promise<R>;
6
+ };
7
+ }
8
+
9
+ type MpCreateExport = <T extends unknown[] = unknown[], R = unknown>(
10
+ name: string,
11
+ callback: (...args: T) => R | Promise<R>,
12
+ ) => void;
package/src/index.ts CHANGED
@@ -1,13 +1,15 @@
1
- export type * from './commands';
2
- export type * from './entities';
3
- export type * from './events';
4
- export type * from './hashes';
5
- export type * from './meta';
6
- export type * from './mp';
7
- export type * from './objects';
8
- export type * from './peds';
9
- export type * from './pickups';
10
- export type * from './resources';
11
- export type * from './shared';
12
- export type * from './vehicles';
13
- export type * from './voice-chat';
1
+ export * from './commands';
2
+ export * from './entities';
3
+ export * from './events';
4
+ export * from './exports';
5
+ export * from './hashes';
6
+ export * from './meta';
7
+ export * from './mp';
8
+ export * from './objects';
9
+ export * from './peds';
10
+ export * from './pickups';
11
+ export * from './players';
12
+ export * from './resources';
13
+ export * from './shared';
14
+ export * from './vehicles';
15
+ export * from './voice-chat';
@@ -1,5 +1,5 @@
1
1
  import type { MpEntity } from './entities';
2
- import type { MpPlayer } from './entities/player';
2
+ import type { MpPlayer } from './players';
3
3
 
4
4
  export interface MpMeta {
5
5
  setGlobalMeta(key: string, value: any, sync?: boolean): void;
@@ -1,38 +1,43 @@
1
- export namespace MpServer {
2
- export type CoreOverrides = {
3
- change_player_on_death_logic?: boolean;
4
- disable_side_quests_notifications?: boolean;
5
- change_vehicles_logic?: boolean;
6
- disable_player_inventory_encumbrance?: boolean;
7
- player_extended_customization?: boolean;
8
- disable_time_skip?: boolean;
9
- disable_turrets?: boolean;
10
- disable_surveillance_cameras?: boolean;
11
- disable_vending_machines?: boolean;
12
- disable_generic_devices?: boolean;
13
- disable_no_combat?: boolean;
14
- };
15
-
16
- export type CoreConfig = {
17
- nametags?: boolean;
18
- disable_switch_seats?: boolean;
19
- delete_map_objects?: boolean;
20
- default_gameplay_restrictions?: boolean;
21
- disable_drop_points?: boolean;
22
- disable_location_dependent_quests?: boolean;
23
- disable_garage?: boolean;
24
- overrides?: CoreOverrides;
25
- files?: string[];
26
- };
27
-
28
- export type ServerConfig = {
29
- tcp_host: string;
30
- udp_host: string;
31
- connection_host_addr: string;
32
- max_players: number;
33
- secret_token: string;
34
- resources: string[];
35
- disable_VoIP_server: boolean;
36
- core?: CoreConfig;
37
- };
38
- }
1
+ export namespace MpServer {
2
+ export interface CoreOverrides {
3
+ change_player_on_death_logic?: boolean;
4
+ disable_side_quests_notifications?: boolean;
5
+ change_vehicles_logic?: boolean;
6
+ disable_player_inventory_encumbrance?: boolean;
7
+ player_extended_customization?: boolean;
8
+ disable_time_skip?: boolean;
9
+ disable_turrets?: boolean;
10
+ disable_surveillance_cameras?: boolean;
11
+ disable_vending_machines?: boolean;
12
+ disable_generic_devices?: boolean;
13
+ disable_no_combat?: boolean;
14
+ }
15
+
16
+ export interface CoreConfig {
17
+ nametags?: boolean;
18
+ death_autostand?: boolean;
19
+ disable_switch_seats?: boolean;
20
+ delete_map_objects?: boolean;
21
+ default_gameplay_restrictions?: boolean;
22
+ disable_drop_points?: boolean;
23
+ disable_location_dependent_quests?: boolean;
24
+ disable_garage?: boolean;
25
+ overrides?: CoreOverrides;
26
+ files?: string[];
27
+ }
28
+
29
+ export interface ServerConfig {
30
+ tcp_host: string;
31
+ udp_host: string;
32
+ connection_host_addr: string;
33
+ max_players: number;
34
+ secret_token: string;
35
+ resources: string[];
36
+ disable_VoIP_server: boolean;
37
+ core?: CoreConfig;
38
+ }
39
+ }
40
+
41
+ export type CoreOverrides = MpServer.CoreOverrides;
42
+ export type CoreConfig = MpServer.CoreConfig;
43
+ export type ServerConfig = MpServer.ServerConfig;
package/src/mp/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export * from "./multiplayer"
2
- export * from "./internal-multiplayer";
1
+ export type { CoreConfig, CoreOverrides, ServerConfig } from "./config";
2
+ export * from "./multiplayer";
3
+ export * from "./internal-multiplayer";
@@ -1,16 +1,17 @@
1
1
  import type { MpCommands } from '../commands';
2
- import type { MpEntities } from '../entities';
2
+ import type { MpEntities, MpEntity } from '../entities';
3
3
  import type { MpEvents } from '../events';
4
+ import type { MpExports } from '../exports';
4
5
  import type { MpHashes } from '../hashes';
5
6
  import type { MpMeta } from '../meta';
6
- import type { MpObjects } from '../objects';
7
- import type { MpPeds } from '../peds';
8
- import type { MpPickups } from '../pickups';
9
- import type { MpPlayers } from '../entities/player';
7
+ import type { MpObject, MpObjects } from '../objects';
8
+ import type { MpPed, MpPeds } from '../peds';
9
+ import type { MpPickup, MpPickups } from '../pickups';
10
+ import type { MpPlayer, MpPlayers } from '../players';
10
11
  import type { MpResources } from '../resources';
11
- import type { MpVehicles } from '../vehicles';
12
+ import type { Class } from '../shared';
13
+ import type { MpVehicle, MpVehicles } from '../vehicles';
12
14
  import type { MpServer as MpServ } from './config';
13
- import type { MpExports } from '../exports';
14
15
 
15
16
  export interface MpServer {
16
17
  events: MpEvents;
@@ -26,6 +27,15 @@ export interface MpServer {
26
27
  peds: MpPeds;
27
28
  hashes: MpHashes;
28
29
 
30
+ cancelEvent(): void;
31
+
32
+ MpPlayer: Class<MpPlayer>;
33
+ MpEntity: Class<MpEntity>;
34
+ MpPickup: Class<MpPickup>;
35
+ MpVehicle: Class<MpVehicle>;
36
+ MpPed: Class<MpPed>;
37
+ MpObject: Class<MpObject>;
38
+
29
39
  /**
30
40
  * Checks if the code is running on the server.
31
41
  * @returns True if running on server, false otherwise.
@@ -35,4 +45,4 @@ export interface MpServer {
35
45
  config: MpServ.ServerConfig & Record<string, string>;
36
46
  }
37
47
 
38
- export const mp: MpServer;
48
+ export const mp: MpServer;
@@ -1,19 +1,19 @@
1
- import type { MpEntities, MpEntity } from './entities';
1
+ import type { EntityType, MpEntities, MpEntity } from './entities';
2
2
  import type { TweakDBID, Vector3 } from './shared';
3
3
 
4
- export interface MpObject extends MpEntity {
4
+ export interface MpObject extends MpEntity<EntityType.GameObject> {
5
5
  readonly model: TweakDBID;
6
6
 
7
7
  destroy(): void;
8
8
  }
9
9
 
10
- export type CreateObjectOptions = {
10
+ export interface CreateObjectOptions {
11
11
  model: TweakDBID;
12
12
  position: Vector3;
13
13
  yaw?: number;
14
14
  dynamic?: boolean;
15
15
  dimension?: number;
16
- };
16
+ }
17
17
 
18
18
  export interface MpObjects extends MpEntities<MpObject> {
19
19
  create(options: CreateObjectOptions): MpObject;
@@ -1,7 +1,7 @@
1
- import type { MpEntities, MpEntity } from './entities';
1
+ import type { EntityType, MpEntities, MpEntity } from './entities';
2
2
  import type { CName, TweakDBID, Vector3 } from './shared';
3
3
 
4
- export interface MpPed extends MpEntity {
4
+ export interface MpPed extends MpEntity<EntityType.Ped> {
5
5
  readonly health: number;
6
6
  readonly model: TweakDBID;
7
7
  readonly appearance: CName;
@@ -9,14 +9,14 @@ export interface MpPed extends MpEntity {
9
9
  destroy(): void;
10
10
  }
11
11
 
12
- export type CreatePedOptions = {
12
+ export interface CreatePedOptions {
13
13
  model: TweakDBID;
14
14
  appearance: CName;
15
15
  position: Vector3;
16
16
  health?: number;
17
17
  yaw?: number;
18
18
  dimension?: number;
19
- };
19
+ }
20
20
 
21
21
  export interface MpPeds extends MpEntities<MpPed> {
22
22
  create(options: CreatePedOptions): MpPed;
@@ -1,4 +1,4 @@
1
- import type { MpEntities, MpEntity } from './entities';
1
+ import type { EntityType, MpEntities, MpEntity } from './entities';
2
2
  import type { TweakDBID, Vector3 } from './shared';
3
3
 
4
4
  export enum PickupType {
@@ -7,14 +7,14 @@ export enum PickupType {
7
7
  Other = 3,
8
8
  }
9
9
 
10
- export interface MpPickup extends MpEntity {
10
+ export interface MpPickup extends MpEntity<EntityType.Pickup> {
11
11
  readonly model: TweakDBID;
12
12
  readonly pickupType: PickupType;
13
13
 
14
14
  destroy(): void;
15
15
  }
16
16
 
17
- export type CreatePickupOptions = {
17
+ export interface CreatePickupOptions {
18
18
  model: TweakDBID;
19
19
  type: PickupType;
20
20
  position: Vector3;
package/src/players.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './entities/player';
@@ -0,0 +1,7 @@
1
+ export * from "./transform";
2
+ export * from "./hash";
3
+
4
+ export interface Class<T, Arguments extends unknown[] = any[]> {
5
+ prototype: Pick<T, keyof T>;
6
+ new (...arguments_: Arguments): T;
7
+ }
@@ -2,8 +2,8 @@ export type Vector3 = [x: number, y: number, z: number];
2
2
  export type Vector4 = [x: number, y: number, z: number, w: number];
3
3
  export type Rotation = [pitch: number, roll: number, yaw: number];
4
4
 
5
- export type Vector3Object = {
5
+ export interface Vector3Object {
6
6
  posX: number;
7
7
  posY: number;
8
8
  posZ: number;
9
- };
9
+ }
@@ -1,5 +1,6 @@
1
- import type { MpPlayer, MpEntities, MpEntity } from './entities';
2
- import type { CName, TweakDBID, Vector3 } from './shared';
1
+ import type { EntityType, MpEntities, MpEntity } from "./entities";
2
+ import type { MpPlayer } from "./players";
3
+ import type { CName, TweakDBID, Vector3 } from "./shared";
3
4
 
4
5
  export enum VehicleSeat {
5
6
  Driver = 0,
@@ -8,27 +9,38 @@ export enum VehicleSeat {
8
9
  RearRight = 3,
9
10
  }
10
11
 
11
- export interface MpVehicle extends MpEntity {
12
+ export interface MpVehicle extends MpEntity<EntityType.Vehicle> {
12
13
  readonly model: TweakDBID;
13
14
  readonly appearance: CName;
14
15
  readonly health: number;
15
16
  readonly velocity: Vector3;
16
17
  readonly angularVelocity: Vector3;
17
18
 
19
+ seats: MpVehicleSeats;
20
+
21
+ lastSeats: MpVehicleSeats;
22
+
18
23
  getPlayerInSeat(seat: VehicleSeat): MpPlayer | null;
19
24
  getLastPlayerInSeat(seat: VehicleSeat): MpPlayer | null;
20
25
 
21
26
  destroy(): void;
22
27
  }
23
28
 
24
- export type CreateVehicleOptions = {
29
+ export interface MpVehicleSeats {
30
+ readonly driver: MpPlayer | null;
31
+ readonly passenger: MpPlayer | null;
32
+ readonly rearLeft: MpPlayer | null;
33
+ readonly rearRight: MpPlayer | null;
34
+ }
35
+
36
+ export interface CreateVehicleOptions {
25
37
  model: TweakDBID;
26
38
  appearance: CName;
27
39
  position: Vector3;
28
40
  yaw?: number;
29
41
  health?: number;
30
42
  dimension?: number;
31
- };
43
+ }
32
44
 
33
45
  export interface MpVehicles extends MpEntities<MpVehicle> {
34
46
  create(options: CreateVehicleOptions): MpVehicle;
@@ -1,4 +1,4 @@
1
- import type { MpPlayer } from './entities';
1
+ import type { MpPlayer } from './players';
2
2
 
3
3
  /**
4
4
  * Interface representing the voice chat management system on the server.
@@ -9,7 +9,7 @@ export interface MpVoiceChat {
9
9
  * @param player - The player instance or their unique ID.
10
10
  * @param state - Set to `true` to mute, `false` to unmute.
11
11
  */
12
- mutePlayer(player: MpPlayer | number, state: boolean): void;
12
+ mutePlayer(player: MpPlayer | number, state?: boolean): void;
13
13
 
14
14
  /**
15
15
  * Creates a new voice chat channel.
@@ -1,2 +0,0 @@
1
- export * from "./events";
2
- export * from "./map";
@@ -1,180 +0,0 @@
1
- import type { EntityType } from '../entities';
2
- import type { GameHash, Vector3Object } from '../shared';
3
-
4
- export type DamageEventData = {
5
- damageType: number;
6
- weaponHash: GameHash;
7
- totalDamage: number;
8
- killerId: number;
9
- victimId: number;
10
- hitComponent: number;
11
- hitPositionX: number;
12
- hitPositionY: number;
13
- hitPositionZ: number;
14
- hitDirectionX: number;
15
- hitDirectionY: number;
16
- hitDirectionZ: number;
17
- damageValues: number[];
18
- flags: number[];
19
- compName: string;
20
- dismembermentParts: any[];
21
- hitReactionZones: any[];
22
- hitShapeTypes: any[];
23
- hitShapeNames: string[];
24
- physicsMaterials: string[];
25
- };
26
-
27
- export type DoorStateChangeEventData = Vector3Object & {
28
- hashObject: GameHash;
29
- state: boolean;
30
- };
31
-
32
- export type LiftStateChangeEventData = Vector3Object & {
33
- hashObject: GameHash;
34
- playerID: number;
35
- targetFloor: number;
36
- currentFloor: number;
37
- maxFloor: number;
38
- };
39
-
40
- export type ExplosionEventData = Vector3Object & {
41
- isVehicle: boolean;
42
- vehicleID: number;
43
- hashObject: GameHash;
44
- objNetID: number;
45
- };
46
-
47
- export type AppearancePropertyData = {
48
- meshType: number;
49
- isEnabed: boolean;
50
- pathToMesh: GameHash;
51
- appearanceHash: GameHash;
52
- chunkMask: GameHash;
53
- };
54
-
55
- export type AppearanceWeightPropertyData = {
56
- targetHash: GameHash;
57
- regionHash: GameHash;
58
- weight: number;
59
- };
60
-
61
- export type PlayerAppearanceChangeEventData = {
62
- skinneds: AppearancePropertyData[];
63
- garments: AppearancePropertyData[];
64
- morphs: AppearancePropertyData[];
65
- weights: AppearanceWeightPropertyData[];
66
- };
67
-
68
- export type PlayerDeathEventData = {
69
- killerId?: number;
70
- };
71
-
72
- export type VehicleCustomizationChangeEventData = {
73
- isVehicleWasCustomized: boolean;
74
- isEnabledVehCustomization: boolean;
75
- isDisabledVehCustomizationByDamage: boolean;
76
- lightsColorDefined: boolean;
77
- lightsColorHue: number;
78
- primaryColorR: number;
79
- primaryColorG: number;
80
- primaryColorB: number;
81
- primaryColorDefined: boolean;
82
- secondaryColorR: number;
83
- secondaryColorG: number;
84
- secondaryColorB: number;
85
- secondaryColorDefined: boolean;
86
- vehicleID: number;
87
- hashAppearance: GameHash;
88
- };
89
-
90
- export type VehicleDestructionChangeEventData = {
91
- vehicleID: number;
92
- brokenGlass: number;
93
- brokenLights: number;
94
- flatTire: number;
95
- windshieldShattered: boolean;
96
- };
97
-
98
- export type FireEventData = Vector3Object & {
99
- hashObject: GameHash;
100
- dirX: number;
101
- dirY: number;
102
- dirZ: number;
103
- };
104
-
105
- export type PickupChangeEventData = {
106
- pickupNetId: number;
107
- pickupHash: GameHash;
108
- pickupHashes: GameHash[];
109
- };
110
-
111
- export type PickupDespawnEventData = {
112
- pickupNetId: number;
113
- pickupHash: GameHash;
114
- isBag: boolean;
115
- };
116
-
117
- export type PickupCreateEventData = Vector3Object & {
118
- pickupNetId: number;
119
- pickupHash: GameHash;
120
- pickupHashes: GameHash[];
121
- isBag: boolean;
122
- };
123
-
124
- export interface MpEventsMap {
125
- anyResourceStart(resourceName: string): void;
126
- anyResourceStop(resourceName: string): void;
127
- anyServerResourceStart(resourceName: string): void;
128
- anyServerResourceStop(resourceName: string): void;
129
- resourceStart(): void;
130
- resourceStop(): void;
131
- resourcesRefresh(): void;
132
-
133
- playerConnecting(tempId: number, name: string): void;
134
- playerConnected(playerId: number, tempId: string): void;
135
- playerSpawn(playerId: number): void;
136
- playerRespawn(playerId: number, data: Vector3Object): void;
137
- playerDespawn(playerId: number): void;
138
- playerDeath(playerId: number, data: PlayerDeathEventData): void;
139
- playerDisconnected(playerId: number, reason: string): void;
140
- playerAppearanceChange(
141
- playerId: number,
142
- data: PlayerAppearanceChangeEventData,
143
- ): void;
144
-
145
- damage(playerId: number, data: DamageEventData): void;
146
- fire(playerId: number, data: FireEventData): void;
147
- explosion(playerId: number, data: ExplosionEventData): void;
148
-
149
- doorStateChange(playerId: number, data: DoorStateChangeEventData): void;
150
- liftStateChange(playerId: number, data: LiftStateChangeEventData): void;
151
-
152
- entitySpawn(id: number, type: EntityType): void;
153
- entityDespawn(id: number, type: EntityType): void;
154
-
155
- objectSpawn(id: number): void;
156
- objectDespawn(id: number): void;
157
-
158
- pedSpawn(id: number): void;
159
- pedDespawn(id: number): void;
160
-
161
- gameObjectSpawn(id: number): void;
162
- gameObjectDespawn(id: number): void;
163
-
164
- vehicleCustomizationChange(
165
- playerId: number,
166
- data: VehicleCustomizationChangeEventData,
167
- ): void;
168
- vehicleDestructionChange(
169
- playerId: number,
170
- data: VehicleDestructionChangeEventData,
171
- ): void;
172
- vehicleSpawn(id: number): void;
173
- vehicleDespawn(id: number): void;
174
-
175
- pickupChange(playerId: number, data: PickupChangeEventData): void;
176
- pickupRaise(playerId: number, data: PickupDespawnEventData): void;
177
- pickupDrop(playerId: number, data: PickupCreateEventData): void;
178
- pickupSpawn(id: number): void;
179
- pickupDespawn(id: number): void;
180
- }
package/src/exports.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export interface MpExports {
2
- [module: string]: {
3
- [name: string]: (...args: unknown[]) => unknown;
4
- };
5
- }
@@ -1,2 +0,0 @@
1
- export * from "./transform"
2
- export * from "./hash"
File without changes
File without changes
File without changes
File without changes