@open-core/framework 1.0.1-beta.1
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/LICENSE +373 -0
- package/README.md +350 -0
- package/dist/client/client-bootstrap.d.ts +1 -0
- package/dist/client/client-bootstrap.js +53 -0
- package/dist/client/client-container.d.ts +2 -0
- package/dist/client/client-container.js +6 -0
- package/dist/client/client-core.d.ts +18 -0
- package/dist/client/client-core.js +52 -0
- package/dist/client/decorators/controller.d.ts +3 -0
- package/dist/client/decorators/controller.js +14 -0
- package/dist/client/decorators/export.d.ts +7 -0
- package/dist/client/decorators/export.js +15 -0
- package/dist/client/decorators/gameEvent.d.ts +47 -0
- package/dist/client/decorators/gameEvent.js +54 -0
- package/dist/client/decorators/index.d.ts +10 -0
- package/dist/client/decorators/index.js +26 -0
- package/dist/client/decorators/interval.d.ts +7 -0
- package/dist/client/decorators/interval.js +15 -0
- package/dist/client/decorators/key.d.ts +2 -0
- package/dist/client/decorators/key.js +10 -0
- package/dist/client/decorators/localEvent.d.ts +7 -0
- package/dist/client/decorators/localEvent.js +15 -0
- package/dist/client/decorators/nui.d.ts +1 -0
- package/dist/client/decorators/nui.js +9 -0
- package/dist/client/decorators/onNet.d.ts +1 -0
- package/dist/client/decorators/onNet.js +9 -0
- package/dist/client/decorators/resourceLifecycle.d.ts +11 -0
- package/dist/client/decorators/resourceLifecycle.js +24 -0
- package/dist/client/decorators/tick.d.ts +1 -0
- package/dist/client/decorators/tick.js +9 -0
- package/dist/client/index.d.ts +6 -0
- package/dist/client/index.js +22 -0
- package/dist/client/loaders/exports.loader.d.ts +1 -0
- package/dist/client/loaders/exports.loader.js +13 -0
- package/dist/client/player/player.d.ts +262 -0
- package/dist/client/player/player.js +480 -0
- package/dist/client/player/player.loader.d.ts +1 -0
- package/dist/client/player/player.loader.js +22 -0
- package/dist/client/services/core/index.d.ts +1 -0
- package/dist/client/services/core/index.js +17 -0
- package/dist/client/services/core/spawn.service.d.ts +20 -0
- package/dist/client/services/core/spawn.service.js +143 -0
- package/dist/client/services/index.d.ts +4 -0
- package/dist/client/services/index.js +24 -0
- package/dist/client/services/streaming/index.d.ts +1 -0
- package/dist/client/services/streaming/index.js +17 -0
- package/dist/client/services/streaming/streaming.service.d.ts +165 -0
- package/dist/client/services/streaming/streaming.service.js +341 -0
- package/dist/client/services/ui/index.d.ts +3 -0
- package/dist/client/services/ui/index.js +19 -0
- package/dist/client/services/ui/notification.service.d.ts +76 -0
- package/dist/client/services/ui/notification.service.js +111 -0
- package/dist/client/services/ui/progress.service.d.ts +82 -0
- package/dist/client/services/ui/progress.service.js +210 -0
- package/dist/client/services/ui/textui.service.d.ts +82 -0
- package/dist/client/services/ui/textui.service.js +156 -0
- package/dist/client/services/world/blip.service.d.ts +112 -0
- package/dist/client/services/world/blip.service.js +215 -0
- package/dist/client/services/world/index.d.ts +4 -0
- package/dist/client/services/world/index.js +20 -0
- package/dist/client/services/world/marker.service.d.ts +94 -0
- package/dist/client/services/world/marker.service.js +153 -0
- package/dist/client/services/world/ped.service.d.ts +182 -0
- package/dist/client/services/world/ped.service.js +302 -0
- package/dist/client/services/world/vehicle.service.d.ts +168 -0
- package/dist/client/services/world/vehicle.service.js +296 -0
- package/dist/client/system/metadata-client.keys.d.ts +13 -0
- package/dist/client/system/metadata-client.keys.js +16 -0
- package/dist/client/system/processors/export.processor.d.ts +7 -0
- package/dist/client/system/processors/export.processor.js +39 -0
- package/dist/client/system/processors/gameEvent.processor.d.ts +10 -0
- package/dist/client/system/processors/gameEvent.processor.js +58 -0
- package/dist/client/system/processors/interval.processor.d.ts +7 -0
- package/dist/client/system/processors/interval.processor.js +43 -0
- package/dist/client/system/processors/key.processor.d.ts +8 -0
- package/dist/client/system/processors/key.processor.js +27 -0
- package/dist/client/system/processors/localEvent.processor.d.ts +7 -0
- package/dist/client/system/processors/localEvent.processor.js +38 -0
- package/dist/client/system/processors/netEvent.processor.d.ts +7 -0
- package/dist/client/system/processors/netEvent.processor.js +38 -0
- package/dist/client/system/processors/nui.processor.d.ts +7 -0
- package/dist/client/system/processors/nui.processor.js +40 -0
- package/dist/client/system/processors/resourceLifecycle.processor.d.ts +9 -0
- package/dist/client/system/processors/resourceLifecycle.processor.js +69 -0
- package/dist/client/system/processors/tick.processor.d.ts +5 -0
- package/dist/client/system/processors/tick.processor.js +37 -0
- package/dist/client/system/processors.register.d.ts +1 -0
- package/dist/client/system/processors.register.js +27 -0
- package/dist/client/types/game-events.d.ts +126 -0
- package/dist/client/types/game-events.js +83 -0
- package/dist/client/types/index.d.ts +1 -0
- package/dist/client/types/index.js +17 -0
- package/dist/client/ui-bridge.d.ts +116 -0
- package/dist/client/ui-bridge.js +201 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +46 -0
- package/dist/server/bootstrap.d.ts +16 -0
- package/dist/server/bootstrap.js +57 -0
- package/dist/server/bus/core-event-bus.d.ts +6 -0
- package/dist/server/bus/core-event-bus.js +31 -0
- package/dist/server/configs/api.config.d.ts +71 -0
- package/dist/server/configs/api.config.js +81 -0
- package/dist/server/configs/config.base.d.ts +63 -0
- package/dist/server/configs/config.base.js +64 -0
- package/dist/server/configs/index.d.ts +2 -0
- package/dist/server/configs/index.js +18 -0
- package/dist/server/container.d.ts +2 -0
- package/dist/server/container.js +6 -0
- package/dist/server/controllers/chat.controller.d.ts +10 -0
- package/dist/server/controllers/chat.controller.js +50 -0
- package/dist/server/controllers/command.controller.d.ts +7 -0
- package/dist/server/controllers/command.controller.js +47 -0
- package/dist/server/core.d.ts +1 -0
- package/dist/server/core.js +7 -0
- package/dist/server/database/adapters/oxmysql.adapter.d.ts +89 -0
- package/dist/server/database/adapters/oxmysql.adapter.js +149 -0
- package/dist/server/database/database.contract.d.ts +128 -0
- package/dist/server/database/database.contract.js +29 -0
- package/dist/server/database/database.service.d.ts +216 -0
- package/dist/server/database/database.service.js +301 -0
- package/dist/server/database/index.d.ts +53 -0
- package/dist/server/database/index.js +70 -0
- package/dist/server/database/types.d.ts +67 -0
- package/dist/server/database/types.js +7 -0
- package/dist/server/database.d.ts +7 -0
- package/dist/server/database.js +23 -0
- package/dist/server/decorators/bind.d.ts +2 -0
- package/dist/server/decorators/bind.js +15 -0
- package/dist/server/decorators/command.d.ts +19 -0
- package/dist/server/decorators/command.js +18 -0
- package/dist/server/decorators/controller.d.ts +3 -0
- package/dist/server/decorators/controller.js +14 -0
- package/dist/server/decorators/coreEvent.d.ts +2 -0
- package/dist/server/decorators/coreEvent.js +9 -0
- package/dist/server/decorators/export.d.ts +1 -0
- package/dist/server/decorators/export.js +9 -0
- package/dist/server/decorators/guard.d.ts +5 -0
- package/dist/server/decorators/guard.js +39 -0
- package/dist/server/decorators/index.d.ts +10 -0
- package/dist/server/decorators/index.js +26 -0
- package/dist/server/decorators/netEvent.d.ts +36 -0
- package/dist/server/decorators/netEvent.js +40 -0
- package/dist/server/decorators/onTick.d.ts +1 -0
- package/dist/server/decorators/onTick.js +9 -0
- package/dist/server/decorators/public.d.ts +16 -0
- package/dist/server/decorators/public.js +25 -0
- package/dist/server/decorators/requiresState.d.ts +55 -0
- package/dist/server/decorators/requiresState.js +62 -0
- package/dist/server/decorators/throttle.d.ts +9 -0
- package/dist/server/decorators/throttle.js +36 -0
- package/dist/server/decorators/utils.d.ts +7 -0
- package/dist/server/decorators/utils.js +13 -0
- package/dist/server/entities/index.d.ts +1 -0
- package/dist/server/entities/index.js +17 -0
- package/dist/server/entities/player.d.ts +157 -0
- package/dist/server/entities/player.js +217 -0
- package/dist/server/error-handler.d.ts +2 -0
- package/dist/server/error-handler.js +43 -0
- package/dist/server/index.d.ts +10 -0
- package/dist/server/index.js +29 -0
- package/dist/server/loaders/exports.loader.d.ts +0 -0
- package/dist/server/loaders/exports.loader.js +23 -0
- package/dist/server/loaders/playerSession.loader.d.ts +1 -0
- package/dist/server/loaders/playerSession.loader.js +42 -0
- package/dist/server/services/access-control.service.d.ts +56 -0
- package/dist/server/services/access-control.service.js +99 -0
- package/dist/server/services/chat.service.d.ts +7 -0
- package/dist/server/services/chat.service.js +31 -0
- package/dist/server/services/command.service.d.ts +15 -0
- package/dist/server/services/command.service.js +74 -0
- package/dist/server/services/config.service.d.ts +75 -0
- package/dist/server/services/config.service.js +116 -0
- package/dist/server/services/default/default-security.handler.d.ts +6 -0
- package/dist/server/services/default/default-security.handler.js +26 -0
- package/dist/server/services/http/http.service.d.ts +50 -0
- package/dist/server/services/http/http.service.js +126 -0
- package/dist/server/services/index.d.ts +10 -0
- package/dist/server/services/index.js +26 -0
- package/dist/server/services/parallel/index.d.ts +49 -0
- package/dist/server/services/parallel/index.js +67 -0
- package/dist/server/services/parallel/parallel-compute.service.d.ts +132 -0
- package/dist/server/services/parallel/parallel-compute.service.js +449 -0
- package/dist/server/services/parallel/types.d.ts +188 -0
- package/dist/server/services/parallel/types.js +7 -0
- package/dist/server/services/parallel/worker-pool.d.ts +83 -0
- package/dist/server/services/parallel/worker-pool.js +350 -0
- package/dist/server/services/parallel/worker.d.ts +19 -0
- package/dist/server/services/parallel/worker.js +49 -0
- package/dist/server/services/persistence.service.d.ts +59 -0
- package/dist/server/services/persistence.service.js +166 -0
- package/dist/server/services/player.service.d.ts +96 -0
- package/dist/server/services/player.service.js +132 -0
- package/dist/server/services/rate-limiter.service.d.ts +5 -0
- package/dist/server/services/rate-limiter.service.js +39 -0
- package/dist/server/services/registers.d.ts +1 -0
- package/dist/server/services/registers.js +18 -0
- package/dist/server/setup.d.ts +9 -0
- package/dist/server/setup.js +28 -0
- package/dist/server/system/metadata-server.keys.d.ts +9 -0
- package/dist/server/system/metadata-server.keys.js +12 -0
- package/dist/server/system/processors/command.processor.d.ts +9 -0
- package/dist/server/system/processors/command.processor.js +31 -0
- package/dist/server/system/processors/coreEvent.processor.d.ts +7 -0
- package/dist/server/system/processors/coreEvent.processor.js +38 -0
- package/dist/server/system/processors/export.processor.d.ts +7 -0
- package/dist/server/system/processors/export.processor.js +26 -0
- package/dist/server/system/processors/netEvent.processor.d.ts +11 -0
- package/dist/server/system/processors/netEvent.processor.js +100 -0
- package/dist/server/system/processors/tick.processor.d.ts +5 -0
- package/dist/server/system/processors/tick.processor.js +36 -0
- package/dist/server/system/processors.register.d.ts +1 -0
- package/dist/server/system/processors.register.js +21 -0
- package/dist/server/templates/admin/admin.controller-template.d.ts +10 -0
- package/dist/server/templates/admin/admin.controller-template.js +2 -0
- package/dist/server/templates/auth/auth-provider.contract.d.ts +58 -0
- package/dist/server/templates/auth/auth-provider.contract.js +23 -0
- package/dist/server/templates/index.d.ts +8 -0
- package/dist/server/templates/index.js +21 -0
- package/dist/server/templates/persistence/index.d.ts +30 -0
- package/dist/server/templates/persistence/index.js +34 -0
- package/dist/server/templates/persistence/player-persistence.contract.d.ts +86 -0
- package/dist/server/templates/persistence/player-persistence.contract.js +52 -0
- package/dist/server/templates/repository/index.d.ts +57 -0
- package/dist/server/templates/repository/index.js +61 -0
- package/dist/server/templates/repository/repository.contract.d.ts +224 -0
- package/dist/server/templates/repository/repository.contract.js +342 -0
- package/dist/server/templates/repository/repository.types.d.ts +51 -0
- package/dist/server/templates/repository/repository.types.js +7 -0
- package/dist/server/templates/security/permission.types.d.ts +32 -0
- package/dist/server/templates/security/permission.types.js +2 -0
- package/dist/server/templates/security/principal-provider.contract.d.ts +43 -0
- package/dist/server/templates/security/principal-provider.contract.js +19 -0
- package/dist/server/templates/security/security-handler.contract.d.ts +5 -0
- package/dist/server/templates/security/security-handler.contract.js +6 -0
- package/dist/server/types/core-events.d.ts +17 -0
- package/dist/server/types/core-events.js +2 -0
- package/dist/server/types/security.types.d.ts +7 -0
- package/dist/server/types/security.types.js +2 -0
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.js +17 -0
- package/dist/shared/logger/core-logger.d.ts +35 -0
- package/dist/shared/logger/core-logger.js +52 -0
- package/dist/shared/logger/index.d.ts +11 -0
- package/dist/shared/logger/index.js +26 -0
- package/dist/shared/logger/logger.config.d.ts +47 -0
- package/dist/shared/logger/logger.config.js +33 -0
- package/dist/shared/logger/logger.service.d.ts +161 -0
- package/dist/shared/logger/logger.service.js +279 -0
- package/dist/shared/logger/logger.types.d.ts +85 -0
- package/dist/shared/logger/logger.types.js +74 -0
- package/dist/shared/logger/transports/buffered.transport.d.ts +88 -0
- package/dist/shared/logger/transports/buffered.transport.js +174 -0
- package/dist/shared/logger/transports/console.transport.d.ts +37 -0
- package/dist/shared/logger/transports/console.transport.js +134 -0
- package/dist/shared/logger/transports/index.d.ts +3 -0
- package/dist/shared/logger/transports/index.js +19 -0
- package/dist/shared/logger/transports/transport.interface.d.ts +40 -0
- package/dist/shared/logger/transports/transport.interface.js +2 -0
- package/dist/system/class-constructor.d.ts +1 -0
- package/dist/system/class-constructor.js +2 -0
- package/dist/system/decorator-processor.d.ts +4 -0
- package/dist/system/decorator-processor.js +2 -0
- package/dist/system/metadata.scanner.d.ts +7 -0
- package/dist/system/metadata.scanner.js +45 -0
- package/dist/utils/errors.d.ts +14 -0
- package/dist/utils/errors.js +25 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +20 -0
- package/dist/utils/result.d.ts +12 -0
- package/dist/utils/result.js +10 -0
- package/dist/utils/rgb.d.ts +5 -0
- package/dist/utils/rgb.js +2 -0
- package/dist/utils/vector3.d.ts +13 -0
- package/dist/utils/vector3.js +27 -0
- package/package.json +70 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import type { Vector3 } from '../../../utils';
|
|
2
|
+
export interface PedSpawnOptions {
|
|
3
|
+
/** Model name or hash */
|
|
4
|
+
model: string;
|
|
5
|
+
/** Spawn position */
|
|
6
|
+
position: Vector3;
|
|
7
|
+
/** Heading/rotation */
|
|
8
|
+
heading?: number;
|
|
9
|
+
/** Network the ped */
|
|
10
|
+
networked?: boolean;
|
|
11
|
+
/** Make the ped a mission entity */
|
|
12
|
+
missionEntity?: boolean;
|
|
13
|
+
/** Relationship group */
|
|
14
|
+
relationshipGroup?: string;
|
|
15
|
+
/** Whether to block non-temporary events */
|
|
16
|
+
blockEvents?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface PedAnimationOptions {
|
|
19
|
+
/** Animation dictionary */
|
|
20
|
+
dict: string;
|
|
21
|
+
/** Animation name */
|
|
22
|
+
anim: string;
|
|
23
|
+
/** Blend in speed */
|
|
24
|
+
blendInSpeed?: number;
|
|
25
|
+
/** Blend out speed */
|
|
26
|
+
blendOutSpeed?: number;
|
|
27
|
+
/** Duration (-1 for looped) */
|
|
28
|
+
duration?: number;
|
|
29
|
+
/** Animation flags */
|
|
30
|
+
flags?: number;
|
|
31
|
+
/** Playback rate */
|
|
32
|
+
playbackRate?: number;
|
|
33
|
+
}
|
|
34
|
+
export interface ManagedPed {
|
|
35
|
+
id: string;
|
|
36
|
+
handle: number;
|
|
37
|
+
model: string;
|
|
38
|
+
position: Vector3;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Service for ped (NPC) operations and management.
|
|
42
|
+
*/
|
|
43
|
+
export declare class PedService {
|
|
44
|
+
private peds;
|
|
45
|
+
private idCounter;
|
|
46
|
+
/**
|
|
47
|
+
* Spawn a ped at a position.
|
|
48
|
+
*
|
|
49
|
+
* @param options - Spawn options
|
|
50
|
+
* @returns The ped ID and handle
|
|
51
|
+
*/
|
|
52
|
+
spawn(options: PedSpawnOptions): Promise<{
|
|
53
|
+
id: string;
|
|
54
|
+
handle: number;
|
|
55
|
+
}>;
|
|
56
|
+
/**
|
|
57
|
+
* Delete a ped by ID.
|
|
58
|
+
*
|
|
59
|
+
* @param id - The ped ID
|
|
60
|
+
*/
|
|
61
|
+
delete(id: string): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Delete a ped by handle.
|
|
64
|
+
*
|
|
65
|
+
* @param handle - The ped handle
|
|
66
|
+
*/
|
|
67
|
+
deleteByHandle(handle: number): void;
|
|
68
|
+
/**
|
|
69
|
+
* Delete all managed peds.
|
|
70
|
+
*/
|
|
71
|
+
deleteAll(): void;
|
|
72
|
+
/**
|
|
73
|
+
* Play an animation on a ped.
|
|
74
|
+
*
|
|
75
|
+
* @param handle - Ped handle
|
|
76
|
+
* @param options - Animation options
|
|
77
|
+
*/
|
|
78
|
+
playAnimation(handle: number, options: PedAnimationOptions): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Stop all animations on a ped.
|
|
81
|
+
*
|
|
82
|
+
* @param handle - Ped handle
|
|
83
|
+
*/
|
|
84
|
+
stopAnimation(handle: number): void;
|
|
85
|
+
/**
|
|
86
|
+
* Stop animation immediately on a ped.
|
|
87
|
+
*
|
|
88
|
+
* @param handle - Ped handle
|
|
89
|
+
*/
|
|
90
|
+
stopAnimationImmediately(handle: number): void;
|
|
91
|
+
/**
|
|
92
|
+
* Freeze a ped in place.
|
|
93
|
+
*
|
|
94
|
+
* @param handle - Ped handle
|
|
95
|
+
* @param freeze - Whether to freeze
|
|
96
|
+
*/
|
|
97
|
+
freeze(handle: number, freeze: boolean): void;
|
|
98
|
+
/**
|
|
99
|
+
* Set ped invincibility.
|
|
100
|
+
*
|
|
101
|
+
* @param handle - Ped handle
|
|
102
|
+
* @param invincible - Whether invincible
|
|
103
|
+
*/
|
|
104
|
+
setInvincible(handle: number, invincible: boolean): void;
|
|
105
|
+
/**
|
|
106
|
+
* Give a weapon to a ped.
|
|
107
|
+
*
|
|
108
|
+
* @param handle - Ped handle
|
|
109
|
+
* @param weapon - Weapon name/hash
|
|
110
|
+
* @param ammo - Ammo count
|
|
111
|
+
* @param hidden - Whether to hide the weapon
|
|
112
|
+
* @param forceInHand - Whether to force weapon in hand
|
|
113
|
+
*/
|
|
114
|
+
giveWeapon(handle: number, weapon: string, ammo?: number, hidden?: boolean, forceInHand?: boolean): void;
|
|
115
|
+
/**
|
|
116
|
+
* Remove all weapons from a ped.
|
|
117
|
+
*
|
|
118
|
+
* @param handle - Ped handle
|
|
119
|
+
*/
|
|
120
|
+
removeAllWeapons(handle: number): void;
|
|
121
|
+
/**
|
|
122
|
+
* Get the closest ped to the player.
|
|
123
|
+
*
|
|
124
|
+
* @param radius - Search radius
|
|
125
|
+
* @param excludePlayer - Exclude the player ped
|
|
126
|
+
* @returns Ped handle or null
|
|
127
|
+
*/
|
|
128
|
+
getClosest(radius?: number, excludePlayer?: boolean): number | null;
|
|
129
|
+
/**
|
|
130
|
+
* Get all peds in a radius.
|
|
131
|
+
*
|
|
132
|
+
* @param position - Center position
|
|
133
|
+
* @param radius - Search radius
|
|
134
|
+
* @param excludePlayer - Exclude the player ped
|
|
135
|
+
* @returns Array of ped handles
|
|
136
|
+
*/
|
|
137
|
+
getNearby(position: Vector3, radius: number, excludePlayer?: boolean): number[];
|
|
138
|
+
/**
|
|
139
|
+
* Make ped look at entity.
|
|
140
|
+
*
|
|
141
|
+
* @param handle - Ped handle
|
|
142
|
+
* @param entity - Entity to look at
|
|
143
|
+
* @param duration - Duration in ms (-1 for infinite)
|
|
144
|
+
*/
|
|
145
|
+
lookAtEntity(handle: number, entity: number, duration?: number): void;
|
|
146
|
+
/**
|
|
147
|
+
* Make ped look at position.
|
|
148
|
+
*
|
|
149
|
+
* @param handle - Ped handle
|
|
150
|
+
* @param position - Position to look at
|
|
151
|
+
* @param duration - Duration in ms (-1 for infinite)
|
|
152
|
+
*/
|
|
153
|
+
lookAtCoords(handle: number, position: Vector3, duration?: number): void;
|
|
154
|
+
/**
|
|
155
|
+
* Make ped walk to position.
|
|
156
|
+
*
|
|
157
|
+
* @param handle - Ped handle
|
|
158
|
+
* @param position - Target position
|
|
159
|
+
* @param speed - Walking speed (1.0 = walk, 2.0 = run)
|
|
160
|
+
*/
|
|
161
|
+
walkTo(handle: number, position: Vector3, speed?: number): void;
|
|
162
|
+
/**
|
|
163
|
+
* Set ped combat attributes.
|
|
164
|
+
*
|
|
165
|
+
* @param handle - Ped handle
|
|
166
|
+
* @param canFight - Whether the ped can fight
|
|
167
|
+
* @param canUseCover - Whether the ped can use cover
|
|
168
|
+
*/
|
|
169
|
+
setCombatAttributes(handle: number, canFight: boolean, canUseCover?: boolean): void;
|
|
170
|
+
/**
|
|
171
|
+
* Get a managed ped by ID.
|
|
172
|
+
*/
|
|
173
|
+
get(id: string): ManagedPed | undefined;
|
|
174
|
+
/**
|
|
175
|
+
* Get all managed peds.
|
|
176
|
+
*/
|
|
177
|
+
getAll(): ManagedPed[];
|
|
178
|
+
/**
|
|
179
|
+
* Check if a managed ped still exists.
|
|
180
|
+
*/
|
|
181
|
+
exists(id: string): boolean;
|
|
182
|
+
}
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.PedService = void 0;
|
|
10
|
+
const tsyringe_1 = require("tsyringe");
|
|
11
|
+
/**
|
|
12
|
+
* Service for ped (NPC) operations and management.
|
|
13
|
+
*/
|
|
14
|
+
let PedService = class PedService {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.peds = new Map();
|
|
17
|
+
this.idCounter = 0;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Spawn a ped at a position.
|
|
21
|
+
*
|
|
22
|
+
* @param options - Spawn options
|
|
23
|
+
* @returns The ped ID and handle
|
|
24
|
+
*/
|
|
25
|
+
async spawn(options) {
|
|
26
|
+
const { model, position, heading = 0, networked = false, missionEntity = true, blockEvents = true, } = options;
|
|
27
|
+
const modelHash = GetHashKey(model);
|
|
28
|
+
// Load the model
|
|
29
|
+
if (!IsModelInCdimage(modelHash) || !IsModelValid(modelHash)) {
|
|
30
|
+
throw new Error(`Invalid ped model: ${model}`);
|
|
31
|
+
}
|
|
32
|
+
RequestModel(modelHash);
|
|
33
|
+
while (!HasModelLoaded(modelHash)) {
|
|
34
|
+
await new Promise((r) => setTimeout(r, 0));
|
|
35
|
+
}
|
|
36
|
+
// Create the ped
|
|
37
|
+
const ped = CreatePed(4, modelHash, position.x, position.y, position.z, heading, networked, true);
|
|
38
|
+
SetModelAsNoLongerNeeded(modelHash);
|
|
39
|
+
if (!ped || ped === 0) {
|
|
40
|
+
throw new Error('Failed to create ped');
|
|
41
|
+
}
|
|
42
|
+
// Configure the ped
|
|
43
|
+
if (missionEntity) {
|
|
44
|
+
SetEntityAsMissionEntity(ped, true, true);
|
|
45
|
+
}
|
|
46
|
+
if (blockEvents) {
|
|
47
|
+
SetBlockingOfNonTemporaryEvents(ped, true);
|
|
48
|
+
}
|
|
49
|
+
// Set default relationship (neutral)
|
|
50
|
+
SetPedRelationshipGroupHash(ped, GetHashKey('CIVMALE'));
|
|
51
|
+
// Register in our map
|
|
52
|
+
const id = `ped_${++this.idCounter}`;
|
|
53
|
+
this.peds.set(id, { id, handle: ped, model, position });
|
|
54
|
+
return { id, handle: ped };
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Delete a ped by ID.
|
|
58
|
+
*
|
|
59
|
+
* @param id - The ped ID
|
|
60
|
+
*/
|
|
61
|
+
delete(id) {
|
|
62
|
+
const ped = this.peds.get(id);
|
|
63
|
+
if (!ped)
|
|
64
|
+
return false;
|
|
65
|
+
if (DoesEntityExist(ped.handle)) {
|
|
66
|
+
SetEntityAsMissionEntity(ped.handle, true, true);
|
|
67
|
+
DeletePed(ped.handle);
|
|
68
|
+
}
|
|
69
|
+
this.peds.delete(id);
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Delete a ped by handle.
|
|
74
|
+
*
|
|
75
|
+
* @param handle - The ped handle
|
|
76
|
+
*/
|
|
77
|
+
deleteByHandle(handle) {
|
|
78
|
+
if (DoesEntityExist(handle)) {
|
|
79
|
+
SetEntityAsMissionEntity(handle, true, true);
|
|
80
|
+
DeletePed(handle);
|
|
81
|
+
}
|
|
82
|
+
// Remove from our map if tracked
|
|
83
|
+
for (const [id, ped] of this.peds) {
|
|
84
|
+
if (ped.handle === handle) {
|
|
85
|
+
this.peds.delete(id);
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Delete all managed peds.
|
|
92
|
+
*/
|
|
93
|
+
deleteAll() {
|
|
94
|
+
for (const ped of this.peds.values()) {
|
|
95
|
+
if (DoesEntityExist(ped.handle)) {
|
|
96
|
+
SetEntityAsMissionEntity(ped.handle, true, true);
|
|
97
|
+
DeletePed(ped.handle);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
this.peds.clear();
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Play an animation on a ped.
|
|
104
|
+
*
|
|
105
|
+
* @param handle - Ped handle
|
|
106
|
+
* @param options - Animation options
|
|
107
|
+
*/
|
|
108
|
+
async playAnimation(handle, options) {
|
|
109
|
+
const { dict, anim, blendInSpeed = 8.0, blendOutSpeed = -8.0, duration = -1, flags = 1, playbackRate = 0.0, } = options;
|
|
110
|
+
if (!DoesEntityExist(handle))
|
|
111
|
+
return;
|
|
112
|
+
// Load anim dict
|
|
113
|
+
RequestAnimDict(dict);
|
|
114
|
+
while (!HasAnimDictLoaded(dict)) {
|
|
115
|
+
await new Promise((r) => setTimeout(r, 0));
|
|
116
|
+
}
|
|
117
|
+
TaskPlayAnim(handle, dict, anim, blendInSpeed, blendOutSpeed, duration, flags, playbackRate, false, false, false);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Stop all animations on a ped.
|
|
121
|
+
*
|
|
122
|
+
* @param handle - Ped handle
|
|
123
|
+
*/
|
|
124
|
+
stopAnimation(handle) {
|
|
125
|
+
if (!DoesEntityExist(handle))
|
|
126
|
+
return;
|
|
127
|
+
ClearPedTasks(handle);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Stop animation immediately on a ped.
|
|
131
|
+
*
|
|
132
|
+
* @param handle - Ped handle
|
|
133
|
+
*/
|
|
134
|
+
stopAnimationImmediately(handle) {
|
|
135
|
+
if (!DoesEntityExist(handle))
|
|
136
|
+
return;
|
|
137
|
+
ClearPedTasksImmediately(handle);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Freeze a ped in place.
|
|
141
|
+
*
|
|
142
|
+
* @param handle - Ped handle
|
|
143
|
+
* @param freeze - Whether to freeze
|
|
144
|
+
*/
|
|
145
|
+
freeze(handle, freeze) {
|
|
146
|
+
if (!DoesEntityExist(handle))
|
|
147
|
+
return;
|
|
148
|
+
FreezeEntityPosition(handle, freeze);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Set ped invincibility.
|
|
152
|
+
*
|
|
153
|
+
* @param handle - Ped handle
|
|
154
|
+
* @param invincible - Whether invincible
|
|
155
|
+
*/
|
|
156
|
+
setInvincible(handle, invincible) {
|
|
157
|
+
if (!DoesEntityExist(handle))
|
|
158
|
+
return;
|
|
159
|
+
SetEntityInvincible(handle, invincible);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Give a weapon to a ped.
|
|
163
|
+
*
|
|
164
|
+
* @param handle - Ped handle
|
|
165
|
+
* @param weapon - Weapon name/hash
|
|
166
|
+
* @param ammo - Ammo count
|
|
167
|
+
* @param hidden - Whether to hide the weapon
|
|
168
|
+
* @param forceInHand - Whether to force weapon in hand
|
|
169
|
+
*/
|
|
170
|
+
giveWeapon(handle, weapon, ammo = 100, hidden = false, forceInHand = true) {
|
|
171
|
+
if (!DoesEntityExist(handle))
|
|
172
|
+
return;
|
|
173
|
+
const weaponHash = GetHashKey(weapon);
|
|
174
|
+
GiveWeaponToPed(handle, weaponHash, ammo, hidden, forceInHand);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Remove all weapons from a ped.
|
|
178
|
+
*
|
|
179
|
+
* @param handle - Ped handle
|
|
180
|
+
*/
|
|
181
|
+
removeAllWeapons(handle) {
|
|
182
|
+
if (!DoesEntityExist(handle))
|
|
183
|
+
return;
|
|
184
|
+
RemoveAllPedWeapons(handle, true);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get the closest ped to the player.
|
|
188
|
+
*
|
|
189
|
+
* @param radius - Search radius
|
|
190
|
+
* @param excludePlayer - Exclude the player ped
|
|
191
|
+
* @returns Ped handle or null
|
|
192
|
+
*/
|
|
193
|
+
getClosest(radius = 10.0, excludePlayer = true) {
|
|
194
|
+
const playerPed = PlayerPedId();
|
|
195
|
+
const [px, py, pz] = GetEntityCoords(playerPed, true);
|
|
196
|
+
const [found, handle] = GetClosestPed(px, py, pz, radius, true, true, true, false, -1);
|
|
197
|
+
if (!found || handle === 0)
|
|
198
|
+
return null;
|
|
199
|
+
if (excludePlayer && handle === playerPed)
|
|
200
|
+
return null;
|
|
201
|
+
return handle;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Get all peds in a radius.
|
|
205
|
+
*
|
|
206
|
+
* @param position - Center position
|
|
207
|
+
* @param radius - Search radius
|
|
208
|
+
* @param excludePlayer - Exclude the player ped
|
|
209
|
+
* @returns Array of ped handles
|
|
210
|
+
*/
|
|
211
|
+
getNearby(position, radius, excludePlayer = true) {
|
|
212
|
+
const peds = [];
|
|
213
|
+
const playerPed = PlayerPedId();
|
|
214
|
+
const [handle, _] = FindFirstPed(0);
|
|
215
|
+
let ped = handle;
|
|
216
|
+
do {
|
|
217
|
+
if (!DoesEntityExist(ped))
|
|
218
|
+
continue;
|
|
219
|
+
if (excludePlayer && ped === playerPed)
|
|
220
|
+
continue;
|
|
221
|
+
const [ex, ey, ez] = GetEntityCoords(ped, true);
|
|
222
|
+
const dist = Math.sqrt(Math.pow(ex - position.x, 2) + Math.pow(ey - position.y, 2) + Math.pow(ez - position.z, 2));
|
|
223
|
+
if (dist <= radius) {
|
|
224
|
+
peds.push(ped);
|
|
225
|
+
}
|
|
226
|
+
} while (FindNextPed(handle, ped));
|
|
227
|
+
EndFindPed(handle);
|
|
228
|
+
return peds;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Make ped look at entity.
|
|
232
|
+
*
|
|
233
|
+
* @param handle - Ped handle
|
|
234
|
+
* @param entity - Entity to look at
|
|
235
|
+
* @param duration - Duration in ms (-1 for infinite)
|
|
236
|
+
*/
|
|
237
|
+
lookAtEntity(handle, entity, duration = -1) {
|
|
238
|
+
if (!DoesEntityExist(handle))
|
|
239
|
+
return;
|
|
240
|
+
TaskLookAtEntity(handle, entity, duration, 2048, 3);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Make ped look at position.
|
|
244
|
+
*
|
|
245
|
+
* @param handle - Ped handle
|
|
246
|
+
* @param position - Position to look at
|
|
247
|
+
* @param duration - Duration in ms (-1 for infinite)
|
|
248
|
+
*/
|
|
249
|
+
lookAtCoords(handle, position, duration = -1) {
|
|
250
|
+
if (!DoesEntityExist(handle))
|
|
251
|
+
return;
|
|
252
|
+
TaskLookAtCoord(handle, position.x, position.y, position.z, duration, 2048, 3);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Make ped walk to position.
|
|
256
|
+
*
|
|
257
|
+
* @param handle - Ped handle
|
|
258
|
+
* @param position - Target position
|
|
259
|
+
* @param speed - Walking speed (1.0 = walk, 2.0 = run)
|
|
260
|
+
*/
|
|
261
|
+
walkTo(handle, position, speed = 1.0) {
|
|
262
|
+
if (!DoesEntityExist(handle))
|
|
263
|
+
return;
|
|
264
|
+
TaskGoStraightToCoord(handle, position.x, position.y, position.z, speed, -1, 0.0, 0.0);
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Set ped combat attributes.
|
|
268
|
+
*
|
|
269
|
+
* @param handle - Ped handle
|
|
270
|
+
* @param canFight - Whether the ped can fight
|
|
271
|
+
* @param canUseCover - Whether the ped can use cover
|
|
272
|
+
*/
|
|
273
|
+
setCombatAttributes(handle, canFight, canUseCover = true) {
|
|
274
|
+
if (!DoesEntityExist(handle))
|
|
275
|
+
return;
|
|
276
|
+
SetPedCombatAttributes(handle, 46, canFight); // Can fight
|
|
277
|
+
SetPedCombatAttributes(handle, 0, canUseCover); // Can use cover
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Get a managed ped by ID.
|
|
281
|
+
*/
|
|
282
|
+
get(id) {
|
|
283
|
+
return this.peds.get(id);
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Get all managed peds.
|
|
287
|
+
*/
|
|
288
|
+
getAll() {
|
|
289
|
+
return Array.from(this.peds.values());
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Check if a managed ped still exists.
|
|
293
|
+
*/
|
|
294
|
+
exists(id) {
|
|
295
|
+
const ped = this.peds.get(id);
|
|
296
|
+
return ped ? DoesEntityExist(ped.handle) : false;
|
|
297
|
+
}
|
|
298
|
+
};
|
|
299
|
+
exports.PedService = PedService;
|
|
300
|
+
exports.PedService = PedService = __decorate([
|
|
301
|
+
(0, tsyringe_1.injectable)()
|
|
302
|
+
], PedService);
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import type { Vector3 } from '../../../utils';
|
|
2
|
+
export interface VehicleSpawnOptions {
|
|
3
|
+
/** Model name or hash */
|
|
4
|
+
model: string;
|
|
5
|
+
/** Spawn position */
|
|
6
|
+
position: Vector3;
|
|
7
|
+
/** Heading/rotation */
|
|
8
|
+
heading?: number;
|
|
9
|
+
/** Whether to place on ground */
|
|
10
|
+
placeOnGround?: boolean;
|
|
11
|
+
/** Whether to warp the player into the vehicle */
|
|
12
|
+
warpIntoVehicle?: boolean;
|
|
13
|
+
/** Seat index to warp into (-1 = driver) */
|
|
14
|
+
seatIndex?: number;
|
|
15
|
+
/** Primary color */
|
|
16
|
+
primaryColor?: number;
|
|
17
|
+
/** Secondary color */
|
|
18
|
+
secondaryColor?: number;
|
|
19
|
+
/** License plate text */
|
|
20
|
+
plate?: string;
|
|
21
|
+
/** Network the vehicle */
|
|
22
|
+
networked?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface VehicleMods {
|
|
25
|
+
spoiler?: number;
|
|
26
|
+
frontBumper?: number;
|
|
27
|
+
rearBumper?: number;
|
|
28
|
+
sideSkirt?: number;
|
|
29
|
+
exhaust?: number;
|
|
30
|
+
frame?: number;
|
|
31
|
+
grille?: number;
|
|
32
|
+
hood?: number;
|
|
33
|
+
fender?: number;
|
|
34
|
+
rightFender?: number;
|
|
35
|
+
roof?: number;
|
|
36
|
+
engine?: number;
|
|
37
|
+
brakes?: number;
|
|
38
|
+
transmission?: number;
|
|
39
|
+
horns?: number;
|
|
40
|
+
suspension?: number;
|
|
41
|
+
armor?: number;
|
|
42
|
+
turbo?: boolean;
|
|
43
|
+
xenon?: boolean;
|
|
44
|
+
wheelType?: number;
|
|
45
|
+
wheels?: number;
|
|
46
|
+
windowTint?: number;
|
|
47
|
+
livery?: number;
|
|
48
|
+
plateStyle?: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Service for vehicle operations and management.
|
|
52
|
+
*/
|
|
53
|
+
export declare class VehicleService {
|
|
54
|
+
/**
|
|
55
|
+
* Spawn a vehicle at a position.
|
|
56
|
+
*
|
|
57
|
+
* @param options - Spawn options
|
|
58
|
+
* @returns The vehicle handle
|
|
59
|
+
*/
|
|
60
|
+
spawn(options: VehicleSpawnOptions): Promise<number>;
|
|
61
|
+
/**
|
|
62
|
+
* Delete a vehicle.
|
|
63
|
+
*
|
|
64
|
+
* @param vehicle - Vehicle handle
|
|
65
|
+
*/
|
|
66
|
+
delete(vehicle: number): void;
|
|
67
|
+
/**
|
|
68
|
+
* Delete the vehicle the player is currently in.
|
|
69
|
+
*/
|
|
70
|
+
deleteCurrentVehicle(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Repair a vehicle completely.
|
|
73
|
+
*
|
|
74
|
+
* @param vehicle - Vehicle handle
|
|
75
|
+
*/
|
|
76
|
+
repair(vehicle: number): void;
|
|
77
|
+
/**
|
|
78
|
+
* Set vehicle fuel level.
|
|
79
|
+
*
|
|
80
|
+
* @param vehicle - Vehicle handle
|
|
81
|
+
* @param level - Fuel level (0.0-1.0)
|
|
82
|
+
*/
|
|
83
|
+
setFuel(vehicle: number, level: number): void;
|
|
84
|
+
/**
|
|
85
|
+
* Get vehicle fuel level.
|
|
86
|
+
*
|
|
87
|
+
* @param vehicle - Vehicle handle
|
|
88
|
+
* @returns Fuel level (0.0-1.0)
|
|
89
|
+
*/
|
|
90
|
+
getFuel(vehicle: number): number;
|
|
91
|
+
/**
|
|
92
|
+
* Get the closest vehicle to the player.
|
|
93
|
+
*
|
|
94
|
+
* @param radius - Search radius
|
|
95
|
+
* @returns Vehicle handle or null
|
|
96
|
+
*/
|
|
97
|
+
getClosest(radius?: number): number | null;
|
|
98
|
+
/**
|
|
99
|
+
* Check if the player is in a vehicle.
|
|
100
|
+
*/
|
|
101
|
+
isPlayerInVehicle(): boolean;
|
|
102
|
+
/**
|
|
103
|
+
* Get the vehicle the player is currently in.
|
|
104
|
+
*
|
|
105
|
+
* @returns Vehicle handle or null
|
|
106
|
+
*/
|
|
107
|
+
getCurrentVehicle(): number | null;
|
|
108
|
+
/**
|
|
109
|
+
* Get the last vehicle the player was in.
|
|
110
|
+
*
|
|
111
|
+
* @returns Vehicle handle or null
|
|
112
|
+
*/
|
|
113
|
+
getLastVehicle(): number | null;
|
|
114
|
+
/**
|
|
115
|
+
* Check if player is the driver of their current vehicle.
|
|
116
|
+
*/
|
|
117
|
+
isPlayerDriver(): boolean;
|
|
118
|
+
/**
|
|
119
|
+
* Apply modifications to a vehicle.
|
|
120
|
+
*
|
|
121
|
+
* @param vehicle - Vehicle handle
|
|
122
|
+
* @param mods - Modifications to apply
|
|
123
|
+
*/
|
|
124
|
+
setMods(vehicle: number, mods: VehicleMods): void;
|
|
125
|
+
/**
|
|
126
|
+
* Set vehicle doors locked state.
|
|
127
|
+
*
|
|
128
|
+
* @param vehicle - Vehicle handle
|
|
129
|
+
* @param locked - Whether doors should be locked
|
|
130
|
+
*/
|
|
131
|
+
setDoorsLocked(vehicle: number, locked: boolean): void;
|
|
132
|
+
/**
|
|
133
|
+
* Set vehicle engine state.
|
|
134
|
+
*
|
|
135
|
+
* @param vehicle - Vehicle handle
|
|
136
|
+
* @param running - Whether engine should be running
|
|
137
|
+
* @param instant - Whether to start instantly
|
|
138
|
+
*/
|
|
139
|
+
setEngineRunning(vehicle: number, running: boolean, instant?: boolean): void;
|
|
140
|
+
/**
|
|
141
|
+
* Set vehicle invincibility.
|
|
142
|
+
*
|
|
143
|
+
* @param vehicle - Vehicle handle
|
|
144
|
+
* @param invincible - Whether vehicle should be invincible
|
|
145
|
+
*/
|
|
146
|
+
setInvincible(vehicle: number, invincible: boolean): void;
|
|
147
|
+
/**
|
|
148
|
+
* Get vehicle speed in km/h.
|
|
149
|
+
*
|
|
150
|
+
* @param vehicle - Vehicle handle
|
|
151
|
+
*/
|
|
152
|
+
getSpeed(vehicle: number): number;
|
|
153
|
+
/**
|
|
154
|
+
* Set vehicle heading/rotation.
|
|
155
|
+
*
|
|
156
|
+
* @param vehicle - Vehicle handle
|
|
157
|
+
* @param heading - Heading in degrees
|
|
158
|
+
*/
|
|
159
|
+
setHeading(vehicle: number, heading: number): void;
|
|
160
|
+
/**
|
|
161
|
+
* Teleport a vehicle to a position.
|
|
162
|
+
*
|
|
163
|
+
* @param vehicle - Vehicle handle
|
|
164
|
+
* @param position - Target position
|
|
165
|
+
* @param heading - Optional heading
|
|
166
|
+
*/
|
|
167
|
+
teleport(vehicle: number, position: Vector3, heading?: number): void;
|
|
168
|
+
}
|