Araçlar ve entity’ler
nearestVehicle, drivenVehicle, waitForEntity, entityFromNetId ve araç props yardımcıları - client’ta araç ve entity bulmak ve bir aracın görünümünü okumak ya da uygulamak.
Oyuncunun yakınındaki araçları bulmak, server’dan gelen network id’leri yerel entity’lere çevirmek ve bir aracın görünümünü okumak ya da uygulamak. Araç oluşturmak yalnızca server’dadır (Araçlar sayfasındaki spawnVehicle); yerel bir galeri (showroom) arabası PreviewVehicle’dır.
Araç bulmak
nearestVehicle
Yerel oyuncuya belirli bir mesafe içindeki en yakın araç. notOwn verilmedikçe oyuncunun oturduğu araç önceliklidir. Uymayan araçları atlamak için filter kullan; böylece oyuncunun arkasında durduğu bagaj, yanındaki daha yakın bir arabaya tercih edilir.
Taraf: Client · Bekler: hayır
nearestVehicle(metres: number, options?: { networked?: boolean; notOwn?: boolean; filter?: (vehicle: number) => boolean }): numberlocal vehicle = aiLib.nearestVehicle(metres, options) -- hiç yoksa 0Parametreler
Prop
Type
Seçenekler
Prop
Type
Dönüş değeri
number: araç handle’ı ya da metres içinde hiç yoksa 0.
Örnek
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" });
}Client’ın bildiği her aracı dolaşır; bu yüzden onu her karede değil, bir tuşa basıldığında ya da bir aksiyonda çağır. Aracı server’a bir network id olarak gönder; server onu vehicleFromNet ya da vehicleNearPlayer ile geri çevirir ve mesafeyi kontrol eder.
drivenVehicle
Yerel oyuncunun sürdüğü (sürücü koltuğunda oturduğu) araç.
Taraf: Client · Bekler: hayır
drivenVehicle(): number | falseLua karşılığı yok: aiLib.cache.seat == -1 and aiLib.cache.vehicle.
Dönüş değeri
number | false: oyuncu sürücüyse araç handle’ı; yayayken ya da yolcuyken false.
Örnek
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,
);Network id’lerinden entity’ler
Server entity’leri network id olarak gönderir. Bir client’ta entity henüz var olmayabilir (oyuncu uzaktadır ya da entity yeni oluşturulmuştur).
waitForEntity
Bir network id’nin entity’si bu client’ta var olana kadar bekler ve onu döndürür.
Taraf: Client · Bekler: evet (TypeScript’te Promise, Lua’da thread’i yield eder)
waitForEntity(netId: number, timeoutMs?: number): Promise<number>local entity = aiLib.waitForEntity(netId, timeout) -- bir thread içinde çağırParametreler
Prop
Type
Dönüş değeri
Promise<number>: yerel entity handle’ı ya da zaman aşımından sonra 0. Asla reddedilmez.
Örnek
import { onServerEvent, waitForEntity } from "@aicore-fivem/lib/client";
import { readId } from "@aicore-fivem/lib/shared";
// Server bir meslek aracı oluşturdu ve net id’sini gönderiyor.
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
Beklemeden, bir network id’nin şu anki yerel entity’si. İsteğe bağlı olarak entity tipini kontrol eder.
Taraf: Client · Bekler: hayır
entityFromNetId(netId: number, type?: 1 | 2 | 3): numberLua karşılığı yok: NetworkDoesEntityExistWithNetworkId(netId) and NetToEnt(netId) or 0.
Parametreler
Prop
Type
Dönüş değeri
number: entity handle’ı ya da bu client’ta yoksa veya type tipinde değilse 0.
Örnek
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);
});Araç görünümü
getVehicleProps
Bu client’ın görebildiği bir aracın tüm özelliklerini okur: plaka, renkler, modlar, ekstralar, neon, hasar. Aynı görünümü daha sonra geri koymak için sonucu sakla.
Taraf: Client · Bekler: hayır
getVehicleProps(vehicle: number): VehiclePropsLua karşılığı yok.
Parametreler
Prop
Type
Dönüş değeri
VehicleProps: v (format sürümü 1), model, plate (kırpılmış), plateIndex, colors, extraColors, customPrimary, customSecondary (RGB ya da null), wheelType, windowTint, livery, mods (mod tipine göre 0-49; aç/kapa modları 17-22, 1 ya da 0 olarak), xenonColor, neon (dört boolean), neonColor, tyreSmoke, extras (ekstra id’sine göre), dirt, engineHealth, bodyHealth.
Örnek
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" });
}Props oyuncunun client’ından gelir: server onları saklamadan önce ayrıştırmalı ve kontrol etmelidir (@aicore-fivem/lib/shared’dan toVehicleProps).
setVehicleProps
Kayıtlı özellikleri bir araca uygular. Yalnızca bu client’ın kontrol ettiği bir araçta çalışır; diğer oyuncular görünümü ağ üzerinden alır.
Taraf: Client · Bekler: hayır
setVehicleProps(vehicle: number, props: VehicleProps): voidLua karşılığı yok.
Parametreler
Prop
Type
Dönüş değeri
void.
Örnek
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);
},
);spawnVehicle({ props }) ile oluşturulan bir aracın görünümü sahip client’ta zaten ai-core tarafından uygulanır. setVehicleProps’a yalnızca kendi akışların için ihtiyacın olur.
setVehicleSetup
Yeni bir araca bir spawn kurulumu uygular: maksimum performans, renkler, livery, cam filmi, kir, motor açık. Yalnızca bu client’ın kontrol ettiği bir araçta çalışır.
Taraf: Client · Bekler: hayır
setVehicleSetup(vehicle: number, setup: VehicleSetup): voidLua karşılığı yok.
Parametreler
Prop
Type
VehicleSetup
Prop
Type
Tipi VehicleSetup’tır.
Dönüş değeri
void.
Örnek
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 }),
);
}ai-core üzerinden katmanlar
medical, appearance, gestures, seatbelt, fuel, mdt, radial, world ve inventory - sunucu hangi ölüm, kıyafet, emote, kemer, yakıt, MDT, radyal, hava ya da envanter script’ini çalıştırıyorsa ona ulaşan client çağrıları.
Sorgular ve yükleme
raycast, groundZ, locationName, vehicleLabel, waypoint, pedHeadshot, onShot ve request yükleyicileri - oyuna dünya hakkında sormak ve oyun varlıklarını yüklemek.