rock-mod 0.20.0 → 0.21.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 (168) hide show
  1. package/dist/client/RockMod.d.ts +1 -1
  2. package/dist/client/RockMod.js +4 -0
  3. package/dist/client/entities/ccmp/camera/CCMPCamera.d.ts +24 -0
  4. package/dist/client/entities/ccmp/camera/CCMPCamera.js +58 -0
  5. package/dist/client/entities/ccmp/camera/CCMPCameraManager.d.ts +16 -0
  6. package/dist/client/entities/ccmp/camera/CCMPCameraManager.js +50 -0
  7. package/dist/client/entities/ccmp/ped/CCMPPed.d.ts +65 -0
  8. package/dist/client/entities/ccmp/ped/CCMPPed.js +185 -0
  9. package/dist/client/entities/ccmp/ped/CCMPPedsManager.d.ts +20 -0
  10. package/dist/client/entities/ccmp/ped/CCMPPedsManager.js +105 -0
  11. package/dist/client/entities/ccmp/player/CCMPPlayer.d.ts +112 -0
  12. package/dist/client/entities/ccmp/player/CCMPPlayer.js +332 -0
  13. package/dist/client/entities/ccmp/player/CCMPPlayersManager.d.ts +84 -0
  14. package/dist/client/entities/ccmp/player/CCMPPlayersManager.js +318 -0
  15. package/dist/client/entities/ccmp/vehicle/CCMPVehiclesManager.d.ts +64 -0
  16. package/dist/client/entities/ccmp/vehicle/CCMPVehiclesManager.js +105 -0
  17. package/dist/client/entities/common/entity/IEntity.d.ts +3 -0
  18. package/dist/client/entities/ragemp/entity/RageEntity.d.ts +3 -0
  19. package/dist/client/entities/ragemp/entity/RageEntity.js +11 -0
  20. package/dist/client/factories/ccmp/CCMPManagersFactory.d.ts +46 -0
  21. package/dist/client/factories/ccmp/CCMPManagersFactory.js +149 -0
  22. package/dist/client/factories/ccmp/createNotImplementedProxy.d.ts +1 -0
  23. package/dist/client/factories/ccmp/createNotImplementedProxy.js +24 -0
  24. package/dist/client/game/ccmp/browser/CCMPBrowserManager.d.ts +22 -0
  25. package/dist/client/game/ccmp/browser/CCMPBrowserManager.js +66 -0
  26. package/dist/client/game/ccmp/chat/CCMPChatManager.d.ts +26 -0
  27. package/dist/client/game/ccmp/chat/CCMPChatManager.js +41 -0
  28. package/dist/client/game/ccmp/controls/CCMPControlsManager.d.ts +33 -0
  29. package/dist/client/game/ccmp/controls/CCMPControlsManager.js +47 -0
  30. package/dist/client/game/ccmp/cursor/CCMPCursorManager.d.ts +6 -0
  31. package/dist/client/game/ccmp/cursor/CCMPCursorManager.js +15 -0
  32. package/dist/client/game/ccmp/gameplay/CCMPGameplayManager.d.ts +6 -0
  33. package/dist/client/game/ccmp/gameplay/CCMPGameplayManager.js +10 -0
  34. package/dist/client/game/ccmp/graphics/CCMPGraphicsManager.d.ts +58 -0
  35. package/dist/client/game/ccmp/graphics/CCMPGraphicsManager.js +112 -0
  36. package/dist/client/game/ccmp/gui/CCMPGuiManager.d.ts +5 -0
  37. package/dist/client/game/ccmp/gui/CCMPGuiManager.js +17 -0
  38. package/dist/client/game/ccmp/keys/CCMPKeysManager.d.ts +41 -0
  39. package/dist/client/game/ccmp/keys/CCMPKeysManager.js +94 -0
  40. package/dist/client/game/ccmp/nametags/CCMPNametagsManager.d.ts +4 -0
  41. package/dist/client/game/ccmp/nametags/CCMPNametagsManager.js +6 -0
  42. package/dist/client/game/ccmp/native/CCMPNativeCallerManager.d.ts +74 -0
  43. package/dist/client/game/ccmp/native/CCMPNativeCallerManager.js +129 -0
  44. package/dist/client/game/ccmp/native/_generated/nativeDispatch.d.ts +5 -0
  45. package/dist/client/game/ccmp/native/_generated/nativeDispatch.js +8123 -0
  46. package/dist/client/game/ccmp/object/CCMPGameObjectManager.d.ts +4 -0
  47. package/dist/client/game/ccmp/object/CCMPGameObjectManager.js +6 -0
  48. package/dist/client/game/ccmp/pathfind/CCMPPathfindManager.d.ts +26 -0
  49. package/dist/client/game/ccmp/pathfind/CCMPPathfindManager.js +31 -0
  50. package/dist/client/game/ccmp/raycasting/CCMPRaycastingManager.d.ts +10 -0
  51. package/dist/client/game/ccmp/raycasting/CCMPRaycastingManager.js +46 -0
  52. package/dist/client/game/ccmp/storage/CCMPStorageManager.d.ts +25 -0
  53. package/dist/client/game/ccmp/storage/CCMPStorageManager.js +46 -0
  54. package/dist/client/game/ccmp/streaming/CCMPStreamingManager.d.ts +17 -0
  55. package/dist/client/game/ccmp/streaming/CCMPStreamingManager.js +41 -0
  56. package/dist/client/game/ccmp/ui/CCMPUiManager.d.ts +41 -0
  57. package/dist/client/game/ccmp/ui/CCMPUiManager.js +69 -0
  58. package/dist/client/game/ccmp/zone/CCMPZoneManager.d.ts +19 -0
  59. package/dist/client/game/ccmp/zone/CCMPZoneManager.js +20 -0
  60. package/dist/client/game/common/browser/IBrowserManager.d.ts +7 -0
  61. package/dist/client/game/common/chat/IChatManager.d.ts +1 -0
  62. package/dist/client/game/common/controls/IControlsManager.d.ts +3 -0
  63. package/dist/client/game/common/graphics/IGraphicsManager.d.ts +17 -0
  64. package/dist/client/game/common/streaming/IStreamingManager.d.ts +2 -0
  65. package/dist/client/game/ragemp/browser/RageBrowserManager.d.ts +2 -1
  66. package/dist/client/game/ragemp/browser/RageBrowserManager.js +30 -1
  67. package/dist/client/game/ragemp/chat/RageChatManager.d.ts +1 -0
  68. package/dist/client/game/ragemp/chat/RageChatManager.js +3 -0
  69. package/dist/client/game/ragemp/controls/RageControlsManager.d.ts +3 -0
  70. package/dist/client/game/ragemp/controls/RageControlsManager.js +9 -0
  71. package/dist/client/game/ragemp/graphics/RageGraphicsManager.d.ts +5 -1
  72. package/dist/client/game/ragemp/graphics/RageGraphicsManager.js +12 -0
  73. package/dist/client/game/ragemp/streaming/RageStreamingManager.d.ts +2 -0
  74. package/dist/client/game/ragemp/streaming/RageStreamingManager.js +6 -0
  75. package/dist/client/net/ccmp/CCMPConsoleForwarder.d.ts +11 -0
  76. package/dist/client/net/ccmp/CCMPConsoleForwarder.js +153 -0
  77. package/dist/client/net/ccmp/CCMPNetManager.d.ts +23 -0
  78. package/dist/client/net/ccmp/CCMPNetManager.js +55 -0
  79. package/dist/client/net/ccmp/dataHandler/CCMPDataHandler.d.ts +23 -0
  80. package/dist/client/net/ccmp/dataHandler/CCMPDataHandler.js +43 -0
  81. package/dist/client/net/ccmp/events/CCMPEventsBridge.d.ts +14 -0
  82. package/dist/client/net/ccmp/events/CCMPEventsBridge.js +19 -0
  83. package/dist/client/net/ccmp/events/CCMPEventsManager.d.ts +72 -0
  84. package/dist/client/net/ccmp/events/CCMPEventsManager.js +177 -0
  85. package/dist/client/net/ccmp/events/CCMPInProcessEmitter.d.ts +45 -0
  86. package/dist/client/net/ccmp/events/CCMPInProcessEmitter.js +133 -0
  87. package/dist/client/net/ccmp/events/CCMPRenderTicker.d.ts +18 -0
  88. package/dist/client/net/ccmp/events/CCMPRenderTicker.js +74 -0
  89. package/dist/client/net/ccmp/events/CCMPSyncedMetaBridge.d.ts +24 -0
  90. package/dist/client/net/ccmp/events/CCMPSyncedMetaBridge.js +35 -0
  91. package/dist/client/net/ccmp/rpc/CCMPRPCManager.d.ts +22 -0
  92. package/dist/client/net/ccmp/rpc/CCMPRPCManager.js +31 -0
  93. package/dist/client/net/common/events/types.d.ts +3 -1
  94. package/dist/client/net/common/events/types.js +1 -0
  95. package/dist/client/utils/ccmp/CCMPUtilsManager.d.ts +18 -0
  96. package/dist/client/utils/ccmp/CCMPUtilsManager.js +20 -0
  97. package/dist/server/RockMod.d.ts +1 -1
  98. package/dist/server/RockMod.js +4 -0
  99. package/dist/server/entities/ccmp/baseObject/CCMPBaseObject.d.ts +8 -0
  100. package/dist/server/entities/ccmp/baseObject/CCMPBaseObject.js +21 -0
  101. package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsIterator.d.ts +8 -0
  102. package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsIterator.js +16 -0
  103. package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsManager.d.ts +19 -0
  104. package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsManager.js +49 -0
  105. package/dist/server/entities/ccmp/blip/CCMPBlip.d.ts +34 -0
  106. package/dist/server/entities/ccmp/blip/CCMPBlip.js +80 -0
  107. package/dist/server/entities/ccmp/blip/CCMPBlipsManager.d.ts +9 -0
  108. package/dist/server/entities/ccmp/blip/CCMPBlipsManager.js +33 -0
  109. package/dist/server/entities/ccmp/colshape/CCMPCircleColshape.d.ts +7 -0
  110. package/dist/server/entities/ccmp/colshape/CCMPCircleColshape.js +10 -0
  111. package/dist/server/entities/ccmp/colshape/CCMPColshape.d.ts +23 -0
  112. package/dist/server/entities/ccmp/colshape/CCMPColshape.js +47 -0
  113. package/dist/server/entities/ccmp/colshape/CCMPColshapesManager.d.ts +28 -0
  114. package/dist/server/entities/ccmp/colshape/CCMPColshapesManager.js +108 -0
  115. package/dist/server/entities/ccmp/colshape/CCMPCuboidColshape.d.ts +7 -0
  116. package/dist/server/entities/ccmp/colshape/CCMPCuboidColshape.js +10 -0
  117. package/dist/server/entities/ccmp/colshape/CCMPCylinderColshape.d.ts +7 -0
  118. package/dist/server/entities/ccmp/colshape/CCMPCylinderColshape.js +10 -0
  119. package/dist/server/entities/ccmp/colshape/CCMPRectangleColshape.d.ts +7 -0
  120. package/dist/server/entities/ccmp/colshape/CCMPRectangleColshape.js +10 -0
  121. package/dist/server/entities/ccmp/colshape/CCMPSphereColshape.d.ts +7 -0
  122. package/dist/server/entities/ccmp/colshape/CCMPSphereColshape.js +10 -0
  123. package/dist/server/entities/ccmp/entity/CCMPEntitiesManager.d.ts +8 -0
  124. package/dist/server/entities/ccmp/entity/CCMPEntitiesManager.js +10 -0
  125. package/dist/server/entities/ccmp/entity/CCMPEntity.d.ts +13 -0
  126. package/dist/server/entities/ccmp/entity/CCMPEntity.js +28 -0
  127. package/dist/server/entities/ccmp/marker/CCMPMarker.d.ts +32 -0
  128. package/dist/server/entities/ccmp/marker/CCMPMarker.js +79 -0
  129. package/dist/server/entities/ccmp/marker/CCMPMarkersManager.d.ts +9 -0
  130. package/dist/server/entities/ccmp/marker/CCMPMarkersManager.js +30 -0
  131. package/dist/server/entities/ccmp/object/CCMPObject.d.ts +48 -0
  132. package/dist/server/entities/ccmp/object/CCMPObject.js +70 -0
  133. package/dist/server/entities/ccmp/object/CCMPObjectsManager.d.ts +9 -0
  134. package/dist/server/entities/ccmp/object/CCMPObjectsManager.js +28 -0
  135. package/dist/server/entities/ccmp/ped/CCMPPed.d.ts +33 -0
  136. package/dist/server/entities/ccmp/ped/CCMPPed.js +82 -0
  137. package/dist/server/entities/ccmp/ped/CCMPPedsManager.d.ts +9 -0
  138. package/dist/server/entities/ccmp/ped/CCMPPedsManager.js +28 -0
  139. package/dist/server/entities/ccmp/player/CCMPPlayer.d.ts +65 -0
  140. package/dist/server/entities/ccmp/player/CCMPPlayer.js +180 -0
  141. package/dist/server/entities/ccmp/player/CCMPPlayersManager.d.ts +12 -0
  142. package/dist/server/entities/ccmp/player/CCMPPlayersManager.js +66 -0
  143. package/dist/server/entities/ccmp/vehicle/CCMPVehicle.d.ts +58 -0
  144. package/dist/server/entities/ccmp/vehicle/CCMPVehicle.js +161 -0
  145. package/dist/server/entities/ccmp/vehicle/CCMPVehiclesManager.d.ts +9 -0
  146. package/dist/server/entities/ccmp/vehicle/CCMPVehiclesManager.js +31 -0
  147. package/dist/server/entities/ccmp/worldObject/CCMPWorldObject.d.ts +9 -0
  148. package/dist/server/entities/ccmp/worldObject/CCMPWorldObject.js +7 -0
  149. package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsIterator.d.ts +10 -0
  150. package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsIterator.js +40 -0
  151. package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsManager.d.ts +11 -0
  152. package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsManager.js +16 -0
  153. package/dist/server/entities/mock/player/MockPlayersManager.js +2 -1
  154. package/dist/server/factories/ccmp/CCMPManagersFactory.d.ts +23 -0
  155. package/dist/server/factories/ccmp/CCMPManagersFactory.js +46 -0
  156. package/dist/server/net/ccmp/CCMPNetManager.d.ts +19 -0
  157. package/dist/server/net/ccmp/CCMPNetManager.js +112 -0
  158. package/dist/server/net/ccmp/events/CCMPEventsManager.d.ts +17 -0
  159. package/dist/server/net/ccmp/events/CCMPEventsManager.js +54 -0
  160. package/dist/server/net/ccmp/rpc/CCMPRPCManager.d.ts +8 -0
  161. package/dist/server/net/ccmp/rpc/CCMPRPCManager.js +18 -0
  162. package/dist/server/net/common/events/types.d.ts +2 -0
  163. package/dist/server/net/common/events/types.js +1 -0
  164. package/dist/server/utils/ccmp/CCMPUtilsManager.d.ts +4 -0
  165. package/dist/server/utils/ccmp/CCMPUtilsManager.js +9 -0
  166. package/dist/server/world/ccmp/CCMPWorldManager.d.ts +10 -0
  167. package/dist/server/world/ccmp/CCMPWorldManager.js +24 -0
  168. package/package.json +3 -1
