From 07cdcd5160e81875647841bb704f509af622742d Mon Sep 17 00:00:00 2001 From: Linden <65407488+thelindat@users.noreply.github.com> Date: Wed, 21 Feb 2024 13:56:03 +1100 Subject: [PATCH] fix(server/vehicle): store vehicles on resource stop --- server/player/index.ts | 6 +++--- server/vehicle/class.ts | 7 +++++-- server/vehicle/events.ts | 10 +--------- server/vehicle/index.ts | 10 ++++++---- 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/server/player/index.ts b/server/player/index.ts index 86ca02c1..bcaf30b7 100644 --- a/server/player/index.ts +++ b/server/player/index.ts @@ -1,6 +1,6 @@ -import 'player/loading'; -import 'player/events'; -import 'player/commands'; +import './loading'; +import './events'; +import './commands'; import { OxPlayer } from './class'; import { GetCharIdFromStateId } from './db'; diff --git a/server/vehicle/class.ts b/server/vehicle/class.ts index a367326d..d90a303e 100644 --- a/server/vehicle/class.ts +++ b/server/vehicle/class.ts @@ -86,7 +86,10 @@ export class OxVehicle extends ClassInterface { const vehicle = this.members[id]; if (!resource || resource === vehicle.script) { - if (vehicle.owner || vehicle.group) parameters.push(vehicle.#getSaveData()); + if (vehicle.owner || vehicle.group) { + vehicle.#stored = 'impound'; + parameters.push(vehicle.#getSaveData()); + } vehicle.despawn(); } @@ -111,7 +114,7 @@ export class OxVehicle extends ClassInterface { id?: number, vin?: string, owner?: number, - group?: string, + group?: string ) { super(); this.entity = entity; diff --git a/server/vehicle/events.ts b/server/vehicle/events.ts index e6f40fea..61c5a93d 100644 --- a/server/vehicle/events.ts +++ b/server/vehicle/events.ts @@ -1,14 +1,6 @@ import { OxVehicle } from './class'; -on('onResourceStop', (resource: string) => { - if (resource !== 'ox_core') return; - - const vehicles = OxVehicle.getAll(); - - for (const id in vehicles) { - vehicles[id].despawn(); - } -}); +on('onResourceStop', (resource: string) => OxVehicle.saveAll(resource)); on('entityRemoved', (entityId: number) => { const vehicle = OxVehicle.get(entityId); diff --git a/server/vehicle/index.ts b/server/vehicle/index.ts index b864726f..4e0b510b 100644 --- a/server/vehicle/index.ts +++ b/server/vehicle/index.ts @@ -2,10 +2,11 @@ import { OxVehicle } from './class'; import { CreateNewVehicle, GetStoredVehicleFromId, IsPlateAvailable, VehicleRow } from './db'; import { GetVehicleData } from '../../common/vehicles'; import { DEBUG } from '../../common/config'; +import type { Dict } from 'types'; import './class'; import './commands'; -import type { Dict } from 'types'; +import './events'; if (DEBUG) import('./parser'); @@ -20,7 +21,8 @@ export async function CreateVehicle( properties?: Dict; }), coords?: number | number[] | { x: number; y: number; z: number }, - heading?: number + heading?: number, + invokingScript = GetInvokingResource() ) { if (typeof data === 'string') data = { model: data }; @@ -68,7 +70,6 @@ export async function CreateVehicle( if (typeof coords === 'number') coords = GetEntityCoords(coords); else if (typeof coords === 'object' && !Array.isArray(coords)) coords = [coords.x || 0, coords.y || 0, coords.z || 0]; - const invokingScript = GetInvokingResource(); const entity = coords ? CreateVehicleServerSetter(data.model, networkType, coords[0], coords[1], coords[2], heading || 90) : 0; @@ -122,13 +123,14 @@ export async function CreateVehicle( } export async function SpawnVehicle(id: number, coords: number | number[], heading?: number) { + const invokingScript = GetInvokingResource(); const vehicle = await GetStoredVehicleFromId(id); if (!vehicle) return; vehicle.data = JSON.parse(vehicle.data as any); - return await CreateVehicle(vehicle, coords, heading); + return await CreateVehicle(vehicle, coords, heading, invokingScript); } exports('CreateVehicle', CreateVehicle);