Pojazdy i encje
nearestVehicle, drivenVehicle, waitForEntity, entityFromNetId i funkcje właściwości pojazdów - szukanie pojazdów i encji na kliencie oraz odczyt albo nakładanie wyglądu pojazdu.
Szukanie pojazdów w pobliżu gracza, zamiana id sieciowych z serwera w lokalne encje oraz odczyt albo nakładanie wyglądu pojazdu. Spawnowanie pojazdu jest tylko na serwerze (spawnVehicle na stronie Pojazdy); lokalne auto w salonie to PreviewVehicle.
Szukanie pojazdów
nearestVehicle
Najbliższy pojazd w danej odległości od lokalnego gracza. Pierwszeństwo ma pojazd, w którym siedzi gracz, chyba że notOwn. Użyj filter, żeby pominąć pojazdy, które nie pasują, więc bagażnik, za którym stoi gracz, wygrywa z bliższym autem obok.
Strona: Klient · Czeka: nie
nearestVehicle(metres: number, options?: { networked?: boolean; notOwn?: boolean; filter?: (vehicle: number) => boolean }): numberlocal vehicle = aiLib.nearestVehicle(metres, options) -- 0, gdy nie ma żadnegoParametry
Prop
Type
Opcje
Prop
Type
Zwracana wartość
number: uchwyt pojazdu albo 0, gdy żaden nie jest w odległości metres.
Przykład
import { callAction, nearestVehicle, notify } from "@aicore-fivem/lib/client";
export async function impound(): Promise<void> {
const vehicle = nearestVehicle(5, { notOwn: true, filter: (v) => GetPedInVehicleSeat(v, -1) === 0 });
if (!vehicle) return notify("No empty vehicle near", "error");
await callAction("mypolice:impound", [NetworkGetNetworkIdFromEntity(vehicle)], { fallback: "IMPOUND_FAILED" });
}Przechodzi po każdym pojeździe, który zna klient, więc wywołuj ją przy naciśnięciu klawisza albo akcji, nie co klatkę. Wyślij pojazd do serwera jako id sieciowe; serwer zamienia je z powrotem przez vehicleFromNet albo vehicleNearPlayer i sprawdza odległość.
drivenVehicle
Pojazd, którym kieruje lokalny gracz (siedzi na miejscu kierowcy).
Strona: Klient · Czeka: nie
drivenVehicle(): number | falseBrak odpowiednika w Lua: aiLib.cache.seat == -1 and aiLib.cache.vehicle.
Zwracana wartość
number | false: uchwyt pojazdu, gdy gracz jest kierowcą, false pieszo albo jako pasażer.
Przykład
import { drivenVehicle, notify } from "@aicore-fivem/lib/client";
RegisterCommand(
"flip",
() => {
const vehicle = drivenVehicle();
if (vehicle === false) return notify("You must drive a vehicle", "error");
SetVehicleOnGroundProperly(vehicle);
},
false,
);Encje z id sieciowych
Serwer wysyła encje jako id sieciowe. Na kliencie encja może jeszcze nie istnieć (gracz jest daleko albo właśnie ją utworzono).
waitForEntity
Czeka, aż encja o danym id sieciowym będzie istnieć na tym kliencie, i ją zwraca.
Strona: Klient · Czeka: tak (Promise w TypeScript, w Lua wstrzymuje wątek)
waitForEntity(netId: number, timeoutMs?: number): Promise<number>local entity = aiLib.waitForEntity(netId, timeout) -- wywołuj wewnątrz wątkuParametry
Prop
Type
Zwracana wartość
Promise<number>: uchwyt lokalnej encji albo 0 po upływie limitu czasu. Nigdy się nie odrzuca.
Przykład
import { onServerEvent, waitForEntity } from "@aicore-fivem/lib/client";
import { readId } from "@aicore-fivem/lib/shared";
// Serwer zespawnował pojazd pracy i wysyła jego id sieciowe.
onServerEvent(
"myjob:vehicle",
{ args: ([id]) => { const netId = readId(id); return netId === null ? null : [netId]; } },
async (netId) => {
const vehicle = await waitForEntity(netId);
if (vehicle) SetVehicleFuelLevel(vehicle, 100);
},
);entityFromNetId
Lokalna encja o danym id sieciowym w tej chwili, bez czekania. Opcjonalnie sprawdza typ encji.
Strona: Klient · Czeka: nie
entityFromNetId(netId: number, type?: 1 | 2 | 3): numberBrak odpowiednika w Lua: NetworkDoesEntityExistWithNetworkId(netId) and NetToEnt(netId) or 0.
Parametry
Prop
Type
Zwracana wartość
number: uchwyt encji albo 0, gdy nie ma jej na tym kliencie albo nie jest typu type.
Przykład
import { entityFromNetId, EntityState, stateBoolean } from "@aicore-fivem/lib/client";
const sirens = new EntityState("sirensMuted", stateBoolean);
sirens.onChange((netId, muted) => {
const vehicle = entityFromNetId(netId, 2);
if (vehicle) SetVehicleHasMutedSirens(vehicle, muted === true);
});Wygląd pojazdu
getVehicleProps
Czyta każdą właściwość pojazdu, który widzi ten klient: tablica, kolory, modyfikacje, dodatki, neony, uszkodzenia. Zapisz wynik, żeby później przywrócić ten sam wygląd.
Strona: Klient · Czeka: nie
getVehicleProps(vehicle: number): VehiclePropsBrak odpowiednika w Lua.
Parametry
Prop
Type
Zwracana wartość
VehicleProps: v (wersja formatu 1), model, plate (przycięta), plateIndex, colors, extraColors, customPrimary, customSecondary (RGB albo null), wheelType, windowTint, livery, mods (według typu modyfikacji 0-49; modyfikacje przełączane 17-22 jako 1 albo 0), xenonColor, neon (cztery wartości logiczne), neonColor, tyreSmoke, extras (według id dodatku), dirt, engineHealth, bodyHealth.
Przykład
import { callAction, drivenVehicle, getVehicleProps } from "@aicore-fivem/lib/client";
export async function saveLook(): Promise<void> {
const vehicle = drivenVehicle();
if (vehicle === false) return;
await callAction("mygarage:saveProps", [NetworkGetNetworkIdFromEntity(vehicle), getVehicleProps(vehicle)], { fallback: "SAVE_FAILED" });
}Właściwości pochodzą z klienta gracza: serwer musi je sparsować i sprawdzić (toVehicleProps z @aicore-fivem/lib/shared) przed zapisaniem.
setVehicleProps
Nakłada zapisane właściwości na pojazd. Działa tylko na pojeździe, który kontroluje ten klient; inni gracze dostają wygląd przez sieć.
Strona: Klient · Czeka: nie
setVehicleProps(vehicle: number, props: VehicleProps): voidBrak odpowiednika w Lua.
Parametry
Prop
Type
Zwracana wartość
void.
Przykład
import { onServerEvent, setVehicleProps, waitForEntity } from "@aicore-fivem/lib/client";
import { readId, toVehicleProps } from "@aicore-fivem/lib/shared";
onServerEvent(
"mygarage:look",
{
args: ([id, raw]) => {
const netId = readId(id);
const props = toVehicleProps(raw);
return netId === null || props === null ? null : [netId, props];
},
},
async (netId, props) => {
const vehicle = await waitForEntity(netId);
if (vehicle && NetworkHasControlOfEntity(vehicle)) setVehicleProps(vehicle, props);
},
);Pojazd zespawnowany przez spawnVehicle({ props }) ma już wygląd nałożony przez ai-core na kliencie właściciela. setVehicleProps potrzebujesz tylko dla własnych przebiegów.
setVehicleSetup
Nakłada konfigurację spawnu na nowy pojazd: maksymalne osiągi, kolory, malowanie, przyciemnienie szyb, brud, włączony silnik. Działa tylko na pojeździe, który kontroluje ten klient.
Strona: Klient · Czeka: nie
setVehicleSetup(vehicle: number, setup: VehicleSetup): voidBrak odpowiednika w Lua.
Parametry
Prop
Type
VehicleSetup
Prop
Type
Typ to VehicleSetup.
Zwracana wartość
void.
Przykład
import { PreviewVehicle, setVehicleSetup } from "@aicore-fivem/lib/client";
const preview = new PreviewVehicle();
export function showMaxed(model: string): Promise<number> {
return preview.show(model, { x: -44.4, y: -1097.1, z: 26.4, heading: 120 }, (vehicle) =>
setVehicleSetup(vehicle, { maxed: true, primary: [20, 200, 120], windowTint: 1 }),
);
}Warstwy przez ai-core
medical, appearance, gestures, seatbelt, fuel, mdt, radial, world i inventory - wywołania klienta, które docierają do dowolnego skryptu śmierci, ubrań, emotek, pasów, paliwa, MDT, menu radialnego, pogody albo ekwipunku, którego używa serwer.
Sondy i wczytywanie
raycast, groundZ, locationName, vehicleLabel, waypoint, pedHeadshot, onShot i loadery request - pytanie gry o świat i wczytywanie zasobów gry.