@@ -4,7 +4,7 @@ import { type IUtilsManager } from "./utils";
4
4
  import { type IManagersFactory } from "./factories/common/IManagersFactory";
5
5
  import { type IGameManagers } from "./game";
6
6
  import { type IConsoleManager } from "./console";
7
- type MultiplayerType = "RageMP" | "AltV" | "Mock";
7
+ type MultiplayerType = "RageMP" | "AltV" | "Mock" | "CCMP";
8
8
  export interface RockModOptions {
9
9
  multiplayer: MultiplayerType;
10
10
  }
@@ -20,6 +20,10 @@ export class RockMod {
20
20
  const { RageManagersFactory } = await import("./factories/ragemp/RageManagersFactory");
21
21
  return new RageManagersFactory();
22
22
  }
23
+ case "CCMP": {
24
+ const { CCMPManagersFactory } = await import("./factories/ccmp/CCMPManagersFactory");
25
+ return new CCMPManagersFactory();
26
+ }
23
27
  case "AltV":
24
28
  case "Mock": {
25
29
  throw new Error("This multiplayer type is not implemented yet on client side");
@@ -0,0 +1,24 @@
1
+ import { BaseObjectType } from "../../../../shared/entities";
2
+ import { type Camera as CcmpCamera } from "@classic-mp/types/client";
3
+ import { type ICamera } from "../../common/camera/ICamera";
4
+ import { type IVector3D, Vector3D } from "../../../../shared/common/utils";
5
+ export declare class CCMPCamera implements ICamera {
6
+ private readonly _camera;
7
+ constructor(_camera: CcmpCamera);
8
+ get id(): number;
9
+ get remoteId(): number;
10
+ get type(): BaseObjectType;
11
+ get isExists(): boolean;
12
+ get handle(): number;
13
+ destroy(): void;
14
+ get isActive(): boolean;
15
+ setIsActive(value: boolean): void;
16
+ get direction(): IVector3D;
17
+ get fov(): number;
18
+ setFov(value: number): void;
19
+ pointAtCoord(value: IVector3D): void;
20
+ setPosition(value: Vector3D): void;
21
+ get position(): Vector3D;
22
+ get rotation(): IVector3D;
23
+ setRotation(value: IVector3D): void;
24
+ }
@@ -0,0 +1,58 @@
1
+ import { BaseObjectType } from "../../../../shared/entities";
2
+ import { Vector3D } from "../../../../shared/common/utils";
3
+ export class CCMPCamera {
4
+ constructor(_camera) {
5
+ this._camera = _camera;
6
+ }
7
+ get id() {
8
+ return this._camera.id;
9
+ }
10
+ get remoteId() {
11
+ return 0;
12
+ }
13
+ get type() {
14
+ return BaseObjectType.Camera;
15
+ }
16
+ get isExists() {
17
+ return this._camera.isAlive;
18
+ }
19
+ get handle() {
20
+ return this._camera.handle;
21
+ }
22
+ destroy() {
23
+ this._camera.destroy();
24
+ }
25
+ get isActive() {
26
+ return this._camera.isActive;
27
+ }
28
+ setIsActive(value) {
29
+ this._camera.setActive(value);
30
+ }
31
+ get direction() {
32
+ const { x, y, z } = this._camera.direction;
33
+ return new Vector3D(x, y, z);
34
+ }
35
+ get fov() {
36
+ return this._camera.fov;
37
+ }
38
+ setFov(value) {
39
+ this._camera.setFov(value);
40
+ }
41
+ pointAtCoord(value) {
42
+ this._camera.pointAtCoord(value);
43
+ }
44
+ setPosition(value) {
45
+ this._camera.setPosition(value);
46
+ }
47
+ get position() {
48
+ const { x, y, z } = this._camera.position;
49
+ return new Vector3D(x, y, z);
50
+ }
51
+ get rotation() {
52
+ const { x, y, z } = this._camera.rotation;
53
+ return new Vector3D(x, y, z);
54
+ }
55
+ setRotation(value) {
56
+ this._camera.setRotation(value);
57
+ }
58
+ }
@@ -0,0 +1,16 @@
1
+ import { type IBaseObjectsIterator } from "../../common/baseObject/IBaseObjectsIterator";
2
+ import { type ICameraCreateOptions, type ICameraManager } from "../../common/camera/ICameraManager";
3
+ import { CCMPCamera } from "./CCMPCamera";
4
+ export declare class CCMPCameraManager implements ICameraManager {
5
+ private readonly _cameras;
6
+ private readonly _iterator;
7
+ get iterator(): IBaseObjectsIterator<CCMPCamera>;
8
+ create(options: ICameraCreateOptions): CCMPCamera;
9
+ renderScriptCams(render: boolean, ease: boolean, easeTime: number, freezePreviousCamera: boolean): void;
10
+ getGameplayCamera(): CCMPCamera;
11
+ getByID(id: number): CCMPCamera;
12
+ findByID(id: number): CCMPCamera | null;
13
+ getByRemoteID(remoteId: number): CCMPCamera;
14
+ findByRemoteID(remoteId: number): CCMPCamera | null;
15
+ deleteById(id: number): CCMPCamera;
16
+ }
@@ -0,0 +1,50 @@
1
+ import { CCMPCamera } from "./CCMPCamera";
2
+ export class CCMPCameraManager {
3
+ constructor() {
4
+ this._cameras = new Map();
5
+ this._iterator = {
6
+ all: () => this._cameras.values(),
7
+ };
8
+ }
9
+ get iterator() {
10
+ return this._iterator;
11
+ }
12
+ create(options) {
13
+ const camera = new CCMPCamera(ccmp.cameras.create(options.name, options.position, options.rotation, options.fov));
14
+ this._cameras.set(camera.id, camera);
15
+ return camera;
16
+ }
17
+ renderScriptCams(render, ease, easeTime, freezePreviousCamera) {
18
+ ccmp.cameras.renderScriptCams(render, ease, easeTime, freezePreviousCamera);
19
+ }
20
+ getGameplayCamera() {
21
+ return new CCMPCamera(ccmp.cameras.getGameplayCamera());
22
+ }
23
+ getByID(id) {
24
+ const camera = this.findByID(id);
25
+ if (!camera) {
26
+ throw new Error(`CCMPCameraManager.getByID(${id}): camera not found.`);
27
+ }
28
+ return camera;
29
+ }
30
+ findByID(id) {
31
+ var _a;
32
+ return (_a = this._cameras.get(id)) !== null && _a !== void 0 ? _a : null;
33
+ }
34
+ getByRemoteID(remoteId) {
35
+ const camera = this.findByRemoteID(remoteId);
36
+ if (!camera) {
37
+ throw new Error(`CCMPCameraManager.getByRemoteID(${remoteId}): camera not found.`);
38
+ }
39
+ return camera;
40
+ }
41
+ findByRemoteID(remoteId) {
42
+ return remoteId === 0 ? null : this.findByID(remoteId);
43
+ }
44
+ deleteById(id) {
45
+ const camera = this.getByID(id);
46
+ camera.destroy();
47
+ this._cameras.delete(id);
48
+ return camera;
49
+ }
50
+ }
@@ -0,0 +1,65 @@
1
+ import { BaseObjectType } from "../../../../shared/entities";
2
+ import { type IVector3D, Vector3D } from "../../../../shared/common/utils";
3
+ import { type Ped as CcmpPed } from "@classic-mp/types/client";
4
+ import { type IBaseObject } from "../../common/baseObject/IBaseObject";
5
+ import { type IPed } from "../../common/ped/IPed";
6
+ export declare class CCMPPed implements IPed {
7
+ private readonly _ccmpPed;
8
+ private readonly _onDestroy;
9
+ private _destroyed;
10
+ constructor(_ccmpPed: CcmpPed, _onDestroy?: (ped: CCMPPed) => void);
11
+ get id(): number;
12
+ get remoteId(): number;
13
+ get type(): BaseObjectType;
14
+ get isExists(): boolean;
15
+ get handle(): number;
16
+ destroy(): void;
17
+ get position(): Vector3D;
18
+ get dimension(): number;
19
+ setPosition(value: IVector3D): void;
20
+ setDimension(value: number): void;
21
+ setCoords(xPos: number, yPos: number, zPos: number, xAxis: boolean, yAxis: boolean, zAxis: boolean, clearArea: boolean): void;
22
+ get model(): number;
23
+ get heading(): number;
24
+ setHeading(heading: number): void;
25
+ setModel(value: string): void;
26
+ get rotation(): Vector3D;
27
+ setRotation(value: IVector3D): void;
28
+ get forwardVector(): Vector3D;
29
+ freezePosition(freeze: boolean): void;
30
+ setCollision(collision: boolean, keepPhysics: boolean): void;
31
+ setInvincible(invincible: boolean): void;
32
+ setVisible(visible: boolean): void;
33
+ setAlpha(alpha: number): void;
34
+ get alpha(): number;
35
+ resetAlpha(): void;
36
+ getOffsetFromInWorldCoords(offsetX: number, offsetY: number, offsetZ: number): IVector3D;
37
+ getBoneIndexByName(boneName: string): number;
38
+ getWorldPositionOfBone(boneIndex: number): IVector3D;
39
+ getVariable(name: string): unknown | null;
40
+ getSyncedMeta(key: string): unknown | undefined;
41
+ hasSyncedMeta(key: string): boolean;
42
+ getSyncedMetaKeys(): readonly string[];
43
+ attachToEntity(target: IBaseObject, boneIndex: number, offset: IVector3D, rotation: IVector3D, p9: boolean, useSoftPinning: boolean, collision: boolean, isPed: boolean, vertexIndex: number, fixedRot: boolean): void;
44
+ detach(useDetachVelocity: boolean, collision: boolean): void;
45
+ getSpeed(): number;
46
+ isPlayingAnim(dictionary: string, name: string, taskFlag: number): boolean;
47
+ setDecoration(collection: string, overlay: string): void;
48
+ removeDecoration(collection: string, overlay: string): void;
49
+ clearDecorations(): void;
50
+ setHeadBlendData(shapeFirstId: number, shapeSecondId: number, shapeThirdId: number, skinFirstId: number, skinSecondId: number, skinThirdId: number, shapeMix: number, skinMix: number, thirdMix: number, isParent: boolean): void;
51
+ setFaceFeature(index: number, value: number): void;
52
+ setHeadOverlay(overlayId: number, index: number, opacity: number): void;
53
+ setHeadOverlayColor(overlayId: number, colorTypeId: number, firstColor: number, secondColor: number): void;
54
+ setEyeColor(eyeColor: number): void;
55
+ setHairColor(colorId: number, highlightColorId: number): void;
56
+ setComponentVariation(componentId: number, drawableId: number, textureId: number, paletteId: number): void;
57
+ setPropertyVariation(componentId: number, drawableId: number, textureId: number, attach: boolean): void;
58
+ clearProp(componentId: number): void;
59
+ getBoneCoords(boneId: number, offsetX: number, offsetY: number, offsetZ: number): IVector3D;
60
+ clearTasks(): void;
61
+ taskPlayAnim(dictionary: string, name: string, blendInSpeed: number, blendOutSpeed: number, duration: number, flag: number, playbackRate: number): void;
62
+ taskGoToCoordAnyMeans(x: number, y: number, z: number, speed: number, walkingStyle?: number, drivingFlags?: number): void;
63
+ stopAnim(dictionary: string, name: string, blendOutSpeed: number): void;
64
+ setBlockingOfNonTemporaryEvents(blocking: boolean): void;
65
+ }
@@ -0,0 +1,185 @@
1
+ import { BaseObjectType } from "../../../../shared/entities";
2
+ import { Vector3D } from "../../../../shared/common/utils";
3
+ export class CCMPPed {
4
+ constructor(_ccmpPed, _onDestroy = () => { }) {
5
+ this._ccmpPed = _ccmpPed;
6
+ this._onDestroy = _onDestroy;
7
+ this._destroyed = false;
8
+ }
9
+ get id() {
10
+ return this._ccmpPed.id;
11
+ }
12
+ get remoteId() {
13
+ return this._ccmpPed.remoteId;
14
+ }
15
+ get type() {
16
+ return BaseObjectType.Ped;
17
+ }
18
+ get isExists() {
19
+ return !this._destroyed && this._ccmpPed.isAlive;
20
+ }
21
+ get handle() {
22
+ return this._ccmpPed.handle;
23
+ }
24
+ destroy() {
25
+ if (this._destroyed) {
26
+ return;
27
+ }
28
+ this._destroyed = true;
29
+ this._ccmpPed.destroy();
30
+ this._onDestroy(this);
31
+ }
32
+ get position() {
33
+ const { x, y, z } = this._ccmpPed.position;
34
+ return new Vector3D(x, y, z);
35
+ }
36
+ get dimension() {
37
+ return this._ccmpPed.dimension;
38
+ }
39
+ setPosition(value) {
40
+ this._ccmpPed.setPosition(value);
41
+ }
42
+ setDimension(value) {
43
+ this._ccmpPed.setDimension(value);
44
+ }
45
+ setCoords(xPos, yPos, zPos, xAxis, yAxis, zAxis, clearArea) {
46
+ this._ccmpPed.setCoords(xPos, yPos, zPos, xAxis, yAxis, zAxis, clearArea);
47
+ }
48
+ get model() {
49
+ return this._ccmpPed.model;
50
+ }
51
+ get heading() {
52
+ return this._ccmpPed.heading;
53
+ }
54
+ setHeading(heading) {
55
+ this._ccmpPed.setHeading(heading);
56
+ }
57
+ setModel(value) {
58
+ this._ccmpPed.setModel(value);
59
+ }
60
+ get rotation() {
61
+ const { x, y, z } = this._ccmpPed.rotation;
62
+ return new Vector3D(x, y, z);
63
+ }
64
+ setRotation(value) {
65
+ this._ccmpPed.setRotation(value);
66
+ }
67
+ get forwardVector() {
68
+ const { x, y, z } = this._ccmpPed.forwardVector;
69
+ return new Vector3D(x, y, z);
70
+ }
71
+ freezePosition(freeze) {
72
+ this._ccmpPed.freezePosition(freeze);
73
+ }
74
+ setCollision(collision, keepPhysics) {
75
+ this._ccmpPed.setCollision(collision, keepPhysics);
76
+ }
77
+ setInvincible(invincible) {
78
+ this._ccmpPed.setInvincible(invincible);
79
+ }
80
+ setVisible(visible) {
81
+ this._ccmpPed.setVisible(visible);
82
+ }
83
+ setAlpha(alpha) {
84
+ this._ccmpPed.setAlpha(alpha);
85
+ }
86
+ get alpha() {
87
+ return this._ccmpPed.alpha;
88
+ }
89
+ resetAlpha() {
90
+ this._ccmpPed.resetAlpha();
91
+ }
92
+ getOffsetFromInWorldCoords(offsetX, offsetY, offsetZ) {
93
+ const { x, y, z } = this._ccmpPed.getOffsetFromInWorldCoords(offsetX, offsetY, offsetZ);
94
+ return new Vector3D(x, y, z);
95
+ }
96
+ getBoneIndexByName(boneName) {
97
+ return this._ccmpPed.getBoneIndexByName(boneName);
98
+ }
99
+ getWorldPositionOfBone(boneIndex) {
100
+ const { x, y, z } = this._ccmpPed.getWorldPositionOfBone(boneIndex);
101
+ return new Vector3D(x, y, z);
102
+ }
103
+ getVariable(name) {
104
+ void name;
105
+ return null;
106
+ }
107
+ getSyncedMeta(key) {
108
+ void key;
109
+ return undefined;
110
+ }
111
+ hasSyncedMeta(key) {
112
+ void key;
113
+ return false;
114
+ }
115
+ getSyncedMetaKeys() {
116
+ return [];
117
+ }
118
+ attachToEntity(target, boneIndex, offset, rotation, p9, useSoftPinning, collision, isPed, vertexIndex, fixedRot) {
119
+ this._ccmpPed.attachToEntity(target, boneIndex, offset, rotation, p9, useSoftPinning, collision, isPed, vertexIndex, fixedRot);
120
+ }
121
+ detach(useDetachVelocity, collision) {
122
+ this._ccmpPed.detach(useDetachVelocity, collision);
123
+ }
124
+ getSpeed() {
125
+ return this._ccmpPed.getSpeed();
126
+ }
127
+ isPlayingAnim(dictionary, name, taskFlag) {
128
+ return this._ccmpPed.isPlayingAnim(dictionary, name, taskFlag);
129
+ }
130
+ setDecoration(collection, overlay) {
131
+ this._ccmpPed.setDecoration(collection, overlay);
132
+ }
133
+ removeDecoration(collection, overlay) {
134
+ this._ccmpPed.removeDecoration(collection, overlay);
135
+ }
136
+ clearDecorations() {
137
+ this._ccmpPed.clearDecorations();
138
+ }
139
+ setHeadBlendData(shapeFirstId, shapeSecondId, shapeThirdId, skinFirstId, skinSecondId, skinThirdId, shapeMix, skinMix, thirdMix, isParent) {
140
+ this._ccmpPed.setHeadBlendData(shapeFirstId, shapeSecondId, shapeThirdId, skinFirstId, skinSecondId, skinThirdId, shapeMix, skinMix, thirdMix, isParent);
141
+ }
142
+ setFaceFeature(index, value) {
143
+ this._ccmpPed.setFaceFeature(index, value);
144
+ }
145
+ setHeadOverlay(overlayId, index, opacity) {
146
+ this._ccmpPed.setHeadOverlay(overlayId, index, opacity);
147
+ }
148
+ setHeadOverlayColor(overlayId, colorTypeId, firstColor, secondColor) {
149
+ this._ccmpPed.setHeadOverlayColor(overlayId, colorTypeId, firstColor, secondColor);
150
+ }
151
+ setEyeColor(eyeColor) {
152
+ this._ccmpPed.setEyeColor(eyeColor);
153
+ }
154
+ setHairColor(colorId, highlightColorId) {
155
+ this._ccmpPed.setHairColor(colorId, highlightColorId);
156
+ }
157
+ setComponentVariation(componentId, drawableId, textureId, paletteId) {
158
+ this._ccmpPed.setComponentVariation(componentId, drawableId, textureId, paletteId);
159
+ }
160
+ setPropertyVariation(componentId, drawableId, textureId, attach) {
161
+ this._ccmpPed.setPropertyVariation(componentId, drawableId, textureId, attach);
162
+ }
163
+ clearProp(componentId) {
164
+ this._ccmpPed.clearProp(componentId);
165
+ }
166
+ getBoneCoords(boneId, offsetX, offsetY, offsetZ) {
167
+ const { x, y, z } = this._ccmpPed.getBoneCoords(boneId, offsetX, offsetY, offsetZ);
168
+ return new Vector3D(x, y, z);
169
+ }
170
+ clearTasks() {
171
+ this._ccmpPed.clearTasks();
172
+ }
173
+ taskPlayAnim(dictionary, name, blendInSpeed, blendOutSpeed, duration, flag, playbackRate) {
174
+ this._ccmpPed.taskPlayAnim(dictionary, name, blendInSpeed, blendOutSpeed, duration, flag, playbackRate);
175
+ }
176
+ taskGoToCoordAnyMeans(x, y, z, speed, walkingStyle, drivingFlags) {
177
+ this._ccmpPed.taskGoToCoordAnyMeans(x, y, z, speed, walkingStyle, drivingFlags);
178
+ }
179
+ stopAnim(dictionary, name, blendOutSpeed) {
180
+ this._ccmpPed.stopAnim(dictionary, name, blendOutSpeed);
181
+ }
182
+ setBlockingOfNonTemporaryEvents(blocking) {
183
+ this._ccmpPed.setBlockingOfNonTemporaryEvents(blocking);
184
+ }
185
+ }
@@ -0,0 +1,20 @@
1
+ import { type IPedCreateOptions, type IPedsManager } from "../../common/ped/IPedsManager";
2
+ import { type IWorldObjectsIterator } from "../../common/worldObject/IWorldObjectsIterator";
3
+ import { CCMPPed } from "./CCMPPed";
4
+ export declare class CCMPPedsManager implements IPedsManager {
5
+ private readonly _peds;
6
+ private readonly _iterator;
7
+ create(options: IPedCreateOptions): CCMPPed;
8
+ syncWithMpPool(): void;
9
+ registerById(id: number): CCMPPed;
10
+ unregisterById(id: number): CCMPPed;
11
+ findByID(id: number): CCMPPed | null;
12
+ getByID(id: number): CCMPPed;
13
+ findByRemoteID(remoteId: number): CCMPPed | null;
14
+ getByRemoteID(remoteId: number): CCMPPed;
15
+ deleteById(id: number): CCMPPed;
16
+ get iterator(): IWorldObjectsIterator<CCMPPed>;
17
+ private _filter;
18
+ private _register;
19
+ private _pruneDestroyed;
20
+ }
@@ -0,0 +1,105 @@
1
+ import { CCMPPed } from "./CCMPPed";
2
+ export class CCMPPedsManager {
3
+ constructor() {
4
+ this._peds = new Map();
5
+ this._iterator = {
6
+ all: () => this._filter(() => true),
7
+ dimension: (value) => this._filter((ped) => ped.dimension === value),
8
+ range2D: (center, range) => this._filter((ped) => {
9
+ const position = ped.position;
10
+ const squaredDistance = (position.x - center.x) ** 2 + (position.y - center.y) ** 2;
11
+ return squaredDistance <= range * range;
12
+ }),
13
+ range3D: (center, range) => this._filter((ped) => ped.position.isInRange(center, range)),
14
+ };
15
+ }
16
+ create(options) {
17
+ const { model, position, rotation, dimension } = options;
18
+ const ccmpPed = ccmp.peds.create(model, position, rotation.z, { dimension });
19
+ if (!ccmpPed) {
20
+ throw new Error(`CCMPPedsManager.create: ccmp.peds.create failed for model "${model}"`);
21
+ }
22
+ return this._register(ccmpPed);
23
+ }
24
+ syncWithMpPool() {
25
+ this._pruneDestroyed();
26
+ for (const ccmpPed of ccmp.peds.all) {
27
+ if (!this._peds.has(ccmpPed.id)) {
28
+ this._register(ccmpPed);
29
+ }
30
+ }
31
+ }
32
+ registerById(id) {
33
+ const existingPed = this.findByID(id);
34
+ if (existingPed) {
35
+ return existingPed;
36
+ }
37
+ const ccmpPed = ccmp.peds.getById(id);
38
+ if (!ccmpPed) {
39
+ throw new Error(`CCMPPedsManager.registerById(${id}): ped not found.`);
40
+ }
41
+ return this._register(ccmpPed);
42
+ }
43
+ unregisterById(id) {
44
+ return this.deleteById(id);
45
+ }
46
+ findByID(id) {
47
+ var _a;
48
+ const ped = (_a = this._peds.get(id)) !== null && _a !== void 0 ? _a : null;
49
+ if (ped && !ped.isExists) {
50
+ this._peds.delete(id);
51
+ return null;
52
+ }
53
+ return ped;
54
+ }
55
+ getByID(id) {
56
+ const ped = this.findByID(id);
57
+ if (!ped) {
58
+ throw new Error(`CCMPPedsManager.getByID(${id}): ped not found.`);
59
+ }
60
+ return ped;
61
+ }
62
+ findByRemoteID(remoteId) {
63
+ return remoteId === 0 ? null : this.findByID(remoteId);
64
+ }
65
+ getByRemoteID(remoteId) {
66
+ const ped = this.findByRemoteID(remoteId);
67
+ if (!ped) {
68
+ throw new Error(`CCMPPedsManager.getByRemoteID(${remoteId}): ped not found.`);
69
+ }
70
+ return ped;
71
+ }
72
+ deleteById(id) {
73
+ const ped = this.getByID(id);
74
+ ped.destroy();
75
+ return ped;
76
+ }
77
+ get iterator() {
78
+ return this._iterator;
79
+ }
80
+ *_filter(predicate) {
81
+ for (const ped of this._peds.values()) {
82
+ if (!ped.isExists) {
83
+ this._peds.delete(ped.id);
84
+ continue;
85
+ }
86
+ if (predicate(ped)) {
87
+ yield ped;
88
+ }
89
+ }
90
+ }
91
+ _register(ccmpPed) {
92
+ const ped = new CCMPPed(ccmpPed, (destroyedPed) => {
93
+ this._peds.delete(destroyedPed.id);
94
+ });
95
+ this._peds.set(ped.id, ped);
96
+ return ped;
97
+ }
98
+ _pruneDestroyed() {
99
+ for (const ped of this._peds.values()) {
100
+ if (!ped.isExists) {
101
+ this._peds.delete(ped.id);
102
+ }
103
+ }
104
+ }
105
+ }
@@ -0,0 +1,112 @@
1
+ import { BaseObjectType } from "../../../../shared/entities";
2
+ import { type IBaseObject } from "../../common/baseObject/IBaseObject";
3
+ import { type IPlayer } from "../../common/player/IPlayer";
4
+ import { type IVehicle } from "../../common/vehicle/IVehicle";
5
+ import { type IVector3D } from "../../../../shared/common/utils";
6
+ export interface ICCMPPlayerOptions {
7
+ /** Network id of the player (same as remoteId — CCMP exposes only one id). */
8
+ readonly id: number;
9
+ /** Human-readable name from the handshake. May be empty if not yet known. */
10
+ readonly name: string;
11
+ /** `true` if this Player represents the local user, `false` for remotes. */
12
+ readonly isLocal: boolean;
13
+ }
14
+ /**
15
+ * CCMP implementation of the Rock-Mod player facade.
16
+ *
17
+ * Identity and synced meta are tracked by id. Runtime entity operations are
18
+ * delegated to `ccmp.players.getById(id)`, whose `handle` is live for the
19
+ * local player and for streamed remote players. Missing remote handles degrade
20
+ * to safe defaults/no-ops, matching RageMP-style best-effort client behavior.
21
+ */
22
+ export declare class CCMPPlayer implements IPlayer {
23
+ /** Глобальный set для one-time warnings, чтобы не флудить лог. */
24
+ private static readonly _warnedMethods;
25
+ private readonly _id;
26
+ private _name;
27
+ private readonly _isLocal;
28
+ private _isExists;
29
+ constructor(options: ICCMPPlayerOptions);
30
+ /** Помечает игрока как удалённого — вызывается из `CCMPPlayersManager`. */
31
+ markRemoved(): void;
32
+ /** Обновляет name (полезно если name приехал позже первого создания). */
33
+ setNameInternal(name: string): void;
34
+ get id(): number;
35
+ get remoteId(): number;
36
+ get type(): BaseObjectType;
37
+ get isExists(): boolean;
38
+ get handle(): number;
39
+ destroy(): void;
40
+ get position(): IVector3D;
41
+ get dimension(): number;
42
+ setPosition(value: IVector3D): void;
43
+ setDimension(_value: number): void;
44
+ setCoords(xPos: number, yPos: number, zPos: number, xAxis: boolean, yAxis: boolean, zAxis: boolean, clearArea: boolean): void;
45
+ get model(): number;
46
+ get heading(): number;
47
+ setHeading(heading: number): void;
48
+ setModel(_value: string): void;
49
+ get rotation(): IVector3D;
50
+ setRotation(value: IVector3D): void;
51
+ get forwardVector(): IVector3D;
52
+ freezePosition(freeze: boolean): void;
53
+ setCollision(collision: boolean, keepPhysics: boolean): void;
54
+ setInvincible(invincible: boolean): void;
55
+ setVisible(visible: boolean): void;
56
+ setAlpha(alpha: number): void;
57
+ get alpha(): number;
58
+ resetAlpha(): void;
59
+ getOffsetFromInWorldCoords(offsetX: number, offsetY: number, offsetZ: number): IVector3D;
60
+ getBoneIndexByName(boneName: string): number;
61
+ getWorldPositionOfBone(boneIndex: number): IVector3D;
62
+ getVariable(name: string): unknown | null;
63
+ getSyncedMeta(key: string): unknown | undefined;
64
+ hasSyncedMeta(key: string): boolean;
65
+ getSyncedMetaKeys(): readonly string[];
66
+ attachToEntity(target: IBaseObject, boneIndex: number, offset: IVector3D, rotation: IVector3D, p9: boolean, useSoftPinning: boolean, collision: boolean, isPed: boolean, vertexIndex: number, fixedRot: boolean): void;
67
+ detach(useDetachVelocity: boolean, collision: boolean): void;
68
+ getSpeed(): number;
69
+ isPlayingAnim(dictionary: string, name: string, taskFlag: number): boolean;
70
+ get name(): string;
71
+ get health(): number;
72
+ get armour(): number;
73
+ get isDead(): boolean;
74
+ get vehicle(): IVehicle | null;
75
+ get isVoice3DEnabled(): boolean;
76
+ get voiceVolume(): number;
77
+ get isVoiceActive(): boolean;
78
+ setVoice3D(_enable: boolean): void;
79
+ setVoiceVolume(_volume: number): void;
80
+ get isReloading(): boolean;
81
+ get weapon(): number;
82
+ getAmmoInClip(_weapon: number): number;
83
+ getWeaponAmmo(_weapon: number): number;
84
+ getBoneIndex(boneId: number): number;
85
+ setDecoration(_collection: string, _overlay: string): void;
86
+ removeDecoration(_collection: string, _overlay: string): void;
87
+ clearDecorations(): void;
88
+ setHeadBlendData(_shapeFirstId: number, _shapeSecondId: number, _shapeThirdId: number, _skinFirstId: number, _skinSecondId: number, _skinThirdId: number, _shapeMix: number, _skinMix: number, _thirdMix: number, _isParent: boolean): void;
89
+ setFaceFeature(_index: number, _value: number): void;
90
+ setHeadOverlay(_overlayId: number, _index: number, _opacity: number, _firstColor: number, _secondColor: number): void;
91
+ setHeadOverlayColor(_overlayId: number, _colorTypeId: number, _firstColor: number, _secondColor: number): void;
92
+ setEyeColor(_eyeColor: number): void;
93
+ setHairColor(_colorId: number, _highlightColorId: number): void;
94
+ setComponentVariation(_componentId: number, _drawableId: number, _textureId: number, _paletteId: number): void;
95
+ setPropertyVariation(_componentId: number, _drawableId: number, _textureId: number, _attach: boolean): void;
96
+ clearProp(_componentId: number): void;
97
+ get isLocalPlayer(): boolean;
98
+ taskSwapWeapon(): void;
99
+ taskEnterVehicle(_vehicleHandle: number, _timeout: number, _seat: number, _speed: number, _flag: number, _p6: number): void;
100
+ clearTasks(): void;
101
+ clearTasksImmediately(): void;
102
+ taskPlayAnim(_dictionary: string, _name: string, _blendInSpeed: number, _blendOutSpeed: number, _duration: number, _flag: number, _playbackRate: number, _lockX: boolean, _lockY: boolean, _lockZ: boolean): void;
103
+ stopAnim(_dictionary: string, _name: string, _blendOutSpeed: number): void;
104
+ setMovementClipset(_clipset: string, _speed: number): void;
105
+ resetMovementClipset(_blendDuration: number): void;
106
+ getBoneCoords(boneId: number, offsetX: number, offsetY: number, offsetZ: number): IVector3D;
107
+ setNoCollision(otherHandle: number, thisFrameOnly: boolean): void;
108
+ private _getNativePlayer;
109
+ private _withHandle;
110
+ private _withHandleVoid;
111
+ private _warnOnce;
112
+ }