rock-mod 0.1.0 → 0.2.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.
Files changed (55) hide show
  1. package/LICENSE +21 -21
  2. package/dist/server/common/utils/color/RGBA.d.ts +17 -0
  3. package/dist/server/common/utils/color/RGBA.js +28 -0
  4. package/dist/server/common/utils/color/index.d.ts +1 -0
  5. package/dist/server/common/utils/color/index.js +17 -0
  6. package/dist/server/common/utils/index.d.ts +1 -0
  7. package/dist/server/common/utils/index.js +1 -0
  8. package/dist/server/entities/altv/baseObject/AltVBaseObject.d.ts +1 -0
  9. package/dist/server/entities/altv/baseObject/AltVBaseObject.js +3 -0
  10. package/dist/server/entities/altv/baseObject/AltVBaseObjectsManager.js +2 -2
  11. package/dist/server/entities/altv/entity/AltVEntity.d.ts +3 -0
  12. package/dist/server/entities/altv/entity/AltVEntity.js +9 -0
  13. package/dist/server/entities/altv/player/AltVPlayer.d.ts +4 -4
  14. package/dist/server/entities/altv/player/AltVPlayer.js +6 -9
  15. package/dist/server/entities/altv/vehicle/AltVVehicle.d.ts +21 -0
  16. package/dist/server/entities/altv/vehicle/AltVVehicle.js +74 -0
  17. package/dist/server/entities/altv/vehicle/AltVVehiclesManager.js +5 -2
  18. package/dist/server/entities/common/baseObject/IBaseObject.d.ts +3 -2
  19. package/dist/server/entities/common/baseObject/IBaseObjectsManager.d.ts +2 -0
  20. package/dist/server/entities/common/entity/IEntitiesManager.d.ts +6 -1
  21. package/dist/server/entities/common/entity/IEntity.d.ts +3 -0
  22. package/dist/server/entities/common/player/IPlayer.d.ts +4 -3
  23. package/dist/server/entities/common/player/index.d.ts +0 -1
  24. package/dist/server/entities/common/player/index.js +0 -1
  25. package/dist/server/entities/common/vehicle/IVehicle.d.ts +21 -0
  26. package/dist/server/entities/common/vehicle/IVehiclesManager.d.ts +4 -6
  27. package/dist/server/entities/common/worldObject/IWorldObjectsManager.d.ts +6 -1
  28. package/dist/server/entities/ragemp/baseObject/RageBaseObject.d.ts +1 -0
  29. package/dist/server/entities/ragemp/baseObject/RageBaseObject.js +3 -0
  30. package/dist/server/entities/ragemp/entity/RageEntity.d.ts +3 -0
  31. package/dist/server/entities/ragemp/entity/RageEntity.js +8 -0
  32. package/dist/server/entities/ragemp/player/RagePlayer.d.ts +4 -4
  33. package/dist/server/entities/ragemp/player/RagePlayer.js +6 -9
  34. package/dist/server/entities/ragemp/player/RagePlayersManager.js +1 -0
  35. package/dist/server/entities/ragemp/vehicle/RageVehicle.d.ts +21 -0
  36. package/dist/server/entities/ragemp/vehicle/RageVehicle.js +70 -0
  37. package/dist/server/entities/ragemp/vehicle/RageVehiclesManager.js +8 -2
  38. package/dist/server/entities/ragemp/worldObject/RageWorldObject.js +1 -1
  39. package/dist/server/net/altv/events/AltVEventsManager.d.ts +8 -8
  40. package/dist/server/net/altv/events/AltVEventsManager.js +6 -6
  41. package/dist/server/net/altv/rpc/AltVRPCManager.d.ts +7 -6
  42. package/dist/server/net/altv/rpc/AltVRPCManager.js +7 -2
  43. package/dist/server/net/common/events/IEventsManager.d.ts +5 -4
  44. package/dist/server/net/common/rpc/IRPCManager.d.ts +7 -3
  45. package/dist/server/net/ragemp/events/RageEventsManager.d.ts +8 -8
  46. package/dist/server/net/ragemp/events/RageEventsManager.js +6 -7
  47. package/dist/server/net/ragemp/rpc/RageRPCManager.d.ts +8 -4
  48. package/dist/server/net/ragemp/rpc/RageRPCManager.js +6 -2
  49. package/package.json +62 -59
  50. package/dist/server/entities/altv/player/AltVPlayerNetManager.d.ts +0 -8
  51. package/dist/server/entities/altv/player/AltVPlayerNetManager.js +0 -16
  52. package/dist/server/entities/common/player/IPlayerNetManager.d.ts +0 -4
  53. package/dist/server/entities/common/player/IPlayerNetManager.js +0 -2
  54. package/dist/server/entities/ragemp/player/RagePlayerNetManager.d.ts +0 -7
  55. package/dist/server/entities/ragemp/player/RagePlayerNetManager.js +0 -16
