Garagen
Fahrzeuge beschlagnahmen und einparken, ein Garagenmenü öffnen und die eingeparkten Fahrzeuge eines Spielers auflisten, über das Garagen-Skript, das der Server nutzt.
Garagen-Aufrufe laufen über ai-core, nie über die eigenen Exports oder Events eines Garagen-Skripts (ai-garages eingeschlossen). ai-core leitet jeden Aufruf an das aktive Garagen-Skript weiter: das, das die Panel-Einstellung Garage script (Garagen-Skript) wählt, oder das erste, das läuft (ai-garages, jg-advancedgarages, tgiann-realparking und die anderen aus der Kompatibilitätsliste). Jedes Skript beantwortet nur die Aktionen, die es wirklich hat, sodass jede Aktion mit einem Skript false oder null antworten und mit einem anderen funktionieren kann.
Ein Fahrzeug ist ein Server-Entity-Handle.
GetGarageSystem
Der Ressourcenname des Garagen-Skripts, an das ai-core weiterleitet.
Seite: Server · Wartet: nein · Lib: garages.provider()
GetGarageSystem(): string | nulllocal system = exports['ai-core']:GetGarageSystem() -- String oder nilParameter
Keine.
Rückgabe
string | null: der Ressourcenname des Garagen-Skripts. null, wenn keines läuft.
Beispiel
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
Schickt ein Fahrzeug in der Welt zur Beschlagnahmestelle. Bei Garagen-Skripten, die nur ein Beschlagnahme-Formular auf dem Bildschirm des Spielers haben, öffnet es stattdessen dieses Formular für den Spieler in by.
Seite: Server · Wartet: nein · Lib: garages.impound
ImpoundVehicle(vehicle: number, by?: number): booleanlocal taken = exports['ai-core']:ImpoundVehicle(vehicle, source)Parameter
Prop
Type
Rückgabe
boolean: true, wenn das Garagen-Skript das Fahrzeug übernommen (oder sein Formular geöffnet) hat. false, wenn nichts es übernommen hat: Kein Garagen-Skript läuft, es hat keine Beschlagnahme, das Fahrzeug ist ihm unbekannt, oder vehicle ist kein existierendes Fahrzeug. Bei false ist das Fahrzeug noch in der Welt: Lösche es selbst, wenn es weg muss.
Beispiel
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
Stellt ein Fahrzeug aus der Welt mit seinem Zustand in eine Garage.
Seite: Server · Wartet: nein · Lib: garages.store
StoreVehicleInGarage(vehicle: number, garage?: string | null, by?: number): booleanlocal stored = exports['ai-core']:StoreVehicleInGarage(vehicle, 'legion', source)Parameter
Prop
Type
Rückgabe
boolean: true, wenn das Garagen-Skript das Fahrzeug übernommen hat. false, wenn nichts es übernommen hat (kein Garagen-Skript, keine Einpark-Aktion, unbekannte Garage, ein Fahrzeug, das dem Skript nicht gehört) oder vehicle kein existierendes Fahrzeug ist.
Beispiel
import { onClientCallback, resourceExport, vehicleOf } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";
const core = resourceExport("ai-core");
// Ein Parkservice stellt das Auto, das der Spieler fährt, in die nächste Garage.
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
Öffnet das Garagenmenü des aktiven Garagen-Skripts für einen Spieler.
Seite: Server · Wartet: nein · Lib: garages.open
OpenGarage(source: number, garage?: string | null): booleanlocal opened = exports['ai-core']:OpenGarage(source, 'legion')Parameter
Prop
Type
Rückgabe
boolean: true, wenn sich das Menü geöffnet hat. false, wenn der Spieler nicht online ist, kein Garagen-Skript läuft oder es kein Menü hat, das von außen geöffnet werden kann.
Beispiel
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
Die Fahrzeuge eines Spielers, die das Garagen-Skript verwahrt: in einer Garage oder in der Beschlagnahmestelle.
Seite: Server · Wartet: nein (antwortet über done) · Lib: garages.stored(source) gibt ein Promise zurück
GetGaragedVehicles(source: number, done: (vehicles: GaragedVehicle[] | null) => void): voidexports['ai-core']:GetGaragedVehicles(source, function(vehicles) end) -- Liste oder nilParameter
Prop
Type
Rückgabe
Nichts. done erhält einen Eintrag pro Fahrzeug mit plate, model (oder null), garage (oder null) und impounded (GaragedVehicle), oder null, wenn der Spieler nicht online ist, kein Garagen-Skript läuft, es keine Fahrzeuge auflisten kann oder fehlgeschlagen ist. Ohne eine Funktion als done tut der Aufruf nichts.
Beispiel
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");
// Der Schalter der Beschlagnahmestelle listet die beschlagnahmten Autos des Spielers.
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) };
});