Garaże
Odholowuj i odstawiaj pojazdy, otwieraj menu garażu i wyświetlaj pojazdy gracza w garażu przez skrypt garażu, którego używa serwer.
Wywołania garażu przechodzą przez ai-core, nigdy przez własne eksporty lub zdarzenia skryptu garażu (łącznie z ai-garages). ai-core przekazuje każde wywołanie do aktywnego skryptu garażu: tego, który wybiera ustawienie Garage script w panelu, albo pierwszego działającego (ai-garages, jg-advancedgarages, tgiann-realparking i inne z listy zgodności). Każdy skrypt odpowiada tylko na akcje, które naprawdę ma, więc każda akcja może odpowiedzieć false lub null przy jednym skrypcie i działać przy innym.
Pojazd to serwerowy uchwyt encji.
GetGarageSystem
Nazwa zasobu skryptu garażu, do którego ai-core przekazuje wywołania.
Strona: Serwer · Czeka: nie · Lib: garages.provider()
GetGarageSystem(): string | nulllocal system = exports['ai-core']:GetGarageSystem() -- string lub nilParametry
Brak.
Zwraca
string | null: nazwa zasobu skryptu garażu. null, gdy żaden nie działa.
Przykład
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
Wysyła pojazd ze świata na parking policyjny. Przy skryptach garażu, które mają tylko formularz odholowania na ekranie gracza, zamiast tego otwiera ten formularz dla gracza w by.
Strona: Serwer · Czeka: nie · Lib: garages.impound
ImpoundVehicle(vehicle: number, by?: number): booleanlocal taken = exports['ai-core']:ImpoundVehicle(vehicle, source)Parametry
Prop
Type
Zwraca
boolean: true, gdy skrypt garażu przejął pojazd (lub otworzył swój formularz). false, gdy nic go nie przejęło: nie działa żaden skrypt garażu, nie ma parkingu policyjnego, pojazd nie jest mu znany albo vehicle nie jest istniejącym pojazdem. Przy false pojazd nadal jest w świecie: usuń go sam, jeśli musi zniknąć.
Przykład
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
Odstawia pojazd ze świata do garażu, z jego stanem.
Strona: Serwer · Czeka: nie · Lib: garages.store
StoreVehicleInGarage(vehicle: number, garage?: string | null, by?: number): booleanlocal stored = exports['ai-core']:StoreVehicleInGarage(vehicle, 'legion', source)Parametry
Prop
Type
Zwraca
boolean: true, gdy skrypt garażu przejął pojazd. false, gdy nic go nie przejęło (brak skryptu garażu, brak akcji odstawienia, nieznany garaż, pojazd, który nie należy do skryptu) albo vehicle nie jest istniejącym pojazdem.
Przykład
import { onClientCallback, resourceExport, vehicleOf } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";
const core = resourceExport("ai-core");
// Parkingowy odstawia samochód, którym jedzie gracz, do najbliższego garażu.
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
Otwiera menu garażu aktywnego skryptu garażu dla gracza.
Strona: Serwer · Czeka: nie · Lib: garages.open
OpenGarage(source: number, garage?: string | null): booleanlocal opened = exports['ai-core']:OpenGarage(source, 'legion')Parametry
Prop
Type
Zwraca
boolean: true, gdy menu się otworzyło. false, gdy gracz nie jest online, nie działa żaden skrypt garażu albo nie ma menu, które da się otworzyć z zewnątrz.
Przykład
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
Pojazdy gracza trzymane przez skrypt garażu: w garażu albo na parkingu policyjnym.
Strona: Serwer · Czeka: nie (odpowiada przez done) · Lib: garages.stored(source) zwraca Promise
GetGaragedVehicles(source: number, done: (vehicles: GaragedVehicle[] | null) => void): voidexports['ai-core']:GetGaragedVehicles(source, function(vehicles) end) -- lista lub nilParametry
Prop
Type
Zwraca
Nic. done dostaje jeden wpis na pojazd z plate, model (lub null), garage (lub null) i impounded (GaragedVehicle) albo null, gdy gracz nie jest online, nie działa żaden skrypt garażu, nie umie wyświetlić pojazdów albo zawiódł. Bez funkcji jako done wywołanie nic nie robi.
Przykład
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");
// Okienko parkingu policyjnego wyświetla odholowane samochody gracza.
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) };
});