@@ -2,13 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RagePlayer = void 0;
4
4
  const RageEntity_1 = require("../entity/RageEntity");
5
- const RagePlayerNetManager_1 = require("./RagePlayerNetManager");
6
5
  const RockMod_1 = require("../../../RockMod");
7
6
  class RagePlayer extends RageEntity_1.RageEntity {
8
- _net;
9
- get net() {
10
- return this._net;
11
- }
12
7
  get name() {
13
8
  return this.mpEntity.name;
14
9
  }
@@ -56,12 +51,14 @@ class RagePlayer extends RageEntity_1.RageEntity {
56
51
  }
57
52
  return players;
58
53
  }
59
- get isExists() {
60
- return mp.players.exists(this.mpEntity);
61
- }
62
54
  constructor(options) {
63
55
  super(options);
64
- this._net = new RagePlayerNetManager_1.RagePlayerNetManager(this.mpEntity);
56
+ }
57
+ emitEvent(eventName, ...args) {
58
+ return RockMod_1.RockMod.instance.net.events.emitClient(this, eventName, ...args);
59
+ }
60
+ emitRPC(rpcName, ...args) {
61
+ return RockMod_1.RockMod.instance.net.rpc.emitClient(this, rpcName, ...args);
65
62
  }
66
63
  spawn(position) {
67
64
  return this.mpEntity.spawn(new mp.Vector3(position));
@@ -45,6 +45,7 @@ class RagePlayersManager extends RageEntitiesManager_1.RageEntitiesManager {
45
45
  const net = RockMod_1.RockMod.instance.net;
46
46
  net.events.on({
47
47
  playerJoin: (mpPlayer) => {
48
+ mpPlayer.isExists = () => mp.players.exists(mpPlayer);
48
49
  const player = new RagePlayer_1.RagePlayer({
49
50
  mpEntity: mpPlayer,
50
51
  });
@@ -1,9 +1,30 @@
1
1
  import { IRageEntityOptions, RageEntity } from "../entity/RageEntity";
2
2
  import { IVehicle } from "../../common/vehicle/IVehicle";
3
+ import { RGBA } from "../../../common/utils";
4
+ import { RagePlayer } from "../player/RagePlayer";
3
5
  export interface IRageVehicleOptions extends IRageEntityOptions<VehicleMp> {
4
6
  }
5
7
  export declare class RageVehicle extends RageEntity<VehicleMp> implements IVehicle {
6
8
  get bodyHealth(): number;
9
+ get engineHealth(): number;
10
+ get numberPlate(): string;
11
+ get isLocked(): boolean;
12
+ get isDead(): boolean;
13
+ get primaryColor(): number;
14
+ get secondaryColor(): number;
15
+ get customPrimaryColor(): RGBA;
16
+ get customSecondaryColor(): RGBA;
17
+ get driver(): RagePlayer | null;
18
+ get passengers(): Set<RagePlayer>;
7
19
  constructor(options: IRageVehicleOptions);
8
20
  setBodyHealth(value: number): void;
21
+ setEngineHealth(value: number): void;
22
+ setNumberPlate(value: string): void;
23
+ setLocked(value: boolean): void;
24
+ setPrimaryColor(value: number): void;
25
+ setSecondaryColor(value: number): void;
26
+ setCustomPrimaryColor(value: RGBA): void;
27
+ setCustomSecondaryColor(value: RGBA): void;
28
+ explode(): void;
29
+ repair(): void;
9
30
  }
@@ -2,15 +2,85 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RageVehicle = void 0;
4
4
  const RageEntity_1 = require("../entity/RageEntity");
5
+ const utils_1 = require("../../../common/utils");
6
+ const RockMod_1 = require("../../../RockMod");
5
7
  class RageVehicle extends RageEntity_1.RageEntity {
6
8
  get bodyHealth() {
7
9
  return this.mpEntity.bodyHealth;
8
10
  }
11
+ get engineHealth() {
12
+ return this.mpEntity.engineHealth;
13
+ }
14
+ get numberPlate() {
15
+ return this.mpEntity.numberPlate;
16
+ }
17
+ get isLocked() {
18
+ return this.mpEntity.locked;
19
+ }
20
+ get isDead() {
21
+ return this.mpEntity.dead;
22
+ }
23
+ get primaryColor() {
24
+ return this.mpEntity.getColor(0);
25
+ }
26
+ get secondaryColor() {
27
+ return this.mpEntity.getColor(1);
28
+ }
29
+ get customPrimaryColor() {
30
+ const [r, g, b] = this.mpEntity.getColorRGB(0);
31
+ return new utils_1.RGBA(r, g, b);
32
+ }
33
+ get customSecondaryColor() {
34
+ const [r, g, b] = this.mpEntity.getColorRGB(1);
35
+ return new utils_1.RGBA(r, g, b);
36
+ }
37
+ get driver() {
38
+ const mpPlayer = this.mpEntity.getOccupant(0);
39
+ if (!mpPlayer) {
40
+ return null;
41
+ }
42
+ return RockMod_1.RockMod.instance.players.getByID(mpPlayer.id);
43
+ }
44
+ get passengers() {
45
+ const players = new Set();
46
+ for (const mpPlayer of this.mpEntity.getOccupants()) {
47
+ const player = RockMod_1.RockMod.instance.players.getByID(mpPlayer.id);
48
+ players.add(player);
49
+ }
50
+ return players;
51
+ }
9
52
  constructor(options) {
10
53
  super(options);
11
54
  }
12
55
  setBodyHealth(value) {
13
56
  this.mpEntity.bodyHealth = value;
14
57
  }
58
+ setEngineHealth(value) {
59
+ throw new Error(`Not implemented (setEngineHealth: ${value})`);
60
+ }
61
+ setNumberPlate(value) {
62
+ this.mpEntity.numberPlate = value;
63
+ }
64
+ setLocked(value) {
65
+ this.mpEntity.locked = value;
66
+ }
67
+ setPrimaryColor(value) {
68
+ return this.mpEntity.setColor(value, this.secondaryColor);
69
+ }
70
+ setSecondaryColor(value) {
71
+ return this.mpEntity.setColor(this.primaryColor, value);
72
+ }
73
+ setCustomPrimaryColor(value) {
74
+ this.mpEntity.setColorRGB(value.r, value.g, value.b, this.customSecondaryColor.r, this.customSecondaryColor.g, this.customSecondaryColor.b);
75
+ }
76
+ setCustomSecondaryColor(value) {
77
+ this.mpEntity.setColorRGB(this.customPrimaryColor.r, this.customPrimaryColor.g, this.customPrimaryColor.b, value.r, value.g, value.b);
78
+ }
79
+ explode() {
80
+ return this.mpEntity.explode();
81
+ }
82
+ repair() {
83
+ return this.mpEntity.repair();
84
+ }
15
85
  }
16
86
  exports.RageVehicle = RageVehicle;
@@ -10,8 +10,14 @@ class RageVehiclesManager extends RageEntitiesManager_1.RageEntitiesManager {
10
10
  });
11
11
  }
12
12
  create(options) {
13
- const { model, position } = options;
14
- const mpEntity = mp.vehicles.new(model, new mp.Vector3(position));
13
+ const { model, position, dimension, rotation, engine, locked } = options;
14
+ const mpEntity = mp.vehicles.new(model, new mp.Vector3(position), {
15
+ dimension,
16
+ heading: rotation.z,
17
+ engine,
18
+ locked,
19
+ });
20
+ mpEntity.rotation = new mp.Vector3(rotation);
15
21
  const vehicle = new RageVehicle_1.RageVehicle({ mpEntity });
16
22
  this.registerBaseObject(vehicle);
17
23
  return vehicle;
@@ -15,7 +15,7 @@ class RageWorldObject extends RageBaseObject_1.RageBaseObject {
15
15
  super(options);
16
16
  }
17
17
  setPosition(value) {
18
- this.mpEntity.position = new Vector3(value);
18
+ this.mpEntity.position = new mp.Vector3(value);
19
19
  }
20
20
  setDimension(value) {
21
21
  this.mpEntity.dimension = value;
@@ -1,16 +1,16 @@
1
- import { IEventsManager, INetServerEvents } from "../../common/events/IEventsManager";
1
+ import { IEventsManager, INetClientEvents, INetServerEvents } from "../../common/events/IEventsManager";
2
2
  import { AltVPlayer } from "../../../entities/altv/player/AltVPlayer";
3
3
  import alt = AltVServer;
4
4
  import { AltVBaseObject } from "../../../entities/altv/baseObject/AltVBaseObject";
5
- interface IAltVServerEvent extends alt.IServerEvent, INetServerEvents {
5
+ export interface IAltVServerEvents extends alt.IServerEvent, INetServerEvents {
6
6
  "rm::entityCreated"(baseObject: AltVBaseObject<alt.BaseObject>): void;
7
7
  "rm::entityDestroyed"(baseObject: AltVBaseObject<alt.BaseObject>): void;
8
8
  }
9
+ export interface IAltVClientEvents extends INetClientEvents {
10
+ }
9
11
  export declare class AltVEventsManager implements IEventsManager {
10
- on<K extends keyof IAltVServerEvent>(events: Record<K, (...args: Parameters<IAltVServerEvent[K]>) => void>): void;
11
- onServer<K extends keyof IAltVServerEvent>(events: Record<K, (...args: Parameters<IAltVServerEvent[K]>) => void>): void;
12
- off(eventName: keyof IAltVServerEvent, listener: (...args: unknown[]) => void): void;
13
- emit(eventName: keyof IAltVServerEvent, ...args: unknown[]): void;
14
- emitClient(player: AltVPlayer, eventName: keyof IAltVServerEvent, ...args: unknown[]): void;
12
+ on<K extends keyof IAltVServerEvents>(events: Record<K, (...args: Parameters<IAltVServerEvents[K]>) => void>): void;
13
+ off<K extends keyof IAltVServerEvents>(eventName: K, listener: (...args: Parameters<IAltVServerEvents[K]>) => void): void;
14
+ emit<K extends keyof IAltVServerEvents>(eventName: K, ...args: Parameters<IAltVServerEvents[K]>): void;
15
+ emitClient<K extends keyof IAltVClientEvents>(player: AltVPlayer, eventName: K, ...args: Parameters<IAltVClientEvents[K]>): void;
15
16
  }
16
- export {};
@@ -2,17 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AltVEventsManager = void 0;
4
4
  var alt = AltVServer;
5
+ var Player = AltVServer.Player;
5
6
  class AltVEventsManager {
6
7
  on(events) {
7
8
  for (const eventName of Object.keys(events)) {
8
9
  alt.on(eventName, events[eventName]);
9
10
  }
10
11
  }
11
- onServer(events) {
12
- for (const eventName of Object.keys(events)) {
13
- alt.on(eventName, events[eventName]);
14
- }
15
- }
16
12
  off(eventName, listener) {
17
13
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
18
14
  // @ts-ignore
@@ -22,7 +18,11 @@ class AltVEventsManager {
22
18
  return alt.emit(eventName, ...args);
23
19
  }
24
20
  emitClient(player, eventName, ...args) {
25
- return player.net.callEvent(eventName, ...args);
21
+ const mpPlayer = Player.getByID(player.id);
22
+ if (!mpPlayer) {
23
+ throw new Error(`Player with id ${player.id} not found`);
24
+ }
25
+ return mpPlayer.emit(eventName, ...args);
26
26
  }
27
27
  }
28
28
  exports.AltVEventsManager = AltVEventsManager;
@@ -1,11 +1,12 @@
1
- import { IRPCManager } from "../../common/rpc/IRPCManager";
1
+ import { INetClientRPC, INetServerRPC, IRPCManager } from "../../common/rpc/IRPCManager";
2
2
  import { AltVPlayer } from "../../../entities/altv/player/AltVPlayer";
3
3
  import shared = AltVShared;
4
- interface IAltVRPCName extends shared.ICustomClientServerRpc {
4
+ export interface IAltVServerRPC extends shared.ICustomClientServerRpc, INetServerRPC {
5
+ }
6
+ export interface IAltVClientRPC extends shared.ICustomServerClientRpc, INetClientRPC {
5
7
  }
6
8
  export declare class AltVRPCManager implements IRPCManager {
7
- register(rpcName: keyof IAltVRPCName, handler: (player: AltVPlayer, ...args: unknown[]) => unknown): void;
8
- unregister(rpcName: string): void;
9
- callClient(player: AltVPlayer, rpcName: string, ...args: unknown[]): Promise<unknown>;
9
+ register<K extends keyof IAltVServerRPC>(rpcName: K, handler: (player: AltVPlayer, ...args: Parameters<IAltVServerRPC[K]>) => ReturnType<IAltVServerRPC[K]>): void;
10
+ unregister<K extends keyof IAltVServerRPC>(rpcName: K): void;
11
+ emitClient<K extends keyof IAltVClientRPC>(player: AltVPlayer, rpcName: K, ...args: Parameters<IAltVClientRPC[K]>): Promise<ReturnType<IAltVClientRPC[K]>>;
10
12
  }
11
- export {};
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AltVRPCManager = void 0;
4
4
  var alt = AltVServer;
5
+ var Player = AltVServer.Player;
5
6
  class AltVRPCManager {
6
7
  register(rpcName, handler) {
7
8
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -11,8 +12,12 @@ class AltVRPCManager {
11
12
  unregister(rpcName) {
12
13
  return alt.offRpc(rpcName);
13
14
  }
14
- callClient(player, rpcName, ...args) {
15
- return player.net.callRPC(rpcName, ...args);
15
+ emitClient(player, rpcName, ...args) {
16
+ const mpPlayer = Player.getByID(player.id);
17
+ if (!mpPlayer) {
18
+ throw new Error(`Player with id ${player.id} not found`);
19
+ }
20
+ return mpPlayer.emitRpc(rpcName, ...args);
16
21
  }
17
22
  }
18
23
  exports.AltVRPCManager = AltVRPCManager;
@@ -6,10 +6,11 @@ export interface INetServerEvents {
6
6
  "rm::entityCreated"(entity: IBaseObject): void;
7
7
  "rm::entityDestroyed"(entity: IBaseObject): void;
8
8
  }
9
+ export interface INetClientEvents {
10
+ }
9
11
  export interface IEventsManager {
10
12
  on<K extends keyof INetServerEvents>(events: Record<K, (...args: Parameters<INetServerEvents[K]>) => void>): void;
11
- onServer<K extends keyof INetServerEvents>(events: Record<K, (...args: Parameters<INetServerEvents[K]>) => void>): void;
12
- off(eventName: string, listener: (...args: unknown[]) => void): void;
13
- emit(eventName: string, ...args: unknown[]): void;
14
- emitClient(player: IPlayer, eventName: string, ...args: unknown[]): void;
13
+ off<K extends keyof INetServerEvents>(eventName: K, listener: (...args: Parameters<INetServerEvents[K]>) => void): void;
14
+ emit<K extends keyof INetServerEvents>(eventName: K, ...args: Parameters<INetServerEvents[K]>): void;
15
+ emitClient<K extends keyof INetClientEvents>(player: IPlayer, eventName: K, ...args: Parameters<INetClientEvents[K]>): void;
15
16
  }
@@ -1,6 +1,10 @@
1
1
  import { IPlayer } from "../../../entities/common/player/IPlayer";
2
+ export interface INetServerRPC {
3
+ }
4
+ export interface INetClientRPC {
5
+ }
2
6
  export interface IRPCManager {
3
- register(rpcName: string, handler: (player: IPlayer, ...args: unknown[]) => unknown): void;
4
- unregister(rpcName: string): void;
5
- callClient(player: IPlayer, rpcName: string, ...args: unknown[]): Promise<unknown>;
7
+ register<K extends keyof INetServerRPC>(rpcName: K, handler: (player: IPlayer, ...args: Parameters<INetServerRPC[K]>) => ReturnType<INetServerRPC[K]>): void;
8
+ unregister<K extends keyof INetServerRPC>(rpcName: K): void;
9
+ emitClient<K extends keyof INetClientRPC>(player: IPlayer, rpcName: K, ...args: Parameters<INetClientRPC[K]>): Promise<ReturnType<INetClientRPC[K]>>;
6
10
  }
@@ -1,7 +1,7 @@
1
- import { IEventsManager, INetServerEvents } from "../../common/events/IEventsManager";
1
+ import { IEventsManager, INetClientEvents, INetServerEvents } from "../../common/events/IEventsManager";
2
2
  import { RagePlayer } from "../../../entities/ragemp/player/RagePlayer";
3
3
  import { RageBaseObject } from "../../../entities/ragemp/baseObject/RageBaseObject";
4
- interface RageServerEvents extends IServerEvents, INetServerEvents {
4
+ export interface IRageServerEvents extends IServerEvents, INetServerEvents {
5
5
  "rm::playerConnected"(player: RagePlayer): void;
6
6
  "rm::playerDisconnected"(player: RagePlayer): void;
7
7
  "rm::entityCreated"(entity: RageBaseObject): void;
@@ -9,11 +9,11 @@ interface RageServerEvents extends IServerEvents, INetServerEvents {
9
9
  playerJoin(player: PlayerMp): void;
10
10
  playerQuit(player: PlayerMp): void;
11
11
  }
12
+ export interface IRageClientEvents extends INetClientEvents {
13
+ }
12
14
  export declare class RageEventsManager implements IEventsManager {
13
- on<K extends keyof RageServerEvents>(events: Record<K, (...args: Parameters<RageServerEvents[K]>) => void>): void;
14
- onServer<K extends keyof RageServerEvents>(events: Record<K, (...args: Parameters<RageServerEvents[K]>) => void>): void;
15
- off(eventName: keyof RageServerEvents, listener: (...args: unknown[]) => void): void;
16
- emit(eventName: keyof RageServerEvents, ...args: unknown[]): void;
17
- emitClient(player: RagePlayer, eventName: keyof RageServerEvents, ...args: unknown[]): void;
15
+ on<K extends keyof IRageServerEvents>(events: Record<K, (...args: Parameters<IRageServerEvents[K]>) => void>): void;
16
+ off<K extends keyof IRageServerEvents>(eventName: K, listener: (...args: Parameters<IRageServerEvents[K]>) => void): void;
17
+ emit<K extends keyof IRageServerEvents>(eventName: K, ...args: Parameters<IRageServerEvents[K]>): void;
18
+ emitClient<K extends keyof IRageClientEvents>(player: RagePlayer, eventName: K, ...args: Parameters<IRageClientEvents[K]>): void;
18
19
  }
19
- export {};
@@ -7,19 +7,18 @@ class RageEventsManager {
7
7
  mp.events.add(eventName, events[eventName]);
8
8
  }
9
9
  }
10
- onServer(events) {
11
- for (const eventName of Object.keys(events)) {
12
- mp.events.add(eventName, events[eventName]);
13
- }
14
- }
15
10
  off(eventName, listener) {
16
11
  return mp.events.remove(eventName, listener);
17
12
  }
18
13
  emit(eventName, ...args) {
19
- return mp.events.call(eventName, args);
14
+ return mp.events.call(eventName, ...args);
20
15
  }
21
16
  emitClient(player, eventName, ...args) {
22
- return player.net.callEvent(eventName, ...args);
17
+ const mpPlayer = mp.players.at(player.id);
18
+ if (!mpPlayer) {
19
+ throw new Error(`Player with id ${player.id} not found`);
20
+ }
21
+ return mpPlayer.call(eventName, args);
23
22
  }
24
23
  }
25
24
  exports.RageEventsManager = RageEventsManager;
@@ -1,7 +1,11 @@
1
- import { IRPCManager } from "../../common/rpc/IRPCManager";
1
+ import { INetClientRPC, INetServerRPC, IRPCManager } from "../../common/rpc/IRPCManager";
2
2
  import { RagePlayer } from "../../../entities/ragemp/player/RagePlayer";
3
+ export interface IRageServerRPC extends INetServerRPC {
4
+ }
5
+ export interface IRageClientRPC extends INetClientRPC {
6
+ }
3
7
  export declare class RageRPCManager implements IRPCManager {
4
- register(rpcName: string, handler: (player: RagePlayer, ...args: unknown[]) => unknown): void;
5
- unregister(rpcName: string): void;
6
- callClient(player: RagePlayer, rpcName: string, ...args: unknown[]): Promise<unknown>;
8
+ register<K extends keyof IRageServerRPC>(rpcName: K, handler: (player: RagePlayer, ...args: Parameters<IRageServerRPC[K]>) => ReturnType<IRageServerRPC[K]>): void;
9
+ unregister<K extends keyof IRageServerRPC>(rpcName: K): void;
10
+ emitClient<K extends keyof IRageClientRPC>(player: RagePlayer, rpcName: K, ...args: Parameters<IRageClientRPC[K]>): Promise<ReturnType<IRageClientRPC[K]>>;
7
11
  }
@@ -8,8 +8,12 @@ class RageRPCManager {
8
8
  unregister(rpcName) {
9
9
  return mp.events.remove(rpcName);
10
10
  }
11
- callClient(player, rpcName, ...args) {
12
- return player.net.callRPC(rpcName, ...args);
11
+ emitClient(player, rpcName, ...args) {
12
+ const mpPlayer = mp.players.at(player.id);
13
+ if (!mpPlayer) {
14
+ throw new Error(`Player with id ${player.id} not found`);
15
+ }
16
+ return mpPlayer.callProc(rpcName, args);
13
17
  }
14
18
  }
15
19
  exports.RageRPCManager = RageRPCManager;
package/package.json CHANGED
@@ -1,59 +1,62 @@
1
- {
2
- "name": "rock-mod",
3
- "version": "0.1.0",
4
- "description": "Rock-Mod is a powerful framework designed for creating and managing mods for Grand Theft Auto (GTA) games.",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "scripts": {
8
- "start": "npx tsx src/server/index.ts",
9
- "build": "npm run build:server && npm run build:client",
10
- "build:server": "tsc --project src/server/tsconfig.json",
11
- "build:client": "tsc --project src/client/tsconfig.json",
12
- "lint:server:check": "cd src/server && eslint . --ext .ts",
13
- "lint:server:fix": "cd src/server && eslint . --ext .ts --fix",
14
- "lint:client:check": "cd src/client && eslint . --ext .ts",
15
- "lint:client:fix": "cd src/client && eslint . --ext .ts --fix",
16
- "lint:check": "npm run lint:server:check && npm run lint:client:check",
17
- "lint:fix": "npm run lint:server:fix && npm run lint:client:fix",
18
- "format:check": "prettier --check .",
19
- "format:fix": "prettier --write .",
20
- "type:server:check": "tsc --noEmit --project src/server/tsconfig.json",
21
- "type:client:check": "tsc --noEmit --project src/client/tsconfig.json",
22
- "type:check": "npm run type:server:check && npm run type:client:check",
23
- "test": "echo \"Error: no test specified\" && exit 1",
24
- "prepare": "husky"
25
- },
26
- "husky": {
27
- "hooks": {
28
- "pre-commit": "lint-staged"
29
- }
30
- },
31
- "lint-staged": {
32
- "*.{ts,json,md}": [
33
- "npm run lint:fix",
34
- "npm run format:fix"
35
- ]
36
- },
37
- "files": [
38
- "dist"
39
- ],
40
- "keywords": [
41
- "gta"
42
- ],
43
- "author": "xvetal",
44
- "license": "MIT",
45
- "devDependencies": {
46
- "@typescript-eslint/eslint-plugin": "^7.18.0",
47
- "@typescript-eslint/parser": "^7.18.0",
48
- "eslint": "^8.57.1",
49
- "eslint-config-airbnb-typescript": "^18.0.0",
50
- "eslint-config-prettier": "^9.1.0",
51
- "eslint-import-resolver-typescript": "^3.6.3",
52
- "eslint-plugin-import": "^2.30.0",
53
- "eslint-plugin-prettier": "^5.2.1",
54
- "husky": "^9.1.6",
55
- "lint-staged": "^15.2.10",
56
- "prettier": "^3.3.3",
57
- "typescript": "^5.6.2"
58
- }
59
- }
1
+ {
2
+ "name": "rock-mod",
3
+ "version": "0.2.0",
4
+ "description": "Rock-Mod is a powerful framework designed for creating and managing mods for Grand Theft Auto (GTA) games.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "start": "npx tsx src/server/index.ts",
9
+ "build": "npm run build:server && npm run build:client",
10
+ "build:server": "tsc --project src/server/tsconfig.json",
11
+ "build:client": "tsc --project src/client/tsconfig.json",
12
+ "lint:server:check": "cd src/server && eslint . --ext .ts",
13
+ "lint:server:fix": "cd src/server && eslint . --ext .ts --fix",
14
+ "lint:client:check": "cd src/client && eslint . --ext .ts",
15
+ "lint:client:fix": "cd src/client && eslint . --ext .ts --fix",
16
+ "lint:check": "npm run lint:server:check && npm run lint:client:check",
17
+ "lint:fix": "npm run lint:server:fix && npm run lint:client:fix",
18
+ "format:check": "prettier --check .",
19
+ "format:fix": "prettier --write .",
20
+ "type:server:check": "tsc --noEmit --project src/server/tsconfig.json",
21
+ "type:client:check": "tsc --noEmit --project src/client/tsconfig.json",
22
+ "type:check": "npm run type:server:check && npm run type:client:check",
23
+ "test": "echo \"Error: no test specified\" && exit 1",
24
+ "prepare": "husky"
25
+ },
26
+ "husky": {
27
+ "hooks": {
28
+ "pre-commit": "lint-staged"
29
+ }
30
+ },
31
+ "lint-staged": {
32
+ "*.{ts,json,md}": [
33
+ "npm run lint:fix",
34
+ "npm run format:fix"
35
+ ]
36
+ },
37
+ "files": [
38
+ "dist"
39
+ ],
40
+ "keywords": [
41
+ "gta",
42
+ "multiplayer",
43
+ "altv",
44
+ "ragemp"
45
+ ],
46
+ "author": "xvetal",
47
+ "license": "MIT",
48
+ "devDependencies": {
49
+ "@typescript-eslint/eslint-plugin": "^7.18.0",
50
+ "@typescript-eslint/parser": "^7.18.0",
51
+ "eslint": "^8.57.1",
52
+ "eslint-config-airbnb-typescript": "^18.0.0",
53
+ "eslint-config-prettier": "^9.1.0",
54
+ "eslint-import-resolver-typescript": "^3.6.3",
55
+ "eslint-plugin-import": "^2.30.0",
56
+ "eslint-plugin-prettier": "^5.2.1",
57
+ "husky": "^9.1.6",
58
+ "lint-staged": "^15.2.10",
59
+ "prettier": "^3.3.3",
60
+ "typescript": "^5.6.2"
61
+ }
62
+ }
@@ -1,8 +0,0 @@
1
- import { IPlayerNetManager } from "../../common/player/IPlayerNetManager";
2
- import Player = AltVServer.Player;
3
- export declare class AltVPlayerNetManager implements IPlayerNetManager {
4
- private readonly _player;
5
- constructor(player: Player);
6
- callEvent(eventName: string, ...args: unknown[]): void;
7
- callRPC(rpcName: string, ...args: unknown[]): Promise<unknown>;
8
- }
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AltVPlayerNetManager = void 0;
4
- class AltVPlayerNetManager {
5
- _player;
6
- constructor(player) {
7
- this._player = player;
8
- }
9
- callEvent(eventName, ...args) {
10
- return this._player.emit(eventName, ...args);
11
- }
12
- callRPC(rpcName, ...args) {
13
- return this._player.emitRpc(rpcName, ...args);
14
- }
15
- }
16
- exports.AltVPlayerNetManager = AltVPlayerNetManager;
@@ -1,4 +0,0 @@
1
- export interface IPlayerNetManager {
2
- callEvent(eventName: string, ...args: unknown[]): void;
3
- callRPC(rpcName: string, ...args: unknown[]): Promise<unknown>;
4
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,7 +0,0 @@
1
- import { IPlayerNetManager } from "../../common/player/IPlayerNetManager";
2
- export declare class RagePlayerNetManager implements IPlayerNetManager {
3
- private readonly _player;
4
- constructor(player: PlayerMp);
5
- callEvent(eventName: string, ...args: unknown[]): void;
6
- callRPC(rpcName: string, ...args: unknown[]): Promise<unknown>;
7
- }
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RagePlayerNetManager = void 0;
4
- class RagePlayerNetManager {
5
- _player;
6
- constructor(player) {
7
- this._player = player;
8
- }
9
- callEvent(eventName, ...args) {
10
- return this._player.call(eventName, args);
11
- }
12
- callRPC(rpcName, ...args) {
13
- return this._player.callProc(rpcName, args);
14
- }
15
- }
16
- exports.RagePlayerNetManager = RagePlayerNetManager;