rock-mod 0.20.0 → 0.22.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 (194) 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/blip/CCMPBlip.d.ts +38 -0
  4. package/dist/client/entities/ccmp/blip/CCMPBlip.js +118 -0
  5. package/dist/client/entities/ccmp/blip/CCMPBlipsManager.d.ts +27 -0
  6. package/dist/client/entities/ccmp/blip/CCMPBlipsManager.js +191 -0
  7. package/dist/client/entities/ccmp/camera/CCMPCamera.d.ts +24 -0
  8. package/dist/client/entities/ccmp/camera/CCMPCamera.js +58 -0
  9. package/dist/client/entities/ccmp/camera/CCMPCameraManager.d.ts +16 -0
  10. package/dist/client/entities/ccmp/camera/CCMPCameraManager.js +51 -0
  11. package/dist/client/entities/ccmp/colshape/CCMPColshape.d.ts +26 -0
  12. package/dist/client/entities/ccmp/colshape/CCMPColshape.js +83 -0
  13. package/dist/client/entities/ccmp/colshape/CCMPColshapesManager.d.ts +31 -0
  14. package/dist/client/entities/ccmp/colshape/CCMPColshapesManager.js +193 -0
  15. package/dist/client/entities/ccmp/marker/CCMPMarker.d.ts +34 -0
  16. package/dist/client/entities/ccmp/marker/CCMPMarker.js +109 -0
  17. package/dist/client/entities/ccmp/marker/CCMPMarkersManager.d.ts +27 -0
  18. package/dist/client/entities/ccmp/marker/CCMPMarkersManager.js +180 -0
  19. package/dist/client/entities/ccmp/object/CCMPObject.d.ts +53 -0
  20. package/dist/client/entities/ccmp/object/CCMPObject.js +218 -0
  21. package/dist/client/entities/ccmp/object/CCMPObjectsManager.d.ts +27 -0
  22. package/dist/client/entities/ccmp/object/CCMPObjectsManager.js +177 -0
  23. package/dist/client/entities/ccmp/ped/CCMPPed.d.ts +65 -0
  24. package/dist/client/entities/ccmp/ped/CCMPPed.js +199 -0
  25. package/dist/client/entities/ccmp/ped/CCMPPedsManager.d.ts +27 -0
  26. package/dist/client/entities/ccmp/ped/CCMPPedsManager.js +177 -0
  27. package/dist/client/entities/ccmp/player/CCMPPlayer.d.ts +112 -0
  28. package/dist/client/entities/ccmp/player/CCMPPlayer.js +338 -0
  29. package/dist/client/entities/ccmp/player/CCMPPlayersManager.d.ts +85 -0
  30. package/dist/client/entities/ccmp/player/CCMPPlayersManager.js +331 -0
  31. package/dist/client/entities/ccmp/vehicle/CCMPVehicle.d.ts +119 -0
  32. package/dist/client/entities/ccmp/vehicle/CCMPVehicle.js +392 -0
  33. package/dist/client/entities/ccmp/vehicle/CCMPVehiclesManager.d.ts +27 -0
  34. package/dist/client/entities/ccmp/vehicle/CCMPVehiclesManager.js +183 -0
  35. package/dist/client/entities/common/baseObject/IBaseObject.d.ts +2 -1
  36. package/dist/client/entities/common/entity/IEntity.d.ts +3 -0
  37. package/dist/client/entities/ragemp/entity/RageEntity.d.ts +7 -0
  38. package/dist/client/entities/ragemp/entity/RageEntity.js +45 -2
  39. package/dist/client/factories/ccmp/CCMPManagersFactory.d.ts +48 -0
  40. package/dist/client/factories/ccmp/CCMPManagersFactory.js +189 -0
  41. package/dist/client/factories/ccmp/createNotImplementedProxy.d.ts +1 -0
  42. package/dist/client/factories/ccmp/createNotImplementedProxy.js +24 -0
  43. package/dist/client/game/ccmp/browser/CCMPBrowserManager.d.ts +22 -0
  44. package/dist/client/game/ccmp/browser/CCMPBrowserManager.js +66 -0
  45. package/dist/client/game/ccmp/chat/CCMPChatManager.d.ts +26 -0
  46. package/dist/client/game/ccmp/chat/CCMPChatManager.js +41 -0
  47. package/dist/client/game/ccmp/controls/CCMPControlsManager.d.ts +33 -0
  48. package/dist/client/game/ccmp/controls/CCMPControlsManager.js +47 -0
  49. package/dist/client/game/ccmp/cursor/CCMPCursorManager.d.ts +6 -0
  50. package/dist/client/game/ccmp/cursor/CCMPCursorManager.js +15 -0
  51. package/dist/client/game/ccmp/gameplay/CCMPGameplayManager.d.ts +6 -0
  52. package/dist/client/game/ccmp/gameplay/CCMPGameplayManager.js +10 -0
  53. package/dist/client/game/ccmp/graphics/CCMPGraphicsManager.d.ts +58 -0
  54. package/dist/client/game/ccmp/graphics/CCMPGraphicsManager.js +112 -0
  55. package/dist/client/game/ccmp/gui/CCMPGuiManager.d.ts +5 -0
  56. package/dist/client/game/ccmp/gui/CCMPGuiManager.js +17 -0
  57. package/dist/client/game/ccmp/keys/CCMPKeysManager.d.ts +41 -0
  58. package/dist/client/game/ccmp/keys/CCMPKeysManager.js +94 -0
  59. package/dist/client/game/ccmp/nametags/CCMPNametagsManager.d.ts +4 -0
  60. package/dist/client/game/ccmp/nametags/CCMPNametagsManager.js +6 -0
  61. package/dist/client/game/ccmp/native/CCMPNativeCallerManager.d.ts +74 -0
  62. package/dist/client/game/ccmp/native/CCMPNativeCallerManager.js +129 -0
  63. package/dist/client/game/ccmp/native/_generated/nativeDispatch.d.ts +5 -0
  64. package/dist/client/game/ccmp/native/_generated/nativeDispatch.js +8123 -0
  65. package/dist/client/game/ccmp/object/CCMPGameObjectManager.d.ts +4 -0
  66. package/dist/client/game/ccmp/object/CCMPGameObjectManager.js +6 -0
  67. package/dist/client/game/ccmp/pathfind/CCMPPathfindManager.d.ts +26 -0
  68. package/dist/client/game/ccmp/pathfind/CCMPPathfindManager.js +31 -0
  69. package/dist/client/game/ccmp/raycasting/CCMPRaycastingManager.d.ts +10 -0
  70. package/dist/client/game/ccmp/raycasting/CCMPRaycastingManager.js +46 -0
  71. package/dist/client/game/ccmp/storage/CCMPStorageManager.d.ts +7 -0
  72. package/dist/client/game/ccmp/storage/CCMPStorageManager.js +14 -0
  73. package/dist/client/game/ccmp/streaming/CCMPStreamingManager.d.ts +17 -0
  74. package/dist/client/game/ccmp/streaming/CCMPStreamingManager.js +41 -0
  75. package/dist/client/game/ccmp/ui/CCMPUiManager.d.ts +41 -0
  76. package/dist/client/game/ccmp/ui/CCMPUiManager.js +69 -0
  77. package/dist/client/game/ccmp/zone/CCMPZoneManager.d.ts +19 -0
  78. package/dist/client/game/ccmp/zone/CCMPZoneManager.js +20 -0
  79. package/dist/client/game/common/browser/IBrowserManager.d.ts +7 -0
  80. package/dist/client/game/common/chat/IChatManager.d.ts +1 -0
  81. package/dist/client/game/common/controls/IControlsManager.d.ts +3 -0
  82. package/dist/client/game/common/graphics/IGraphicsManager.d.ts +17 -0
  83. package/dist/client/game/common/streaming/IStreamingManager.d.ts +2 -0
  84. package/dist/client/game/ragemp/browser/RageBrowserManager.d.ts +2 -1
  85. package/dist/client/game/ragemp/browser/RageBrowserManager.js +30 -1
  86. package/dist/client/game/ragemp/chat/RageChatManager.d.ts +1 -0
  87. package/dist/client/game/ragemp/chat/RageChatManager.js +3 -0
  88. package/dist/client/game/ragemp/controls/RageControlsManager.d.ts +3 -0
  89. package/dist/client/game/ragemp/controls/RageControlsManager.js +9 -0
  90. package/dist/client/game/ragemp/graphics/RageGraphicsManager.d.ts +5 -1
  91. package/dist/client/game/ragemp/graphics/RageGraphicsManager.js +12 -0
  92. package/dist/client/game/ragemp/streaming/RageStreamingManager.d.ts +2 -0
  93. package/dist/client/game/ragemp/streaming/RageStreamingManager.js +6 -0
  94. package/dist/client/net/ccmp/CCMPConsoleForwarder.d.ts +11 -0
  95. package/dist/client/net/ccmp/CCMPConsoleForwarder.js +153 -0
  96. package/dist/client/net/ccmp/CCMPNetManager.d.ts +23 -0
  97. package/dist/client/net/ccmp/CCMPNetManager.js +55 -0
  98. package/dist/client/net/ccmp/dataHandler/CCMPDataHandler.d.ts +23 -0
  99. package/dist/client/net/ccmp/dataHandler/CCMPDataHandler.js +43 -0
  100. package/dist/client/net/ccmp/events/CCMPEventsBridge.d.ts +14 -0
  101. package/dist/client/net/ccmp/events/CCMPEventsBridge.js +19 -0
  102. package/dist/client/net/ccmp/events/CCMPEventsManager.d.ts +72 -0
  103. package/dist/client/net/ccmp/events/CCMPEventsManager.js +177 -0
  104. package/dist/client/net/ccmp/events/CCMPInProcessEmitter.d.ts +45 -0
  105. package/dist/client/net/ccmp/events/CCMPInProcessEmitter.js +133 -0
  106. package/dist/client/net/ccmp/events/CCMPRenderTicker.d.ts +18 -0
  107. package/dist/client/net/ccmp/events/CCMPRenderTicker.js +74 -0
  108. package/dist/client/net/ccmp/events/CCMPSyncedMetaBridge.d.ts +29 -0
  109. package/dist/client/net/ccmp/events/CCMPSyncedMetaBridge.js +45 -0
  110. package/dist/client/net/ccmp/rpc/CCMPRPCManager.d.ts +22 -0
  111. package/dist/client/net/ccmp/rpc/CCMPRPCManager.js +31 -0
  112. package/dist/client/net/common/dataHandler/IDataHandler.d.ts +2 -2
  113. package/dist/client/net/common/events/types.d.ts +6 -4
  114. package/dist/client/net/common/events/types.js +1 -0
  115. package/dist/client/net/ragemp/dataHandler/RageDataHandler.d.ts +2 -2
  116. package/dist/client/utils/ccmp/CCMPUtilsManager.d.ts +18 -0
  117. package/dist/client/utils/ccmp/CCMPUtilsManager.js +20 -0
  118. package/dist/server/RockMod.d.ts +1 -1
  119. package/dist/server/RockMod.js +4 -0
  120. package/dist/server/entities/ccmp/baseObject/CCMPBaseObject.d.ts +8 -0
  121. package/dist/server/entities/ccmp/baseObject/CCMPBaseObject.js +21 -0
  122. package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsIterator.d.ts +8 -0
  123. package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsIterator.js +16 -0
  124. package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsManager.d.ts +19 -0
  125. package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsManager.js +49 -0
  126. package/dist/server/entities/ccmp/blip/CCMPBlip.d.ts +36 -0
  127. package/dist/server/entities/ccmp/blip/CCMPBlip.js +86 -0
  128. package/dist/server/entities/ccmp/blip/CCMPBlipsManager.d.ts +9 -0
  129. package/dist/server/entities/ccmp/blip/CCMPBlipsManager.js +33 -0
  130. package/dist/server/entities/ccmp/colshape/CCMPCircleColshape.d.ts +7 -0
  131. package/dist/server/entities/ccmp/colshape/CCMPCircleColshape.js +10 -0
  132. package/dist/server/entities/ccmp/colshape/CCMPColshape.d.ts +25 -0
  133. package/dist/server/entities/ccmp/colshape/CCMPColshape.js +53 -0
  134. package/dist/server/entities/ccmp/colshape/CCMPColshapesManager.d.ts +28 -0
  135. package/dist/server/entities/ccmp/colshape/CCMPColshapesManager.js +108 -0
  136. package/dist/server/entities/ccmp/colshape/CCMPCuboidColshape.d.ts +7 -0
  137. package/dist/server/entities/ccmp/colshape/CCMPCuboidColshape.js +10 -0
  138. package/dist/server/entities/ccmp/colshape/CCMPCylinderColshape.d.ts +7 -0
  139. package/dist/server/entities/ccmp/colshape/CCMPCylinderColshape.js +10 -0
  140. package/dist/server/entities/ccmp/colshape/CCMPRectangleColshape.d.ts +7 -0
  141. package/dist/server/entities/ccmp/colshape/CCMPRectangleColshape.js +10 -0
  142. package/dist/server/entities/ccmp/colshape/CCMPSphereColshape.d.ts +7 -0
  143. package/dist/server/entities/ccmp/colshape/CCMPSphereColshape.js +10 -0
  144. package/dist/server/entities/ccmp/entity/CCMPEntitiesManager.d.ts +8 -0
  145. package/dist/server/entities/ccmp/entity/CCMPEntitiesManager.js +10 -0
  146. package/dist/server/entities/ccmp/entity/CCMPEntity.d.ts +13 -0
  147. package/dist/server/entities/ccmp/entity/CCMPEntity.js +28 -0
  148. package/dist/server/entities/ccmp/marker/CCMPMarker.d.ts +34 -0
  149. package/dist/server/entities/ccmp/marker/CCMPMarker.js +85 -0
  150. package/dist/server/entities/ccmp/marker/CCMPMarkersManager.d.ts +9 -0
  151. package/dist/server/entities/ccmp/marker/CCMPMarkersManager.js +30 -0
  152. package/dist/server/entities/ccmp/object/CCMPObject.d.ts +48 -0
  153. package/dist/server/entities/ccmp/object/CCMPObject.js +68 -0
  154. package/dist/server/entities/ccmp/object/CCMPObjectsManager.d.ts +9 -0
  155. package/dist/server/entities/ccmp/object/CCMPObjectsManager.js +27 -0
  156. package/dist/server/entities/ccmp/ped/CCMPPed.d.ts +33 -0
  157. package/dist/server/entities/ccmp/ped/CCMPPed.js +82 -0
  158. package/dist/server/entities/ccmp/ped/CCMPPedsManager.d.ts +9 -0
  159. package/dist/server/entities/ccmp/ped/CCMPPedsManager.js +28 -0
  160. package/dist/server/entities/ccmp/player/CCMPPlayer.d.ts +65 -0
  161. package/dist/server/entities/ccmp/player/CCMPPlayer.js +180 -0
  162. package/dist/server/entities/ccmp/player/CCMPPlayersManager.d.ts +12 -0
  163. package/dist/server/entities/ccmp/player/CCMPPlayersManager.js +66 -0
  164. package/dist/server/entities/ccmp/vehicle/CCMPVehicle.d.ts +58 -0
  165. package/dist/server/entities/ccmp/vehicle/CCMPVehicle.js +161 -0
  166. package/dist/server/entities/ccmp/vehicle/CCMPVehiclesManager.d.ts +9 -0
  167. package/dist/server/entities/ccmp/vehicle/CCMPVehiclesManager.js +31 -0
  168. package/dist/server/entities/ccmp/worldObject/CCMPWorldObject.d.ts +9 -0
  169. package/dist/server/entities/ccmp/worldObject/CCMPWorldObject.js +7 -0
  170. package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsIterator.d.ts +10 -0
  171. package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsIterator.js +40 -0
  172. package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsManager.d.ts +11 -0
  173. package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsManager.js +16 -0
  174. package/dist/server/entities/mock/player/MockPlayersManager.js +2 -1
  175. package/dist/server/entities/ragemp/entity/RageEntity.d.ts +5 -1
  176. package/dist/server/entities/ragemp/entity/RageEntity.js +17 -1
  177. package/dist/server/entities/ragemp/object/RageObjectsManager.js +1 -1
  178. package/dist/server/entities/ragemp/ped/RagePedsManager.js +1 -1
  179. package/dist/server/entities/ragemp/vehicle/RageVehiclesManager.js +1 -1
  180. package/dist/server/factories/ccmp/CCMPManagersFactory.d.ts +23 -0
  181. package/dist/server/factories/ccmp/CCMPManagersFactory.js +46 -0
  182. package/dist/server/net/ccmp/CCMPNetManager.d.ts +19 -0
  183. package/dist/server/net/ccmp/CCMPNetManager.js +112 -0
  184. package/dist/server/net/ccmp/events/CCMPEventsManager.d.ts +17 -0
  185. package/dist/server/net/ccmp/events/CCMPEventsManager.js +54 -0
  186. package/dist/server/net/ccmp/rpc/CCMPRPCManager.d.ts +8 -0
  187. package/dist/server/net/ccmp/rpc/CCMPRPCManager.js +18 -0
  188. package/dist/server/net/common/events/types.d.ts +2 -0
  189. package/dist/server/net/common/events/types.js +1 -0
  190. package/dist/server/utils/ccmp/CCMPUtilsManager.d.ts +4 -0
  191. package/dist/server/utils/ccmp/CCMPUtilsManager.js +9 -0
  192. package/dist/server/world/ccmp/CCMPWorldManager.d.ts +10 -0
  193. package/dist/server/world/ccmp/CCMPWorldManager.js +24 -0
  194. package/package.json +3 -1
