@infernus/core 0.8.7 → 0.9.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.
Files changed (106) hide show
  1. package/dist/bundle.d.ts +1553 -1551
  2. package/dist/bundle.js +1 -1
  3. package/dist/bundle.mjs +1 -0
  4. package/package.json +10 -3
  5. package/rollup.config.mjs +5 -2
  6. package/.eslintrc +0 -3
  7. package/src/controllers/command/index.ts +0 -57
  8. package/src/controllers/filterscript/index.ts +0 -69
  9. package/src/controllers/gamemode/index.ts +0 -277
  10. package/src/controllers/gamemode/settings.ts +0 -3
  11. package/src/controllers/gametext/index.ts +0 -61
  12. package/src/controllers/gangzone/baseGangZone.ts +0 -284
  13. package/src/controllers/gangzone/gangZoneBus.ts +0 -8
  14. package/src/controllers/gangzone/gangZoneEvent.ts +0 -91
  15. package/src/controllers/gangzone/index.ts +0 -2
  16. package/src/controllers/i18n/index.ts +0 -81
  17. package/src/controllers/index.ts +0 -12
  18. package/src/controllers/menu/baseMenu.ts +0 -203
  19. package/src/controllers/menu/index.ts +0 -2
  20. package/src/controllers/menu/menuBus.ts +0 -8
  21. package/src/controllers/menu/menuEvent.ts +0 -76
  22. package/src/controllers/netstats/index.ts +0 -43
  23. package/src/controllers/npc/index.ts +0 -2
  24. package/src/controllers/npc/npcEvent.ts +0 -26
  25. package/src/controllers/npc/npcFunc.ts +0 -64
  26. package/src/controllers/player/basePlayer.ts +0 -980
  27. package/src/controllers/player/index.ts +0 -3
  28. package/src/controllers/player/pauseChecker.ts +0 -39
  29. package/src/controllers/player/playerBus.ts +0 -9
  30. package/src/controllers/player/playerEvent.ts +0 -468
  31. package/src/controllers/promise/client/index.ts +0 -31
  32. package/src/controllers/promise/dialog/index.ts +0 -143
  33. package/src/controllers/textdraw/baseTextDraw.ts +0 -416
  34. package/src/controllers/textdraw/index.ts +0 -2
  35. package/src/controllers/textdraw/textdrawBus.ts +0 -8
  36. package/src/controllers/textdraw/textdrawEvent.ts +0 -61
  37. package/src/controllers/vehicle/baseVehicle.ts +0 -503
  38. package/src/controllers/vehicle/index.ts +0 -2
  39. package/src/controllers/vehicle/vehicleBus.ts +0 -8
  40. package/src/controllers/vehicle/vehicleEvent.ts +0 -201
  41. package/src/enums/artwork.ts +0 -5
  42. package/src/enums/clickSources.ts +0 -3
  43. package/src/enums/dialogStyles.ts +0 -8
  44. package/src/enums/editResponseTypes.ts +0 -5
  45. package/src/enums/index.ts +0 -18
  46. package/src/enums/invalid.ts +0 -13
  47. package/src/enums/keys.ts +0 -25
  48. package/src/enums/limits.ts +0 -18
  49. package/src/enums/marker.ts +0 -5
  50. package/src/enums/netstat.ts +0 -11
  51. package/src/enums/npc.ts +0 -11
  52. package/src/enums/object.ts +0 -25
  53. package/src/enums/player.ts +0 -92
  54. package/src/enums/record.ts +0 -5
  55. package/src/enums/specialActions.ts +0 -22
  56. package/src/enums/streamer.ts +0 -10
  57. package/src/enums/textdrawFonts.ts +0 -23
  58. package/src/enums/vehicle.ts +0 -32
  59. package/src/enums/weapon.ts +0 -82
  60. package/src/interfaces/index.ts +0 -233
  61. package/src/logger/index.ts +0 -24
  62. package/src/main.ts +0 -6
  63. package/src/types/index.ts +0 -48
  64. package/src/utils/EventBus.ts +0 -60
  65. package/src/utils/animateUtils.ts +0 -2504
  66. package/src/utils/colorUtils.ts +0 -43
  67. package/src/utils/helperUtils.ts +0 -403
  68. package/src/utils/vehicleUtils.ts +0 -321
  69. package/src/wrapper/native/callbacks/index.ts +0 -395
  70. package/src/wrapper/native/functions/index.ts +0 -3131
  71. package/src/wrapper/streamer/3dtext/3dTextBus.ts +0 -8
  72. package/src/wrapper/streamer/3dtext/3dTextEvent.ts +0 -70
  73. package/src/wrapper/streamer/3dtext/base3DText.ts +0 -184
  74. package/src/wrapper/streamer/3dtext/index.ts +0 -2
  75. package/src/wrapper/streamer/actor/actorBus.ts +0 -8
  76. package/src/wrapper/streamer/actor/actorEvent.ts +0 -95
  77. package/src/wrapper/streamer/actor/baseActor.ts +0 -278
  78. package/src/wrapper/streamer/actor/index.ts +0 -2
  79. package/src/wrapper/streamer/area/areaBus.ts +0 -8
  80. package/src/wrapper/streamer/area/areaEvent.ts +0 -99
  81. package/src/wrapper/streamer/area/baseArea.ts +0 -450
  82. package/src/wrapper/streamer/area/index.ts +0 -2
  83. package/src/wrapper/streamer/checkpoint/baseCheckpoint.ts +0 -136
  84. package/src/wrapper/streamer/checkpoint/checkPointBus.ts +0 -8
  85. package/src/wrapper/streamer/checkpoint/checkPointEvent.ts +0 -100
  86. package/src/wrapper/streamer/checkpoint/index.ts +0 -2
  87. package/src/wrapper/streamer/common/index.ts +0 -318
  88. package/src/wrapper/streamer/index.ts +0 -9
  89. package/src/wrapper/streamer/mapIcon/baseMapIcon.ts +0 -128
  90. package/src/wrapper/streamer/mapIcon/index.ts +0 -2
  91. package/src/wrapper/streamer/mapIcon/mapIconBus.ts +0 -8
  92. package/src/wrapper/streamer/mapIcon/mapIconEvent.ts +0 -67
  93. package/src/wrapper/streamer/object/baseObject.ts +0 -415
  94. package/src/wrapper/streamer/object/index.ts +0 -2
  95. package/src/wrapper/streamer/object/objectBus.ts +0 -8
  96. package/src/wrapper/streamer/object/objectEvent.ts +0 -177
  97. package/src/wrapper/streamer/pickup/basePickup.ts +0 -114
  98. package/src/wrapper/streamer/pickup/index.ts +0 -2
  99. package/src/wrapper/streamer/pickup/pickupBus.ts +0 -8
  100. package/src/wrapper/streamer/pickup/pickupEvent.ts +0 -84
  101. package/src/wrapper/streamer/raceCP/baseRaceCP.ts +0 -151
  102. package/src/wrapper/streamer/raceCP/index.ts +0 -2
  103. package/src/wrapper/streamer/raceCP/raceCPBus.ts +0 -8
  104. package/src/wrapper/streamer/raceCP/raceCPEvent.ts +0 -100
  105. package/tsconfig.json +0 -16
  106. /package/{LICENSE → LICENSE.md} +0 -0
