Garajlar
Sunucunun çalıştırdığı garaj script’i hangisiyse onun üzerinden araçları çek ve park et, bir garaj menüsü aç ve bir oyuncunun garajdaki araçlarını listele.
Garaj çağrıları ai-core üzerinden gider, asla bir garaj script’inin kendi export’ları ya da event’leri üzerinden değil (ai-garages dahil). ai-core her çağrıyı aktif garaj script’ine iletir: panelin Garage script ayarının seçtiği ya da çalışan ilk script (ai-garages, jg-advancedgarages, tgiann-realparking ve uyumluluk listesindeki diğerleri). Her script yalnızca gerçekten sahip olduğu aksiyonları cevaplar; bu yüzden herhangi bir aksiyon bir script’le false ya da null cevabı verip başka biriyle çalışabilir.
Araç bir server entity handle’ıdır.
GetGarageSystem
ai-core’un ilettiği garaj script’inin resource adı.
Taraf: Server · Bekler: hayır · Lib: garages.provider()
GetGarageSystem(): string | nulllocal system = exports['ai-core']:GetGarageSystem() -- string ya da nilParametreler
Yok.
Dönüş değeri
string | null: garaj script’inin resource adı. Hiçbiri çalışmıyorsa null.
Örnek
import { addCommand, resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
addCommand("garagesystem", { help: "Shows the garage script in use", restricted: true }, () => {
console.log(core.GetGarageSystem() ?? "none");
});ImpoundVehicle
Dünyadaki bir aracı çekilmiş araç otoparkına gönderir. Yalnızca oyuncunun ekranında bir çekme formu olan garaj script’lerinde bunun yerine o formu by içindeki oyuncu için açar.
Taraf: Server · Bekler: hayır · Lib: garages.impound
ImpoundVehicle(vehicle: number, by?: number): booleanlocal taken = exports['ai-core']:ImpoundVehicle(vehicle, source)Parametreler
Prop
Type
Dönüş değeri
boolean: garaj script’i aracı devraldığında (ya da formunu açtığında) true. Hiçbir şey almadığında false: hiçbir garaj script’i çalışmıyor, çekme özelliği yok, araç onun bildiği biri değil ya da vehicle mevcut bir araç değil. false durumunda araç hâlâ dünyadadır: gitmesi gerekiyorsa kendin sil.
Örnek
import { onClientCallback, resourceExport, vehicleNearPlayer } from "@aicore-fivem/lib/server";
import { fail, oneArg, readId } from "@aicore-fivem/lib/shared";
const core = resourceExport("ai-core");
onClientCallback("myscript:impound", { args: oneArg(readId) }, (source, netId) => {
if (core.GetDutyJob(source) !== "police") return fail("NOT_POLICE");
const vehicle = vehicleNearPlayer(source, netId, { metres: 5 });
if (!vehicle) return fail("TOO_FAR");
if (!core.ImpoundVehicle(vehicle, source)) DeleteEntity(vehicle);
return { ok: true };
});StoreVehicleInGarage
Dünyadaki bir aracı durumuyla birlikte bir garaja koyar.
Taraf: Server · Bekler: hayır · Lib: garages.store
StoreVehicleInGarage(vehicle: number, garage?: string | null, by?: number): booleanlocal stored = exports['ai-core']:StoreVehicleInGarage(vehicle, 'legion', source)Parametreler
Prop
Type
Dönüş değeri
boolean: garaj script’i aracı aldığında true. Hiçbir şey almadığında (garaj script’i yok, park aksiyonu yok, bilinmeyen garaj, script’in sahip olmadığı bir araç) ya da vehicle mevcut bir araç değilse false.
Örnek
import { onClientCallback, resourceExport, vehicleOf } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";
const core = resourceExport("ai-core");
// Bir vale oyuncunun sürdüğü arabayı en yakın garaja park eder.
onClientCallback("myscript:valetStore", (source) => {
const vehicle = vehicleOf(source, { driver: true });
if (!vehicle) return fail("NOT_DRIVING");
return core.StoreVehicleInGarage(vehicle, null, source) ? { ok: true } : fail("STORE_FAILED");
});OpenGarage
Bir oyuncu için aktif garaj script’inin garaj menüsünü açar.
Taraf: Server · Bekler: hayır · Lib: garages.open
OpenGarage(source: number, garage?: string | null): booleanlocal opened = exports['ai-core']:OpenGarage(source, 'legion')Parametreler
Prop
Type
Dönüş değeri
boolean: menü açıldığında true. Oyuncu çevrimiçi değilse, hiçbir garaj script’i çalışmıyorsa ya da dışarıdan açılabilen bir menüsü yoksa false.
Örnek
import { onClientCallback, resourceExport, near } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";
const core = resourceExport("ai-core");
const MOTEL_GARAGE = { x: 273.1, y: -343.9, z: 44.9 };
onClientCallback("myscript:motelGarage", { guards: [near(MOTEL_GARAGE, 3)] }, (source) =>
core.OpenGarage(source, "motel") ? { ok: true } : fail("GARAGE_FAILED"),
);GetGaragedVehicles
Garaj script’inin tuttuğu bir oyuncunun araçları: bir garajda ya da çekilmiş araç otoparkında.
Taraf: Server · Bekler: hayır (done ile cevap verir) · Lib: garages.stored(source) bir Promise döndürür
GetGaragedVehicles(source: number, done: (vehicles: GaragedVehicle[] | null) => void): voidexports['ai-core']:GetGaragedVehicles(source, function(vehicles) end) -- liste ya da nilParametreler
Prop
Type
Dönüş değeri
Hiçbir şey. done araç başına plate, model (ya da null), garage (ya da null) ve impounded içeren bir kayıt alır (GaragedVehicle); oyuncu çevrimiçi değilse, hiçbir garaj script’i çalışmıyorsa, araçları listeleyemiyorsa ya da başarısız olduysa null alır. done olarak bir fonksiyon verilmezse çağrı hiçbir şey yapmaz.
Örnek
import { onClientCallback, resourceExport } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";
import type { GaragedVehicle } from "@aicore-fivem/shared";
const core = resourceExport("ai-core");
// Çekilmiş araç masası oyuncunun çekilmiş arabalarını listeler.
onClientCallback("myscript:impoundList", async (source) => {
const list = await new Promise<GaragedVehicle[] | null>((resolve) => core.GetGaragedVehicles(source, resolve));
if (!list) return fail("GARAGE_UNKNOWN");
return { ok: true, plates: list.filter((v) => v.impounded).map((v) => v.plate) };
});