@@ -0,0 +1,392 @@
1
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import { BaseObjectType } from "../../../../shared/entities";
3
+ import { Vector3D } from "../../../../shared/common/utils";
4
+ const notImplemented = (memberName) => {
5
+ throw new Error(`CCMPVehicle.${memberName}: not implemented`);
6
+ };
7
+ export class CCMPVehicle {
8
+ constructor(_ccmpVehicle, _onDestroy = () => { }) {
9
+ this._ccmpVehicle = _ccmpVehicle;
10
+ this._onDestroy = _onDestroy;
11
+ this._destroyed = false;
12
+ }
13
+ get id() {
14
+ return this._ccmpVehicle.id;
15
+ }
16
+ get remoteId() {
17
+ return this._ccmpVehicle.remoteId;
18
+ }
19
+ get type() {
20
+ return BaseObjectType.Vehicle;
21
+ }
22
+ get isExists() {
23
+ var _a;
24
+ if (this._destroyed)
25
+ return false;
26
+ if (this._ccmpVehicle.isRemote) {
27
+ return this._getRemoteVehicleExists();
28
+ }
29
+ return !this._destroyed && ((_a = this._ccmpVehicle.isExists) !== null && _a !== void 0 ? _a : this._ccmpVehicle.isAlive);
30
+ }
31
+ get handle() {
32
+ const handle = Number(this._ccmpVehicle.handle);
33
+ return Number.isFinite(handle) && handle > 0 ? Math.trunc(handle) : 0;
34
+ }
35
+ destroy() {
36
+ if (this._destroyed)
37
+ return;
38
+ this._destroyed = true;
39
+ this._ccmpVehicle.destroy();
40
+ this._onDestroy(this);
41
+ }
42
+ get position() {
43
+ const { x, y, z } = this._ccmpVehicle.position;
44
+ return new Vector3D(x, y, z);
45
+ }
46
+ get dimension() {
47
+ return this._ccmpVehicle.dimension;
48
+ }
49
+ setPosition(_value) {
50
+ notImplemented("setPosition");
51
+ }
52
+ setDimension(_value) {
53
+ notImplemented("setDimension");
54
+ }
55
+ setCoords(_xPos, _yPos, _zPos, _xAxis, _yAxis, _zAxis, _clearArea) {
56
+ notImplemented("setCoords");
57
+ }
58
+ get model() {
59
+ return this._ccmpVehicle.model;
60
+ }
61
+ get heading() {
62
+ return this._ccmpVehicle.heading;
63
+ }
64
+ setHeading(_heading) {
65
+ notImplemented("setHeading");
66
+ }
67
+ setModel(_value) {
68
+ notImplemented("setModel");
69
+ }
70
+ get rotation() {
71
+ const { x, y, z } = this._ccmpVehicle.rotation;
72
+ return new Vector3D(x, y, z);
73
+ }
74
+ get forwardVector() {
75
+ const headingRad = (this.heading * Math.PI) / 180;
76
+ return new Vector3D(-Math.sin(headingRad), Math.cos(headingRad), 0);
77
+ }
78
+ setRotation(_value) {
79
+ notImplemented("setRotation");
80
+ }
81
+ freezePosition(_freeze) {
82
+ notImplemented("freezePosition");
83
+ }
84
+ setCollision(_collision, _keepPhysics) {
85
+ notImplemented("setCollision");
86
+ }
87
+ setInvincible(_invincible) {
88
+ notImplemented("setInvincible");
89
+ }
90
+ setVisible(_visible) {
91
+ notImplemented("setVisible");
92
+ }
93
+ setAlpha(alpha) {
94
+ this._withHandleVoid((handle) => {
95
+ ccmp.natives.entity.setEntityAlpha(handle, alpha, false);
96
+ });
97
+ }
98
+ get alpha() {
99
+ return this._withHandle(255, (handle) => ccmp.natives.entity.getEntityAlpha(handle));
100
+ }
101
+ resetAlpha() {
102
+ this._withHandleVoid((handle) => {
103
+ ccmp.natives.entity.resetEntityAlpha(handle);
104
+ });
105
+ }
106
+ getOffsetFromInWorldCoords(offsetX, offsetY, offsetZ) {
107
+ return this._withHandle(this._getOffsetFromCachedTransform(offsetX, offsetY, offsetZ), (handle) => {
108
+ const { x, y, z } = ccmp.natives.entity.getOffsetFromEntityInWorldCoords(handle, offsetX, offsetY, offsetZ);
109
+ return new Vector3D(x, y, z);
110
+ });
111
+ }
112
+ getBoneIndexByName(boneName) {
113
+ return this._withHandle(-1, (handle) => ccmp.natives.entity.getEntityBoneIndexByName(handle, boneName));
114
+ }
115
+ getWorldPositionOfBone(boneIndex) {
116
+ return this._withHandle(this.position, (handle) => {
117
+ const { x, y, z } = ccmp.natives.entity.getWorldPositionOfEntityBone(handle, boneIndex);
118
+ return new Vector3D(x, y, z);
119
+ });
120
+ }
121
+ getVariable(name) {
122
+ const remoteId = this.remoteId;
123
+ if (remoteId === null) {
124
+ return null;
125
+ }
126
+ const value = ccmp.entities.getStreamSyncedMeta(ccmp.entities.ENTITY_TYPE.Vehicle, remoteId, name);
127
+ return value === undefined ? null : value;
128
+ }
129
+ getSyncedMeta(key) {
130
+ const remoteId = this.remoteId;
131
+ if (remoteId === null) {
132
+ return undefined;
133
+ }
134
+ return ccmp.entities.getStreamSyncedMeta(ccmp.entities.ENTITY_TYPE.Vehicle, remoteId, key);
135
+ }
136
+ hasSyncedMeta(key) {
137
+ const remoteId = this.remoteId;
138
+ if (remoteId === null) {
139
+ return false;
140
+ }
141
+ return ccmp.entities.hasStreamSyncedMeta(ccmp.entities.ENTITY_TYPE.Vehicle, remoteId, key);
142
+ }
143
+ getSyncedMetaKeys() {
144
+ const remoteId = this.remoteId;
145
+ if (remoteId === null) {
146
+ return [];
147
+ }
148
+ return ccmp.entities.getStreamSyncedMetaKeys(ccmp.entities.ENTITY_TYPE.Vehicle, remoteId);
149
+ }
150
+ attachToEntity(_target, _boneIndex, _offset, _rotation, _p9, _useSoftPinning, _collision, _isPed, _vertexIndex, _fixedRot) {
151
+ notImplemented("attachToEntity");
152
+ }
153
+ detach(_useDetachVelocity, _collision) {
154
+ notImplemented("detach");
155
+ }
156
+ getSpeed() {
157
+ return notImplemented("getSpeed");
158
+ }
159
+ isPlayingAnim(_dictionary, _name, _taskFlag) {
160
+ return notImplemented("isPlayingAnim");
161
+ }
162
+ get bodyHealth() {
163
+ return notImplemented("bodyHealth");
164
+ }
165
+ get engineHealth() {
166
+ return notImplemented("engineHealth");
167
+ }
168
+ get numberPlate() {
169
+ var _a;
170
+ return (_a = this._ccmpVehicle.numberPlate) !== null && _a !== void 0 ? _a : this._ccmpVehicle.numberPlateText;
171
+ }
172
+ get isDead() {
173
+ return !this.isExists;
174
+ }
175
+ setBodyHealth(_value) {
176
+ notImplemented("setBodyHealth");
177
+ }
178
+ setEngineHealth(_value) {
179
+ notImplemented("setEngineHealth");
180
+ }
181
+ setNumberPlate(_value) {
182
+ notImplemented("setNumberPlate");
183
+ }
184
+ explode() {
185
+ notImplemented("explode");
186
+ }
187
+ getPedInSeat(seat) {
188
+ return this._withHandle(0, (handle) => ccmp.natives.vehicle.getPedInVehicleSeat(handle, seat, false));
189
+ }
190
+ setUndriveable(_toggle) {
191
+ notImplemented("setUndriveable");
192
+ }
193
+ get maxNumberOfPassengers() {
194
+ return notImplemented("maxNumberOfPassengers");
195
+ }
196
+ get gear() {
197
+ return notImplemented("gear");
198
+ }
199
+ get speed() {
200
+ return notImplemented("speed");
201
+ }
202
+ get isEngineRunning() {
203
+ return notImplemented("isEngineRunning");
204
+ }
205
+ setEngineOn(_toggle, _instantly, _otherwise) {
206
+ notImplemented("setEngineOn");
207
+ }
208
+ get lightsState() {
209
+ return notImplemented("lightsState");
210
+ }
211
+ get isLocked() {
212
+ return notImplemented("isLocked");
213
+ }
214
+ setIsLocked(_value) {
215
+ notImplemented("setIsLocked");
216
+ }
217
+ setCustomPrimaryColour(color) {
218
+ this._withHandleVoid((handle) => {
219
+ ccmp.natives.vehicle.setVehicleCustomPrimaryColour(handle, color.r, color.g, color.b);
220
+ });
221
+ }
222
+ setCustomSecondaryColour(color) {
223
+ this._withHandleVoid((handle) => {
224
+ ccmp.natives.vehicle.setVehicleCustomSecondaryColour(handle, color.r, color.g, color.b);
225
+ });
226
+ }
227
+ get customPrimaryColour() {
228
+ return this._withHandle({ r: 0, g: 0, b: 0 }, (handle) => ccmp.natives.vehicle.getVehicleCustomPrimaryColour(handle));
229
+ }
230
+ get customSecondaryColour() {
231
+ return this._withHandle({ r: 0, g: 0, b: 0 }, (handle) => ccmp.natives.vehicle.getVehicleCustomSecondaryColour(handle));
232
+ }
233
+ setMod(modType, modIndex) {
234
+ this._withHandleVoid((handle) => {
235
+ this._setModKit(handle);
236
+ ccmp.natives.vehicle.setVehicleMod(handle, modType, modIndex, false);
237
+ });
238
+ }
239
+ getMod(modType) {
240
+ return this._withHandle(-1, (handle) => ccmp.natives.vehicle.getVehicleMod(handle, modType));
241
+ }
242
+ getNumMods(modType) {
243
+ return this._withHandle(0, (handle) => ccmp.natives.vehicle.getNumVehicleMods(handle, modType));
244
+ }
245
+ setNeonLightEnabled(index, toggle) {
246
+ this._withHandleVoid((handle) => {
247
+ ccmp.natives.vehicle.setVehicleNeonEnabled(handle, index, toggle);
248
+ });
249
+ }
250
+ setNeonLightsColour(color) {
251
+ this._withHandleVoid((handle) => {
252
+ ccmp.natives.vehicle.setVehicleNeonColour(handle, color.r, color.g, color.b);
253
+ });
254
+ }
255
+ setWindowTint(tintType) {
256
+ this._withHandleVoid((handle) => {
257
+ ccmp.natives.vehicle.setVehicleWindowTint(handle, tintType);
258
+ });
259
+ }
260
+ get windowTint() {
261
+ return this._withHandle(0, (handle) => ccmp.natives.vehicle.getVehicleWindowTint(handle));
262
+ }
263
+ setWheelType(wheelType) {
264
+ this._withHandleVoid((handle) => {
265
+ ccmp.natives.vehicle.setVehicleWheelType(handle, wheelType);
266
+ });
267
+ }
268
+ get wheelType() {
269
+ return this._withHandle(0, (handle) => ccmp.natives.vehicle.getVehicleWheelType(handle));
270
+ }
271
+ setNumberPlateTextIndex(_index) {
272
+ notImplemented("setNumberPlateTextIndex");
273
+ }
274
+ get numberPlateTextIndex() {
275
+ return notImplemented("numberPlateTextIndex");
276
+ }
277
+ setDoorOpen(_doorIndex, _loose, _openInstantly) {
278
+ notImplemented("setDoorOpen");
279
+ }
280
+ setDoorShut(_doorIndex, _instantly) {
281
+ notImplemented("setDoorShut");
282
+ }
283
+ setHandling(_field, _value) {
284
+ notImplemented("setHandling");
285
+ }
286
+ getHandling(_field) {
287
+ return notImplemented("getHandling");
288
+ }
289
+ setEnginePowerMultiplier(_value) {
290
+ notImplemented("setEnginePowerMultiplier");
291
+ }
292
+ setEngineTorqueMultiplier(_value) {
293
+ notImplemented("setEngineTorqueMultiplier");
294
+ }
295
+ modifyTopSpeed(_value) {
296
+ notImplemented("modifyTopSpeed");
297
+ }
298
+ setCheatPowerIncrease(_value) {
299
+ notImplemented("setCheatPowerIncrease");
300
+ }
301
+ toggleMod(modType, toggle) {
302
+ this._withHandleVoid((handle) => {
303
+ this._setModKit(handle);
304
+ ccmp.natives.vehicle.toggleVehicleMod(handle, modType, toggle);
305
+ });
306
+ }
307
+ setTyreSmokeColor(r, g, b) {
308
+ this._withHandleVoid((handle) => {
309
+ ccmp.natives.vehicle.setVehicleTyreSmokeColor(handle, r, g, b);
310
+ });
311
+ }
312
+ setModColor1(paintType, color, p3) {
313
+ this._withHandleVoid((handle) => {
314
+ ccmp.natives.vehicle.setVehicleModColor1(handle, paintType, color, p3);
315
+ });
316
+ }
317
+ setExtraColours(_pearlescentColor, _wheelColor) {
318
+ notImplemented("setExtraColours");
319
+ }
320
+ setHeadlightColor(colorIndex) {
321
+ this._withHandleVoid((handle) => {
322
+ ccmp.natives.vehicle.setVehicleXenonLightColorIndex(handle, colorIndex);
323
+ });
324
+ }
325
+ setDashboardColor(colorIndex) {
326
+ this._withHandleVoid((handle) => {
327
+ var _a;
328
+ const vehicleNatives = ccmp.natives.vehicle;
329
+ const setDashboardColor = (_a = vehicleNatives.setVehicleDashboardColor) !== null && _a !== void 0 ? _a : vehicleNatives.setVehicleDashboardColour;
330
+ if (!setDashboardColor)
331
+ return;
332
+ setDashboardColor(handle, colorIndex);
333
+ });
334
+ }
335
+ setInteriorColor(colorIndex) {
336
+ this._withHandleVoid((handle) => {
337
+ var _a;
338
+ const vehicleNatives = ccmp.natives.vehicle;
339
+ const setInteriorColor = (_a = vehicleNatives.setVehicleInteriorColor) !== null && _a !== void 0 ? _a : vehicleNatives.setVehicleInteriorColour;
340
+ if (!setInteriorColor)
341
+ return;
342
+ setInteriorColor(handle, colorIndex);
343
+ });
344
+ }
345
+ getMaxBraking() {
346
+ return notImplemented("getMaxBraking");
347
+ }
348
+ getAcceleration() {
349
+ return notImplemented("getAcceleration");
350
+ }
351
+ getMaxTraction() {
352
+ return notImplemented("getMaxTraction");
353
+ }
354
+ getModelMaxSpeed() {
355
+ return notImplemented("getModelMaxSpeed");
356
+ }
357
+ _withHandle(fallback, callback) {
358
+ const handle = this.handle;
359
+ if (!handle) {
360
+ return fallback;
361
+ }
362
+ return callback(handle);
363
+ }
364
+ _withHandleVoid(callback) {
365
+ const handle = this.handle;
366
+ if (!handle) {
367
+ return;
368
+ }
369
+ callback(handle);
370
+ }
371
+ _setModKit(handle) {
372
+ ccmp.natives.vehicle.setVehicleModKit(handle, 0);
373
+ }
374
+ _getRemoteVehicleExists() {
375
+ var _a;
376
+ try {
377
+ return (_a = this._ccmpVehicle.isExists) !== null && _a !== void 0 ? _a : true;
378
+ }
379
+ catch (_b) {
380
+ return true;
381
+ }
382
+ }
383
+ _getOffsetFromCachedTransform(offsetX, offsetY, offsetZ) {
384
+ const position = this.position;
385
+ const headingRad = (this.heading * Math.PI) / 180;
386
+ const rightX = Math.cos(headingRad);
387
+ const rightY = Math.sin(headingRad);
388
+ const forwardX = -Math.sin(headingRad);
389
+ const forwardY = Math.cos(headingRad);
390
+ return new Vector3D(position.x + rightX * offsetX + forwardX * offsetY, position.y + rightY * offsetX + forwardY * offsetY, position.z + offsetZ);
391
+ }
392
+ }
@@ -0,0 +1,27 @@
1
+ import { type IVehicle } from "../../common/vehicle/IVehicle";
2
+ import { type IVehicleCreateOptions, type IVehiclesManager } from "../../common/vehicle/IVehiclesManager";
3
+ import { type IWorldObjectsIterator } from "../../common/worldObject/IWorldObjectsIterator";
4
+ export declare class CCMPVehiclesManager implements IVehiclesManager {
5
+ private readonly _vehicles;
6
+ private readonly _vehiclesByRemoteId;
7
+ private readonly _iterator;
8
+ constructor();
9
+ create(options: IVehicleCreateOptions): IVehicle;
10
+ getDisplayNameFromVehicleModel(modelHash: number): string;
11
+ syncWithMpPool(): void;
12
+ registerById(id: number): IVehicle;
13
+ unregisterById(id: number): IVehicle;
14
+ findByID(id: number): IVehicle | null;
15
+ getByID(id: number): IVehicle;
16
+ findByRemoteID(remoteId: number): IVehicle | null;
17
+ getByRemoteID(remoteId: number): IVehicle;
18
+ deleteById(id: number): IVehicle;
19
+ get iterator(): IWorldObjectsIterator<IVehicle>;
20
+ private _register;
21
+ private _unregister;
22
+ private _findRegistered;
23
+ private _registerLifecycleEvents;
24
+ private _filter;
25
+ private _pruneDestroyed;
26
+ private _getNativeVehiclesApi;
27
+ }
@@ -0,0 +1,183 @@
1
+ /// <reference types="@classic-mp/types/client" />
2
+ import { RockMod } from "../../../RockMod";
3
+ import { ClientInternalEventName } from "../../../net/common/events/types";
4
+ import { CCMPVehicle } from "./CCMPVehicle";
5
+ export class CCMPVehiclesManager {
6
+ constructor() {
7
+ this._vehicles = new Map();
8
+ this._vehiclesByRemoteId = new Map();
9
+ this._iterator = {
10
+ all: () => this._filter(() => true),
11
+ dimension: (value) => this._filter((vehicle) => vehicle.dimension === value),
12
+ range2D: (center, range) => this._filter((vehicle) => {
13
+ const position = vehicle.position;
14
+ const squaredDistance = (position.x - center.x) ** 2 + (position.y - center.y) ** 2;
15
+ return squaredDistance <= range * range;
16
+ }),
17
+ range3D: (center, range) => this._filter((vehicle) => vehicle.position.isInRange(center, range)),
18
+ };
19
+ this._registerLifecycleEvents();
20
+ this.syncWithMpPool();
21
+ }
22
+ create(options) {
23
+ var _a;
24
+ const ccmpVehicle = (_a = this._getNativeVehiclesApi()) === null || _a === void 0 ? void 0 : _a.create(options.model, options.position, options.rotation, {
25
+ dimension: options.dimension,
26
+ engine: options.engine,
27
+ locked: options.locked,
28
+ });
29
+ if (!ccmpVehicle) {
30
+ throw new Error(`CCMPVehiclesManager.create: ccmp.vehicles.create failed for model "${options.model}"`);
31
+ }
32
+ return this._register(ccmpVehicle);
33
+ }
34
+ getDisplayNameFromVehicleModel(modelHash) {
35
+ return ccmp.natives.vehicle.getDisplayNameFromVehicleModel(modelHash);
36
+ }
37
+ syncWithMpPool() {
38
+ this._pruneDestroyed();
39
+ const ccmpVehicles = this._getNativeVehiclesApi();
40
+ if (!ccmpVehicles)
41
+ return;
42
+ for (const ccmpVehicle of ccmpVehicles.all) {
43
+ this._register(ccmpVehicle);
44
+ }
45
+ }
46
+ registerById(id) {
47
+ var _a, _b;
48
+ const existingVehicle = this.findByID(id);
49
+ if (existingVehicle)
50
+ return existingVehicle;
51
+ const ccmpVehicle = (_b = (_a = this._getNativeVehiclesApi()) === null || _a === void 0 ? void 0 : _a.getById(id)) !== null && _b !== void 0 ? _b : null;
52
+ if (!ccmpVehicle) {
53
+ throw new Error(`CCMPVehiclesManager.registerById(${id}): vehicle not found.`);
54
+ }
55
+ return this._register(ccmpVehicle);
56
+ }
57
+ unregisterById(id) {
58
+ return this.deleteById(id);
59
+ }
60
+ findByID(id) {
61
+ var _a, _b, _c;
62
+ const vehicle = (_a = this._vehicles.get(id)) !== null && _a !== void 0 ? _a : null;
63
+ if (vehicle && vehicle.isExists)
64
+ return vehicle;
65
+ if (vehicle)
66
+ this._unregister(vehicle);
67
+ const ccmpVehicle = (_c = (_b = this._getNativeVehiclesApi()) === null || _b === void 0 ? void 0 : _b.getById(id)) !== null && _c !== void 0 ? _c : null;
68
+ if (!ccmpVehicle)
69
+ return null;
70
+ return this._register(ccmpVehicle);
71
+ }
72
+ getByID(id) {
73
+ const vehicle = this.findByID(id);
74
+ if (!vehicle) {
75
+ throw new Error(`CCMPVehiclesManager.getByID(${id}): vehicle not found.`);
76
+ }
77
+ return vehicle;
78
+ }
79
+ findByRemoteID(remoteId) {
80
+ var _a, _b, _c;
81
+ const vehicle = (_a = this._vehiclesByRemoteId.get(remoteId)) !== null && _a !== void 0 ? _a : null;
82
+ if (vehicle && vehicle.isExists)
83
+ return vehicle;
84
+ if (vehicle)
85
+ this._unregister(vehicle);
86
+ const ccmpVehicle = (_c = (_b = this._getNativeVehiclesApi()) === null || _b === void 0 ? void 0 : _b.getByRemoteId(remoteId)) !== null && _c !== void 0 ? _c : null;
87
+ if (!ccmpVehicle)
88
+ return null;
89
+ return this._register(ccmpVehicle);
90
+ }
91
+ getByRemoteID(remoteId) {
92
+ const vehicle = this.findByRemoteID(remoteId);
93
+ if (!vehicle) {
94
+ throw new Error(`CCMPVehiclesManager.getByRemoteID(${remoteId}): vehicle not found.`);
95
+ }
96
+ return vehicle;
97
+ }
98
+ deleteById(id) {
99
+ const vehicle = this.getByID(id);
100
+ vehicle.destroy();
101
+ return vehicle;
102
+ }
103
+ get iterator() {
104
+ return this._iterator;
105
+ }
106
+ _register(ccmpVehicle) {
107
+ const existingVehicle = this._findRegistered(ccmpVehicle);
108
+ if (existingVehicle && existingVehicle.isExists)
109
+ return existingVehicle;
110
+ if (existingVehicle)
111
+ this._unregister(existingVehicle);
112
+ const vehicle = new CCMPVehicle(ccmpVehicle, (destroyedVehicle) => {
113
+ this._unregister(destroyedVehicle);
114
+ });
115
+ this._vehicles.set(vehicle.id, vehicle);
116
+ if (vehicle.remoteId !== null) {
117
+ this._vehiclesByRemoteId.set(vehicle.remoteId, vehicle);
118
+ }
119
+ return vehicle;
120
+ }
121
+ _unregister(vehicle) {
122
+ this._vehicles.delete(vehicle.id);
123
+ if (vehicle.remoteId !== null) {
124
+ this._vehiclesByRemoteId.delete(vehicle.remoteId);
125
+ }
126
+ }
127
+ _findRegistered(ccmpVehicle) {
128
+ var _a, _b, _c;
129
+ return ((_c = (_b = (ccmpVehicle.remoteId === null ? null : ((_a = this._vehiclesByRemoteId.get(ccmpVehicle.remoteId)) !== null && _a !== void 0 ? _a : null))) !== null && _b !== void 0 ? _b : this._vehicles.get(ccmpVehicle.id)) !== null && _c !== void 0 ? _c : null);
130
+ }
131
+ _registerLifecycleEvents() {
132
+ const eventsApi = ccmp;
133
+ eventsApi.on("vehicleCreated", (ccmpVehicle) => {
134
+ if (!ccmpVehicle)
135
+ return;
136
+ const vehicle = this._register(ccmpVehicle);
137
+ RockMod.instance.net.events.emitInternal(ClientInternalEventName.EntityCreated, vehicle);
138
+ });
139
+ eventsApi.on("vehicleDestroyed", (ccmpVehicle) => {
140
+ var _a;
141
+ if (!ccmpVehicle)
142
+ return;
143
+ const vehicle = (_a = this._findRegistered(ccmpVehicle)) !== null && _a !== void 0 ? _a : this._register(ccmpVehicle);
144
+ RockMod.instance.net.events.emitInternal(ClientInternalEventName.EntityDestroyed, vehicle);
145
+ this._unregister(vehicle);
146
+ });
147
+ eventsApi.on("vehicleStreamIn", (ccmpVehicle) => {
148
+ if (!ccmpVehicle)
149
+ return;
150
+ const vehicle = this._register(ccmpVehicle);
151
+ RockMod.instance.net.events.emitInternal(ClientInternalEventName.EntityStreamIn, vehicle);
152
+ });
153
+ eventsApi.on("vehicleStreamOut", (ccmpVehicle) => {
154
+ var _a;
155
+ if (!ccmpVehicle)
156
+ return;
157
+ const vehicle = (_a = this._findRegistered(ccmpVehicle)) !== null && _a !== void 0 ? _a : this._register(ccmpVehicle);
158
+ RockMod.instance.net.events.emitInternal(ClientInternalEventName.EntityStreamOut, vehicle);
159
+ });
160
+ }
161
+ *_filter(predicate) {
162
+ for (const vehicle of this._vehicles.values()) {
163
+ if (!vehicle.isExists) {
164
+ this._unregister(vehicle);
165
+ continue;
166
+ }
167
+ if (predicate(vehicle)) {
168
+ yield vehicle;
169
+ }
170
+ }
171
+ }
172
+ _pruneDestroyed() {
173
+ for (const vehicle of this._vehicles.values()) {
174
+ if (!vehicle.isExists) {
175
+ this._unregister(vehicle);
176
+ }
177
+ }
178
+ }
179
+ _getNativeVehiclesApi() {
180
+ var _a;
181
+ return (_a = ccmp.vehicles) !== null && _a !== void 0 ? _a : null;
182
+ }
183
+ }
@@ -5,7 +5,8 @@ export interface IBaseObjectOptions {
5
5
  }
