@cybermp-community/server-types 1.2.0 → 1.2.2
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 +2 -2
- package/src/commands.ts +7 -4
- package/src/entities/entity.ts +54 -1
- package/src/entities/index.ts +2 -2
- package/src/entities/player.ts +50 -0
- package/src/events/events.ts +47 -51
- package/src/events/index.ts +3 -3
- package/src/events/map.ts +136 -58
- package/src/events/types.ts +64 -1
- package/src/exports.ts +12 -12
- package/src/meta.ts +5 -12
- package/src/mp/config.d.ts +16 -2
- package/src/mp/index.d.ts +3 -3
- package/src/mp/multiplayer.d.ts +1 -1
- package/src/objects.ts +34 -0
- package/src/peds.ts +38 -0
- package/src/pickups.ts +34 -1
- package/src/resources.ts +15 -3
- package/src/shared/hash.ts +16 -4
- package/src/shared/index.ts +5 -2
- package/src/shared/transform.ts +31 -9
- package/src/vehicles.ts +73 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cybermp-community/server-types",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "TypeScript type definitions for the CyberMP server-side environment.",
|
|
5
5
|
"license": "CC BY-SA 4.0",
|
|
6
6
|
"author": {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
],
|
|
13
13
|
"repository": {
|
|
14
14
|
"type": "gitlab",
|
|
15
|
-
"url": "https://gitlab.com/cybermp/types/server"
|
|
15
|
+
"url": "git+https://gitlab.com/cybermp/types/server.git"
|
|
16
16
|
},
|
|
17
17
|
"publishConfig": {
|
|
18
18
|
"access": "public"
|
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
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
}
|
package/src/entities/entity.ts
CHANGED
|
@@ -5,6 +5,10 @@ import type { Rotation, Vector3 } from '../shared';
|
|
|
5
5
|
import type { MpVehicle } from '../vehicles';
|
|
6
6
|
import type { MpPlayer } from './player';
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Enumeration of available entity types.
|
|
10
|
+
* @category Entities
|
|
11
|
+
*/
|
|
8
12
|
export enum EntityType {
|
|
9
13
|
Player = 1,
|
|
10
14
|
Vehicle = 2,
|
|
@@ -14,6 +18,10 @@ export enum EntityType {
|
|
|
14
18
|
GameObject = 6,
|
|
15
19
|
}
|
|
16
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;
|
|
40
|
+
|
|
41
|
+
/** The player who originally spawned/synced this entity. */
|
|
27
42
|
readonly firstOwner: MpPlayer;
|
|
43
|
+
|
|
44
|
+
/** Coordinates representing the entity's position. */
|
|
28
45
|
readonly position: Vector3;
|
|
46
|
+
|
|
47
|
+
/** Rotation angles (pitch, roll, yaw) of the entity. */
|
|
29
48
|
readonly rotation: Rotation;
|
|
49
|
+
|
|
50
|
+
/** Yaw rotation value. */
|
|
30
51
|
readonly yaw: number;
|
|
52
|
+
|
|
53
|
+
/** Type classification of this entity. */
|
|
31
54
|
readonly type: TEntityType;
|
|
55
|
+
|
|
56
|
+
/** True if the entity is currently active in the world. */
|
|
32
57
|
readonly exist: boolean;
|
|
33
|
-
|
|
58
|
+
|
|
59
|
+
/** Current syncing owner of the entity. */
|
|
34
60
|
owner: MpPlayer;
|
|
61
|
+
|
|
62
|
+
/** Virtual world/dimension ID. */
|
|
35
63
|
dimension: number;
|
|
64
|
+
|
|
65
|
+
/** Streaming distance radius. */
|
|
36
66
|
streamingRadius: number;
|
|
37
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Retrieves custom metadata stored on the entity.
|
|
70
|
+
* @param key The key of the metadata.
|
|
71
|
+
*/
|
|
38
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
|
+
*/
|
|
39
80
|
setMeta(key: string, value: any, sync?: boolean): void;
|
|
40
81
|
}
|
|
41
82
|
|
|
83
|
+
/**
|
|
84
|
+
* Manager interface for handling entity collections.
|
|
85
|
+
* @category Entities
|
|
86
|
+
*/
|
|
42
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
|
+
*/
|
|
43
92
|
exists(entity: T | number): boolean;
|
|
44
93
|
|
|
94
|
+
/**
|
|
95
|
+
* Finds and returns an entity by instance or ID.
|
|
96
|
+
* @param entity Entity object or its ID.
|
|
97
|
+
*/
|
|
45
98
|
at(entity: T | number): T;
|
|
46
99
|
}
|
package/src/entities/index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
1
|
+
export * from './entity';
|
|
2
|
+
export * from './player';
|
package/src/entities/player.ts
CHANGED
|
@@ -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
|
}
|
package/src/events/events.ts
CHANGED
|
@@ -1,52 +1,48 @@
|
|
|
1
|
-
import type { MpPlayer } from
|
|
2
|
-
import type { MpEventsMap } from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
*
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
}
|
package/src/events/index.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
1
|
+
export * from './events';
|
|
2
|
+
export * from './map';
|
|
3
|
+
export * from './types';
|
package/src/events/map.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { VehicleSeat } from
|
|
2
|
-
import type { EntityType, MpAnyEntity, MpPlayer } from
|
|
3
|
-
import type { GameHash, Vector3Object } from
|
|
1
|
+
import type { VehicleSeat } from '../vehicles';
|
|
2
|
+
import type { EntityType, MpAnyEntity, MpPlayer } from '../entities';
|
|
3
|
+
import type { GameHash, Vector3Object } from '../shared';
|
|
4
4
|
import type {
|
|
5
5
|
DamageEventData,
|
|
6
6
|
DoorStateChangeEventData,
|
|
@@ -19,42 +19,96 @@ import type {
|
|
|
19
19
|
VehicleDestructionChangeEventData,
|
|
20
20
|
VehicleHittedByPlayerEventData,
|
|
21
21
|
VehicleWeaponShootEventData,
|
|
22
|
-
} from
|
|
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
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
+
*/
|
|
52
98
|
playerMetaChange<T = any, K = T>(
|
|
53
99
|
player: MpPlayer,
|
|
54
100
|
key: string,
|
|
55
101
|
newValue: T,
|
|
56
102
|
oldValue: K,
|
|
57
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
|
+
*/
|
|
58
112
|
entityMetaChange<T = any, K = T>(
|
|
59
113
|
entity: MpAnyEntity,
|
|
60
114
|
key: string,
|
|
@@ -62,77 +116,101 @@ export interface MpEventsMap {
|
|
|
62
116
|
oldValue: K,
|
|
63
117
|
): undefined | boolean;
|
|
64
118
|
|
|
119
|
+
/** Fires when a player takes damage. */
|
|
65
120
|
damage(playerId: number, data: DamageEventData): undefined | boolean;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
121
|
+
|
|
122
|
+
/** Fires when a player performs a melee strike. */
|
|
123
|
+
meleeAction(playerId: number, data: MeleeActionEventData): undefined | boolean;
|
|
124
|
+
|
|
125
|
+
/** Fires when a player fires a weapon. */
|
|
126
|
+
shootAction(playerId: number, data: ShootActionEventData): undefined | boolean;
|
|
127
|
+
|
|
128
|
+
/** Fires when a player reloads their firearm. */
|
|
74
129
|
weaponReload(playerId: number, weaponHash: GameHash): undefined | boolean;
|
|
75
|
-
throwGrenade(
|
|
76
|
-
playerId: number,
|
|
77
|
-
data: ThrowGrenadeEventData,
|
|
78
|
-
): undefined | boolean;
|
|
79
130
|
|
|
131
|
+
/** Fires when a player throws a grenade. */
|
|
132
|
+
throwGrenade(playerId: number, data: ThrowGrenadeEventData): undefined | boolean;
|
|
133
|
+
|
|
134
|
+
/** Fires when a fire source is created. */
|
|
80
135
|
fire(playerId: number, data: FireEventData): undefined | boolean;
|
|
136
|
+
|
|
137
|
+
/** Fires when an explosion is triggered. */
|
|
81
138
|
explosion(playerId: number, data: ExplosionEventData): undefined | boolean;
|
|
82
139
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
)
|
|
87
|
-
liftStateChange(
|
|
88
|
-
playerId: number,
|
|
89
|
-
data: LiftStateChangeEventData,
|
|
90
|
-
): undefined | boolean;
|
|
140
|
+
/** Fires when a door's open/close state is altered. */
|
|
141
|
+
doorStateChange(playerId: number, data: DoorStateChangeEventData): undefined | boolean;
|
|
142
|
+
|
|
143
|
+
/** Fires when a lift (elevator) changes state. */
|
|
144
|
+
liftStateChange(playerId: number, data: LiftStateChangeEventData): undefined | boolean;
|
|
91
145
|
|
|
146
|
+
/** Fires when any server entity is spawned. */
|
|
92
147
|
entitySpawn(id: number, type: EntityType): void;
|
|
148
|
+
|
|
149
|
+
/** Fires when any server entity is despawned. */
|
|
93
150
|
entityDespawn(id: number, type: EntityType): void;
|
|
151
|
+
|
|
152
|
+
/** Fires when a generic object spawns. */
|
|
94
153
|
objectSpawn(id: number): void;
|
|
154
|
+
|
|
155
|
+
/** Fires when a generic object despawns. */
|
|
95
156
|
objectDespawn(id: number): void;
|
|
157
|
+
|
|
158
|
+
/** Fires when a Ped (NPC) spawns. */
|
|
96
159
|
pedSpawn(id: number): void;
|
|
160
|
+
|
|
161
|
+
/** Fires when a Ped (NPC) despawns. */
|
|
97
162
|
pedDespawn(id: number): void;
|
|
163
|
+
|
|
164
|
+
/** Fires when a game object spawns. */
|
|
98
165
|
gameObjectSpawn(id: number): void;
|
|
166
|
+
|
|
167
|
+
/** Fires when a game object despawns. */
|
|
99
168
|
gameObjectDespawn(id: number): void;
|
|
100
169
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
vehicleDestructionChange(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
): 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. */
|
|
109
177
|
vehicleSpawn(id: number): void;
|
|
178
|
+
|
|
179
|
+
/** Fires when a vehicle entity despawns. */
|
|
110
180
|
vehicleDespawn(id: number): void;
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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. */
|
|
119
189
|
exitVehicle(id: number): void;
|
|
190
|
+
|
|
191
|
+
/** Fires when a player enters a vehicle. */
|
|
120
192
|
enterVehicle(id: number, seat: VehicleSeat): void;
|
|
121
193
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
): undefined | boolean;
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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. */
|
|
201
|
+
pickupChange(playerId: number, data: PickupChangeEventData): undefined | boolean;
|
|
202
|
+
|
|
203
|
+
/** Fires when a player picks up an item. */
|
|
204
|
+
pickupRaise(playerId: number, data: PickupDespawnEventData): undefined | boolean;
|
|
205
|
+
|
|
206
|
+
/** Fires when a player drops an item. */
|
|
207
|
+
pickupDrop(playerId: number, data: PickupCreateEventData): undefined | boolean;
|
|
208
|
+
|
|
209
|
+
/** Fires when a pickup spawns. */
|
|
134
210
|
pickupSpawn(id: number): void;
|
|
211
|
+
|
|
212
|
+
/** Fires when a pickup despawns. */
|
|
135
213
|
pickupDespawn(id: number): void;
|
|
136
214
|
}
|
|
137
215
|
|
|
138
|
-
export type { MeleeActionType } from
|
|
216
|
+
export type { MeleeActionType } from './types';
|
package/src/events/types.ts
CHANGED
|
@@ -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
|
}
|
package/src/mp/config.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export namespace MpServer {
|
|
2
|
-
export interface
|
|
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?:
|
|
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
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
1
|
+
export type { CoreConfig, CoreOverrides, ServerConfig } from './config';
|
|
2
|
+
export * from './multiplayer';
|
|
3
|
+
export * from './internal-multiplayer';
|
package/src/mp/multiplayer.d.ts
CHANGED
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
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
export interface MpResources {
|
|
2
|
+
/**
|
|
3
|
+
* Reads a TOML configuration file and returns its raw contents.
|
|
4
|
+
* @param name Name or key of the TOML file.
|
|
5
|
+
* @returns Raw TOML string.
|
|
6
|
+
*/
|
|
7
|
+
getTOML(name: string): string;
|
|
8
|
+
|
|
2
9
|
/**
|
|
3
10
|
* Gets the current state of a resource.
|
|
4
11
|
* @param resourceName The resource to check.
|
|
@@ -19,11 +26,16 @@ export interface MpResources {
|
|
|
19
26
|
stop(resourceName: string): void;
|
|
20
27
|
|
|
21
28
|
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
* Restarts a specific resource by name.
|
|
30
|
+
* @param resourceName Name of the resource to restart.
|
|
31
|
+
*/
|
|
25
32
|
restart(resourceName: string): void;
|
|
26
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Re-indexes all resources.
|
|
36
|
+
*/
|
|
37
|
+
refresh(): void;
|
|
38
|
+
|
|
27
39
|
/**
|
|
28
40
|
* Gets the current resource's name.
|
|
29
41
|
* @returns Resource name.
|
package/src/shared/hash.ts
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export type
|
|
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;
|
package/src/shared/index.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
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;
|
package/src/shared/transform.ts
CHANGED
|
@@ -1,9 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
|
2
|
-
import type { MpPlayer } from
|
|
3
|
-
import type { CName, TweakDBID, Vector3 } from
|
|
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
|
}
|