From 80395391586457e591177e28e2d37da59db3277a Mon Sep 17 00:00:00 2001 From: uShifty <51722240+uShifty@users.noreply.github.com> Date: Sun, 4 May 2025 10:00:08 -0600 Subject: [PATCH] feat(package/getNearbyVehicles): Implement getNearbyVehicles (#8) --- package/shared/index.ts | 2 ++ .../resource/getNearbyVehicles/index.ts | 29 +++++++++++++++++++ package/shared/resource/index.ts | 3 +- 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 package/shared/resource/getNearbyVehicles/index.ts diff --git a/package/shared/index.ts b/package/shared/index.ts index 6d8f67a..6820388 100644 --- a/package/shared/index.ts +++ b/package/shared/index.ts @@ -1,5 +1,7 @@ export * from './resource'; +export const context: 'server' | 'client' = IsDuplicityVersion() ? 'server' : 'client'; + // https://www.raygesualdo.com/posts/flattening-object-keys-with-typescript-types/ export type FlattenObjectKeys, Key = keyof T> = Key extends string ? T[Key] extends Record diff --git a/package/shared/resource/getNearbyVehicles/index.ts b/package/shared/resource/getNearbyVehicles/index.ts new file mode 100644 index 0000000..a897fd6 --- /dev/null +++ b/package/shared/resource/getNearbyVehicles/index.ts @@ -0,0 +1,29 @@ +import { cache } from '../cache/index'; +import { context } from 'shared'; +import { Vector3 } from "@nativewrappers/client"; + +interface NearbyVehicle { + vehicle: number; + coords: Vector3; +} + +export function getNearbyVehicles(coords: Vector3, maxDistance: number = 2.0, includePlayerVehicle: boolean = false): NearbyVehicle[] { + const vehicles = GetGamePool('CVehicle'); + const nearbyVehicles: NearbyVehicle[] = []; + + for (const vehicle of vehicles) { + if (context === 'server' || !cache.vehicle || vehicle !== cache.vehicle || includePlayerVehicle) { + const vehicleCoords = Vector3.fromArray(GetEntityCoords(vehicle, true)); + const distance = vehicleCoords.distance(coords); + + if (distance < maxDistance && NetworkGetEntityIsNetworked(vehicle) ) { + nearbyVehicles.push({ + vehicle, + coords: vehicleCoords + }); + } + } + } + + return nearbyVehicles; +} diff --git a/package/shared/resource/index.ts b/package/shared/resource/index.ts index 711d413..49d336d 100644 --- a/package/shared/resource/index.ts +++ b/package/shared/resource/index.ts @@ -1,3 +1,4 @@ export * from './version'; export * from './cache'; -export * from './locale' +export * from './locale'; +export * from './getNearbyVehicles';