@@ -1,503 +0,0 @@
1
- import type { CarModTypeEnum, VehicleModelInfoEnum } from "@/enums";
2
- import { LimitsEnum } from "@/enums";
3
- import type { TPos } from "@/types";
4
- import type { IVehicle } from "@/interfaces";
5
- import type { Player } from "../player";
6
- import { logger } from "@/logger";
7
- import { isValidPaintJob, isValidVehComponent } from "@/utils/vehicleUtils";
8
- import { vehicleBus, vehicleHooks } from "./vehicleBus";
9
- import * as vehFunc from "@/wrapper/native/functions";
10
-
11
- import { rgba } from "@/utils/colorUtils";
12
- import {
13
- GetVehicleMatrix,
14
- GetVehicleTrainSpeed,
15
- GetVehicleHydraReactorAngle,
16
- GetVehicleLandingGearState,
17
- GetVehicleSirenState,
18
- GetVehicleModelsUsed,
19
- GetVehicleDriver,
20
- GetVehicleLastDriver,
21
- GetVehicleModelCount,
22
- IsVehicleSirenEnabled,
23
- ToggleVehicleSirenEnabled,
24
- IsVehicleDead,
25
- GetVehicleRespawnTick,
26
- IsVehicleOccupied,
27
- HasVehicleBeenOccupied,
28
- GetVehicleOccupiedTick,
29
- GetVehicleCab,
30
- GetVehicleRespawnDelay,
31
- SetVehicleRespawnDelay,
32
- GetVehicleNumberPlate,
33
- GetVehicleInterior,
34
- GetVehiclePaintjob,
35
- GetVehicleColours,
36
- SetVehicleSpawnInfo,
37
- GetVehicleSpawnInfo,
38
- } from "@infernus/wrapper";
39
-
40
- export class Vehicle {
41
- private _id = -1;
42
- private static createdCount = 0;
43
- private readonly sourceInfo: IVehicle;
44
- private readonly isStatic: boolean;
45
- get id(): number {
46
- return this._id;
47
- }
48
- constructor(veh: IVehicle, isStatic = false) {
49
- this.sourceInfo = veh;
50
- this.isStatic = isStatic;
51
- }
52
- create(ignoreRange = false): void {
53
- if (this.id !== -1)
54
- return logger.warn("[Vehicle]: Unable to create the vehicle again");
55
- if (Vehicle.createdCount === LimitsEnum.MAX_VEHICLES)
56
- return logger.warn(
57
- "[Vehicle]: Unable to continue to create vehicle, maximum allowable quantity has been reached"
58
- );
59
- const {
60
- modelid,
61
- x,
62
- y,
63
- z,
64
- z_angle,
65
- colour1,
66
- colour2,
67
- respawn_delay,
68
- addsiren,
69
- } = this.sourceInfo;
70
- if (!ignoreRange && (modelid < 400 || modelid > 611)) return;
71
- if (this.isStatic) {
72
- if (respawn_delay === undefined) {
73
- this._id = vehFunc.AddStaticVehicle(
74
- modelid,
75
- x,
76
- y,
77
- z,
78
- z_angle,
79
- colour1,
80
- colour2
81
- );
82
- return;
83
- }
84
- this._id = vehFunc.AddStaticVehicleEx(
85
- modelid,
86
- x,
87
- y,
88
- z,
89
- z_angle,
90
- colour1,
91
- colour2,
92
- respawn_delay || -1,
93
- addsiren || false
94
- );
95
- } else {
96
- this._id = vehFunc.CreateVehicle(
97
- modelid,
98
- x,
99
- y,
100
- z,
101
- z_angle,
102
- colour1,
103
- colour2,
104
- respawn_delay || -1,
105
- addsiren || false
106
- );
107
- }
108
- Vehicle.createdCount++;
109
- vehicleBus.emit(vehicleHooks.created, this);
110
- }
111
- destroy(): void {
112
- if (this.id === -1)
113
- return logger.warn(
114
- "[Vehicle]: Unable to destroy the vehicle before create"
115
- );
116
- vehFunc.DestroyVehicle(this.id);
117
- Vehicle.createdCount--;
118
- vehicleBus.emit(vehicleHooks.destroyed, this);
119
- this._id = -1;
120
- }
121
- addComponent(componentid: number): number {
122
- if (this.id === -1) return 0;
123
- if (!isValidVehComponent(this.getModel(), componentid)) {
124
- logger.warn(
125
- `[Vehicle]: Invalid component id ${componentid} attempted to attach to the vehicle ${this}`
126
- );
127
- return 0;
128
- }
129
- return vehFunc.AddVehicleComponent(this.id, componentid);
130
- }
131
- removeComponent(componentid: number): number {
132
- if (this.getComponentInSlot(Vehicle.getComponentType(componentid)) === 0) {
133
- logger.warn(
134
- `[Vehicle]: component id ${componentid} does not exist on this vehicle`
135
- );
136
- return 0;
137
- }
138
- return vehFunc.RemoveVehicleComponent(this.id, componentid);
139
- }
140
- getComponentInSlot(slot: CarModTypeEnum) {
141
- return vehFunc.GetVehicleComponentInSlot(this.id, slot);
142
- }
143
- static getComponentType(component: number) {
144
- return vehFunc.GetVehicleComponentType(component);
145
- }
146
- linkToInterior(interiorId: number): number {
147
- if (this.id === -1) return 0;
148
- return vehFunc.LinkVehicleToInterior(this.id, interiorId);
149
- }
150
- setVirtualWorld(worldId: number): number {
151
- if (this.id === -1) return 0;
152
- return vehFunc.SetVehicleVirtualWorld(this.id, worldId);
153
- }
154
- getVirtualWorld(): number {
155
- if (this.id === -1) return 0;
156
- return vehFunc.GetVehicleVirtualWorld(this.id);
157
- }
158
- repair(): number {
159
- if (this.id === -1) return 0;
160
- return vehFunc.RepairVehicle(this.id);
161
- }
162
- setPos(x: number, y: number, z: number): number {
163
- if (this.id === -1) return 0;
164
- return vehFunc.SetVehiclePos(this.id, x, y, z);
165
- }
166
- getPos(): void | TPos {
167
- if (this.id === -1) return;
168
- return vehFunc.GetVehiclePos(this.id);
169
- }
170
- getHealth(): number {
171
- if (this.id === -1) return 0;
172
- return vehFunc.GetVehicleHealth(this.id);
173
- }
174
- setHealth(health: number): number {
175
- if (this.id === -1) return 0;
176
- return vehFunc.SetVehicleHealth(this.id, health);
177
- }
178
- isPlayerIn<P extends Player>(player: P): boolean {
179
- if (this.id === -1) return false;
180
- return vehFunc.IsPlayerInVehicle(player.id, this.id);
181
- }
182
- putPlayerIn<P extends Player>(player: P, seatid: number): number {
183
- if (this.id === -1) return 0;
184
- if (seatid < 0) return 0;
185
- if (seatid > 4) {
186
- logger.warn(
187
- "[Vehicle]: If the seat is invalid or is taken, will cause a crash when they EXIT the vehicle."
188
- );
189
- }
190
- return vehFunc.PutPlayerInVehicle(player.id, this.id, seatid);
191
- }
192
- getZAngle(): number {
193
- if (this.id === -1) return 0;
194
- return vehFunc.GetVehicleZAngle(this.id);
195
- }
196
- setZAngle(z_angle: number): number {
197
- if (this.id === -1) return 0;
198
- return vehFunc.SetVehicleZAngle(this.id, z_angle);
199
- }
200
- setNumberPlate(numberplate: string): number {
201
- if (this.id === -1) return 0;
202
- if (numberplate.length < 1 || numberplate.length > 32) {
203
- logger.error(
204
- "[Vehicle]: The length of the number plate ranges from 32 characters"
205
- );
206
- return 0;
207
- }
208
- if (!/^[a-zA-Z0-9]+$/.test(numberplate)) {
209
- logger.error("[Vehicle]: number plates only allow letters and numbers");
210
- return 0;
211
- }
212
- return vehFunc.SetVehicleNumberPlate(this.id, numberplate);
213
- }
214
- static getPoolSize(): number {
215
- return vehFunc.GetVehiclePoolSize();
216
- }
217
- changeColours(colour1: string | number, colour2: string | number): number {
218
- if (this.id === -1) return 0;
219
- return vehFunc.ChangeVehicleColours(this.id, colour1, colour2);
220
- }
221
- setVelocity(X: number, Y: number, Z: number): number {
222
- if (this.id === -1) return 0;
223
- return vehFunc.SetVehicleVelocity(this.id, X, Y, Z);
224
- }
225
- getVelocity(): void | TPos {
226
- if (this.id === -1) return;
227
- const [x, y, z] = vehFunc.GetVehicleVelocity(this.id);
228
- return { x, y, z };
229
- }
230
- setAngularVelocity(X: number, Y: number, Z: number): number {
231
- if (this.id === -1) return 0;
232
- return vehFunc.SetVehicleAngularVelocity(this.id, X, Y, Z);
233
- }
234
- getDamageStatus() {
235
- if (this.id === -1) return;
236
- return vehFunc.GetVehicleDamageStatus(this.id);
237
- }
238
- updateDamageStatus(
239
- panels: number,
240
- doors: number,
241
- lights: number,
242
- tires: number
243
- ): void {
244
- if (this.id === -1) return;
245
- vehFunc.UpdateVehicleDamageStatus(this.id, panels, doors, lights, tires);
246
- }
247
- getDistanceFromPoint(X: number, Y: number, Z: number): number {
248
- return vehFunc.GetVehicleDistanceFromPoint(this.id, X, Y, Z);
249
- }
250
- getModel(): number {
251
- return vehFunc.GetVehicleModel(this.id);
252
- }
253
- static getModelInfo(
254
- vehiclemodel: number,
255
- infotype: VehicleModelInfoEnum
256
- ): TPos {
257
- return vehFunc.GetVehicleModelInfo(vehiclemodel, infotype);
258
- }
259
- getModelInfo(infotype: VehicleModelInfoEnum): void | TPos {
260
- if (this.id === -1) return;
261
- return Vehicle.getModelInfo(this.getModel(), infotype);
262
- }
263
- getRotationQuat() {
264
- if (this.id === -1) return;
265
- const [w, x, y, z] = vehFunc.GetVehicleRotationQuat(this.id);
266
- return { w, x, y, z };
267
- }
268
- setRespawn(): number {
269
- if (this.id === -1) return 0;
270
- return vehFunc.SetVehicleToRespawn(this.id);
271
- }
272
- isStreamedIn<P extends Player>(forplayer: P): boolean {
273
- if (this.id === -1) return false;
274
- return vehFunc.IsVehicleStreamedIn(this.id, forplayer.id);
275
- }
276
- setParamsCarDoors(
277
- driver: boolean,
278
- passenger: boolean,
279
- backleft: boolean,
280
- backright: boolean
281
- ): number {
282
- if (this.id === -1) return 0;
283
- return vehFunc.SetVehicleParamsCarDoors(
284
- this.id,
285
- driver,
286
- passenger,
287
- backleft,
288
- backright
289
- );
290
- }
291
- setParamsCarWindows(
292
- driver: boolean,
293
- passenger: boolean,
294
- backleft: boolean,
295
- backright: boolean
296
- ) {
297
- if (this.id === -1) return 0;
298
- return vehFunc.SetVehicleParamsCarWindows(
299
- this.id,
300
- driver,
301
- passenger,
302
- backleft,
303
- backright
304
- );
305
- }
306
- getParamsCarDoors() {
307
- if (this.id === -1) return undefined;
308
- return vehFunc.GetVehicleParamsCarDoors(this.id);
309
- }
310
- getParamsCarWindows() {
311
- if (this.id === -1) return undefined;
312
- return vehFunc.GetVehicleParamsCarWindows(this.id);
313
- }
314
- setParamsEx(
315
- engine: boolean,
316
- lights: boolean,
317
- alarm: boolean,
318
- doors: boolean,
319
- bonnet: boolean,
320
- boot: boolean,
321
- objective: boolean
322
- ): number {
323
- if (this.id === -1) return 0;
324
- return vehFunc.SetVehicleParamsEx(
325
- this.id,
326
- engine,
327
- lights,
328
- alarm,
329
- doors,
330
- bonnet,
331
- boot,
332
- objective
333
- );
334
- }
335
- getParamsEx() {
336
- if (this.id === -1) return undefined;
337
- const [engine, lights, alarm, doors, bonnet, boot, objective] =
338
- vehFunc.GetVehicleParamsEx(this.id);
339
- return { engine, lights, alarm, doors, bonnet, boot, objective };
340
- }
341
- getParamsSirenState(): number {
342
- if (this.id === -1) return -2;
343
- return vehFunc.GetVehicleParamsSirenState(this.id);
344
- }
345
- setParamsForPlayer<P extends Player>(
346
- player: P,
347
- objective: boolean,
348
- doorslocked: boolean
349
- ): number {
350
- if (this.id === -1) return 0;
351
- return vehFunc.SetVehicleParamsForPlayer(
352
- this.id,
353
- player.id,
354
- objective,
355
- doorslocked
356
- );
357
- }
358
- isTrailerAttached(): boolean {
359
- if (this.id === -1) return false;
360
- return vehFunc.IsTrailerAttachedToVehicle(this.id);
361
- }
362
- changePaintjob(paintjobid: 0 | 1 | 2): number {
363
- if (this.id === -1) return 0;
364
- if (!isValidPaintJob(this.getModel(), paintjobid)) return 0;
365
- this.changeColours("#fff", "#fff");
366
- vehFunc.ChangeVehiclePaintjob(this.id, paintjobid);
367
- return 1;
368
- }
369
- attachTrailer<V extends Vehicle>(trailer: V): number {
370
- if (this.id === -1) return 0;
371
- return vehFunc.AttachTrailerToVehicle(trailer.id, this.id);
372
- }
373
- detachTrailer() {
374
- if (this.id === -1) return;
375
- if (this.isTrailerAttached()) vehFunc.DetachTrailerFromVehicle(this.id);
376
- }
377
- getTrailer<V extends Vehicle>(vehicles: Array<V>): V | undefined {
378
- if (this.id === -1) return;
379
- return vehicles.find((v) => v.id === vehFunc.GetVehicleTrailer(this.id));
380
- }
381
- isValid(): boolean {
382
- return vehFunc.IsValidVehicle(this.id);
383
- }
384
- static isValid(id: number): boolean {
385
- return vehFunc.IsValidVehicle(id);
386
- }
387
- getMatrix() {
388
- if (this.id === -1) return;
389
- return GetVehicleMatrix(this.id);
390
- }
391
- getTrainSpeed(): number {
392
- if (this.id === -1) return 0;
393
- return GetVehicleTrainSpeed(this.id);
394
- }
395
- getHydraReactorAngle(): number {
396
- if (this.id === -1) return 0;
397
- return GetVehicleHydraReactorAngle(this.id);
398
- }
399
- getLandingGearState(): number {
400
- if (this.id === -1) return 0;
401
- return GetVehicleLandingGearState(this.id);
402
- }
403
- getSirenState(): number {
404
- if (this.id === -1) return 0;
405
- return GetVehicleSirenState(this.id);
406
- }
407
- static getModelsUsed = GetVehicleModelsUsed;
408
- getDriver<P extends Player>(players: Map<number, P>): P | undefined {
409
- if (this.id === -1) return;
410
- return players.get(GetVehicleDriver(this.id));
411
- }
412
- getLastDriver<P extends Player>(players: Map<number, P>): P | undefined {
413
- if (this.id === -1) return;
414
- return players.get(GetVehicleLastDriver(this.id));
415
- }
416
- static getModelCount = GetVehicleModelCount;
417
- isSirenEnabled(): boolean {
418
- return IsVehicleSirenEnabled(this.id);
419
- }
420
- toggleSirenEnabled(enabled: boolean): number {
421
- if (this.id === -1) return 0;
422
- return ToggleVehicleSirenEnabled(this.id, enabled);
423
- }
424
- isDead(): boolean {
425
- if (this.id === -1) return true;
426
- return IsVehicleDead(this.id);
427
- }
428
- getRespawnTick(): number {
429
- if (this.id === -1) return 0;
430
- return GetVehicleRespawnTick(this.id);
431
- }
432
- isOccupied(): boolean {
433
- if (this.id === -1) return false;
434
- return IsVehicleOccupied(this.id);
435
- }
436
- hasBeenOccupied(): boolean {
437
- if (this.id === -1) return false;
438
- return HasVehicleBeenOccupied(this.id);
439
- }
440
- getOccupiedTick(): number {
441
- if (this.id === -1) return 0;
442
- return GetVehicleOccupiedTick(this.id);
443
- }
444
- getCab(): number {
445
- if (this.id === -1) return 0;
446
- return GetVehicleCab(this.id);
447
- }
448
- getRespawnDelay(): number {
449
- if (this.id === -1) return 0;
450
- return GetVehicleRespawnDelay(this.id);
451
- }
452
- setRespawnDelay(delay: number): number {
453
- if (this.id === -1) return 0;
454
- return SetVehicleRespawnDelay(this.id, delay);
455
- }
456
- getNumberPlate(): string {
457
- if (this.id === -1) return "";
458
- return GetVehicleNumberPlate(this.id);
459
- }
460
- getInterior(): number {
461
- if (this.id === -1) return 0;
462
- return GetVehicleInterior(this.id);
463
- }
464
- getPaintjob(): number {
465
- if (this.id === -1) return -1;
466
- return GetVehiclePaintjob(this.id);
467
- }
468
- getColours() {
469
- if (this.id === -1) return;
470
- return GetVehicleColours(this.id);
471
- }
472
- setSpawnInfo(
473
- modelid: number,
474
- fX: number,
475
- fY: number,
476
- fZ: number,
477
- fAngle: number,
478
- colour1: string | number,
479
- colour2: string | number,
480
- respawntime = -2,
481
- interior = -2,
482
- ignoreRange = false
483
- ): number {
484
- if (this.id === -1) return 0;
485
- if (!ignoreRange && (modelid < 400 || modelid > 611)) return 0;
486
- return SetVehicleSpawnInfo(
487
- this.id,
488
- modelid,
489
- fX,
490
- fY,
491
- fZ,
492
- fAngle,
493
- rgba(colour1),
494
- rgba(colour2),
495
- respawntime,
496
- interior
497
- );
498
- }
499
- getSpawnInfo() {
500
- if (this.id === -1) return;
501
- return GetVehicleSpawnInfo(this.id);
502
- }
503
- }
@@ -1,2 +0,0 @@
1
- export * from "./baseVehicle";
2
- export * from "./vehicleEvent";
@@ -1,8 +0,0 @@
1
- import { EventBus } from "@/utils/eventBus";
2
-
3
- export enum vehicleHooks {
4
- created = "OnVehicleCreate",
5
- destroyed = "OnVehicleDestroy",
6
- }
7
-
8
- export const vehicleBus = new EventBus();
@@ -1,201 +0,0 @@
1
- import type { TCommonCallback } from "@/types";
2
- import { promisifyCallback } from "@/utils/helperUtils";
3
- import {
4
- OnNPCEnterVehicle,
5
- OnNPCExitVehicle,
6
- OnPlayerEnterVehicle,
7
- OnPlayerExitVehicle,
8
- OnVehicleDamageStatusUpdate,
9
- OnVehicleDeath,
10
- OnVehicleMod,
11
- OnVehiclePaintjob,
12
- OnVehicleRespray,
13
- OnVehicleSirenStateChange,
14
- OnVehicleSpawn,
15
- OnVehicleStreamIn,
16
- OnVehicleStreamOut,
17
- OnTrailerUpdate,
18
- OnGameModeExit,
19
- } from "@/wrapper/native/callbacks";
20
- import type { Player } from "../player";
21
- import type { Vehicle } from "./baseVehicle";
22
- import { vehicleBus, vehicleHooks } from "./vehicleBus";
23
-
24
- export class VehicleEvent<P extends Player, V extends Vehicle> {
25
- private readonly vehicles = new Map<number, V>();
26
- private readonly players;
27
-
28
- constructor(playersMap: Map<number, P>, destroyOnExit = true) {
29
- this.players = playersMap;
30
- // The class event is extended through the event bus
31
- vehicleBus.on(vehicleHooks.created, (veh: V) => {
32
- this.vehicles.set(veh.id, veh);
33
- });
34
- vehicleBus.on(vehicleHooks.destroyed, (veh: V) => {
35
- this.vehicles.delete(veh.id);
36
- });
37
- if (destroyOnExit) {
38
- OnGameModeExit(() => {
39
- this.vehicles.forEach((v) => v.destroy());
40
- this.vehicles.clear();
41
- });
42
- }
43
- OnVehicleDamageStatusUpdate((vehicleid, playerid): number => {
44
- const v = this.findVehicleById(vehicleid);
45
- if (!v) return 0;
46
- const p = this.findPlayerById(playerid);
47
- if (!p) return 0;
48
- const pFn = promisifyCallback(
49
- this,
50
- "onDamageStatusUpdate",
51
- "OnVehicleDamageStatusUpdate"
52
- );
53
- return pFn(v, p);
54
- });
55
- OnVehicleDeath((vehicleid, killerid): number => {
56
- const v = this.findVehicleById(vehicleid);
57
- if (!v) return 0;
58
- const k = this.findPlayerById(killerid);
59
- if (!k) return 0;
60
- const pFn = promisifyCallback(this, "onDeath", "OnVehicleDeath");
61
- return pFn(v, k);
62
- });
63
- OnVehicleMod((playerid, vehicleid, componentid): number => {
64
- const p = this.findPlayerById(playerid);
65
- if (!p) return 1;
66
- const v = this.findVehicleById(vehicleid);
67
- if (!v) return 1;
68
- const pFn = promisifyCallback(this, "onMod", "OnVehicleMod");
69
- return pFn(p, v, componentid);
70
- });
71
- OnVehiclePaintjob((playerid, vehicleid, paintjobid): number => {
72
- const p = this.findPlayerById(playerid);
73
- if (!p) return 1;
74
- const v = this.findVehicleById(vehicleid);
75
- if (!v) return 1;
76
- const pFn = promisifyCallback(this, "onPaintjob", "OnVehiclePaintjob");
77
- return pFn(p, v, paintjobid);
78
- });
79
- OnVehicleRespray((playerid, vehicleid, colour1, colour2): number => {
80
- const p = this.findPlayerById(playerid);
81
- if (!p) return 1;
82
- const v = this.findVehicleById(vehicleid);
83
- if (!v) return 1;
84
- const pFn = promisifyCallback(this, "onRespray", "OnVehicleRespray");
85
- return pFn(p, v, colour1, colour2);
86
- });
87
- OnVehicleSirenStateChange((playerid, vehicleid, newstate): number => {
88
- const p = this.findPlayerById(playerid);
89
- if (!p) return 0;
90
- const v = this.findVehicleById(vehicleid);
91
- if (!v) return 0;
92
- const pFn = promisifyCallback(
93
- this,
94
- "onSirenStateChange",
95
- "OnVehicleSirenStateChange"
96
- );
97
- return pFn(p, v, Boolean(newstate));
98
- });
99
- OnVehicleSpawn((vehicleid): number => {
100
- const v = this.findVehicleById(vehicleid);
101
- if (!v) return 1;
102
- const pFn = promisifyCallback(this, "onSpawn", "OnVehicleSpawn");
103
- return pFn(v);
104
- });
105
- OnVehicleStreamIn((vehicleid, forplayerid): number => {
106
- const v = this.findVehicleById(vehicleid);
107
- if (!v) return 0;
108
- const p = this.findPlayerById(forplayerid);
109
- if (!p) return 0;
110
- const pFn = promisifyCallback(this, "onStreamIn", "OnVehicleStreamIn");
111
- return pFn(v, p);
112
- });
113
- OnVehicleStreamOut((vehicleid, forplayerid): number => {
114
- const v = this.findVehicleById(vehicleid);
115
- if (!v) return 0;
116
- const p = this.findPlayerById(forplayerid);
117
- if (!p) return 0;
118
- const pFn = promisifyCallback(this, "onStreamOut", "OnVehicleStreamOut");
119
- return pFn(v, p);
120
- });
121
- OnPlayerEnterVehicle((playerid, vehicleid, ispassenger): number => {
122
- const p = this.findPlayerById(playerid);
123
- if (!p) return 0;
124
- const v = this.findVehicleById(vehicleid);
125
- if (!v) return 0;
126
- const pFn = promisifyCallback(
127
- this,
128
- "onPlayerEnter",
129
- "OnPlayerEnterVehicle"
130
- );
131
- return pFn(p, v, Boolean(ispassenger));
132
- });
133
- OnPlayerExitVehicle((playerid, vehicleid): number => {
134
- const p = this.findPlayerById(playerid);
135
- if (!p) return 0;
136
- const v = this.findVehicleById(vehicleid);
137
- if (!v) return 0;
138
- const pFn = promisifyCallback(
139
- this,
140
- "onPlayerExit",
141
- "OnPlayerExitVehicle"
142
- );
143
- return pFn(p, v);
144
- });
145
- OnNPCEnterVehicle((vehicleid, seatid): number => {
146
- const v = this.findVehicleById(vehicleid);
147
- if (!v) return 0;
148
- const pFn = promisifyCallback(this, "onNpcEnter", "OnNPCEnterVehicle");
149
- return pFn(v, seatid);
150
- });
151
- OnNPCExitVehicle(promisifyCallback(this, "onNpcExit", "OnNPCExitVehicle"));
152
- OnTrailerUpdate((playerid, vehicleid): number => {
153
- const p = this.findPlayerById(playerid);
154
- if (!p) return 0;
155
- const v = this.findVehicleById(vehicleid);
156
- if (!v) return 0;
157
- const pFn = promisifyCallback(this, "onTrailerUpdate");
158
- return pFn(p, v);
159
- });
160
- }
161
-
162
- onDamageStatusUpdate?(vehicle: V, player: P): TCommonCallback;
163
- onDeath?(vehicle: V, killer: P): TCommonCallback;
164
- onMod?(player: P, vehicle: V, componentid: number): TCommonCallback;
165
- onPaintjob?(player: P, vehicle: V, paintjobid: number): TCommonCallback;
166
- onRespray?(
167
- player: P,
168
- vehicle: V,
169
- colour1: number,
170
- colour2: number
171
- ): TCommonCallback;
172
- onSirenStateChange?(
173
- player: P,
174
- vehicle: V,
175
- newstate: boolean
176
- ): TCommonCallback;
177
- onSpawn?(vehicle: V): TCommonCallback;
178
- onStreamIn?(vehicle: V, forplayer: P): TCommonCallback;
179
- onStreamOut?(vehicle: V, forplayer: P): TCommonCallback;
180
- onPlayerEnter?(player: P, vehicle: V, isPassenger: boolean): TCommonCallback;
181
- onPlayerExit?(player: P, vehicle: V): TCommonCallback;
182
- onNpcEnter?(vehicle: V, seatid: number): TCommonCallback;
183
- onNpcExit?(): TCommonCallback;
184
- onTrailerUpdate?(player: P, vehicle: V): TCommonCallback;
185
-
186
- findVehicleById(vehicleid: number) {
187
- return this.vehicles.get(vehicleid);
188
- }
189
-
190
- private findPlayerById(playerid: number) {
191
- return this.players.get(playerid);
192
- }
193
-
194
- getVehiclesArr(): Array<V> {
195
- return [...this.vehicles.values()];
196
- }
197
-
198
- getVehiclesMap(): Map<number, V> {
199
- return this.vehicles;
200
- }
201
- }