rock-mod 0.19.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 (177) 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/common/ped/IPed.d.ts +5 -0
  19. package/dist/client/entities/common/player/IPlayer.d.ts +1 -0
  20. package/dist/client/entities/common/vehicle/IVehicle.d.ts +11 -0
  21. package/dist/client/entities/ragemp/entity/RageEntity.d.ts +3 -0
  22. package/dist/client/entities/ragemp/entity/RageEntity.js +16 -2
  23. package/dist/client/entities/ragemp/ped/RagePed.d.ts +5 -0
  24. package/dist/client/entities/ragemp/ped/RagePed.js +16 -0
  25. package/dist/client/entities/ragemp/player/RagePlayer.d.ts +1 -0
  26. package/dist/client/entities/ragemp/player/RagePlayer.js +3 -0
  27. package/dist/client/entities/ragemp/vehicle/RageVehicle.d.ts +11 -0
  28. package/dist/client/entities/ragemp/vehicle/RageVehicle.js +36 -0
  29. package/dist/client/factories/ccmp/CCMPManagersFactory.d.ts +46 -0
  30. package/dist/client/factories/ccmp/CCMPManagersFactory.js +149 -0
  31. package/dist/client/factories/ccmp/createNotImplementedProxy.d.ts +1 -0
  32. package/dist/client/factories/ccmp/createNotImplementedProxy.js +24 -0
  33. package/dist/client/game/ccmp/browser/CCMPBrowserManager.d.ts +22 -0
  34. package/dist/client/game/ccmp/browser/CCMPBrowserManager.js +66 -0
  35. package/dist/client/game/ccmp/chat/CCMPChatManager.d.ts +26 -0
  36. package/dist/client/game/ccmp/chat/CCMPChatManager.js +41 -0
  37. package/dist/client/game/ccmp/controls/CCMPControlsManager.d.ts +33 -0
  38. package/dist/client/game/ccmp/controls/CCMPControlsManager.js +47 -0
  39. package/dist/client/game/ccmp/cursor/CCMPCursorManager.d.ts +6 -0
  40. package/dist/client/game/ccmp/cursor/CCMPCursorManager.js +15 -0
  41. package/dist/client/game/ccmp/gameplay/CCMPGameplayManager.d.ts +6 -0
  42. package/dist/client/game/ccmp/gameplay/CCMPGameplayManager.js +10 -0
  43. package/dist/client/game/ccmp/graphics/CCMPGraphicsManager.d.ts +58 -0
  44. package/dist/client/game/ccmp/graphics/CCMPGraphicsManager.js +112 -0
  45. package/dist/client/game/ccmp/gui/CCMPGuiManager.d.ts +5 -0
  46. package/dist/client/game/ccmp/gui/CCMPGuiManager.js +17 -0
  47. package/dist/client/game/ccmp/keys/CCMPKeysManager.d.ts +41 -0
  48. package/dist/client/game/ccmp/keys/CCMPKeysManager.js +94 -0
  49. package/dist/client/game/ccmp/nametags/CCMPNametagsManager.d.ts +4 -0
  50. package/dist/client/game/ccmp/nametags/CCMPNametagsManager.js +6 -0
  51. package/dist/client/game/ccmp/native/CCMPNativeCallerManager.d.ts +74 -0
  52. package/dist/client/game/ccmp/native/CCMPNativeCallerManager.js +129 -0
  53. package/dist/client/game/ccmp/native/_generated/nativeDispatch.d.ts +5 -0
  54. package/dist/client/game/ccmp/native/_generated/nativeDispatch.js +8123 -0
  55. package/dist/client/game/ccmp/object/CCMPGameObjectManager.d.ts +4 -0
  56. package/dist/client/game/ccmp/object/CCMPGameObjectManager.js +6 -0
  57. package/dist/client/game/ccmp/pathfind/CCMPPathfindManager.d.ts +26 -0
  58. package/dist/client/game/ccmp/pathfind/CCMPPathfindManager.js +31 -0
  59. package/dist/client/game/ccmp/raycasting/CCMPRaycastingManager.d.ts +10 -0
  60. package/dist/client/game/ccmp/raycasting/CCMPRaycastingManager.js +46 -0
  61. package/dist/client/game/ccmp/storage/CCMPStorageManager.d.ts +25 -0
  62. package/dist/client/game/ccmp/storage/CCMPStorageManager.js +46 -0
  63. package/dist/client/game/ccmp/streaming/CCMPStreamingManager.d.ts +17 -0
  64. package/dist/client/game/ccmp/streaming/CCMPStreamingManager.js +41 -0
  65. package/dist/client/game/ccmp/ui/CCMPUiManager.d.ts +41 -0
  66. package/dist/client/game/ccmp/ui/CCMPUiManager.js +69 -0
  67. package/dist/client/game/ccmp/zone/CCMPZoneManager.d.ts +19 -0
  68. package/dist/client/game/ccmp/zone/CCMPZoneManager.js +20 -0
  69. package/dist/client/game/common/browser/IBrowserManager.d.ts +7 -0
  70. package/dist/client/game/common/chat/IChatManager.d.ts +1 -0
  71. package/dist/client/game/common/controls/IControlsManager.d.ts +3 -0
  72. package/dist/client/game/common/graphics/IGraphicsManager.d.ts +19 -0
  73. package/dist/client/game/common/streaming/IStreamingManager.d.ts +4 -0
  74. package/dist/client/game/ragemp/browser/RageBrowserManager.d.ts +2 -1
  75. package/dist/client/game/ragemp/browser/RageBrowserManager.js +30 -1
  76. package/dist/client/game/ragemp/chat/RageChatManager.d.ts +1 -0
  77. package/dist/client/game/ragemp/chat/RageChatManager.js +3 -0
  78. package/dist/client/game/ragemp/controls/RageControlsManager.d.ts +3 -0
  79. package/dist/client/game/ragemp/controls/RageControlsManager.js +9 -0
  80. package/dist/client/game/ragemp/graphics/RageGraphicsManager.d.ts +7 -1
  81. package/dist/client/game/ragemp/graphics/RageGraphicsManager.js +19 -0
  82. package/dist/client/game/ragemp/streaming/RageStreamingManager.d.ts +4 -0
  83. package/dist/client/game/ragemp/streaming/RageStreamingManager.js +12 -0
  84. package/dist/client/net/ccmp/CCMPConsoleForwarder.d.ts +11 -0
  85. package/dist/client/net/ccmp/CCMPConsoleForwarder.js +153 -0
  86. package/dist/client/net/ccmp/CCMPNetManager.d.ts +23 -0
  87. package/dist/client/net/ccmp/CCMPNetManager.js +55 -0
  88. package/dist/client/net/ccmp/dataHandler/CCMPDataHandler.d.ts +23 -0
  89. package/dist/client/net/ccmp/dataHandler/CCMPDataHandler.js +43 -0
  90. package/dist/client/net/ccmp/events/CCMPEventsBridge.d.ts +14 -0
  91. package/dist/client/net/ccmp/events/CCMPEventsBridge.js +19 -0
  92. package/dist/client/net/ccmp/events/CCMPEventsManager.d.ts +72 -0
  93. package/dist/client/net/ccmp/events/CCMPEventsManager.js +177 -0
  94. package/dist/client/net/ccmp/events/CCMPInProcessEmitter.d.ts +45 -0
  95. package/dist/client/net/ccmp/events/CCMPInProcessEmitter.js +133 -0
  96. package/dist/client/net/ccmp/events/CCMPRenderTicker.d.ts +18 -0
  97. package/dist/client/net/ccmp/events/CCMPRenderTicker.js +74 -0
  98. package/dist/client/net/ccmp/events/CCMPSyncedMetaBridge.d.ts +24 -0
  99. package/dist/client/net/ccmp/events/CCMPSyncedMetaBridge.js +35 -0
  100. package/dist/client/net/ccmp/rpc/CCMPRPCManager.d.ts +22 -0
  101. package/dist/client/net/ccmp/rpc/CCMPRPCManager.js +31 -0
  102. package/dist/client/net/common/events/types.d.ts +3 -1
  103. package/dist/client/net/common/events/types.js +1 -0
  104. package/dist/client/utils/ccmp/CCMPUtilsManager.d.ts +18 -0
  105. package/dist/client/utils/ccmp/CCMPUtilsManager.js +20 -0
  106. package/dist/server/RockMod.d.ts +1 -1
  107. package/dist/server/RockMod.js +4 -0
  108. package/dist/server/entities/ccmp/baseObject/CCMPBaseObject.d.ts +8 -0
  109. package/dist/server/entities/ccmp/baseObject/CCMPBaseObject.js +21 -0
  110. package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsIterator.d.ts +8 -0
  111. package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsIterator.js +16 -0
  112. package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsManager.d.ts +19 -0
  113. package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsManager.js +49 -0
  114. package/dist/server/entities/ccmp/blip/CCMPBlip.d.ts +34 -0
  115. package/dist/server/entities/ccmp/blip/CCMPBlip.js +80 -0
  116. package/dist/server/entities/ccmp/blip/CCMPBlipsManager.d.ts +9 -0
  117. package/dist/server/entities/ccmp/blip/CCMPBlipsManager.js +33 -0
  118. package/dist/server/entities/ccmp/colshape/CCMPCircleColshape.d.ts +7 -0
  119. package/dist/server/entities/ccmp/colshape/CCMPCircleColshape.js +10 -0
  120. package/dist/server/entities/ccmp/colshape/CCMPColshape.d.ts +23 -0
  121. package/dist/server/entities/ccmp/colshape/CCMPColshape.js +47 -0
  122. package/dist/server/entities/ccmp/colshape/CCMPColshapesManager.d.ts +28 -0
  123. package/dist/server/entities/ccmp/colshape/CCMPColshapesManager.js +108 -0
  124. package/dist/server/entities/ccmp/colshape/CCMPCuboidColshape.d.ts +7 -0
  125. package/dist/server/entities/ccmp/colshape/CCMPCuboidColshape.js +10 -0
  126. package/dist/server/entities/ccmp/colshape/CCMPCylinderColshape.d.ts +7 -0
  127. package/dist/server/entities/ccmp/colshape/CCMPCylinderColshape.js +10 -0
  128. package/dist/server/entities/ccmp/colshape/CCMPRectangleColshape.d.ts +7 -0
  129. package/dist/server/entities/ccmp/colshape/CCMPRectangleColshape.js +10 -0
  130. package/dist/server/entities/ccmp/colshape/CCMPSphereColshape.d.ts +7 -0
  131. package/dist/server/entities/ccmp/colshape/CCMPSphereColshape.js +10 -0
  132. package/dist/server/entities/ccmp/entity/CCMPEntitiesManager.d.ts +8 -0
  133. package/dist/server/entities/ccmp/entity/CCMPEntitiesManager.js +10 -0
  134. package/dist/server/entities/ccmp/entity/CCMPEntity.d.ts +13 -0
  135. package/dist/server/entities/ccmp/entity/CCMPEntity.js +28 -0
  136. package/dist/server/entities/ccmp/marker/CCMPMarker.d.ts +32 -0
  137. package/dist/server/entities/ccmp/marker/CCMPMarker.js +79 -0
  138. package/dist/server/entities/ccmp/marker/CCMPMarkersManager.d.ts +9 -0
  139. package/dist/server/entities/ccmp/marker/CCMPMarkersManager.js +30 -0
  140. package/dist/server/entities/ccmp/object/CCMPObject.d.ts +48 -0
  141. package/dist/server/entities/ccmp/object/CCMPObject.js +70 -0
  142. package/dist/server/entities/ccmp/object/CCMPObjectsManager.d.ts +9 -0
  143. package/dist/server/entities/ccmp/object/CCMPObjectsManager.js +28 -0
  144. package/dist/server/entities/ccmp/ped/CCMPPed.d.ts +33 -0
  145. package/dist/server/entities/ccmp/ped/CCMPPed.js +82 -0
  146. package/dist/server/entities/ccmp/ped/CCMPPedsManager.d.ts +9 -0
  147. package/dist/server/entities/ccmp/ped/CCMPPedsManager.js +28 -0
  148. package/dist/server/entities/ccmp/player/CCMPPlayer.d.ts +65 -0
  149. package/dist/server/entities/ccmp/player/CCMPPlayer.js +180 -0
  150. package/dist/server/entities/ccmp/player/CCMPPlayersManager.d.ts +12 -0
  151. package/dist/server/entities/ccmp/player/CCMPPlayersManager.js +66 -0
  152. package/dist/server/entities/ccmp/vehicle/CCMPVehicle.d.ts +58 -0
  153. package/dist/server/entities/ccmp/vehicle/CCMPVehicle.js +161 -0
  154. package/dist/server/entities/ccmp/vehicle/CCMPVehiclesManager.d.ts +9 -0
  155. package/dist/server/entities/ccmp/vehicle/CCMPVehiclesManager.js +31 -0
  156. package/dist/server/entities/ccmp/worldObject/CCMPWorldObject.d.ts +9 -0
  157. package/dist/server/entities/ccmp/worldObject/CCMPWorldObject.js +7 -0
  158. package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsIterator.d.ts +10 -0
  159. package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsIterator.js +40 -0
  160. package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsManager.d.ts +11 -0
  161. package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsManager.js +16 -0
  162. package/dist/server/entities/mock/player/MockPlayersManager.js +2 -1
  163. package/dist/server/factories/ccmp/CCMPManagersFactory.d.ts +23 -0
  164. package/dist/server/factories/ccmp/CCMPManagersFactory.js +46 -0
  165. package/dist/server/net/ccmp/CCMPNetManager.d.ts +19 -0
  166. package/dist/server/net/ccmp/CCMPNetManager.js +112 -0
  167. package/dist/server/net/ccmp/events/CCMPEventsManager.d.ts +17 -0
  168. package/dist/server/net/ccmp/events/CCMPEventsManager.js +54 -0
  169. package/dist/server/net/ccmp/rpc/CCMPRPCManager.d.ts +8 -0
  170. package/dist/server/net/ccmp/rpc/CCMPRPCManager.js +18 -0
  171. package/dist/server/net/common/events/types.d.ts +2 -0
  172. package/dist/server/net/common/events/types.js +1 -0
  173. package/dist/server/utils/ccmp/CCMPUtilsManager.d.ts +4 -0
  174. package/dist/server/utils/ccmp/CCMPUtilsManager.js +9 -0
  175. package/dist/server/world/ccmp/CCMPWorldManager.d.ts +10 -0
  176. package/dist/server/world/ccmp/CCMPWorldManager.js +24 -0
  177. package/package.json +6 -1
