rock-mod 0.18.0 → 0.19.0
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/dist/client/entities/common/entity/IEntity.d.ts +5 -0
- package/dist/client/entities/common/object/IObject.d.ts +0 -1
- package/dist/client/entities/common/player/IPlayer.d.ts +2 -0
- package/dist/client/entities/common/player/IPlayersManager.d.ts +2 -0
- package/dist/client/entities/common/vehicle/IVehicle.d.ts +6 -0
- package/dist/client/entities/ragemp/entity/RageEntity.d.ts +5 -0
- package/dist/client/entities/ragemp/entity/RageEntity.js +12 -0
- package/dist/client/entities/ragemp/object/RageObject.d.ts +0 -1
- package/dist/client/entities/ragemp/object/RageObject.js +0 -3
- package/dist/client/entities/ragemp/player/RagePlayer.d.ts +2 -0
- package/dist/client/entities/ragemp/player/RagePlayer.js +6 -0
- package/dist/client/entities/ragemp/player/RagePlayersManager.d.ts +2 -0
- package/dist/client/entities/ragemp/player/RagePlayersManager.js +14 -0
- package/dist/client/entities/ragemp/vehicle/RageVehicle.d.ts +6 -0
- package/dist/client/entities/ragemp/vehicle/RageVehicle.js +18 -0
- package/dist/client/game/common/streaming/IStreamingManager.d.ts +5 -0
- package/dist/client/game/ragemp/streaming/RageStreamingManager.d.ts +5 -0
- package/dist/client/game/ragemp/streaming/RageStreamingManager.js +12 -0
- package/dist/server/entities/ragemp/player/RagePlayersManager.js +28 -1
- package/dist/server/net/common/events/types.d.ts +11 -1
- package/dist/server/net/common/events/types.js +5 -0
- package/package.json +1 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type IBaseObject } from "../baseObject";
|
|
1
2
|
import { type IWorldObject, type IWorldObjectOptions } from "../worldObject/IWorldObject";
|
|
2
3
|
import { type IVector3D } from "../../../../shared/common/utils";
|
|
3
4
|
export interface IEntityOptions extends IWorldObjectOptions {
|
|
@@ -21,4 +22,8 @@ export interface IEntity extends IWorldObject {
|
|
|
21
22
|
getBoneIndexByName(boneName: string): number;
|
|
22
23
|
getWorldPositionOfBone(boneIndex: number): IVector3D;
|
|
23
24
|
getVariable(name: string): unknown | null;
|
|
25
|
+
attachToEntity(target: IBaseObject, boneIndex: number, offset: IVector3D, rotation: IVector3D, p9: boolean, useSoftPinning: boolean, collision: boolean, isPed: boolean, vertexIndex: number, fixedRot: boolean): void;
|
|
26
|
+
detach(useDetachVelocity: boolean, collision: boolean): void;
|
|
27
|
+
getSpeed(): number;
|
|
28
|
+
isPlayingAnim(dictionary: string, name: string, taskFlag: number): boolean;
|
|
24
29
|
}
|
|
@@ -4,5 +4,4 @@ export interface IObjectOptions extends IEntityOptions {
|
|
|
4
4
|
export interface IObject extends IEntity {
|
|
5
5
|
attachTo(entity: Handle, boneIndex: number, xPos: number, yPos: number, zPos: number, xRot: number, yRot: number, zRot: number, useSoftPinning: boolean, collision: boolean, isPed: boolean, vertexIndex: number, fixedRot: boolean): void;
|
|
6
6
|
isAttachedTo(entity: number): boolean;
|
|
7
|
-
detach(applyVelocy: boolean, collision: boolean): void;
|
|
8
7
|
}
|
|
@@ -35,7 +35,9 @@ export interface IPlayer extends IEntity {
|
|
|
35
35
|
taskSwapWeapon(): void;
|
|
36
36
|
taskEnterVehicle(vehicleHandle: number, timeout: number, seat: number, speed: number, flag: number, p6: number): void;
|
|
37
37
|
clearTasks(): void;
|
|
38
|
+
clearTasksImmediately(): void;
|
|
38
39
|
taskPlayAnim(dictionary: string, name: string, blendInSpeed: number, blendOutSpeed: number, duration: number, flag: number, playbackRate: number, lockX: boolean, lockY: boolean, lockZ: boolean): void;
|
|
40
|
+
stopAnim(dictionary: string, name: string, blendOutSpeed: number): void;
|
|
39
41
|
setMovementClipset(clipset: string, speed: number): void;
|
|
40
42
|
resetMovementClipset(blendDuration: number): void;
|
|
41
43
|
getBoneCoords(boneId: number, offsetX: number, offsetY: number, offsetZ: number): IVector3D;
|
|
@@ -3,6 +3,8 @@ import { type IPlayer } from "./IPlayer";
|
|
|
3
3
|
export interface IPlayersManager extends IEntitiesManager<IPlayer> {
|
|
4
4
|
getByName(name: string): IPlayer;
|
|
5
5
|
findByName(name: string): IPlayer | null;
|
|
6
|
+
findByRemoteId(remoteId: number): IPlayer | null;
|
|
7
|
+
getByRemoteId(remoteId: number): IPlayer;
|
|
6
8
|
findLocalPlayer(): IPlayer | null;
|
|
7
9
|
getLocalPlayer(): IPlayer;
|
|
8
10
|
}
|
|
@@ -42,4 +42,10 @@ export interface IVehicle extends IEntity {
|
|
|
42
42
|
get numberPlateTextIndex(): number;
|
|
43
43
|
setDoorOpen(doorIndex: number, loose: boolean, openInstantly: boolean): void;
|
|
44
44
|
setDoorShut(doorIndex: number, instantly: boolean): void;
|
|
45
|
+
setHandling(field: string, value: number): void;
|
|
46
|
+
getHandling(field: string): number;
|
|
47
|
+
setEnginePowerMultiplier(value: number): void;
|
|
48
|
+
setEngineTorqueMultiplier(value: number): void;
|
|
49
|
+
modifyTopSpeed(value: number): void;
|
|
50
|
+
setCheatPowerIncrease(value: number): void;
|
|
45
51
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type IBaseObject } from "../../common/baseObject";
|
|
1
2
|
import { type IEntity } from "../../common/entity/IEntity";
|
|
2
3
|
import { type IRageWorldObjectOptions, RageWorldObject } from "../worldObject/RageWorldObject";
|
|
3
4
|
import { type IVector3D, Vector3D } from "../../../../shared/common/utils";
|
|
@@ -23,4 +24,8 @@ export declare abstract class RageEntity<T extends EntityMp> extends RageWorldOb
|
|
|
23
24
|
getBoneIndexByName(boneName: string): number;
|
|
24
25
|
getWorldPositionOfBone(boneIndex: number): IVector3D;
|
|
25
26
|
getVariable(name: string): unknown | null;
|
|
27
|
+
attachToEntity(target: IBaseObject, boneIndex: number, offset: IVector3D, rotation: IVector3D, p9: boolean, useSoftPinning: boolean, collision: boolean, isPed: boolean, vertexIndex: number, fixedRot: boolean): void;
|
|
28
|
+
detach(useDetachVelocity: boolean, collision: boolean): void;
|
|
29
|
+
getSpeed(): number;
|
|
30
|
+
isPlayingAnim(dictionary: string, name: string, taskFlag: number): boolean;
|
|
26
31
|
}
|
|
@@ -62,4 +62,16 @@ export class RageEntity extends RageWorldObject {
|
|
|
62
62
|
getVariable(name) {
|
|
63
63
|
return this.mpEntity.getVariable(name);
|
|
64
64
|
}
|
|
65
|
+
attachToEntity(target, boneIndex, offset, rotation, p9, useSoftPinning, collision, isPed, vertexIndex, fixedRot) {
|
|
66
|
+
mp.game.entity.attachToEntity(this.handle, target.handle, boneIndex, offset.x, offset.y, offset.z, rotation.x, rotation.y, rotation.z, p9, useSoftPinning, collision, isPed, vertexIndex, fixedRot);
|
|
67
|
+
}
|
|
68
|
+
detach(useDetachVelocity, collision) {
|
|
69
|
+
mp.game.entity.detach(this.handle, useDetachVelocity, collision);
|
|
70
|
+
}
|
|
71
|
+
getSpeed() {
|
|
72
|
+
return mp.game.entity.getSpeed(this.handle);
|
|
73
|
+
}
|
|
74
|
+
isPlayingAnim(dictionary, name, taskFlag) {
|
|
75
|
+
return mp.game.entity.isPlayingAnim(this.handle, dictionary, name, taskFlag);
|
|
76
|
+
}
|
|
65
77
|
}
|
|
@@ -6,5 +6,4 @@ export declare class RageObject extends RageEntity<ObjectMp> implements IObject
|
|
|
6
6
|
constructor(options: IRageObjectOptions);
|
|
7
7
|
attachTo(entity: Handle, boneIndex: number, xPos: number, yPos: number, zPos: number, xRot: number, yRot: number, zRot: number, useSoftPinning: boolean, collision: boolean, isPed: boolean, vertexIndex: number, fixedRot: boolean): void;
|
|
8
8
|
isAttachedTo(entity: number): boolean;
|
|
9
|
-
detach(applyVelocy: boolean, collision: boolean): void;
|
|
10
9
|
}
|
|
@@ -35,6 +35,8 @@ export declare class RagePlayer extends RageEntity<PlayerMp> implements IPlayer
|
|
|
35
35
|
clearProp(componentId: number): void;
|
|
36
36
|
get isLocalPlayer(): boolean;
|
|
37
37
|
clearTasks(): void;
|
|
38
|
+
clearTasksImmediately(): void;
|
|
39
|
+
stopAnim(dictionary: string, name: string, blendOutSpeed: number): void;
|
|
38
40
|
resetMovementClipset(blendDuration: number): void;
|
|
39
41
|
setMovementClipset(clipset: string, speed: number): void;
|
|
40
42
|
taskEnterVehicle(vehicleHandle: number, timeout: number, seat: number, speed: number, flag: number, p6: number): void;
|
|
@@ -101,6 +101,12 @@ export class RagePlayer extends RageEntity {
|
|
|
101
101
|
clearTasks() {
|
|
102
102
|
this.mpEntity.clearTasks();
|
|
103
103
|
}
|
|
104
|
+
clearTasksImmediately() {
|
|
105
|
+
mp.game.task.clearPedTasksImmediately(this.handle);
|
|
106
|
+
}
|
|
107
|
+
stopAnim(dictionary, name, blendOutSpeed) {
|
|
108
|
+
mp.game.task.stopAnimTask(this.handle, dictionary, name, blendOutSpeed);
|
|
109
|
+
}
|
|
104
110
|
resetMovementClipset(blendDuration) {
|
|
105
111
|
this.mpEntity.resetMovementClipset(blendDuration);
|
|
106
112
|
}
|
|
@@ -5,6 +5,8 @@ export declare class RagePlayersManager extends RageEntitiesManager<RagePlayer>
|
|
|
5
5
|
constructor();
|
|
6
6
|
getByName(name: string): RagePlayer;
|
|
7
7
|
findByName(name: string): RagePlayer | null;
|
|
8
|
+
findByRemoteId(remoteId: number): RagePlayer | null;
|
|
9
|
+
getByRemoteId(remoteId: number): RagePlayer;
|
|
8
10
|
findLocalPlayer(): RagePlayer | null;
|
|
9
11
|
getLocalPlayer(): IPlayer;
|
|
10
12
|
syncWithMpPool(): void;
|
|
@@ -21,6 +21,20 @@ export class RagePlayersManager extends RageEntitiesManager {
|
|
|
21
21
|
}
|
|
22
22
|
return null;
|
|
23
23
|
}
|
|
24
|
+
findByRemoteId(remoteId) {
|
|
25
|
+
const mpPlayer = mp.players.atRemoteId(remoteId);
|
|
26
|
+
if (!mpPlayer) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
return this.findByID(mpPlayer.id);
|
|
30
|
+
}
|
|
31
|
+
getByRemoteId(remoteId) {
|
|
32
|
+
const player = this.findByRemoteId(remoteId);
|
|
33
|
+
if (!player) {
|
|
34
|
+
throw new Error(`Player with remoteId ${remoteId} not found`);
|
|
35
|
+
}
|
|
36
|
+
return player;
|
|
37
|
+
}
|
|
24
38
|
findLocalPlayer() {
|
|
25
39
|
return this.findByID(mp.players.local.id);
|
|
26
40
|
}
|
|
@@ -40,4 +40,10 @@ export declare class RageVehicle extends RageEntity<VehicleMp> implements IVehic
|
|
|
40
40
|
get numberPlateTextIndex(): number;
|
|
41
41
|
setDoorOpen(doorIndex: number, loose: boolean, openInstantly: boolean): void;
|
|
42
42
|
setDoorShut(doorIndex: number, instantly: boolean): void;
|
|
43
|
+
setHandling(field: string, value: number): void;
|
|
44
|
+
getHandling(field: string): number;
|
|
45
|
+
setEnginePowerMultiplier(value: number): void;
|
|
46
|
+
setEngineTorqueMultiplier(value: number): void;
|
|
47
|
+
modifyTopSpeed(value: number): void;
|
|
48
|
+
setCheatPowerIncrease(value: number): void;
|
|
43
49
|
}
|
|
@@ -111,4 +111,22 @@ export class RageVehicle extends RageEntity {
|
|
|
111
111
|
setDoorShut(doorIndex, instantly) {
|
|
112
112
|
this.mpEntity.setDoorShut(doorIndex, instantly);
|
|
113
113
|
}
|
|
114
|
+
setHandling(field, value) {
|
|
115
|
+
this.mpEntity.setHandling(field, value);
|
|
116
|
+
}
|
|
117
|
+
getHandling(field) {
|
|
118
|
+
return this.mpEntity.getHandling(field);
|
|
119
|
+
}
|
|
120
|
+
setEnginePowerMultiplier(value) {
|
|
121
|
+
this.mpEntity.setEnginePowerMultiplier(value);
|
|
122
|
+
}
|
|
123
|
+
setEngineTorqueMultiplier(value) {
|
|
124
|
+
this.mpEntity.setEngineTorqueMultiplier(value);
|
|
125
|
+
}
|
|
126
|
+
modifyTopSpeed(value) {
|
|
127
|
+
mp.game.vehicle.modifyTopSpeed(this.handle, value);
|
|
128
|
+
}
|
|
129
|
+
setCheatPowerIncrease(value) {
|
|
130
|
+
mp.game.vehicle.setCheatPowerIncrease(this.handle, value);
|
|
131
|
+
}
|
|
114
132
|
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import { type IVector3D } from "../../../../shared/common/utils";
|
|
1
2
|
export interface IStreamingManager {
|
|
2
3
|
requestAnimationDictionary(dictionary: string): void;
|
|
3
4
|
hasAnimationDictionaryLoaded(dictionary: string): boolean;
|
|
5
|
+
removeAnimationDictionary(dictionary: string): void;
|
|
4
6
|
isModelInCdimage(model: string): boolean;
|
|
5
7
|
requestIpl(iplName: string): void;
|
|
6
8
|
removeIpl(iplName: string): void;
|
|
9
|
+
setFocusArea(position: IVector3D, offset: IVector3D): void;
|
|
10
|
+
clearFocus(): void;
|
|
11
|
+
setFocusEntity(entityHandle: number): void;
|
|
7
12
|
}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import { type IStreamingManager } from "../../../game";
|
|
2
|
+
import { type IVector3D } from "../../../../shared/common/utils";
|
|
2
3
|
export declare class RageStreamingManager implements IStreamingManager {
|
|
3
4
|
requestAnimationDictionary(dictionary: string): void;
|
|
4
5
|
hasAnimationDictionaryLoaded(dictionary: string): boolean;
|
|
6
|
+
removeAnimationDictionary(dictionary: string): void;
|
|
5
7
|
isModelInCdimage(model: string): boolean;
|
|
6
8
|
requestIpl(iplName: string): void;
|
|
7
9
|
removeIpl(iplName: string): void;
|
|
10
|
+
setFocusArea(position: IVector3D, offset: IVector3D): void;
|
|
11
|
+
clearFocus(): void;
|
|
12
|
+
setFocusEntity(entityHandle: number): void;
|
|
8
13
|
}
|
|
@@ -5,6 +5,9 @@ export class RageStreamingManager {
|
|
|
5
5
|
hasAnimationDictionaryLoaded(dictionary) {
|
|
6
6
|
return mp.game.streaming.hasAnimDictLoaded(dictionary);
|
|
7
7
|
}
|
|
8
|
+
removeAnimationDictionary(dictionary) {
|
|
9
|
+
mp.game.streaming.removeAnimDict(dictionary);
|
|
10
|
+
}
|
|
8
11
|
isModelInCdimage(model) {
|
|
9
12
|
const modelHash = mp.game.joaat(model);
|
|
10
13
|
return mp.game.streaming.isModelInCdimage(modelHash);
|
|
@@ -15,4 +18,13 @@ export class RageStreamingManager {
|
|
|
15
18
|
removeIpl(iplName) {
|
|
16
19
|
mp.game.streaming.removeIpl(iplName);
|
|
17
20
|
}
|
|
21
|
+
setFocusArea(position, offset) {
|
|
22
|
+
mp.game.streaming.setFocusArea(position.x, position.y, position.z, offset.x, offset.y, offset.z);
|
|
23
|
+
}
|
|
24
|
+
clearFocus() {
|
|
25
|
+
mp.game.streaming.clearFocus();
|
|
26
|
+
}
|
|
27
|
+
setFocusEntity(entityHandle) {
|
|
28
|
+
mp.game.streaming.setFocusEntity(entityHandle);
|
|
29
|
+
}
|
|
18
30
|
}
|
|
@@ -4,6 +4,7 @@ exports.RagePlayersManager = void 0;
|
|
|
4
4
|
const RageEntitiesManager_1 = require("../entity/RageEntitiesManager");
|
|
5
5
|
const RagePlayer_1 = require("./RagePlayer");
|
|
6
6
|
const types_1 = require("../../../net/common/events/types");
|
|
7
|
+
const RockMod_1 = require("../../../RockMod");
|
|
7
8
|
class RagePlayersManager extends RageEntitiesManager_1.RageEntitiesManager {
|
|
8
9
|
constructor(net) {
|
|
9
10
|
super({
|
|
@@ -51,11 +52,37 @@ class RagePlayersManager extends RageEntitiesManager_1.RageEntitiesManager {
|
|
|
51
52
|
this.registerBaseObject(player);
|
|
52
53
|
net.events.emitInternal(types_1.ServerInternalEventName.PlayerConnected, player);
|
|
53
54
|
},
|
|
54
|
-
playerQuit: (mpPlayer) => {
|
|
55
|
+
playerQuit: (mpPlayer, exitType, reason) => {
|
|
55
56
|
const player = this.getByID(mpPlayer.id);
|
|
57
|
+
net.events.emitInternal(types_1.ServerInternalEventName.PlayerQuit, player, exitType, reason);
|
|
56
58
|
this.unregisterBaseObject(player);
|
|
57
59
|
net.events.emitInternal(types_1.ServerInternalEventName.PlayerDisconnected, player);
|
|
58
60
|
},
|
|
61
|
+
playerDeath: (mpPlayer, reason, killer) => {
|
|
62
|
+
const player = this.getByID(mpPlayer.id);
|
|
63
|
+
const killerPlayer = killer ? (RockMod_1.RockMod.instance.players.findByID(killer.id) ?? null) : null;
|
|
64
|
+
net.events.emitInternal(types_1.ServerInternalEventName.PlayerDeath, player, reason, killerPlayer);
|
|
65
|
+
},
|
|
66
|
+
playerDamage: (mpPlayer, healthLoss, armourLoss) => {
|
|
67
|
+
const player = this.getByID(mpPlayer.id);
|
|
68
|
+
net.events.emitInternal(types_1.ServerInternalEventName.PlayerDamage, player, healthLoss, armourLoss);
|
|
69
|
+
},
|
|
70
|
+
playerEnterVehicle: (mpPlayer, mpVehicle, seat) => {
|
|
71
|
+
const player = this.getByID(mpPlayer.id);
|
|
72
|
+
const vehicle = RockMod_1.RockMod.instance.vehicles.findByID(mpVehicle.id);
|
|
73
|
+
if (!vehicle) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
net.events.emitInternal(types_1.ServerInternalEventName.PlayerEnterVehicle, player, vehicle, seat);
|
|
77
|
+
},
|
|
78
|
+
playerExitVehicle: (mpPlayer, mpVehicle) => {
|
|
79
|
+
const player = this.getByID(mpPlayer.id);
|
|
80
|
+
const vehicle = RockMod_1.RockMod.instance.vehicles.findByID(mpVehicle.id);
|
|
81
|
+
if (!vehicle) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
net.events.emitInternal(types_1.ServerInternalEventName.PlayerExitVehicle, player, vehicle);
|
|
85
|
+
},
|
|
59
86
|
});
|
|
60
87
|
}
|
|
61
88
|
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import { type IBaseObject, type IColshape, type IPlayer } from "../../../entities";
|
|
1
|
+
import { type IBaseObject, type IColshape, type IPlayer, type IVehicle } from "../../../entities";
|
|
2
2
|
export declare enum ServerInternalEventName {
|
|
3
3
|
PlayerConnected = "rm::playerConnected",
|
|
4
4
|
PlayerDisconnected = "rm::playerDisconnected",
|
|
5
|
+
PlayerQuit = "rm::playerQuit",
|
|
6
|
+
PlayerDeath = "rm::playerDeath",
|
|
7
|
+
PlayerDamage = "rm::playerDamage",
|
|
8
|
+
PlayerEnterVehicle = "rm::playerEnterVehicle",
|
|
9
|
+
PlayerExitVehicle = "rm::playerExitVehicle",
|
|
5
10
|
PlayerEnteredColshape = "rm::playerEnteredColshape",
|
|
6
11
|
PlayerLeftColshape = "rm::playerLeftColshape",
|
|
7
12
|
EntityCreated = "rm::entityCreated",
|
|
@@ -10,6 +15,11 @@ export declare enum ServerInternalEventName {
|
|
|
10
15
|
export interface IServerInternalEvents {
|
|
11
16
|
[ServerInternalEventName.PlayerConnected]: (player: IPlayer) => void;
|
|
12
17
|
[ServerInternalEventName.PlayerDisconnected]: (player: IPlayer) => void;
|
|
18
|
+
[ServerInternalEventName.PlayerQuit]: (player: IPlayer, exitType: string, reason: string) => void;
|
|
19
|
+
[ServerInternalEventName.PlayerDeath]: (player: IPlayer, reason: number, killer: IPlayer | null) => void;
|
|
20
|
+
[ServerInternalEventName.PlayerDamage]: (player: IPlayer, healthLoss: number, armourLoss: number) => void;
|
|
21
|
+
[ServerInternalEventName.PlayerEnterVehicle]: (player: IPlayer, vehicle: IVehicle, seat: number) => void;
|
|
22
|
+
[ServerInternalEventName.PlayerExitVehicle]: (player: IPlayer, vehicle: IVehicle) => void;
|
|
13
23
|
[ServerInternalEventName.PlayerEnteredColshape]: (player: IPlayer, colshape: IColshape) => void;
|
|
14
24
|
[ServerInternalEventName.PlayerLeftColshape]: (player: IPlayer, colshape: IColshape) => void;
|
|
15
25
|
[ServerInternalEventName.EntityCreated]: (object: IBaseObject) => void;
|
|
@@ -5,6 +5,11 @@ var ServerInternalEventName;
|
|
|
5
5
|
(function (ServerInternalEventName) {
|
|
6
6
|
ServerInternalEventName["PlayerConnected"] = "rm::playerConnected";
|
|
7
7
|
ServerInternalEventName["PlayerDisconnected"] = "rm::playerDisconnected";
|
|
8
|
+
ServerInternalEventName["PlayerQuit"] = "rm::playerQuit";
|
|
9
|
+
ServerInternalEventName["PlayerDeath"] = "rm::playerDeath";
|
|
10
|
+
ServerInternalEventName["PlayerDamage"] = "rm::playerDamage";
|
|
11
|
+
ServerInternalEventName["PlayerEnterVehicle"] = "rm::playerEnterVehicle";
|
|
12
|
+
ServerInternalEventName["PlayerExitVehicle"] = "rm::playerExitVehicle";
|
|
8
13
|
ServerInternalEventName["PlayerEnteredColshape"] = "rm::playerEnteredColshape";
|
|
9
14
|
ServerInternalEventName["PlayerLeftColshape"] = "rm::playerLeftColshape";
|
|
10
15
|
ServerInternalEventName["EntityCreated"] = "rm::entityCreated";
|
package/package.json
CHANGED