AI Core
API başvurusuAI Core: server export’ları

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()

İmza
GetGarageSystem(): string | null
Lua
local system = exports['ai-core']:GetGarageSystem() -- string ya da nil

Parametreler

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

İmza
ImpoundVehicle(vehicle: number, by?: number): boolean
Lua
local 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

İmza
StoreVehicleInGarage(vehicle: number, garage?: string | null, by?: number): boolean
Lua
local 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

İmza
OpenGarage(source: number, garage?: string | null): boolean
Lua
local 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

İmza
GetGaragedVehicles(source: number, done: (vehicles: GaragedVehicle[] | null) => void): void
Lua
exports['ai-core']:GetGaragedVehicles(source, function(vehicles) end) -- liste ya da nil

Parametreler

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) };
});

Bu sayfada