@@ -129,4 +129,40 @@ export class RageVehicle extends RageEntity {
129
129
  setCheatPowerIncrease(value) {
130
130
  mp.game.vehicle.setCheatPowerIncrease(this.handle, value);
131
131
  }
132
+ toggleMod(modType, toggle) {
133
+ this.mpEntity.toggleMod(modType, toggle);
134
+ }
135
+ setTyreSmokeColor(r, g, b) {
136
+ this.mpEntity.setTyreSmokeColor(r, g, b);
137
+ }
138
+ setModColor1(paintType, color, p3) {
139
+ this.mpEntity.setModColor1(paintType, color, p3);
140
+ }
141
+ setExtraColours(pearlescentColor, wheelColor) {
142
+ this.mpEntity.setExtraColours(pearlescentColor, wheelColor);
143
+ }
144
+ setHeadlightColor(colorIndex) {
145
+ // _SET_VEHICLE_HEADLIGHT_COLOUR — no RAGEMP wrapper, invoke native by hash
146
+ mp.game.invoke("0xE41033B25D003A07", this.handle, colorIndex);
147
+ }
148
+ setDashboardColor(colorIndex) {
149
+ // SET_VEHICLE_DASHBOARD_COLOUR — no RAGEMP wrapper, invoke native by hash
150
+ mp.game.invoke("0x6089CDF6A57F326C", this.handle, colorIndex);
151
+ }
152
+ setInteriorColor(colorIndex) {
153
+ // SET_VEHICLE_INTERIOR_COLOUR — no RAGEMP wrapper, invoke native by hash
154
+ mp.game.invoke("0xF40DD601A65F7F19", this.handle, colorIndex);
155
+ }
156
+ getMaxBraking() {
157
+ return this.mpEntity.getMaxBraking();
158
+ }
159
+ getAcceleration() {
160
+ return this.mpEntity.getAcceleration();
161
+ }
162
+ getMaxTraction() {
163
+ return this.mpEntity.getMaxTraction();
164
+ }
165
+ getModelMaxSpeed() {
166
+ return mp.game.vehicle.getVehicleModelMaxSpeed(this.mpEntity.model);
167
+ }
132
168
  }
