@cybermp-community/server-types 1.1.1 → 1.2.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cybermp-community/server-types",
3
- "version": "1.1.1",
3
+ "version": "1.2.1",
4
4
  "description": "TypeScript type definitions for the CyberMP server-side environment.",
5
5
  "license": "CC BY-SA 4.0",
6
6
  "author": {
package/src/commands.ts CHANGED
@@ -6,8 +6,11 @@ export interface MpCommands {
6
6
  * @param commandName Command name without "/".
7
7
  * @param callback Callback with player and args.
8
8
  */
9
- add(
10
- commandName: string,
11
- callback: (player: MpPlayer, args: string[]) => void,
12
- ): void;
9
+ add(commandName: string, callback: (player: MpPlayer, args: string[]) => void): void;
10
+
11
+ /**
12
+ * Unregister a command.
13
+ * @param commandName Command name without "/".
14
+ */
15
+ remove(commandName: string): void;
13
16
  }
@@ -4,16 +4,24 @@ import type { MpPickup } from '../pickups';
4
4
  import type { Rotation, Vector3 } from '../shared';
5
5
  import type { MpVehicle } from '../vehicles';
6
6
  import type { MpPlayer } from './player';
7
-
8
- export enum EntityType {
9
- Player = 1,
10
- Vehicle = 2,
11
- Object = 3,
12
- Ped = 4,
13
- Pickup = 5,
14
- GameObject = 6,
15
- }
16
-
7
+
8
+ /**
9
+ * Enumeration of available entity types.
10
+ * @category Entities
11
+ */
12
+ export enum EntityType {
13
+ Player = 1,
14
+ Vehicle = 2,
15
+ Object = 3,
16
+ Ped = 4,
17
+ Pickup = 5,
18
+ GameObject = 6,
19
+ }
20
+
21
+ /**
22
+ * Union type representing any entity in the server environment.
23
+ * @category Entities
24
+ */
17
25
  export type MpAnyEntity =
18
26
  | MpPlayer
19
27
  | MpVehicle
@@ -22,25 +30,70 @@ export type MpAnyEntity =
22
30
  | MpPickup
23
31
  | MpEntity<EntityType.GameObject>;
24
32
 
33
+ /**
34
+ * Base interface representing a generic world entity.
35
+ * @category Entities
36
+ */
25
37
  export interface MpEntity<TEntityType extends EntityType = EntityType> {
38
+ /** Unique ID of the entity. */
26
39
  readonly id: number;
27
- readonly owner: MpPlayer;
40
+
41
+ /** The player who originally spawned/synced this entity. */
28
42
  readonly firstOwner: MpPlayer;
43
+
44
+ /** Coordinates representing the entity's position. */
29
45
  readonly position: Vector3;
46
+
47
+ /** Rotation angles (pitch, roll, yaw) of the entity. */
30
48
  readonly rotation: Rotation;
49
+
50
+ /** Yaw rotation value. */
31
51
  readonly yaw: number;
52
+
53
+ /** Type classification of this entity. */
32
54
  readonly type: TEntityType;
55
+
56
+ /** True if the entity is currently active in the world. */
33
57
  readonly exist: boolean;
34
58
 
59
+ /** Current syncing owner of the entity. */
60
+ owner: MpPlayer;
61
+
62
+ /** Virtual world/dimension ID. */
35
63
  dimension: number;
36
- streamingRadius: number;
37
-
38
- getMeta<T = any>(key: string): T;
39
- setMeta(key: string, value: any, sync?: boolean): void;
40
- }
41
-
42
- export interface MpEntities<T extends MpEntity = MpEntity> {
43
- exists(entity: T | number): boolean;
44
-
45
- at(entity: T | number): T;
64
+
65
+ /** Streaming distance radius. */
66
+ streamingRadius: number;
67
+
68
+ /**
69
+ * Retrieves custom metadata stored on the entity.
70
+ * @param key The key of the metadata.
71
+ */
72
+ getMeta<T = any>(key: string): T;
73
+
74
+ /**
75
+ * Sets custom metadata on the entity.
76
+ * @param key The key of the metadata.
77
+ * @param value The value to store.
78
+ * @param sync Optional flag to immediately sync with clients.
79
+ */
80
+ setMeta(key: string, value: any, sync?: boolean): void;
81
+ }
82
+
83
+ /**
84
+ * Manager interface for handling entity collections.
85
+ * @category Entities
86
+ */
87
+ export interface MpEntities<T extends MpEntity = MpEntity> {
88
+ /**
89
+ * Checks if an entity is registered and exists.
90
+ * @param entity Entity object or its ID.
91
+ */
92
+ exists(entity: T | number): boolean;
93
+
94
+ /**
95
+ * Finds and returns an entity by instance or ID.
96
+ * @param entity Entity object or its ID.
97
+ */
98
+ at(entity: T | number): T;
46
99
  }
@@ -1,2 +1,2 @@
1
- export * from "./entity";
2
- export * from "./player";
1
+ export * from './entity';
2
+ export * from './player';
@@ -5,24 +5,74 @@ import type { MpVehicle } from '../vehicles';
5
5
  export type MpPlayerIdentifierType = 'steam' | 'ip';
6
6
  export type PlayerIdentifierType = MpPlayerIdentifierType;
7
7
 
8
+ /**
9
+ * Interface representing a player entity on the server.
10
+ * @category Entities/Players
11
+ */
8
12
  export interface MpPlayer extends MpEntity<EntityType.Player> {
13
+ /** The player's current speed and direction vector. */
9
14
  readonly velocity: Vector3;
15
+
16
+ /** Health value of the player. */
10
17
  readonly health: number;
18
+
19
+ /** Username or nickname. */
11
20
  readonly nickname: string;
21
+
22
+ /** Network latency in ms. */
12
23
  readonly ping: number;
24
+
25
+ /** Active vehicle occupant is in, if any. */
13
26
  readonly vehicle: MpVehicle | null;
27
+
28
+ /** Most recent vehicle the player occupied. */
14
29
  readonly lastVehicle: MpVehicle | null;
30
+
31
+ /** The IP address of the player. */
15
32
  readonly ip: string;
16
33
 
34
+ /**
35
+ * Kicks the player from the server.
36
+ * @param reason The reason message shown to the player.
37
+ */
17
38
  kick(reason?: string): void;
39
+
40
+ /**
41
+ * Gets a specific network identifier.
42
+ * @param type Identifier type ('steam' or 'ip').
43
+ */
18
44
  getIdentifier(type: PlayerIdentifierType): string;
19
45
 
46
+ /**
47
+ * Triggers an event on the player's client.
48
+ * @param eventName Name of the event.
49
+ * @param args Payload data.
50
+ */
20
51
  emit(eventName: string, ...args: any[]): void;
52
+
53
+ /** Mutes the player's audio communication. */
21
54
  mute(): void;
22
55
  }
23
56
 
57
+ /**
58
+ * Interface representing the player manager.
59
+ * @category Entities/Players
60
+ */
24
61
  export interface MpPlayers extends MpEntities<MpPlayer> {
62
+ /**
63
+ * Disconnects a player from the server.
64
+ * @param player Player instance or ID.
65
+ * @param reason Reason string.
66
+ */
25
67
  kick(player: MpPlayer | number, reason?: string): void;
68
+
69
+ /**
70
+ * Retrieves identifier info for a player.
71
+ * @param player Player instance or ID.
72
+ * @param type Type of identifier.
73
+ */
26
74
  getIdentifier(player: MpPlayer | number, type: PlayerIdentifierType): string;
75
+
76
+ /** Converts the player collection into a standard array. */
27
77
  toArray(): MpPlayer[];
28
78
  }
@@ -1,52 +1,48 @@
1
- import type { MpPlayer } from "../players";
2
- import type { MpEventsMap } from "./map";
3
-
4
- export interface MpEvents {
5
- /**
6
- * Listen for a shared (server or client) custom event.
7
- * @param eventName The name of the custom event.
8
- * @param callback The callback to run when triggered.
9
- */
10
- on<E extends keyof MpEventsMap>(eventName: E, callback: MpEventsMap[E]): void;
11
- on(eventName: string, callback: (...args: any[]) => void): void;
12
-
13
- /**
14
- * Listen for a client-side event on the server.
15
- * @param eventName The name of the event.
16
- * @param callback Function triggered when the event is received.
17
- */
18
- onClient(
19
- eventName: string,
20
- callback: (player: MpPlayer, ...args: any[]) => void,
21
- ): void;
22
-
23
- /**
24
- * Unregister a custom event listener.
25
- * @param eventName Name of the event.
26
- * @param callback Callback function.
27
- */
28
- off<E extends keyof MpEventsMap>(
29
- eventName: E,
30
- callback: MpEventsMap[E],
31
- ): void;
32
- off(eventName: string, callback: (...args: any[]) => void): void;
33
-
34
- /**
35
- * Emit a shared custom event.
36
- * @param eventName The event name to emit.
37
- * @param args Arguments to pass to the handler.
38
- */
39
- emit(eventName: string, ...args: any[]): void;
40
-
41
- /**
42
- * Emit a client-side event from the server.
43
- * @param eventName Resource name to emit from.
44
- * @param playerId Target player entity/network ID.
45
- * @param args Arguments to send with the event.
46
- */
47
- emitClient(
48
- player: MpPlayer | number,
49
- eventName: string,
50
- ...args: any[]
51
- ): void;
1
+ import type { MpPlayer } from '../players';
2
+ import type { MpEventsMap } from './map';
3
+
4
+ /**
5
+ * Event system for subscribing, emitting, and handling multiplayer events.
6
+ *
7
+ * Provides both strongly typed and generic event APIs.
8
+ * @category Events
9
+ */
10
+ export interface MpEvents {
11
+ /**
12
+ * Listen for a shared (server or client) custom event.
13
+ * @param eventName The name of the custom event.
14
+ * @param callback The callback to run when triggered.
15
+ */
16
+ on<E extends keyof MpEventsMap>(eventName: E, callback: MpEventsMap[E]): void;
17
+ on(eventName: string, callback: (...args: any[]) => void): void;
18
+
19
+ /**
20
+ * Listen for a client-side event on the server.
21
+ * @param eventName The name of the event.
22
+ * @param callback Function triggered when the event is received.
23
+ */
24
+ onClient(eventName: string, callback: (player: MpPlayer, ...args: any[]) => void): void;
25
+
26
+ /**
27
+ * Unregister a custom event listener.
28
+ * @param eventName Name of the event.
29
+ * @param callback Callback function.
30
+ */
31
+ off<E extends keyof MpEventsMap>(eventName: E, callback: MpEventsMap[E]): void;
32
+ off(eventName: string, callback: (...args: any[]) => void): void;
33
+
34
+ /**
35
+ * Emit a shared custom event.
36
+ * @param eventName The event name to emit.
37
+ * @param args Arguments to pass to the handler.
38
+ */
39
+ emit(eventName: string, ...args: any[]): void;
40
+
41
+ /**
42
+ * Emit a client-side event from the server.
43
+ * @param eventName Resource name to emit from.
44
+ * @param playerId Target player entity/network ID.
45
+ * @param args Arguments to send with the event.
46
+ */
47
+ emitClient(player: MpPlayer | number, eventName: string, ...args: any[]): void;
52
48
  }
@@ -1,3 +1,3 @@
1
- export * from "./events";
2
- export * from "./map";
3
- export * from "./types";
1
+ export * from './events';
2
+ export * from './map';
3
+ export * from './types';
package/src/events/map.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { VehicleSeat } from '../vehicles';
2
- import type { EntityType } from '../entities';
2
+ import type { EntityType, MpAnyEntity, MpPlayer } from '../entities';
3
3
  import type { GameHash, Vector3Object } from '../shared';
4
4
  import type {
5
5
  DamageEventData,
@@ -21,81 +21,195 @@ import type {
21
21
  VehicleWeaponShootEventData,
22
22
  } from './types';
23
23
 
24
+ /**
25
+ * Interface mapping event names to their respective callback signatures.
26
+ * @category Events
27
+ */
24
28
  export interface MpEventsMap {
29
+ /** Fires when any resource starts running on the server. */
25
30
  anyResourceStart(resourceName: string): void;
31
+
32
+ /** Fires when any resource is stopped. */
26
33
  anyResourceStop(resourceName: string): void;
34
+
35
+ /** Fires when any server-side resource is started. */
27
36
  anyServerResourceStart(resourceName: string): void;
37
+
38
+ /** Fires when any server-side resource is stopped. */
28
39
  anyServerResourceStop(resourceName: string): void;
40
+
41
+ /** Fires when the current resource starts. */
29
42
  resourceStart(): void;
43
+
44
+ /** Fires when the current resource stops. */
30
45
  resourceStop(): void;
46
+
47
+ /** Fires when all server resources are reloaded/refreshed. */
31
48
  resourcesRefresh(): void;
32
49
 
50
+ /** Fires when a player begins connecting to the server. */
33
51
  playerConnecting(tempId: number, name: string): void;
52
+
53
+ /** Fires once a player has successfully joined the server. */
34
54
  playerConnected(playerId: number, tempId: string): void;
55
+
56
+ /** Fires when a player spawns into the world. */
35
57
  playerSpawn(playerId: number): void;
58
+
59
+ /** Fires when a player respawns after death. */
36
60
  playerRespawn(playerId: number, data: Vector3Object): void;
61
+
62
+ /** Fires when a player is despawned. */
37
63
  playerDespawn(playerId: number): void;
64
+
65
+ /** Fires when a player dies. */
38
66
  playerDeath(playerId: number, data: PlayerDeathEventData): void;
67
+
68
+ /** Fires when a player leaves the server. */
39
69
  playerDisconnected(playerId: number, reason: string): void;
70
+
71
+ /** Fires when a player's character appearance changes. */
40
72
  playerAppearanceChange(
41
73
  playerId: number,
42
74
  data: PlayerAppearanceChangeEventData,
43
75
  ): undefined | boolean;
76
+
77
+ /** Fires when a player starts healing. */
44
78
  playerHealing(playerId: number): undefined | boolean;
79
+
80
+ /** Fires when a player is knocked down (ragdolled). */
45
81
  playerKnockdown(playerId: number): undefined | boolean;
46
82
 
83
+ /**
84
+ * Fires when global metadata is modified.
85
+ * @param key The key of the updated metadata.
86
+ * @param newValue The new value of the metadata.
87
+ * @param oldValue The previous value of the metadata.
88
+ */
89
+ globalMetaChange<T = any, K = T>(key: string, newValue: T, oldValue: K): undefined | boolean;
90
+
91
+ /**
92
+ * Fires when a player's custom metadata is updated.
93
+ * @param player The player instance.
94
+ * @param key The metadata key.
95
+ * @param newValue The new value.
96
+ * @param oldValue The previous value.
97
+ */
98
+ playerMetaChange<T = any, K = T>(
99
+ player: MpPlayer,
100
+ key: string,
101
+ newValue: T,
102
+ oldValue: K,
103
+ ): undefined | boolean;
104
+
105
+ /**
106
+ * Fires when metadata on any entity is updated.
107
+ * @param entity The entity instance.
108
+ * @param key The metadata key.
109
+ * @param newValue The new value.
110
+ * @param oldValue The previous value.
111
+ */
112
+ entityMetaChange<T = any, K = T>(
113
+ entity: MpAnyEntity,
114
+ key: string,
115
+ newValue: T,
116
+ oldValue: K,
117
+ ): undefined | boolean;
118
+
119
+ /** Fires when a player takes damage. */
47
120
  damage(playerId: number, data: DamageEventData): undefined | boolean;
121
+
122
+ /** Fires when a player performs a melee strike. */
48
123
  meleeAction(playerId: number, data: MeleeActionEventData): undefined | boolean;
124
+
125
+ /** Fires when a player fires a weapon. */
49
126
  shootAction(playerId: number, data: ShootActionEventData): undefined | boolean;
127
+
128
+ /** Fires when a player reloads their firearm. */
50
129
  weaponReload(playerId: number, weaponHash: GameHash): undefined | boolean;
130
+
131
+ /** Fires when a player throws a grenade. */
51
132
  throwGrenade(playerId: number, data: ThrowGrenadeEventData): undefined | boolean;
52
133
 
134
+ /** Fires when a fire source is created. */
53
135
  fire(playerId: number, data: FireEventData): undefined | boolean;
136
+
137
+ /** Fires when an explosion is triggered. */
54
138
  explosion(playerId: number, data: ExplosionEventData): undefined | boolean;
55
139
 
56
- doorStateChange(
57
- playerId: number,
58
- data: DoorStateChangeEventData,
59
- ): undefined | boolean;
60
- liftStateChange(
61
- playerId: number,
62
- data: LiftStateChangeEventData,
63
- ): undefined | boolean;
140
+ /** Fires when a door's open/close state is altered. */
141
+ doorStateChange(playerId: number, data: DoorStateChangeEventData): undefined | boolean;
64
142
 
143
+ /** Fires when a lift (elevator) changes state. */
144
+ liftStateChange(playerId: number, data: LiftStateChangeEventData): undefined | boolean;
145
+
146
+ /** Fires when any server entity is spawned. */
65
147
  entitySpawn(id: number, type: EntityType): void;
148
+
149
+ /** Fires when any server entity is despawned. */
66
150
  entityDespawn(id: number, type: EntityType): void;
151
+
152
+ /** Fires when a generic object spawns. */
67
153
  objectSpawn(id: number): void;
154
+
155
+ /** Fires when a generic object despawns. */
68
156
  objectDespawn(id: number): void;
157
+
158
+ /** Fires when a Ped (NPC) spawns. */
69
159
  pedSpawn(id: number): void;
160
+
161
+ /** Fires when a Ped (NPC) despawns. */
70
162
  pedDespawn(id: number): void;
163
+
164
+ /** Fires when a game object spawns. */
71
165
  gameObjectSpawn(id: number): void;
166
+
167
+ /** Fires when a game object despawns. */
72
168
  gameObjectDespawn(id: number): void;
73
169
 
74
- vehicleCustomizationChange(
75
- playerId: number,
76
- data: VehicleCustomizationChangeEventData,
77
- ): void;
78
- vehicleDestructionChange(
79
- playerId: number,
80
- data: VehicleDestructionChangeEventData,
81
- ): void;
170
+ /** Fires when a vehicle's appearance/customization changes. */
171
+ vehicleCustomizationChange(playerId: number, data: VehicleCustomizationChangeEventData): void;
172
+
173
+ /** Fires when a vehicle's damage/destruction state updates. */
174
+ vehicleDestructionChange(playerId: number, data: VehicleDestructionChangeEventData): void;
175
+
176
+ /** Fires when a vehicle entity spawns. */
82
177
  vehicleSpawn(id: number): void;
178
+
179
+ /** Fires when a vehicle entity despawns. */
83
180
  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;
181
+
182
+ /** Fires when a vehicle-mounted weapon is fired. */
183
+ vehicleWeaponShoot(id: number, data: VehicleWeaponShootEventData): undefined | boolean;
184
+
185
+ /** Fires when a vehicle is hit by a player. */
186
+ vehicleHittedByPlayer(id: number, data: VehicleHittedByPlayerEventData): undefined | boolean;
187
+
188
+ /** Fires when a player exits a vehicle. */
92
189
  exitVehicle(id: number): void;
190
+
191
+ /** Fires when a player enters a vehicle. */
93
192
  enterVehicle(id: number, seat: VehicleSeat): void;
94
193
 
194
+ /** Fires when a player exits a vehicle. */
195
+ playerExitVehicle(playerId: number, vehicleId: number): void;
196
+
197
+ /** Fires when a player enters a vehicle. */
198
+ playerEnterVehicle(playerId: number, vehicleId: number, seat: VehicleSeat): void;
199
+
200
+ /** Fires when a pickup's state or inventory changes. */
95
201
  pickupChange(playerId: number, data: PickupChangeEventData): undefined | boolean;
202
+
203
+ /** Fires when a player picks up an item. */
96
204
  pickupRaise(playerId: number, data: PickupDespawnEventData): undefined | boolean;
205
+
206
+ /** Fires when a player drops an item. */
97
207
  pickupDrop(playerId: number, data: PickupCreateEventData): undefined | boolean;
208
+
209
+ /** Fires when a pickup spawns. */
98
210
  pickupSpawn(id: number): void;
211
+
212
+ /** Fires when a pickup despawns. */
99
213
  pickupDespawn(id: number): void;
100
214
  }
101
215
 
@@ -1,5 +1,9 @@
1
1
  import type { GameHash, Vector3Object } from '../shared';
2
2
 
3
+ /**
4
+ * Data describing a damage event between players.
5
+ * @category Events/Players
6
+ */
3
7
  export interface DamageEventData {
4
8
  damageType: number;
5
9
  weaponHash: GameHash;
@@ -23,6 +27,9 @@ export interface DamageEventData {
23
27
  physicsMaterials: string[];
24
28
  }
25
29
 
30
+ /**
31
+ * @category Events/Players
32
+ */
26
33
  export enum MeleeActionType {
27
34
  QuickMelee = 1,
28
35
  ComboAttack1 = 2,
@@ -34,17 +41,26 @@ export enum MeleeActionType {
34
41
  CrouchAttack = 8,
35
42
  }
36
43
 
44
+ /**
45
+ * @category Events/Players
46
+ */
37
47
  export type MeleeActionEventData = Vector3Object & {
38
48
  type: MeleeActionType;
39
49
  weaponHash: GameHash;
40
50
  instigatorID: number;
41
51
  };
42
52
 
53
+ /**
54
+ * @category Events/Players
55
+ */
43
56
  export type ShootActionEventData = Vector3Object & {
44
57
  weaponHash: GameHash;
45
58
  instigatorID: number;
46
59
  };
47
60
 
61
+ /**
62
+ * @category Events/Players
63
+ */
48
64
  export interface ThrowGrenadeEventData {
49
65
  weaponHash: GameHash;
50
66
  type: number;
@@ -59,11 +75,19 @@ export interface ThrowGrenadeEventData {
59
75
  aimposZ: number;
60
76
  }
61
77
 
78
+ /**
79
+ * Data for a door state change event.
80
+ * @category Events/World
81
+ */
62
82
  export type DoorStateChangeEventData = Vector3Object & {
63
83
  hashObject: GameHash;
64
84
  state: boolean;
65
85
  };
66
86
 
87
+ /**
88
+ * Data for lift/elevator state changes.
89
+ * @category Events/World
90
+ */
67
91
  export type LiftStateChangeEventData = Vector3Object & {
68
92
  hashObject: GameHash;
69
93
  playerID: number;
@@ -72,6 +96,10 @@ export type LiftStateChangeEventData = Vector3Object & {
72
96
  maxFloor: number;
73
97
  };
74
98
 
99
+ /**
100
+ * Explosion event information.
101
+ * @category Events/World
102
+ */
75
103
  export type ExplosionEventData = Vector3Object & {
76
104
  isVehicle: boolean;
77
105
  vehicleID: number;
@@ -79,6 +107,9 @@ export type ExplosionEventData = Vector3Object & {
79
107
  objNetID: number;
80
108
  };
81
109
 
110
+ /**
111
+ * @category Events/Players
112
+ */
82
113
  export interface AppearancePropertyData {
83
114
  meshType: number;
84
115
  isEnabed: boolean;
@@ -87,12 +118,18 @@ export interface AppearancePropertyData {
87
118
  chunkMask: GameHash;
88
119
  }
89
120
 
121
+ /**
122
+ * @category Events/Players
123
+ */
90
124
  export interface AppearanceWeightPropertyData {
91
125
  targetHash: GameHash;
92
126
  regionHash: GameHash;
93
127
  weight: number;
94
128
  }
95
129
 
130
+ /**
131
+ * @category Events/Players
132
+ */
96
133
  export interface PlayerAppearanceChangeEventData {
97
134
  skinneds: AppearancePropertyData[];
98
135
  garments: AppearancePropertyData[];
@@ -100,10 +137,16 @@ export interface PlayerAppearanceChangeEventData {
100
137
  weights: AppearanceWeightPropertyData[];
101
138
  }
102
139
 
140
+ /**
141
+ * @category Events/Players
142
+ */
103
143
  export interface PlayerDeathEventData {
104
144
  killerId?: number;
105
145
  }
106
146
 
147
+ /**
148
+ * @category Events/Vehicles
149
+ */
107
150
  export interface VehicleCustomizationChangeEventData {
108
151
  isVehicleWasCustomized: boolean;
109
152
  isEnabledVehCustomization: boolean;
@@ -122,6 +165,9 @@ export interface VehicleCustomizationChangeEventData {
122
165
  hashAppearance: GameHash;
123
166
  }
124
167
 
168
+ /**
169
+ * @category Events/Vehicles
170
+ */
125
171
  export interface VehicleDestructionChangeEventData {
126
172
  vehicleID: number;
127
173
  brokenGlass: number;
@@ -130,6 +176,9 @@ export interface VehicleDestructionChangeEventData {
130
176
  windshieldShattered: boolean;
131
177
  }
132
178
 
179
+ /**
180
+ * @category Events/Vehicles
181
+ */
133
182
  export interface VehicleWeaponShootEventData {
134
183
  type: number;
135
184
  numBullets: number;
@@ -148,12 +197,18 @@ export interface VehicleWeaponShootEventData {
148
197
  tracePosZ: number;
149
198
  }
150
199
 
200
+ /**
201
+ * @category Events/Vehicles
202
+ */
151
203
  export interface VehicleHittedByPlayerEventData {
152
204
  componentNameHash: GameHash;
153
205
  tweaponHash: GameHash;
154
206
  byOwner: boolean;
155
207
  }
156
208
 
209
+ /**
210
+ * @category Events/World
211
+ */
157
212
  export type FireEventData = Vector3Object & {
158
213
  hashObject: GameHash;
159
214
  dirX: number;
@@ -161,18 +216,27 @@ export type FireEventData = Vector3Object & {
161
216
  dirZ: number;
162
217
  };
163
218
 
219
+ /**
220
+ * @category Events/Pickups
221
+ */
164
222
  export interface PickupChangeEventData {
165
223
  pickupNetId: number;
166
224
  pickupHash: GameHash;
167
225
  pickupHashes: GameHash[];
168
226
  }
169
227
 
228
+ /**
229
+ * @category Events/Pickups
230
+ */
170
231
  export interface PickupDespawnEventData {
171
232
  pickupNetId: number;
172
233
  pickupHash: GameHash;
173
234
  isBag: boolean;
174
235
  }
175
236
 
237
+ /**
238
+ * @category Events/Pickups
239
+ */
176
240
  export type PickupCreateEventData = Vector3Object & {
177
241
  pickupNetId: number;
178
242
  pickupHash: GameHash;
@@ -181,4 +245,3 @@ export type PickupCreateEventData = Vector3Object & {
181
245
  };
182
246
 
183
247
  export type PickupDropEventData = PickupCreateEventData;
184
-
package/src/exports.ts CHANGED
@@ -1,12 +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;
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/meta.ts CHANGED
@@ -1,23 +1,16 @@
1
1
  import type { MpEntity } from './entities';
2
2
  import type { MpPlayer } from './players';
3
3
 
4
+ /**
5
+ * Sets/gets metadata for the any entity.
6
+ */
4
7
  export interface MpMeta {
5
8
  setGlobalMeta(key: string, value: any, sync?: boolean): void;
6
9
  getGlobalMeta<T = any>(key: string): T;
7
10
 
8
- setPlayerMeta(
9
- player: MpPlayer | number,
10
- key: string,
11
- value: any,
12
- sync?: boolean,
13
- ): void;
11
+ setPlayerMeta(player: MpPlayer | number, key: string, value: any, sync?: boolean): void;
14
12
  getPlayerMeta<T = any>(player: MpPlayer | number, key: string): T;
15
13
 
16
- setEntityMeta(
17
- entity: MpEntity | number,
18
- key: string,
19
- value: any,
20
- sync?: boolean,
21
- ): void;
14
+ setEntityMeta(entity: MpEntity | number, key: string, value: any, sync?: boolean): void;
22
15
  getEntityMeta<T = any>(entity: MpEntity | number, key: string): T;
23
16
  }
@@ -1,5 +1,5 @@
1
1
  export namespace MpServer {
2
- export interface CoreOverrides {
2
+ export interface CoreConfigOverrides {
3
3
  change_player_on_death_logic?: boolean;
4
4
  disable_side_quests_notifications?: boolean;
5
5
  change_vehicles_logic?: boolean;
@@ -13,6 +13,8 @@ export namespace MpServer {
13
13
  disable_no_combat?: boolean;
14
14
  }
15
15
 
16
+ export type CoreOverrides = CoreConfigOverrides;
17
+
16
18
  export interface CoreConfig {
17
19
  nametags?: boolean;
18
20
  death_autostand?: boolean;
@@ -22,11 +24,12 @@ export namespace MpServer {
22
24
  disable_drop_points?: boolean;
23
25
  disable_location_dependent_quests?: boolean;
24
26
  disable_garage?: boolean;
25
- overrides?: CoreOverrides;
27
+ overrides?: CoreConfigOverrides;
26
28
  files?: string[];
27
29
  }
28
30
 
29
31
  export interface ServerConfig {
32
+ [key: string]: any;
30
33
  tcp_host: string;
31
34
  udp_host: string;
32
35
  connection_host_addr: string;
@@ -34,10 +37,21 @@ export namespace MpServer {
34
37
  secret_token: string;
35
38
  resources: string[];
36
39
  disable_VoIP_server: boolean;
40
+ disable_voice: boolean;
37
41
  core?: CoreConfig;
38
42
  }
39
43
  }
40
44
 
45
+ /**
46
+ * @category Global/Config
47
+ */
48
+ export type CoreConfigOverrides = MpServer.CoreConfigOverrides;
41
49
  export type CoreOverrides = MpServer.CoreOverrides;
50
+ /**
51
+ * @category Global/Config
52
+ */
42
53
  export type CoreConfig = MpServer.CoreConfig;
54
+ /**
55
+ * @category Global/Config
56
+ */
43
57
  export type ServerConfig = MpServer.ServerConfig;
package/src/mp/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export type { CoreConfig, CoreOverrides, ServerConfig } from "./config";
2
- export * from "./multiplayer";
3
- export * from "./internal-multiplayer";
1
+ export type { CoreConfig, CoreOverrides, ServerConfig } from './config';
2
+ export * from './multiplayer';
3
+ export * from './internal-multiplayer';
@@ -45,4 +45,4 @@ export interface MpServer {
45
45
  config: MpServ.ServerConfig & Record<string, string>;
46
46
  }
47
47
 
48
- export const mp: MpServer;
48
+ export declare const mp: MpServer;
package/src/objects.ts CHANGED
@@ -1,22 +1,56 @@
1
1
  import type { EntityType, MpEntities, MpEntity } from './entities';
2
2
  import type { TweakDBID, Vector3 } from './shared';
3
3
 
4
+ /**
5
+ * Interface representing a spawned static or dynamic object.
6
+ * @category Entities/Objects
7
+ */
4
8
  export interface MpObject extends MpEntity<EntityType.GameObject> {
9
+ /** The TweakDBID model hash of this object. */
5
10
  readonly model: TweakDBID;
6
11
 
12
+ /** Deletes the object from the world. */
7
13
  destroy(): void;
8
14
  }
9
15
 
16
+ /**
17
+ * Options configuration for spawning an object.
18
+ * @category Entities/Objects
19
+ */
10
20
  export interface CreateObjectOptions {
21
+ /** Model TweakDBID to spawn. */
11
22
  model: TweakDBID;
23
+
24
+ /** Location coordinates. */
12
25
  position: Vector3;
26
+
27
+ /** Heading direction (yaw) in degrees. */
13
28
  yaw?: number;
29
+
30
+ /** If true, physics simulation is enabled on the object. */
14
31
  dynamic?: boolean;
32
+
33
+ /** The virtual dimension assigned to the object. */
15
34
  dimension?: number;
16
35
  }
17
36
 
37
+ /**
38
+ * Interface for managing world objects.
39
+ * @category Entities/Objects
40
+ */
18
41
  export interface MpObjects extends MpEntities<MpObject> {
42
+ /**
43
+ * Spawns a new object into the world.
44
+ * @param options Object configuration properties.
45
+ */
19
46
  create(options: CreateObjectOptions): MpObject;
47
+
48
+ /**
49
+ * Removes and deletes an object.
50
+ * @param entity Object instance or its ID.
51
+ */
20
52
  destroy(entity: MpObject | number): void;
53
+
54
+ /** Converts the object collection to a standard array. */
21
55
  toArray(): MpObject[];
22
56
  }
package/src/peds.ts CHANGED
@@ -1,27 +1,65 @@
1
1
  import type { EntityType, MpEntities, MpEntity } from './entities';
2
2
  import type { CName, TweakDBID, Vector3 } from './shared';
3
3
 
4
+ /**
5
+ * Interface representing an NPC (Ped) entity.
6
+ * @category Entities/Peds
7
+ */
4
8
  export interface MpPed extends MpEntity<EntityType.Ped> {
9
+ /** Current health value of the NPC. */
5
10
  readonly health: number;
11
+
12
+ /** Model TweakDBID hash of the Ped. */
6
13
  readonly model: TweakDBID;
14
+
15
+ /** Active appearance name. */
7
16
  readonly appearance: CName;
8
17
 
18
+ /** Deletes the NPC from the server. */
9
19
  destroy(): void;
10
20
  }
11
21
 
22
+ /**
23
+ * Configuration properties for spawning a new Ped.
24
+ * @category Entities/Peds
25
+ */
12
26
  export interface CreatePedOptions {
27
+ /** Model TweakDBID. */
13
28
  model: TweakDBID;
29
+
30
+ /** Appearance identification hash. */
14
31
  appearance: CName;
32
+
33
+ /** Coordinates for spawning. */
15
34
  position: Vector3;
35
+
36
+ /** Starting health value. */
16
37
  health?: number;
38
+
39
+ /** Starting rotation yaw angle. */
17
40
  yaw?: number;
41
+
42
+ /** Dimension world ID. */
18
43
  dimension?: number;
19
44
  }
20
45
 
46
+ /**
47
+ * Manager interface for handling Peds.
48
+ * @category Entities/Peds
49
+ */
21
50
  export interface MpPeds extends MpEntities<MpPed> {
51
+ /**
52
+ * Spawns a new Ped into the server environment.
53
+ * @param options Spawn options and properties.
54
+ */
22
55
  create(options: CreatePedOptions): MpPed;
23
56
 
57
+ /**
58
+ * Destroys and despawns the Ped.
59
+ * @param ped Ped instance or its ID.
60
+ */
24
61
  destroy(ped: MpPed | number): void;
25
62
 
63
+ /** Converts the Ped collection to a standard array. */
26
64
  toArray(): MpPed[];
27
65
  }
package/src/pickups.ts CHANGED
@@ -1,27 +1,60 @@
1
1
  import type { EntityType, MpEntities, MpEntity } from './entities';
2
2
  import type { TweakDBID, Vector3 } from './shared';
3
3
 
4
+ /**
5
+ * Enumeration representing categories of item pickups.
6
+ * @category Entities/Pickups
7
+ */
4
8
  export enum PickupType {
5
9
  Clothes = 1,
6
10
  Weapon = 2,
7
11
  Other = 3,
8
12
  }
9
13
 
14
+ /**
15
+ * Interface representing a world item pickup entity.
16
+ * @category Entities/Pickups
17
+ */
10
18
  export interface MpPickup extends MpEntity<EntityType.Pickup> {
19
+ /** The model TweakDBID hash of this pickup. */
11
20
  readonly model: TweakDBID;
21
+
22
+ /** Classification type of the pickup. */
12
23
  readonly pickupType: PickupType;
13
24
 
25
+ /** Deletes the pickup entity. */
14
26
  destroy(): void;
15
27
  }
16
28
 
29
+ /**
30
+ * Configuration options for spawning a pickup.
31
+ * @category Entities/Pickups
32
+ */
17
33
  export interface CreatePickupOptions {
34
+ /** Model TweakDBID of the item. */
18
35
  model: TweakDBID;
36
+
37
+ /** Classification category type. */
19
38
  type: PickupType;
39
+
40
+ /** Spawning coordinates. */
20
41
  position: Vector3;
42
+
43
+ /** Starting heading yaw rotation in degrees. */
21
44
  yaw?: number;
45
+
46
+ /** Target dimension world ID. */
22
47
  dimension?: number;
23
- };
48
+ }
24
49
 
50
+ /**
51
+ * Manager interface for item pickups.
52
+ * @category Entities/Pickups
53
+ */
25
54
  export interface MpPickups extends MpEntities<MpPickup> {
55
+ /**
56
+ * Spawns a new item pickup into the server world.
57
+ * @param options Pickup spawning configuration.
58
+ */
26
59
  create(options: CreatePickupOptions): MpPickup;
27
60
  }
package/src/resources.ts CHANGED
@@ -19,9 +19,9 @@ export interface MpResources {
19
19
  stop(resourceName: string): void;
20
20
 
21
21
  /**
22
- * Restarts a specific resource by name.
23
- * @param resourceName Name of the resource to restart.
24
- */
22
+ * Restarts a specific resource by name.
23
+ * @param resourceName Name of the resource to restart.
24
+ */
25
25
  restart(resourceName: string): void;
26
26
 
27
27
  /**
@@ -1,4 +1,16 @@
1
- export type GameHash = bigint | number;
2
- export type TweakDBID = GameHash;
3
- export type CName = GameHash;
4
- export type ResRef = GameHash;
1
+ /**
2
+ * @category Hashes
3
+ */
4
+ export type GameHash = bigint | number;
5
+ /**
6
+ * @category Hashes
7
+ */
8
+ export type TweakDBID = GameHash;
9
+ /**
10
+ * @category Hashes
11
+ */
12
+ export type CName = GameHash;
13
+ /**
14
+ * @category Hashes
15
+ */
16
+ export type ResRef = GameHash;
@@ -1,6 +1,9 @@
1
- export * from "./transform";
2
- export * from "./hash";
1
+ export * from './transform';
2
+ export * from './hash';
3
3
 
4
+ /**
5
+ * @ignore
6
+ */
4
7
  export interface Class<T, Arguments extends unknown[] = any[]> {
5
8
  prototype: Pick<T, keyof T>;
6
9
  new (...arguments_: Arguments): T;
@@ -1,9 +1,31 @@
1
- export type Vector3 = [x: number, y: number, z: number];
2
- export type Vector4 = [x: number, y: number, z: number, w: number];
3
- export type Rotation = [pitch: number, roll: number, yaw: number];
4
-
5
- export interface Vector3Object {
6
- posX: number;
7
- posY: number;
8
- posZ: number;
9
- }
1
+ /**
2
+ * 0 - x
3
+ * 1 - y
4
+ * 2 - z
5
+ * @category Global
6
+ */
7
+ export type Vector3 = [x: number, y: number, z: number];
8
+ /**
9
+ * 0 - x
10
+ * 1 - y
11
+ * 2 - z
12
+ * 3 - w
13
+ * @category Global
14
+ */
15
+ export type Vector4 = [x: number, y: number, z: number, w: number];
16
+ /**
17
+ * 0 - pitch
18
+ * 1 - roll
19
+ * 2 - yaw
20
+ * @category Global
21
+ */
22
+ export type Rotation = [pitch: number, roll: number, yaw: number];
23
+
24
+ /**
25
+ * @category Events/World
26
+ */
27
+ export interface Vector3Object {
28
+ posX: number;
29
+ posY: number;
30
+ posZ: number;
31
+ }
package/src/vehicles.ts CHANGED
@@ -1,7 +1,11 @@
1
- import type { EntityType, MpEntities, MpEntity } from "./entities";
2
- import type { MpPlayer } from "./players";
3
- 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';
4
4
 
5
+ /**
6
+ * Enumeration representing available seating positions inside a vehicle.
7
+ * @category Entities/Vehicles
8
+ */
5
9
  export enum VehicleSeat {
6
10
  Driver = 0,
7
11
  Passenger = 1,
@@ -9,41 +13,107 @@ export enum VehicleSeat {
9
13
  RearRight = 3,
10
14
  }
11
15
 
16
+ /**
17
+ * Interface representing a vehicle entity on the server.
18
+ * @category Entities/Vehicles
19
+ */
12
20
  export interface MpVehicle extends MpEntity<EntityType.Vehicle> {
21
+ /** The model TweakDBID hash of the vehicle. */
13
22
  readonly model: TweakDBID;
23
+
24
+ /** Active appearance name. */
14
25
  readonly appearance: CName;
26
+
27
+ /** Current durability/health value of the vehicle. */
15
28
  readonly health: number;
29
+
30
+ /** Physical velocity vector. */
16
31
  readonly velocity: Vector3;
32
+
33
+ /** Angular velocity vector. */
17
34
  readonly angularVelocity: Vector3;
18
35
 
36
+ /** Seating positions mapping players currently in the vehicle. */
19
37
  seats: MpVehicleSeats;
20
38
 
39
+ /** Seating positions mapping players who last occupied the vehicle. */
21
40
  lastSeats: MpVehicleSeats;
22
41
 
42
+ /**
43
+ * Retrieves the occupant of a specific seat.
44
+ * @param seat Seating position (e.g. Driver).
45
+ */
23
46
  getPlayerInSeat(seat: VehicleSeat): MpPlayer | null;
47
+
48
+ /**
49
+ * Retrieves the last occupant of a specific seat.
50
+ * @param seat Seating position.
51
+ */
24
52
  getLastPlayerInSeat(seat: VehicleSeat): MpPlayer | null;
25
53
 
54
+ /** Deletes the vehicle entity from the server. */
26
55
  destroy(): void;
27
56
  }
28
57
 
58
+ /**
59
+ * Structure representing mapped occupants for each vehicle seat.
60
+ * @category Entities/Vehicles
61
+ */
29
62
  export interface MpVehicleSeats {
63
+ /** Player in driver seat. */
30
64
  readonly driver: MpPlayer | null;
65
+
66
+ /** Player in front passenger seat. */
31
67
  readonly passenger: MpPlayer | null;
68
+
69
+ /** Player in rear left seat. */
32
70
  readonly rearLeft: MpPlayer | null;
71
+
72
+ /** Player in rear right seat. */
33
73
  readonly rearRight: MpPlayer | null;
34
74
  }
35
75
 
76
+ /**
77
+ * Configuration properties for spawning a new vehicle.
78
+ * @category Entities/Vehicles
79
+ */
36
80
  export interface CreateVehicleOptions {
81
+ /** Vehicle model TweakDBID. */
37
82
  model: TweakDBID;
83
+
84
+ /** Appearance record name. */
38
85
  appearance: CName;
86
+
87
+ /** Spawning location coordinates. */
39
88
  position: Vector3;
89
+
90
+ /** Initial heading yaw angle in degrees. */
40
91
  yaw?: number;
92
+
93
+ /** Initial health value. */
41
94
  health?: number;
95
+
96
+ /** Initial dimension world ID. */
42
97
  dimension?: number;
43
98
  }
44
99
 
100
+ /**
101
+ * Manager interface for handling vehicles.
102
+ * @category Entities/Vehicles
103
+ */
45
104
  export interface MpVehicles extends MpEntities<MpVehicle> {
105
+ /**
106
+ * Spawns a new vehicle into the world.
107
+ * @param options Vehicle configuration and attributes.
108
+ */
46
109
  create(options: CreateVehicleOptions): MpVehicle;
110
+
111
+ /**
112
+ * Despawns and deletes a vehicle.
113
+ * @param vehicle Vehicle instance or ID.
114
+ */
47
115
  destroy(vehicle: MpVehicle | number): void;
116
+
117
+ /** Converts the vehicle collection to a standard array. */
48
118
  toArray(): MpVehicle[];
49
119
  }