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.
- package/dist/client/RockMod.d.ts +1 -1
- package/dist/client/RockMod.js +4 -0
- package/dist/client/entities/ccmp/blip/CCMPBlip.d.ts +38 -0
- package/dist/client/entities/ccmp/blip/CCMPBlip.js +118 -0
- package/dist/client/entities/ccmp/blip/CCMPBlipsManager.d.ts +27 -0
- package/dist/client/entities/ccmp/blip/CCMPBlipsManager.js +191 -0
- package/dist/client/entities/ccmp/camera/CCMPCamera.d.ts +24 -0
- package/dist/client/entities/ccmp/camera/CCMPCamera.js +58 -0
- package/dist/client/entities/ccmp/camera/CCMPCameraManager.d.ts +16 -0
- package/dist/client/entities/ccmp/camera/CCMPCameraManager.js +51 -0
- package/dist/client/entities/ccmp/colshape/CCMPColshape.d.ts +26 -0
- package/dist/client/entities/ccmp/colshape/CCMPColshape.js +83 -0
- package/dist/client/entities/ccmp/colshape/CCMPColshapesManager.d.ts +31 -0
- package/dist/client/entities/ccmp/colshape/CCMPColshapesManager.js +193 -0
- package/dist/client/entities/ccmp/marker/CCMPMarker.d.ts +34 -0
- package/dist/client/entities/ccmp/marker/CCMPMarker.js +109 -0
- package/dist/client/entities/ccmp/marker/CCMPMarkersManager.d.ts +27 -0
- package/dist/client/entities/ccmp/marker/CCMPMarkersManager.js +180 -0
- package/dist/client/entities/ccmp/object/CCMPObject.d.ts +53 -0
- package/dist/client/entities/ccmp/object/CCMPObject.js +218 -0
- package/dist/client/entities/ccmp/object/CCMPObjectsManager.d.ts +27 -0
- package/dist/client/entities/ccmp/object/CCMPObjectsManager.js +177 -0
- package/dist/client/entities/ccmp/ped/CCMPPed.d.ts +65 -0
- package/dist/client/entities/ccmp/ped/CCMPPed.js +199 -0
- package/dist/client/entities/ccmp/ped/CCMPPedsManager.d.ts +27 -0
- package/dist/client/entities/ccmp/ped/CCMPPedsManager.js +177 -0
- package/dist/client/entities/ccmp/player/CCMPPlayer.d.ts +112 -0
- package/dist/client/entities/ccmp/player/CCMPPlayer.js +338 -0
- package/dist/client/entities/ccmp/player/CCMPPlayersManager.d.ts +85 -0
- package/dist/client/entities/ccmp/player/CCMPPlayersManager.js +331 -0
- package/dist/client/entities/ccmp/vehicle/CCMPVehicle.d.ts +119 -0
- package/dist/client/entities/ccmp/vehicle/CCMPVehicle.js +392 -0
- package/dist/client/entities/ccmp/vehicle/CCMPVehiclesManager.d.ts +27 -0
- package/dist/client/entities/ccmp/vehicle/CCMPVehiclesManager.js +183 -0
- package/dist/client/entities/common/baseObject/IBaseObject.d.ts +2 -1
- package/dist/client/entities/common/entity/IEntity.d.ts +3 -0
- package/dist/client/entities/ragemp/entity/RageEntity.d.ts +7 -0
- package/dist/client/entities/ragemp/entity/RageEntity.js +45 -2
- package/dist/client/factories/ccmp/CCMPManagersFactory.d.ts +48 -0
- package/dist/client/factories/ccmp/CCMPManagersFactory.js +189 -0
- package/dist/client/factories/ccmp/createNotImplementedProxy.d.ts +1 -0
- package/dist/client/factories/ccmp/createNotImplementedProxy.js +24 -0
- package/dist/client/game/ccmp/browser/CCMPBrowserManager.d.ts +22 -0
- package/dist/client/game/ccmp/browser/CCMPBrowserManager.js +66 -0
- package/dist/client/game/ccmp/chat/CCMPChatManager.d.ts +26 -0
- package/dist/client/game/ccmp/chat/CCMPChatManager.js +41 -0
- package/dist/client/game/ccmp/controls/CCMPControlsManager.d.ts +33 -0
- package/dist/client/game/ccmp/controls/CCMPControlsManager.js +47 -0
- package/dist/client/game/ccmp/cursor/CCMPCursorManager.d.ts +6 -0
- package/dist/client/game/ccmp/cursor/CCMPCursorManager.js +15 -0
- package/dist/client/game/ccmp/gameplay/CCMPGameplayManager.d.ts +6 -0
- package/dist/client/game/ccmp/gameplay/CCMPGameplayManager.js +10 -0
- package/dist/client/game/ccmp/graphics/CCMPGraphicsManager.d.ts +58 -0
- package/dist/client/game/ccmp/graphics/CCMPGraphicsManager.js +112 -0
- package/dist/client/game/ccmp/gui/CCMPGuiManager.d.ts +5 -0
- package/dist/client/game/ccmp/gui/CCMPGuiManager.js +17 -0
- package/dist/client/game/ccmp/keys/CCMPKeysManager.d.ts +41 -0
- package/dist/client/game/ccmp/keys/CCMPKeysManager.js +94 -0
- package/dist/client/game/ccmp/nametags/CCMPNametagsManager.d.ts +4 -0
- package/dist/client/game/ccmp/nametags/CCMPNametagsManager.js +6 -0
- package/dist/client/game/ccmp/native/CCMPNativeCallerManager.d.ts +74 -0
- package/dist/client/game/ccmp/native/CCMPNativeCallerManager.js +129 -0
- package/dist/client/game/ccmp/native/_generated/nativeDispatch.d.ts +5 -0
- package/dist/client/game/ccmp/native/_generated/nativeDispatch.js +8123 -0
- package/dist/client/game/ccmp/object/CCMPGameObjectManager.d.ts +4 -0
- package/dist/client/game/ccmp/object/CCMPGameObjectManager.js +6 -0
- package/dist/client/game/ccmp/pathfind/CCMPPathfindManager.d.ts +26 -0
- package/dist/client/game/ccmp/pathfind/CCMPPathfindManager.js +31 -0
- package/dist/client/game/ccmp/raycasting/CCMPRaycastingManager.d.ts +10 -0
- package/dist/client/game/ccmp/raycasting/CCMPRaycastingManager.js +46 -0
- package/dist/client/game/ccmp/storage/CCMPStorageManager.d.ts +7 -0
- package/dist/client/game/ccmp/storage/CCMPStorageManager.js +14 -0
- package/dist/client/game/ccmp/streaming/CCMPStreamingManager.d.ts +17 -0
- package/dist/client/game/ccmp/streaming/CCMPStreamingManager.js +41 -0
- package/dist/client/game/ccmp/ui/CCMPUiManager.d.ts +41 -0
- package/dist/client/game/ccmp/ui/CCMPUiManager.js +69 -0
- package/dist/client/game/ccmp/zone/CCMPZoneManager.d.ts +19 -0
- package/dist/client/game/ccmp/zone/CCMPZoneManager.js +20 -0
- package/dist/client/game/common/browser/IBrowserManager.d.ts +7 -0
- package/dist/client/game/common/chat/IChatManager.d.ts +1 -0
- package/dist/client/game/common/controls/IControlsManager.d.ts +3 -0
- package/dist/client/game/common/graphics/IGraphicsManager.d.ts +17 -0
- package/dist/client/game/common/streaming/IStreamingManager.d.ts +2 -0
- package/dist/client/game/ragemp/browser/RageBrowserManager.d.ts +2 -1
- package/dist/client/game/ragemp/browser/RageBrowserManager.js +30 -1
- package/dist/client/game/ragemp/chat/RageChatManager.d.ts +1 -0
- package/dist/client/game/ragemp/chat/RageChatManager.js +3 -0
- package/dist/client/game/ragemp/controls/RageControlsManager.d.ts +3 -0
- package/dist/client/game/ragemp/controls/RageControlsManager.js +9 -0
- package/dist/client/game/ragemp/graphics/RageGraphicsManager.d.ts +5 -1
- package/dist/client/game/ragemp/graphics/RageGraphicsManager.js +12 -0
- package/dist/client/game/ragemp/streaming/RageStreamingManager.d.ts +2 -0
- package/dist/client/game/ragemp/streaming/RageStreamingManager.js +6 -0
- package/dist/client/net/ccmp/CCMPConsoleForwarder.d.ts +11 -0
- package/dist/client/net/ccmp/CCMPConsoleForwarder.js +153 -0
- package/dist/client/net/ccmp/CCMPNetManager.d.ts +23 -0
- package/dist/client/net/ccmp/CCMPNetManager.js +55 -0
- package/dist/client/net/ccmp/dataHandler/CCMPDataHandler.d.ts +23 -0
- package/dist/client/net/ccmp/dataHandler/CCMPDataHandler.js +43 -0
- package/dist/client/net/ccmp/events/CCMPEventsBridge.d.ts +14 -0
- package/dist/client/net/ccmp/events/CCMPEventsBridge.js +19 -0
- package/dist/client/net/ccmp/events/CCMPEventsManager.d.ts +72 -0
- package/dist/client/net/ccmp/events/CCMPEventsManager.js +177 -0
- package/dist/client/net/ccmp/events/CCMPInProcessEmitter.d.ts +45 -0
- package/dist/client/net/ccmp/events/CCMPInProcessEmitter.js +133 -0
- package/dist/client/net/ccmp/events/CCMPRenderTicker.d.ts +18 -0
- package/dist/client/net/ccmp/events/CCMPRenderTicker.js +74 -0
- package/dist/client/net/ccmp/events/CCMPSyncedMetaBridge.d.ts +29 -0
- package/dist/client/net/ccmp/events/CCMPSyncedMetaBridge.js +45 -0
- package/dist/client/net/ccmp/rpc/CCMPRPCManager.d.ts +22 -0
- package/dist/client/net/ccmp/rpc/CCMPRPCManager.js +31 -0
- package/dist/client/net/common/dataHandler/IDataHandler.d.ts +2 -2
- package/dist/client/net/common/events/types.d.ts +6 -4
- package/dist/client/net/common/events/types.js +1 -0
- package/dist/client/net/ragemp/dataHandler/RageDataHandler.d.ts +2 -2
- package/dist/client/utils/ccmp/CCMPUtilsManager.d.ts +18 -0
- package/dist/client/utils/ccmp/CCMPUtilsManager.js +20 -0
- package/dist/server/RockMod.d.ts +1 -1
- package/dist/server/RockMod.js +4 -0
- package/dist/server/entities/ccmp/baseObject/CCMPBaseObject.d.ts +8 -0
- package/dist/server/entities/ccmp/baseObject/CCMPBaseObject.js +21 -0
- package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsIterator.d.ts +8 -0
- package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsIterator.js +16 -0
- package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsManager.d.ts +19 -0
- package/dist/server/entities/ccmp/baseObject/CCMPBaseObjectsManager.js +49 -0
- package/dist/server/entities/ccmp/blip/CCMPBlip.d.ts +36 -0
- package/dist/server/entities/ccmp/blip/CCMPBlip.js +86 -0
- package/dist/server/entities/ccmp/blip/CCMPBlipsManager.d.ts +9 -0
- package/dist/server/entities/ccmp/blip/CCMPBlipsManager.js +33 -0
- package/dist/server/entities/ccmp/colshape/CCMPCircleColshape.d.ts +7 -0
- package/dist/server/entities/ccmp/colshape/CCMPCircleColshape.js +10 -0
- package/dist/server/entities/ccmp/colshape/CCMPColshape.d.ts +25 -0
- package/dist/server/entities/ccmp/colshape/CCMPColshape.js +53 -0
- package/dist/server/entities/ccmp/colshape/CCMPColshapesManager.d.ts +28 -0
- package/dist/server/entities/ccmp/colshape/CCMPColshapesManager.js +108 -0
- package/dist/server/entities/ccmp/colshape/CCMPCuboidColshape.d.ts +7 -0
- package/dist/server/entities/ccmp/colshape/CCMPCuboidColshape.js +10 -0
- package/dist/server/entities/ccmp/colshape/CCMPCylinderColshape.d.ts +7 -0
- package/dist/server/entities/ccmp/colshape/CCMPCylinderColshape.js +10 -0
- package/dist/server/entities/ccmp/colshape/CCMPRectangleColshape.d.ts +7 -0
- package/dist/server/entities/ccmp/colshape/CCMPRectangleColshape.js +10 -0
- package/dist/server/entities/ccmp/colshape/CCMPSphereColshape.d.ts +7 -0
- package/dist/server/entities/ccmp/colshape/CCMPSphereColshape.js +10 -0
- package/dist/server/entities/ccmp/entity/CCMPEntitiesManager.d.ts +8 -0
- package/dist/server/entities/ccmp/entity/CCMPEntitiesManager.js +10 -0
- package/dist/server/entities/ccmp/entity/CCMPEntity.d.ts +13 -0
- package/dist/server/entities/ccmp/entity/CCMPEntity.js +28 -0
- package/dist/server/entities/ccmp/marker/CCMPMarker.d.ts +34 -0
- package/dist/server/entities/ccmp/marker/CCMPMarker.js +85 -0
- package/dist/server/entities/ccmp/marker/CCMPMarkersManager.d.ts +9 -0
- package/dist/server/entities/ccmp/marker/CCMPMarkersManager.js +30 -0
- package/dist/server/entities/ccmp/object/CCMPObject.d.ts +48 -0
- package/dist/server/entities/ccmp/object/CCMPObject.js +68 -0
- package/dist/server/entities/ccmp/object/CCMPObjectsManager.d.ts +9 -0
- package/dist/server/entities/ccmp/object/CCMPObjectsManager.js +27 -0
- package/dist/server/entities/ccmp/ped/CCMPPed.d.ts +33 -0
- package/dist/server/entities/ccmp/ped/CCMPPed.js +82 -0
- package/dist/server/entities/ccmp/ped/CCMPPedsManager.d.ts +9 -0
- package/dist/server/entities/ccmp/ped/CCMPPedsManager.js +28 -0
- package/dist/server/entities/ccmp/player/CCMPPlayer.d.ts +65 -0
- package/dist/server/entities/ccmp/player/CCMPPlayer.js +180 -0
- package/dist/server/entities/ccmp/player/CCMPPlayersManager.d.ts +12 -0
- package/dist/server/entities/ccmp/player/CCMPPlayersManager.js +66 -0
- package/dist/server/entities/ccmp/vehicle/CCMPVehicle.d.ts +58 -0
- package/dist/server/entities/ccmp/vehicle/CCMPVehicle.js +161 -0
- package/dist/server/entities/ccmp/vehicle/CCMPVehiclesManager.d.ts +9 -0
- package/dist/server/entities/ccmp/vehicle/CCMPVehiclesManager.js +31 -0
- package/dist/server/entities/ccmp/worldObject/CCMPWorldObject.d.ts +9 -0
- package/dist/server/entities/ccmp/worldObject/CCMPWorldObject.js +7 -0
- package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsIterator.d.ts +10 -0
- package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsIterator.js +40 -0
- package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsManager.d.ts +11 -0
- package/dist/server/entities/ccmp/worldObject/CCMPWorldObjectsManager.js +16 -0
- package/dist/server/entities/mock/player/MockPlayersManager.js +2 -1
- package/dist/server/entities/ragemp/entity/RageEntity.d.ts +5 -1
- package/dist/server/entities/ragemp/entity/RageEntity.js +17 -1
- package/dist/server/entities/ragemp/object/RageObjectsManager.js +1 -1
- package/dist/server/entities/ragemp/ped/RagePedsManager.js +1 -1
- package/dist/server/entities/ragemp/vehicle/RageVehiclesManager.js +1 -1
- package/dist/server/factories/ccmp/CCMPManagersFactory.d.ts +23 -0
- package/dist/server/factories/ccmp/CCMPManagersFactory.js +46 -0
- package/dist/server/net/ccmp/CCMPNetManager.d.ts +19 -0
- package/dist/server/net/ccmp/CCMPNetManager.js +112 -0
- package/dist/server/net/ccmp/events/CCMPEventsManager.d.ts +17 -0
- package/dist/server/net/ccmp/events/CCMPEventsManager.js +54 -0
- package/dist/server/net/ccmp/rpc/CCMPRPCManager.d.ts +8 -0
- package/dist/server/net/ccmp/rpc/CCMPRPCManager.js +18 -0
- package/dist/server/net/common/events/types.d.ts +2 -0
- package/dist/server/net/common/events/types.js +1 -0
- package/dist/server/utils/ccmp/CCMPUtilsManager.d.ts +4 -0
- package/dist/server/utils/ccmp/CCMPUtilsManager.js +9 -0
- package/dist/server/world/ccmp/CCMPWorldManager.d.ts +10 -0
- package/dist/server/world/ccmp/CCMPWorldManager.js +24 -0
- package/package.json +3 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type CCMPEventsManager } from "../../../net/ccmp/events/CCMPEventsManager";
|
|
2
|
+
import { type IPedCreateOptions, type IPedsManager } from "../../common/ped/IPedsManager";
|
|
3
|
+
import { type IWorldObjectsIterator } from "../../common/worldObject/IWorldObjectsIterator";
|
|
4
|
+
import { CCMPPed } from "./CCMPPed";
|
|
5
|
+
export declare class CCMPPedsManager implements IPedsManager {
|
|
6
|
+
private readonly _events;
|
|
7
|
+
private readonly _peds;
|
|
8
|
+
private readonly _pedsByRemoteId;
|
|
9
|
+
private readonly _iterator;
|
|
10
|
+
constructor(_events: CCMPEventsManager);
|
|
11
|
+
create(options: IPedCreateOptions): CCMPPed;
|
|
12
|
+
syncWithMpPool(): void;
|
|
13
|
+
registerById(id: number): CCMPPed;
|
|
14
|
+
unregisterById(id: number): CCMPPed;
|
|
15
|
+
findByID(id: number): CCMPPed | null;
|
|
16
|
+
getByID(id: number): CCMPPed;
|
|
17
|
+
findByRemoteID(remoteId: number): CCMPPed | null;
|
|
18
|
+
getByRemoteID(remoteId: number): CCMPPed;
|
|
19
|
+
deleteById(id: number): CCMPPed;
|
|
20
|
+
get iterator(): IWorldObjectsIterator<CCMPPed>;
|
|
21
|
+
private _filter;
|
|
22
|
+
private _register;
|
|
23
|
+
private _unregister;
|
|
24
|
+
private _findRegistered;
|
|
25
|
+
private _registerStreamEvents;
|
|
26
|
+
private _pruneDestroyed;
|
|
27
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { ClientInternalEventName } from "../../../net/common/events/types";
|
|
2
|
+
import { CCMPPed } from "./CCMPPed";
|
|
3
|
+
export class CCMPPedsManager {
|
|
4
|
+
constructor(_events) {
|
|
5
|
+
this._events = _events;
|
|
6
|
+
this._peds = new Map();
|
|
7
|
+
this._pedsByRemoteId = new Map();
|
|
8
|
+
this._iterator = {
|
|
9
|
+
all: () => this._filter(() => true),
|
|
10
|
+
dimension: (value) => this._filter((ped) => ped.dimension === value),
|
|
11
|
+
range2D: (center, range) => this._filter((ped) => {
|
|
12
|
+
const position = ped.position;
|
|
13
|
+
const squaredDistance = (position.x - center.x) ** 2 + (position.y - center.y) ** 2;
|
|
14
|
+
return squaredDistance <= range * range;
|
|
15
|
+
}),
|
|
16
|
+
range3D: (center, range) => this._filter((ped) => ped.position.isInRange(center, range)),
|
|
17
|
+
};
|
|
18
|
+
this._registerStreamEvents();
|
|
19
|
+
this.syncWithMpPool();
|
|
20
|
+
}
|
|
21
|
+
create(options) {
|
|
22
|
+
const { model, position, rotation, dimension } = options;
|
|
23
|
+
const ccmpPed = ccmp.peds.create(model, position, rotation.z, { dimension });
|
|
24
|
+
if (!ccmpPed) {
|
|
25
|
+
throw new Error(`CCMPPedsManager.create: ccmp.peds.create failed for model "${model}"`);
|
|
26
|
+
}
|
|
27
|
+
return this._register(ccmpPed);
|
|
28
|
+
}
|
|
29
|
+
syncWithMpPool() {
|
|
30
|
+
this._pruneDestroyed();
|
|
31
|
+
for (const ccmpPed of ccmp.peds.all) {
|
|
32
|
+
this._register(ccmpPed);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
registerById(id) {
|
|
36
|
+
const existingPed = this.findByID(id);
|
|
37
|
+
if (existingPed) {
|
|
38
|
+
return existingPed;
|
|
39
|
+
}
|
|
40
|
+
const ccmpPed = ccmp.peds.getById(id);
|
|
41
|
+
if (!ccmpPed) {
|
|
42
|
+
throw new Error(`CCMPPedsManager.registerById(${id}): ped not found.`);
|
|
43
|
+
}
|
|
44
|
+
return this._register(ccmpPed);
|
|
45
|
+
}
|
|
46
|
+
unregisterById(id) {
|
|
47
|
+
return this.deleteById(id);
|
|
48
|
+
}
|
|
49
|
+
findByID(id) {
|
|
50
|
+
var _a;
|
|
51
|
+
const ped = (_a = this._peds.get(id)) !== null && _a !== void 0 ? _a : null;
|
|
52
|
+
if (ped && !ped.isExists) {
|
|
53
|
+
this._unregister(ped);
|
|
54
|
+
}
|
|
55
|
+
else if (ped) {
|
|
56
|
+
return ped;
|
|
57
|
+
}
|
|
58
|
+
const ccmpPed = ccmp.peds.getById(id);
|
|
59
|
+
if (!ccmpPed) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
return this._register(ccmpPed);
|
|
63
|
+
}
|
|
64
|
+
getByID(id) {
|
|
65
|
+
const ped = this.findByID(id);
|
|
66
|
+
if (!ped) {
|
|
67
|
+
throw new Error(`CCMPPedsManager.getByID(${id}): ped not found.`);
|
|
68
|
+
}
|
|
69
|
+
return ped;
|
|
70
|
+
}
|
|
71
|
+
findByRemoteID(remoteId) {
|
|
72
|
+
var _a;
|
|
73
|
+
const ped = (_a = this._pedsByRemoteId.get(remoteId)) !== null && _a !== void 0 ? _a : null;
|
|
74
|
+
if (ped && !ped.isExists) {
|
|
75
|
+
this._unregister(ped);
|
|
76
|
+
}
|
|
77
|
+
else if (ped) {
|
|
78
|
+
return ped;
|
|
79
|
+
}
|
|
80
|
+
const ccmpPed = ccmp.peds.getByRemoteId(remoteId);
|
|
81
|
+
if (!ccmpPed) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
return this._register(ccmpPed);
|
|
85
|
+
}
|
|
86
|
+
getByRemoteID(remoteId) {
|
|
87
|
+
const ped = this.findByRemoteID(remoteId);
|
|
88
|
+
if (!ped) {
|
|
89
|
+
throw new Error(`CCMPPedsManager.getByRemoteID(${remoteId}): ped not found.`);
|
|
90
|
+
}
|
|
91
|
+
return ped;
|
|
92
|
+
}
|
|
93
|
+
deleteById(id) {
|
|
94
|
+
const ped = this.getByID(id);
|
|
95
|
+
ped.destroy();
|
|
96
|
+
return ped;
|
|
97
|
+
}
|
|
98
|
+
get iterator() {
|
|
99
|
+
return this._iterator;
|
|
100
|
+
}
|
|
101
|
+
*_filter(predicate) {
|
|
102
|
+
for (const ped of this._peds.values()) {
|
|
103
|
+
if (!ped.isExists) {
|
|
104
|
+
this._unregister(ped);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (predicate(ped)) {
|
|
108
|
+
yield ped;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
_register(ccmpPed) {
|
|
113
|
+
const existingPed = this._findRegistered(ccmpPed);
|
|
114
|
+
if (existingPed && existingPed.isExists) {
|
|
115
|
+
return existingPed;
|
|
116
|
+
}
|
|
117
|
+
if (existingPed) {
|
|
118
|
+
this._unregister(existingPed);
|
|
119
|
+
}
|
|
120
|
+
const ped = new CCMPPed(ccmpPed, (destroyedPed) => {
|
|
121
|
+
this._unregister(destroyedPed);
|
|
122
|
+
});
|
|
123
|
+
this._peds.set(ped.id, ped);
|
|
124
|
+
if (ped.remoteId !== null) {
|
|
125
|
+
this._pedsByRemoteId.set(ped.remoteId, ped);
|
|
126
|
+
}
|
|
127
|
+
return ped;
|
|
128
|
+
}
|
|
129
|
+
_unregister(ped) {
|
|
130
|
+
this._peds.delete(ped.id);
|
|
131
|
+
if (ped.remoteId !== null) {
|
|
132
|
+
this._pedsByRemoteId.delete(ped.remoteId);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
_findRegistered(ccmpPed) {
|
|
136
|
+
var _a, _b, _c;
|
|
137
|
+
return ((_c = (_b = (ccmpPed.remoteId === null ? null : ((_a = this._pedsByRemoteId.get(ccmpPed.remoteId)) !== null && _a !== void 0 ? _a : null))) !== null && _b !== void 0 ? _b : this._peds.get(ccmpPed.id)) !== null && _c !== void 0 ? _c : null);
|
|
138
|
+
}
|
|
139
|
+
_registerStreamEvents() {
|
|
140
|
+
ccmp.on("pedCreated", (ccmpPed) => {
|
|
141
|
+
if (ccmpPed) {
|
|
142
|
+
const ped = this._register(ccmpPed);
|
|
143
|
+
this._events.emitInternal(ClientInternalEventName.EntityCreated, ped);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
ccmp.on("pedDestroyed", (ccmpPed) => {
|
|
147
|
+
var _a;
|
|
148
|
+
if (ccmpPed) {
|
|
149
|
+
const ped = (_a = this._findRegistered(ccmpPed)) !== null && _a !== void 0 ? _a : this._register(ccmpPed);
|
|
150
|
+
this._events.emitInternal(ClientInternalEventName.EntityDestroyed, ped);
|
|
151
|
+
this._unregister(ped);
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
ccmp.on("pedStreamIn", (ccmpPed) => {
|
|
155
|
+
if (ccmpPed) {
|
|
156
|
+
const ped = this._register(ccmpPed);
|
|
157
|
+
this._events.emitInternal(ClientInternalEventName.EntityStreamIn, ped);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
ccmp.on("pedStreamOut", (ccmpPed) => {
|
|
161
|
+
var _a;
|
|
162
|
+
if (ccmpPed) {
|
|
163
|
+
const ped = (_a = this._findRegistered(ccmpPed)) !== null && _a !== void 0 ? _a : this._register(ccmpPed);
|
|
164
|
+
if (ped) {
|
|
165
|
+
this._events.emitInternal(ClientInternalEventName.EntityStreamOut, ped);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
_pruneDestroyed() {
|
|
171
|
+
for (const ped of this._peds.values()) {
|
|
172
|
+
if (!ped.isExists) {
|
|
173
|
+
this._unregister(ped);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
import { BaseObjectType } from "../../../../shared/entities";
|
|
2
|
+
import { Vector3D } from "../../../../shared/common/utils";
|
|
3
|
+
const ZERO_VECTOR = new Vector3D(0, 0, 0);
|
|
4
|
+
/**
|
|
5
|
+
* CCMP implementation of the Rock-Mod player facade.
|
|
6
|
+
*
|
|
7
|
+
* Identity and synced meta are tracked by id. Runtime entity operations are
|
|
8
|
+
* delegated to `ccmp.players.getById(id)`, whose `handle` is live for the
|
|
9
|
+
* local player and for streamed remote players. Missing remote handles degrade
|
|
10
|
+
* to safe defaults/no-ops, matching RageMP-style best-effort client behavior.
|
|
11
|
+
*/
|
|
12
|
+
export class CCMPPlayer {
|
|
13
|
+
constructor(options) {
|
|
14
|
+
this._id = options.id;
|
|
15
|
+
this._name = options.name;
|
|
16
|
+
this._isLocal = options.isLocal;
|
|
17
|
+
this._isExists = true;
|
|
18
|
+
}
|
|
19
|
+
/** Помечает игрока как удалённого — вызывается из `CCMPPlayersManager`. */
|
|
20
|
+
markRemoved() {
|
|
21
|
+
this._isExists = false;
|
|
22
|
+
}
|
|
23
|
+
/** Обновляет name (полезно если name приехал позже первого создания). */
|
|
24
|
+
setNameInternal(name) {
|
|
25
|
+
if (name) {
|
|
26
|
+
this._name = name;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// -- IBaseObject ----------------------------------------------------------
|
|
30
|
+
get id() {
|
|
31
|
+
return this._id;
|
|
32
|
+
}
|
|
33
|
+
get remoteId() {
|
|
34
|
+
return this._id;
|
|
35
|
+
}
|
|
36
|
+
get type() {
|
|
37
|
+
return BaseObjectType.Player;
|
|
38
|
+
}
|
|
39
|
+
get isExists() {
|
|
40
|
+
return this._isExists;
|
|
41
|
+
}
|
|
42
|
+
get handle() {
|
|
43
|
+
var _a, _b;
|
|
44
|
+
return (_b = (_a = this._getNativePlayer()) === null || _a === void 0 ? void 0 : _a.handle) !== null && _b !== void 0 ? _b : 0;
|
|
45
|
+
}
|
|
46
|
+
destroy() {
|
|
47
|
+
this._warnOnce("destroy");
|
|
48
|
+
}
|
|
49
|
+
// -- IWorldObject ---------------------------------------------------------
|
|
50
|
+
get position() {
|
|
51
|
+
var _a;
|
|
52
|
+
const position = (_a = this._getNativePlayer()) === null || _a === void 0 ? void 0 : _a.position;
|
|
53
|
+
return position ? new Vector3D(position.x, position.y, position.z) : ZERO_VECTOR;
|
|
54
|
+
}
|
|
55
|
+
get dimension() {
|
|
56
|
+
return 0;
|
|
57
|
+
}
|
|
58
|
+
setPosition(value) {
|
|
59
|
+
var _a;
|
|
60
|
+
(_a = this._getNativePlayer()) === null || _a === void 0 ? void 0 : _a.setPosition(value);
|
|
61
|
+
}
|
|
62
|
+
setDimension(_value) {
|
|
63
|
+
this._warnOnce("setDimension");
|
|
64
|
+
}
|
|
65
|
+
setCoords(xPos, yPos, zPos, xAxis, yAxis, zAxis, clearArea) {
|
|
66
|
+
var _a;
|
|
67
|
+
(_a = this._getNativePlayer()) === null || _a === void 0 ? void 0 : _a.setCoords(xPos, yPos, zPos, xAxis, yAxis, zAxis, clearArea);
|
|
68
|
+
}
|
|
69
|
+
// -- IEntity --------------------------------------------------------------
|
|
70
|
+
get model() {
|
|
71
|
+
return this._withHandle(0, (handle) => ccmp.natives.entity.getEntityModel(handle));
|
|
72
|
+
}
|
|
73
|
+
get heading() {
|
|
74
|
+
var _a, _b;
|
|
75
|
+
return (_b = (_a = this._getNativePlayer()) === null || _a === void 0 ? void 0 : _a.heading) !== null && _b !== void 0 ? _b : 0;
|
|
76
|
+
}
|
|
77
|
+
setHeading(heading) {
|
|
78
|
+
var _a;
|
|
79
|
+
(_a = this._getNativePlayer()) === null || _a === void 0 ? void 0 : _a.setHeading(heading);
|
|
80
|
+
}
|
|
81
|
+
setModel(_value) {
|
|
82
|
+
this._warnOnce("setModel");
|
|
83
|
+
}
|
|
84
|
+
get rotation() {
|
|
85
|
+
return this._withHandle(ZERO_VECTOR, (handle) => {
|
|
86
|
+
const rotation = ccmp.natives.entity.getEntityRotation(handle, 2);
|
|
87
|
+
return new Vector3D(rotation.x, rotation.y, rotation.z);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
setRotation(value) {
|
|
91
|
+
this._withHandleVoid((handle) => {
|
|
92
|
+
ccmp.natives.entity.setEntityRotation(handle, value.x, value.y, value.z, 2, true);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
get forwardVector() {
|
|
96
|
+
return this._withHandle(ZERO_VECTOR, (handle) => {
|
|
97
|
+
const vector = ccmp.natives.entity.getEntityForwardVector(handle);
|
|
98
|
+
return new Vector3D(vector.x, vector.y, vector.z);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
freezePosition(freeze) {
|
|
102
|
+
var _a;
|
|
103
|
+
(_a = this._getNativePlayer()) === null || _a === void 0 ? void 0 : _a.freezePosition(freeze);
|
|
104
|
+
}
|
|
105
|
+
setCollision(collision, keepPhysics) {
|
|
106
|
+
var _a;
|
|
107
|
+
(_a = this._getNativePlayer()) === null || _a === void 0 ? void 0 : _a.setCollision(collision, keepPhysics);
|
|
108
|
+
}
|
|
109
|
+
setInvincible(invincible) {
|
|
110
|
+
var _a;
|
|
111
|
+
(_a = this._getNativePlayer()) === null || _a === void 0 ? void 0 : _a.setInvincible(invincible);
|
|
112
|
+
}
|
|
113
|
+
setVisible(visible) {
|
|
114
|
+
var _a;
|
|
115
|
+
(_a = this._getNativePlayer()) === null || _a === void 0 ? void 0 : _a.setVisible(visible);
|
|
116
|
+
}
|
|
117
|
+
setAlpha(alpha) {
|
|
118
|
+
var _a;
|
|
119
|
+
(_a = this._getNativePlayer()) === null || _a === void 0 ? void 0 : _a.setAlpha(alpha);
|
|
120
|
+
}
|
|
121
|
+
get alpha() {
|
|
122
|
+
var _a, _b;
|
|
123
|
+
return (_b = (_a = this._getNativePlayer()) === null || _a === void 0 ? void 0 : _a.alpha) !== null && _b !== void 0 ? _b : 255;
|
|
124
|
+
}
|
|
125
|
+
resetAlpha() {
|
|
126
|
+
var _a;
|
|
127
|
+
(_a = this._getNativePlayer()) === null || _a === void 0 ? void 0 : _a.resetAlpha();
|
|
128
|
+
}
|
|
129
|
+
getOffsetFromInWorldCoords(offsetX, offsetY, offsetZ) {
|
|
130
|
+
return this._withHandle(ZERO_VECTOR, (handle) => {
|
|
131
|
+
const position = ccmp.natives.entity.getOffsetFromEntityInWorldCoords(handle, offsetX, offsetY, offsetZ);
|
|
132
|
+
return new Vector3D(position.x, position.y, position.z);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
getBoneIndexByName(boneName) {
|
|
136
|
+
return this._withHandle(-1, (handle) => ccmp.natives.entity.getEntityBoneIndexByName(handle, boneName));
|
|
137
|
+
}
|
|
138
|
+
getWorldPositionOfBone(boneIndex) {
|
|
139
|
+
return this._withHandle(ZERO_VECTOR, (handle) => {
|
|
140
|
+
const position = ccmp.natives.entity.getWorldPositionOfEntityBone(handle, boneIndex);
|
|
141
|
+
return new Vector3D(position.x, position.y, position.z);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
getVariable(name) {
|
|
145
|
+
const value = ccmp.entities.getStreamSyncedMeta(ccmp.entities.ENTITY_TYPE.Player, this._id, name);
|
|
146
|
+
return value === undefined ? null : value;
|
|
147
|
+
}
|
|
148
|
+
getSyncedMeta(key) {
|
|
149
|
+
return ccmp.entities.getStreamSyncedMeta(ccmp.entities.ENTITY_TYPE.Player, this._id, key);
|
|
150
|
+
}
|
|
151
|
+
hasSyncedMeta(key) {
|
|
152
|
+
return ccmp.entities.hasStreamSyncedMeta(ccmp.entities.ENTITY_TYPE.Player, this._id, key);
|
|
153
|
+
}
|
|
154
|
+
getSyncedMetaKeys() {
|
|
155
|
+
return ccmp.entities.getStreamSyncedMetaKeys(ccmp.entities.ENTITY_TYPE.Player, this._id);
|
|
156
|
+
}
|
|
157
|
+
attachToEntity(target, boneIndex, offset, rotation, p9, useSoftPinning, collision, isPed, vertexIndex, fixedRot) {
|
|
158
|
+
this._withHandleVoid((handle) => {
|
|
159
|
+
ccmp.natives.entity.attachEntityToEntity(handle, target.handle, boneIndex, offset.x, offset.y, offset.z, rotation.x, rotation.y, rotation.z, p9, useSoftPinning, collision, isPed, vertexIndex, fixedRot, 0);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
detach(useDetachVelocity, collision) {
|
|
163
|
+
this._withHandleVoid((handle) => {
|
|
164
|
+
ccmp.natives.entity.detachEntity(handle, useDetachVelocity, collision);
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
getSpeed() {
|
|
168
|
+
return this._withHandle(0, (handle) => ccmp.natives.entity.getEntitySpeed(handle));
|
|
169
|
+
}
|
|
170
|
+
isPlayingAnim(dictionary, name, taskFlag) {
|
|
171
|
+
return this._withHandle(false, (handle) => ccmp.natives.entity.isEntityPlayingAnim(handle, dictionary, name, taskFlag));
|
|
172
|
+
}
|
|
173
|
+
// -- IPlayer --------------------------------------------------------------
|
|
174
|
+
get name() {
|
|
175
|
+
return this._name;
|
|
176
|
+
}
|
|
177
|
+
get health() {
|
|
178
|
+
return 100;
|
|
179
|
+
}
|
|
180
|
+
get armour() {
|
|
181
|
+
return 0;
|
|
182
|
+
}
|
|
183
|
+
get isDead() {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
get vehicle() {
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
get isVoice3DEnabled() {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
get voiceVolume() {
|
|
193
|
+
return 0;
|
|
194
|
+
}
|
|
195
|
+
get isVoiceActive() {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
setVoice3D(_enable) {
|
|
199
|
+
this._warnOnce("setVoice3D");
|
|
200
|
+
}
|
|
201
|
+
setVoiceVolume(_volume) {
|
|
202
|
+
this._warnOnce("setVoiceVolume");
|
|
203
|
+
}
|
|
204
|
+
get isReloading() {
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
get weapon() {
|
|
208
|
+
return 0;
|
|
209
|
+
}
|
|
210
|
+
getAmmoInClip(_weapon) {
|
|
211
|
+
return 0;
|
|
212
|
+
}
|
|
213
|
+
getWeaponAmmo(_weapon) {
|
|
214
|
+
return 0;
|
|
215
|
+
}
|
|
216
|
+
getBoneIndex(boneId) {
|
|
217
|
+
return this._withHandle(-1, (handle) => ccmp.natives.ped.getPedBoneIndex(handle, boneId));
|
|
218
|
+
}
|
|
219
|
+
setDecoration(_collection, _overlay) {
|
|
220
|
+
this._warnOnce("setDecoration");
|
|
221
|
+
}
|
|
222
|
+
removeDecoration(_collection, _overlay) {
|
|
223
|
+
this._warnOnce("removeDecoration");
|
|
224
|
+
}
|
|
225
|
+
clearDecorations() {
|
|
226
|
+
this._warnOnce("clearDecorations");
|
|
227
|
+
}
|
|
228
|
+
setHeadBlendData(_shapeFirstId, _shapeSecondId, _shapeThirdId, _skinFirstId, _skinSecondId, _skinThirdId, _shapeMix, _skinMix, _thirdMix, _isParent) {
|
|
229
|
+
this._warnOnce("setHeadBlendData");
|
|
230
|
+
}
|
|
231
|
+
setFaceFeature(_index, _value) {
|
|
232
|
+
this._warnOnce("setFaceFeature");
|
|
233
|
+
}
|
|
234
|
+
setHeadOverlay(_overlayId, _index, _opacity, _firstColor, _secondColor) {
|
|
235
|
+
this._warnOnce("setHeadOverlay");
|
|
236
|
+
}
|
|
237
|
+
setHeadOverlayColor(_overlayId, _colorTypeId, _firstColor, _secondColor) {
|
|
238
|
+
this._warnOnce("setHeadOverlayColor");
|
|
239
|
+
}
|
|
240
|
+
setEyeColor(_eyeColor) {
|
|
241
|
+
this._warnOnce("setEyeColor");
|
|
242
|
+
}
|
|
243
|
+
setHairColor(_colorId, _highlightColorId) {
|
|
244
|
+
this._warnOnce("setHairColor");
|
|
245
|
+
}
|
|
246
|
+
setComponentVariation(_componentId, _drawableId, _textureId, _paletteId) {
|
|
247
|
+
this._warnOnce("setComponentVariation");
|
|
248
|
+
}
|
|
249
|
+
setPropertyVariation(_componentId, _drawableId, _textureId, _attach) {
|
|
250
|
+
this._warnOnce("setPropertyVariation");
|
|
251
|
+
}
|
|
252
|
+
clearProp(_componentId) {
|
|
253
|
+
this._warnOnce("clearProp");
|
|
254
|
+
}
|
|
255
|
+
get isLocalPlayer() {
|
|
256
|
+
return this._isLocal;
|
|
257
|
+
}
|
|
258
|
+
taskSwapWeapon() {
|
|
259
|
+
this._warnOnce("taskSwapWeapon");
|
|
260
|
+
}
|
|
261
|
+
taskEnterVehicle(vehicleHandle, timeout, seat, speed, flag, _p6) {
|
|
262
|
+
this._withHandleVoid((handle) => {
|
|
263
|
+
ccmp.natives.task.taskEnterVehicle(handle, vehicleHandle, timeout, seat, speed, flag, "");
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
clearTasks() {
|
|
267
|
+
this._withHandleVoid((handle) => {
|
|
268
|
+
ccmp.natives.task.clearPedTasks(handle);
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
clearTasksImmediately() {
|
|
272
|
+
this._withHandleVoid((handle) => {
|
|
273
|
+
ccmp.natives.task.clearPedTasksImmediately(handle);
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
taskPlayAnim(_dictionary, _name, _blendInSpeed, _blendOutSpeed, _duration, _flag, _playbackRate, _lockX, _lockY, _lockZ) {
|
|
277
|
+
this._warnOnce("taskPlayAnim");
|
|
278
|
+
}
|
|
279
|
+
stopAnim(_dictionary, _name, _blendOutSpeed) {
|
|
280
|
+
this._warnOnce("stopAnim");
|
|
281
|
+
}
|
|
282
|
+
setMovementClipset(_clipset, _speed) {
|
|
283
|
+
this._warnOnce("setMovementClipset");
|
|
284
|
+
}
|
|
285
|
+
resetMovementClipset(_blendDuration) {
|
|
286
|
+
this._warnOnce("resetMovementClipset");
|
|
287
|
+
}
|
|
288
|
+
getBoneCoords(boneId, offsetX, offsetY, offsetZ) {
|
|
289
|
+
return this._withHandle(ZERO_VECTOR, (handle) => {
|
|
290
|
+
const position = ccmp.natives.ped.getPedBoneCoords(handle, boneId, offsetX, offsetY, offsetZ);
|
|
291
|
+
return new Vector3D(position.x, position.y, position.z);
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
setNoCollision(otherHandle, thisFrameOnly) {
|
|
295
|
+
this._withHandleVoid((handle) => {
|
|
296
|
+
if (otherHandle !== 0) {
|
|
297
|
+
ccmp.natives.entity.setEntityNoCollisionEntity(handle, otherHandle, thisFrameOnly);
|
|
298
|
+
}
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
_getNativePlayer() {
|
|
302
|
+
try {
|
|
303
|
+
const player = ccmp.players.getById(this._id);
|
|
304
|
+
if (player) {
|
|
305
|
+
return player;
|
|
306
|
+
}
|
|
307
|
+
const localPlayer = ccmp.players.local;
|
|
308
|
+
return (localPlayer === null || localPlayer === void 0 ? void 0 : localPlayer.id) === this._id ? localPlayer : null;
|
|
309
|
+
}
|
|
310
|
+
catch (_a) {
|
|
311
|
+
return null;
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
_withHandle(fallback, callback) {
|
|
315
|
+
const handle = this.handle;
|
|
316
|
+
if (!handle) {
|
|
317
|
+
return fallback;
|
|
318
|
+
}
|
|
319
|
+
return callback(handle);
|
|
320
|
+
}
|
|
321
|
+
_withHandleVoid(callback) {
|
|
322
|
+
const handle = this.handle;
|
|
323
|
+
if (!handle) {
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
callback(handle);
|
|
327
|
+
}
|
|
328
|
+
_warnOnce(method) {
|
|
329
|
+
if (CCMPPlayer._warnedMethods.has(method)) {
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
CCMPPlayer._warnedMethods.add(method);
|
|
333
|
+
console.warn(`[CCMPPlayer] ${method}() пока не реализован для CCMP — вызов проигнорирован ` +
|
|
334
|
+
`(следующие вызовы этого метода будут проигнорированы молча).`);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
/** Глобальный set для one-time warnings, чтобы не флудить лог. */
|
|
338
|
+
CCMPPlayer._warnedMethods = new Set();
|