@@ -0,0 +1,46 @@
1
+ import { type IManagersFactory } from "../common/IManagersFactory";
2
+ type ManagerReturn<K extends keyof IManagersFactory> = IManagersFactory[K] extends (...args: never[]) => infer R ? R : never;
3
+ export declare class CCMPManagersFactory implements IManagersFactory {
4
+ /**
5
+ * Сохраняем созданный `CCMPNetManager` потому что другим менеджерам
6
+ * (например, `CCMPPlayersManager`) нужен доступ к его событиям. Порядок
7
+ * создания в `RockMod` гарантирует, что `createNetManager` вызывается
8
+ * первым — мы можем безопасно полагаться на наличие `_netManager` в
9
+ * последующих фабричных методах.
10
+ */
11
+ private _netManager;
12
+ createNetManager(): ManagerReturn<"createNetManager">;
13
+ private _requireNetManager;
14
+ createBlipsManager(): ManagerReturn<"createBlipsManager">;
15
+ createColshapesManager(): ManagerReturn<"createColshapesManager">;
16
+ createMarkersManager(): ManagerReturn<"createMarkersManager">;
17
+ createObjectsManager(): ManagerReturn<"createObjectsManager">;
18
+ createPedsManager(): ManagerReturn<"createPedsManager">;
19
+ createPlayersManager(): ManagerReturn<"createPlayersManager">;
20
+ createUtilsManager(): ManagerReturn<"createUtilsManager">;
21
+ createVehiclesManager(): ManagerReturn<"createVehiclesManager">;
22
+ createBrowserManager(): ManagerReturn<"createBrowserManager">;
23
+ createChatManager(): ManagerReturn<"createChatManager">;
24
+ createCursorManager(): ManagerReturn<"createCursorManager">;
25
+ createGuiManager(): ManagerReturn<"createGuiManager">;
26
+ createRaycastingManager(): ManagerReturn<"createRaycastingManager">;
27
+ createVoiceChatManager(): ManagerReturn<"createVoiceChatManager">;
28
+ createCameraManager(): ManagerReturn<"createCameraManager">;
29
+ createStorageManager(): ManagerReturn<"createStorageManager">;
30
+ createGraphicsManager(): ManagerReturn<"createGraphicsManager">;
31
+ createNativeManager(): ManagerReturn<"createNativeManager">;
32
+ createStreamingManager(): ManagerReturn<"createStreamingManager">;
33
+ createLocalPlayerManager(): ManagerReturn<"createLocalPlayerManager">;
34
+ createControlsManager(): ManagerReturn<"createControlsManager">;
35
+ createKeysManager(): ManagerReturn<"createKeysManager">;
36
+ createGameplayManager(): ManagerReturn<"createGameplayManager">;
37
+ createGameCameraManager(): ManagerReturn<"createGameCameraManager">;
38
+ createUiManager(): ManagerReturn<"createUiManager">;
39
+ createNametagsManager(): ManagerReturn<"createNametagsManager">;
40
+ createPathfindManager(): ManagerReturn<"createPathfindManager">;
41
+ createZoneManager(): ManagerReturn<"createZoneManager">;
42
+ createWeaponManager(): ManagerReturn<"createWeaponManager">;
43
+ createGameObjectManager(): ManagerReturn<"createGameObjectManager">;
44
+ createConsoleManager(): ManagerReturn<"createConsoleManager">;
45
+ }
46
+ export {};
@@ -0,0 +1,149 @@
1
+ import { CCMPNetManager } from "../../net/ccmp/CCMPNetManager";
2
+ import { CCMPBrowserManager } from "../../game/ccmp/browser/CCMPBrowserManager";
3
+ import { CCMPStorageManager } from "../../game/ccmp/storage/CCMPStorageManager";
4
+ import { CCMPKeysManager } from "../../game/ccmp/keys/CCMPKeysManager";
5
+ import { CCMPNametagsManager } from "../../game/ccmp/nametags/CCMPNametagsManager";
6
+ import { CCMPChatManager } from "../../game/ccmp/chat/CCMPChatManager";
7
+ import { CCMPControlsManager } from "../../game/ccmp/controls/CCMPControlsManager";
8
+ import { CCMPPlayersManager } from "../../entities/ccmp/player/CCMPPlayersManager";
9
+ import { CCMPPedsManager } from "../../entities/ccmp/ped/CCMPPedsManager";
10
+ import { CCMPVehiclesManager } from "../../entities/ccmp/vehicle/CCMPVehiclesManager";
11
+ import { CCMPUtilsManager } from "../../utils/ccmp/CCMPUtilsManager";
12
+ import { CCMPGraphicsManager } from "../../game/ccmp/graphics/CCMPGraphicsManager";
13
+ import { CCMPUiManager } from "../../game/ccmp/ui/CCMPUiManager";
14
+ import { CCMPPathfindManager } from "../../game/ccmp/pathfind/CCMPPathfindManager";
15
+ import { CCMPZoneManager } from "../../game/ccmp/zone/CCMPZoneManager";
16
+ import { CCMPNativeCallerManager } from "../../game/ccmp/native/CCMPNativeCallerManager";
17
+ import { CCMPGuiManager } from "../../game/ccmp/gui/CCMPGuiManager";
18
+ import { CCMPRaycastingManager } from "../../game/ccmp/raycasting/CCMPRaycastingManager";
19
+ import { CCMPSyncedMetaBridge } from "../../net/ccmp/events/CCMPSyncedMetaBridge";
20
+ import { CCMPCameraManager } from "../../entities/ccmp/camera/CCMPCameraManager";
21
+ import { CCMPStreamingManager } from "../../game/ccmp/streaming/CCMPStreamingManager";
22
+ import { CCMPCursorManager } from "../../game/ccmp/cursor/CCMPCursorManager";
23
+ import { CCMPGameObjectManager } from "../../game/ccmp/object/CCMPGameObjectManager";
24
+ import { CCMPGameplayManager } from "../../game/ccmp/gameplay/CCMPGameplayManager";
25
+ import { createNotImplementedProxy } from "./createNotImplementedProxy";
26
+ export class CCMPManagersFactory {
27
+ constructor() {
28
+ /**
29
+ * Сохраняем созданный `CCMPNetManager` потому что другим менеджерам
30
+ * (например, `CCMPPlayersManager`) нужен доступ к его событиям. Порядок
31
+ * создания в `RockMod` гарантирует, что `createNetManager` вызывается
32
+ * первым — мы можем безопасно полагаться на наличие `_netManager` в
33
+ * последующих фабричных методах.
34
+ */
35
+ this._netManager = null;
36
+ }
37
+ createNetManager() {
38
+ this._netManager = new CCMPNetManager();
39
+ return this._netManager;
40
+ }
41
+ _requireNetManager(forMethod) {
42
+ if (!this._netManager) {
43
+ throw new Error(`CCMPManagersFactory.${forMethod}: ` +
44
+ "createNetManager() ещё не вызывался. Это нарушение контракта порядка " +
45
+ "фабричных методов в RockMod-конструкторе.");
46
+ }
47
+ return this._netManager;
48
+ }
49
+ createBlipsManager() {
50
+ return createNotImplementedProxy("CCMPBlipsManager");
51
+ }
52
+ createColshapesManager() {
53
+ return createNotImplementedProxy("CCMPColshapesManager");
54
+ }
55
+ createMarkersManager() {
56
+ return createNotImplementedProxy("CCMPMarkersManager");
57
+ }
58
+ createObjectsManager() {
59
+ return createNotImplementedProxy("CCMPObjectsManager");
60
+ }
61
+ createPedsManager() {
62
+ return new CCMPPedsManager();
63
+ }
64
+ createPlayersManager() {
65
+ const netManager = this._requireNetManager("createPlayersManager");
66
+ const playersManager = new CCMPPlayersManager(netManager.events);
67
+ // Bridge для `streamSyncedMetaChange` создаётся здесь — ему нужен
68
+ // players manager для резолва `entityId → CCMPPlayer`, а events bus
69
+ // — для эмиссии `rm::syncedMetaChange` (на который уже подписан
70
+ // `CCMPDataHandler`, инстанцированный в `CCMPNetManager`).
71
+ new CCMPSyncedMetaBridge(netManager.events, playersManager).register();
72
+ return playersManager;
73
+ }
74
+ createUtilsManager() {
75
+ return new CCMPUtilsManager();
76
+ }
77
+ createVehiclesManager() {
78
+ return new CCMPVehiclesManager();
79
+ }
80
+ createBrowserManager() {
81
+ return new CCMPBrowserManager();
82
+ }
83
+ createChatManager() {
84
+ return new CCMPChatManager();
85
+ }
86
+ createCursorManager() {
87
+ return new CCMPCursorManager();
88
+ }
89
+ createGuiManager() {
90
+ return new CCMPGuiManager();
91
+ }
92
+ createRaycastingManager() {
93
+ return new CCMPRaycastingManager();
94
+ }
95
+ createVoiceChatManager() {
96
+ return createNotImplementedProxy("CCMPVoiceChatManager");
97
+ }
98
+ createCameraManager() {
99
+ return new CCMPCameraManager();
100
+ }
101
+ createStorageManager() {
102
+ return new CCMPStorageManager();
103
+ }
104
+ createGraphicsManager() {
105
+ return new CCMPGraphicsManager();
106
+ }
107
+ createNativeManager() {
108
+ return new CCMPNativeCallerManager();
109
+ }
110
+ createStreamingManager() {
111
+ return new CCMPStreamingManager();
112
+ }
113
+ createLocalPlayerManager() {
114
+ return createNotImplementedProxy("CCMPLocalPlayerManager");
115
+ }
116
+ createControlsManager() {
117
+ return new CCMPControlsManager();
118
+ }
119
+ createKeysManager() {
120
+ return new CCMPKeysManager();
121
+ }
122
+ createGameplayManager() {
123
+ return new CCMPGameplayManager();
124
+ }
125
+ createGameCameraManager() {
126
+ return createNotImplementedProxy("CCMPGameCameraManager");
127
+ }
128
+ createUiManager() {
129
+ return new CCMPUiManager();
130
+ }
131
+ createNametagsManager() {
132
+ return new CCMPNametagsManager();
133
+ }
134
+ createPathfindManager() {
135
+ return new CCMPPathfindManager();
136
+ }
137
+ createZoneManager() {
138
+ return new CCMPZoneManager();
139
+ }
140
+ createWeaponManager() {
141
+ return createNotImplementedProxy("CCMPWeaponManager");
142
+ }
143
+ createGameObjectManager() {
144
+ return new CCMPGameObjectManager();
145
+ }
146
+ createConsoleManager() {
147
+ return createNotImplementedProxy("CCMPConsoleManager");
148
+ }
149
+ }
@@ -0,0 +1 @@
1
+ export declare const createNotImplementedProxy: <T extends object>(name: string) => T;
@@ -0,0 +1,24 @@
1
+ const createNotImplementedError = (path) => new Error(`${path}: not implemented yet`);
2
+ const createProxy = (path) => {
3
+ function notImplementedProxyTarget() {
4
+ throw createNotImplementedError(path);
5
+ }
6
+ return new Proxy(notImplementedProxyTarget, {
7
+ apply() {
8
+ throw createNotImplementedError(path);
9
+ },
10
+ construct() {
11
+ throw createNotImplementedError(path);
12
+ },
13
+ get(_target, property) {
14
+ if (property === "then") {
15
+ return undefined;
16
+ }
17
+ return createProxy(`${path}.${String(property)}`);
18
+ },
19
+ set(_target, property) {
20
+ throw createNotImplementedError(`${path}.${String(property)}`);
21
+ },
22
+ });
23
+ };
24
+ export const createNotImplementedProxy = (name) => createProxy(name);
@@ -0,0 +1,22 @@
1
+ import { type IBrowserHandle, type IBrowserManager } from "../../common/browser/IBrowserManager";
2
+ /**
3
+ * Реализация `IBrowserManager` поверх нативного CCMP browser API.
4
+ *
5
+ * CCMP предоставляет полноценное CEF-управление через `ccmp.browsers` —
6
+ * это прямое соответствие RageMP'шному `mp.browsers`. Маппинг:
7
+ * - `create(url)` → `ccmp.browsers.create(url)` → возвращает `Browser` с
8
+ * числовым `id`, который мы храним для последующих `execute`/`destroy`.
9
+ * - `execute(code)` → `Browser.executeJavaScript(code)`.
10
+ * - `destroy()` → `Browser.destroy()`.
11
+ *
12
+ * Геймод-консьюмер (`BrowserService` → один логический браузер на гейм-mod)
13
+ * управляет только одним инстансом одновременно, поэтому держим ссылку
14
+ * на единственный созданный браузер.
15
+ */
16
+ export declare class CCMPBrowserManager implements IBrowserManager {
17
+ private _browser;
18
+ create(url: string): void;
19
+ createInstance(url: string): IBrowserHandle;
20
+ destroy(): void;
21
+ execute(code: string): void;
22
+ }
@@ -0,0 +1,66 @@
1
+ class CCMPBrowserHandle {
2
+ constructor(url) {
3
+ this._browser = ccmp.browsers.create(url);
4
+ }
5
+ get isAlive() {
6
+ return this._browser !== null;
7
+ }
8
+ destroy() {
9
+ if (!this._browser) {
10
+ return;
11
+ }
12
+ this._browser.destroy();
13
+ this._browser = null;
14
+ }
15
+ execute(code) {
16
+ if (!this._browser) {
17
+ return;
18
+ }
19
+ this._browser.executeJavaScript(code);
20
+ }
21
+ setOrderId(orderId) {
22
+ if (!this._browser) {
23
+ return;
24
+ }
25
+ this._browser.setOrderId(orderId);
26
+ }
27
+ }
28
+ /**
29
+ * Реализация `IBrowserManager` поверх нативного CCMP browser API.
30
+ *
31
+ * CCMP предоставляет полноценное CEF-управление через `ccmp.browsers` —
32
+ * это прямое соответствие RageMP'шному `mp.browsers`. Маппинг:
33
+ * - `create(url)` → `ccmp.browsers.create(url)` → возвращает `Browser` с
34
+ * числовым `id`, который мы храним для последующих `execute`/`destroy`.
35
+ * - `execute(code)` → `Browser.executeJavaScript(code)`.
36
+ * - `destroy()` → `Browser.destroy()`.
37
+ *
38
+ * Геймод-консьюмер (`BrowserService` → один логический браузер на гейм-mod)
39
+ * управляет только одним инстансом одновременно, поэтому держим ссылку
40
+ * на единственный созданный браузер.
41
+ */
42
+ export class CCMPBrowserManager {
43
+ constructor() {
44
+ this._browser = null;
45
+ }
46
+ create(url) {
47
+ this.destroy();
48
+ this._browser = this.createInstance(url);
49
+ }
50
+ createInstance(url) {
51
+ return new CCMPBrowserHandle(url);
52
+ }
53
+ destroy() {
54
+ if (!this._browser) {
55
+ return;
56
+ }
57
+ this._browser.destroy();
58
+ this._browser = null;
59
+ }
60
+ execute(code) {
61
+ if (!this._browser) {
62
+ return;
63
+ }
64
+ this._browser.execute(code);
65
+ }
66
+ }
@@ -0,0 +1,26 @@
1
+ import { type IChatManager } from "../../common/chat/IChatManager";
2
+ /**
3
+ * No-op реализация `IChatManager` под CCMP.
4
+ *
5
+ * У RageMP клиента есть `mp.gui.chat.activate(state)` (разрешает игроку
6
+ * печатать в чат по T) и `mp.gui.chat.show(state)` (видимость чат-окна).
7
+ * У CCMP **нет JS API для управления чатом** — только встроенное событие
8
+ * `chatMessage` на приём входящих сообщений и `ccmp.notify(text)` для HUD-
9
+ * уведомлений (не относится к чату).
10
+ *
11
+ * Бросать нельзя: геймод-консьюмер `RockModChatAdapter.activate` вызывается
12
+ * из `ChatService.onModuleInit` — исключение поднимет весь bootstrap DI.
13
+ * Поэтому игнорируем + один раз пишем warn, чтобы было видно в логах что
14
+ * фича недоступна.
15
+ *
16
+ * Следствие: под CCMP программное управление чатом не работает. Чат-UI
17
+ * (если он есть) рисуется самим CCMP-клиентом на Rust-стороне и реагирует
18
+ * на свои клавиши. Когда (если) CCMP добавит JS-API для чата — заменим.
19
+ */
20
+ export declare class CCMPChatManager implements IChatManager {
21
+ private _warned;
22
+ activate(state: boolean): void;
23
+ show(state: boolean): void;
24
+ push(text: string): void;
25
+ private _warnOnce;
26
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * No-op реализация `IChatManager` под CCMP.
3
+ *
4
+ * У RageMP клиента есть `mp.gui.chat.activate(state)` (разрешает игроку
5
+ * печатать в чат по T) и `mp.gui.chat.show(state)` (видимость чат-окна).
6
+ * У CCMP **нет JS API для управления чатом** — только встроенное событие
7
+ * `chatMessage` на приём входящих сообщений и `ccmp.notify(text)` для HUD-
8
+ * уведомлений (не относится к чату).
9
+ *
10
+ * Бросать нельзя: геймод-консьюмер `RockModChatAdapter.activate` вызывается
11
+ * из `ChatService.onModuleInit` — исключение поднимет весь bootstrap DI.
12
+ * Поэтому игнорируем + один раз пишем warn, чтобы было видно в логах что
13
+ * фича недоступна.
14
+ *
15
+ * Следствие: под CCMP программное управление чатом не работает. Чат-UI
16
+ * (если он есть) рисуется самим CCMP-клиентом на Rust-стороне и реагирует
17
+ * на свои клавиши. Когда (если) CCMP добавит JS-API для чата — заменим.
18
+ */
19
+ export class CCMPChatManager {
20
+ constructor() {
21
+ this._warned = false;
22
+ }
23
+ activate(state) {
24
+ this._warnOnce("activate", state);
25
+ }
26
+ show(state) {
27
+ this._warnOnce("show", state);
28
+ }
29
+ push(text) {
30
+ ccmp.notify(text);
31
+ }
32
+ _warnOnce(method, state) {
33
+ if (this._warned) {
34
+ return;
35
+ }
36
+ this._warned = true;
37
+ console.warn(`[CCMPChatManager] ${method}(${String(state)}) вызван, но CCMP не ` +
38
+ `предоставляет JS API для управления чатом. Дальнейшие вызовы ` +
39
+ `activate/show будут проигнорированы молча.`);
40
+ }
41
+ }
@@ -0,0 +1,33 @@
1
+ import { type IControlsManager } from "../../common/controls/IControlsManager";
2
+ /**
3
+ * Реализация `IControlsManager` поверх натива-обёртки CCMP `ccmp.natives.pad.*`.
4
+ *
5
+ * Все четыре метода — прямой passthrough к соответствующим GTA V-нативам
6
+ * (`DISABLE_CONTROL_ACTION`, `IS_CONTROL_PRESSED`, `IS_DISABLED_CONTROL_PRESSED`,
7
+ * `GET_DISABLED_CONTROL_NORMAL`) с сохранением порядка аргументов:
8
+ *
9
+ * IControlsManager.disableControlAction(padIndex, control, disable)
10
+ * → ccmp.natives.pad.disableControlAction(padIndex, control, disable)
11
+ *
12
+ * Семантика и значения индексов идентичны RageMP — гейм-mod консьюмеры
13
+ * (`ControlsService` / `WeaponService.disableControlActions`) используют те
14
+ * же константы `Control.*` (см. `@shared/common/enums/Control`).
15
+ *
16
+ * **Hot path:** `disableControlAction` вызывается на каждый render-tick из
17
+ * `WeaponController.onRender`. CCMP-native — это синхронный вызов V8 op'а,
18
+ * стоимость порядка единиц микросекунд; никакой буферизации не нужно.
19
+ *
20
+ * Имена параметров `CcmpNativesPad.disableControlAction(control, action, ...)`
21
+ * **обманчивы** — это generic-renames из натив-генератора. Фактически первый
22
+ * аргумент — `padIndex` (0..2), второй — `control` (Control.*), третий —
23
+ * `disable: boolean`. См. https://docs.fivem.net/natives/?_0xFE99B66D43DA8E7B.
24
+ */
25
+ export declare class CCMPControlsManager implements IControlsManager {
26
+ disableControlAction(padIndex: number, control: number, disable: boolean): void;
27
+ isDisabledControlPressed(padIndex: number, control: number): boolean;
28
+ isDisabledControlJustPressed(padIndex: number, control: number): boolean;
29
+ isControlPressed(padIndex: number, control: number): boolean;
30
+ isControlJustPressed(padIndex: number, control: number): boolean;
31
+ isControlJustReleased(padIndex: number, control: number): boolean;
32
+ getDisabledControlNormal(padIndex: number, control: number): number;
33
+ }
@@ -0,0 +1,47 @@
1
+ /// <reference types="@classic-mp/types/client" />
2
+ /**
3
+ * Реализация `IControlsManager` поверх натива-обёртки CCMP `ccmp.natives.pad.*`.
4
+ *
5
+ * Все четыре метода — прямой passthrough к соответствующим GTA V-нативам
6
+ * (`DISABLE_CONTROL_ACTION`, `IS_CONTROL_PRESSED`, `IS_DISABLED_CONTROL_PRESSED`,
7
+ * `GET_DISABLED_CONTROL_NORMAL`) с сохранением порядка аргументов:
8
+ *
9
+ * IControlsManager.disableControlAction(padIndex, control, disable)
10
+ * → ccmp.natives.pad.disableControlAction(padIndex, control, disable)
11
+ *
12
+ * Семантика и значения индексов идентичны RageMP — гейм-mod консьюмеры
13
+ * (`ControlsService` / `WeaponService.disableControlActions`) используют те
14
+ * же константы `Control.*` (см. `@shared/common/enums/Control`).
15
+ *
16
+ * **Hot path:** `disableControlAction` вызывается на каждый render-tick из
17
+ * `WeaponController.onRender`. CCMP-native — это синхронный вызов V8 op'а,
18
+ * стоимость порядка единиц микросекунд; никакой буферизации не нужно.
19
+ *
20
+ * Имена параметров `CcmpNativesPad.disableControlAction(control, action, ...)`
21
+ * **обманчивы** — это generic-renames из натив-генератора. Фактически первый
22
+ * аргумент — `padIndex` (0..2), второй — `control` (Control.*), третий —
23
+ * `disable: boolean`. См. https://docs.fivem.net/natives/?_0xFE99B66D43DA8E7B.
24
+ */
25
+ export class CCMPControlsManager {
26
+ disableControlAction(padIndex, control, disable) {
27
+ ccmp.natives.pad.disableControlAction(padIndex, control, disable);
28
+ }
29
+ isDisabledControlPressed(padIndex, control) {
30
+ return ccmp.natives.pad.isDisabledControlPressed(padIndex, control);
31
+ }
32
+ isDisabledControlJustPressed(padIndex, control) {
33
+ return ccmp.natives.pad.isDisabledControlJustPressed(padIndex, control);
34
+ }
35
+ isControlPressed(padIndex, control) {
36
+ return ccmp.natives.pad.isControlPressed(padIndex, control);
37
+ }
38
+ isControlJustPressed(padIndex, control) {
39
+ return ccmp.natives.pad.isControlJustPressed(padIndex, control);
40
+ }
41
+ isControlJustReleased(padIndex, control) {
42
+ return ccmp.natives.pad.isControlJustReleased(padIndex, control);
43
+ }
44
+ getDisabledControlNormal(padIndex, control) {
45
+ return ccmp.natives.pad.getDisabledControlNormal(padIndex, control);
46
+ }
47
+ }
@@ -0,0 +1,6 @@
1
+ import { type ICursorManager } from "../../../game";
2
+ import { Vector2D } from "../../../../shared/common/utils";
3
+ export declare class CCMPCursorManager implements ICursorManager {
4
+ show(_freezeControls: boolean, state: boolean): void;
5
+ getPosition(): Vector2D;
6
+ }
@@ -0,0 +1,15 @@
1
+ /// <reference types="@classic-mp/types/client" />
2
+ import { Vector2D } from "../../../../shared/common/utils";
3
+ export class CCMPCursorManager {
4
+ show(_freezeControls, state) {
5
+ if (state) {
6
+ ccmp.cursor.show();
7
+ return;
8
+ }
9
+ ccmp.cursor.hide();
10
+ }
11
+ getPosition() {
12
+ const position = ccmp.cursor.getPosition();
13
+ return new Vector2D(position.x, position.y);
14
+ }
15
+ }
@@ -0,0 +1,6 @@
1
+ import { type IGameplayManager } from "../../../game";
2
+ import { type IVector3D } from "../../../../shared/common/utils";
3
+ export declare class CCMPGameplayManager implements IGameplayManager {
4
+ setFadeOutAfterDeath(toggle: boolean): void;
5
+ getGroundZFor3dCoord(position: IVector3D, ignoreWater: boolean, waterLevelCheck: boolean): number;
6
+ }
@@ -0,0 +1,10 @@
1
+ /// <reference types="@classic-mp/types/client" />
2
+ export class CCMPGameplayManager {
3
+ setFadeOutAfterDeath(toggle) {
4
+ ccmp.natives.misc.setFadeOutAfterDeath(toggle);
5
+ }
6
+ getGroundZFor3dCoord(position, ignoreWater, waterLevelCheck) {
7
+ const result = ccmp.natives.misc.getGroundZFor3dCoord(position.x, position.y, position.z, ignoreWater, waterLevelCheck);
8
+ return result.groundz;
9
+ }
10
+ }
@@ -0,0 +1,58 @@
1
+ import { type IGraphicsManager, type ILoopedParticleFxAtCoordOptions, type IParticleFxAtCoordOptions, type IScreenTextOptions } from "../../common/graphics/IGraphicsManager";
2
+ import { type IVector2D, type IVector3D } from "../../../../shared/common/utils";
3
+ /**
4
+ * Реализация `IGraphicsManager` под CCMP.
5
+ *
6
+ * RageMP даёт высокоуровневые обёртки `mp.game.graphics.drawText` /
7
+ * `world3dToScreen2d` / etc. У CCMP таких помощников нет — есть только
8
+ * сырые GTA V натив-биндинги в `ccmp.natives.{hud,graphics}.*`. Этот класс
9
+ * собирает их в эквивалент RageMP API.
10
+ *
11
+ * ### `drawText` — мульти-нативная цепочка
12
+ *
13
+ * Стандартная GTA V последовательность:
14
+ * 1. `SET_TEXT_FONT/SCALE/COLOUR/OUTLINE/CENTRE` — стиль текста
15
+ * 2. `BEGIN_TEXT_COMMAND_DISPLAY_TEXT('STRING')` — открыть text command
16
+ * 3. `ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME(text)` — добавить содержимое
17
+ * 4. `END_TEXT_COMMAND_DISPLAY_TEXT(x, y, 0)` — отрисовать
18
+ *
19
+ * **Hot path:** вызывается каждый render-tick из `HudController.onRender`
20
+ * (ammo, nametags, etc). Все вызовы синхронны (V8-ops), общая стоимость —
21
+ * единицы микросекунд на текст.
22
+ *
23
+ * **Ограничение длины:** `ADD_TEXT_COMPONENT_SUBSTRING_PLAYER_NAME` усекает
24
+ * вход на 99 символов. Для типичных HUD-меток (ammo "30/120", имена игроков)
25
+ * не критично; для длинных строк нужно разбивать на чанки последовательными
26
+ * `ADD_*` вызовами. Сейчас не реализовано — добавим если понадобится.
27
+ *
28
+ * ### `world3dToScreen2d`
29
+ *
30
+ * `getScreenCoordFromWorldCoord` возвращает `{return, screenx, screeny}` —
31
+ * `return=false` означает, что точка вне frustum'а; маппим в `null` для
32
+ * совпадения с RageMP-семантикой.
33
+ *
34
+ * ### `getActiveScreenResolution`
35
+ *
36
+ * Маппится на `getActualScreenResolution` (GTA native `0x873C9F3104101DD3`),
37
+ * который возвращает физическое разрешение рендера — то же, что RageMP'шный
38
+ * `getActiveScreenResolution` (это один и тот же натив, переименованный по-
39
+ * разному в разных биндингах).
40
+ *
41
+ * ### `startScreenEffect` / `stopScreenEffect`
42
+ *
43
+ * Маппятся на `animpostfxPlay` / `animpostfxStop` (`ANIMPOSTFX_PLAY`/`STOP`) —
44
+ * это и есть GTA V натив для screen effect'ов (по-старому называвшийся
45
+ * `START_SCREEN_EFFECT`).
46
+ */
47
+ export declare class CCMPGraphicsManager implements IGraphicsManager {
48
+ drawText(text: string, position: IVector2D, options?: IScreenTextOptions): void;
49
+ world3dToScreen2d(position: IVector3D): IVector2D | null;
50
+ startScreenEffect(effectName: string, duration: number, looped: boolean): void;
51
+ stopScreenEffect(effectName: string): void;
52
+ setPtfxAssetNextCall(assetName: string): void;
53
+ startParticleFxNonLoopedAtCoord(options: IParticleFxAtCoordOptions): boolean;
54
+ startParticleFxLoopedAtCoord(options: ILoopedParticleFxAtCoordOptions): number;
55
+ stopParticleFxLooped(handle: number, p1: boolean): void;
56
+ getSafeZoneSize(): number;
57
+ getActiveScreenResolution(): IVector2D;
58
+ }