6
6
  export interface IBaseObject {
7
7
  get id(): number;
8
- get remoteId(): number;
8
+ /** Server/network id for remote objects; null for client-only objects. */
9
+ get remoteId(): number | null;
9
10
  get type(): BaseObjectType;
10
11
  get isExists(): boolean;
11
12
  get handle(): number;
@@ -22,6 +22,9 @@ export interface IEntity extends IWorldObject {
22
22
  getBoneIndexByName(boneName: string): number;
23
23
  getWorldPositionOfBone(boneIndex: number): IVector3D;
24
24
  getVariable(name: string): unknown | null;
25
+ getSyncedMeta(key: string): unknown | undefined;
26
+ hasSyncedMeta(key: string): boolean;
27
+ getSyncedMetaKeys(): readonly string[];
25
28
  attachToEntity(target: IBaseObject, boneIndex: number, offset: IVector3D, rotation: IVector3D, p9: boolean, useSoftPinning: boolean, collision: boolean, isPed: boolean, vertexIndex: number, fixedRot: boolean): void;
26
29
  detach(useDetachVelocity: boolean, collision: boolean): void;
27
30
  getSpeed(): number;
@@ -24,8 +24,15 @@ export declare abstract class RageEntity<T extends EntityMp> extends RageWorldOb
24
24
  getBoneIndexByName(boneName: string): number;
25
25
  getWorldPositionOfBone(boneIndex: number): IVector3D;
26
26
  getVariable(name: string): unknown | null;
27
+ getSyncedMeta(key: string): unknown | undefined;
28
+ hasSyncedMeta(key: string): boolean;
29
+ getSyncedMetaKeys(): readonly string[];
27
30
  attachToEntity(target: IBaseObject, boneIndex: number, offset: IVector3D, rotation: IVector3D, p9: boolean, useSoftPinning: boolean, collision: boolean, isPed: boolean, vertexIndex: number, fixedRot: boolean): void;
28
31
  detach(useDetachVelocity: boolean, collision: boolean): void;
29
32
  getSpeed(): number;
30
33
  isPlayingAnim(dictionary: string, name: string, taskFlag: number): boolean;
34
+ private _getNativeRotation;
35
+ private _getEntityRotationProperty;
36
+ private _hasValidHandle;
37
+ private _isVectorLike;
31
38
  }