AI Core
API-ReferenzAI Core: Server-Exports

Fahrzeugschlüssel

Fahrzeugschlüssel geben, entfernen und prüfen, über das Schlüssel-Skript, das der Server nutzt.

Jeder Schlüssel-Aufruf läuft über ai-core, nie über die eigenen Exports eines Schlüssel-Skripts (ai-vehiclekeys eingeschlossen). ai-core leitet ihn an das aktive Schlüsselsystem weiter: das, das die Panel-Einstellung Key script (Schlüssel-Skript) wählt, oder das erste, das läuft. Wenn kein Schlüssel-Skript läuft, zählt jeder Spieler als Besitzer jedes Schlüssels.

Ein Fahrzeug wird entweder als Server-Entity-Handle angegeben (die Zahl, die CreateVehicleServerSetter oder spawnVehicle zurückgibt) oder als Kennzeichen-Text. Ein Kennzeichen wird zuerst getrimmt und in Großbuchstaben umgewandelt, sodass " ab12cde " und "AB12CDE" derselbe Schlüssel sind.

Jeder Schlüssel hat einen Zweck, der dem Schlüsselsystem sagt, warum der Spieler ihn bekommt. Manche Schlüsselsysteme behandeln sie unterschiedlich (ein gekauftes Fahrzeug bekommt ein neues Schlüssel-Item, ein Dienstfahrzeug einen fest im Zündschloss steckenden Schlüssel). Siehe KeyPurpose.

ZweckWann
purchaseDem Spieler gehört jetzt das Fahrzeug (Händler, Admin-Vergabe): ein neuer Schlüssel, ältere Kopien funktionieren nicht mehr.
garageEin eigenes Fahrzeug, das aus der Garage geholt wird: Der Besitzer hat den Schlüssel bereits.
jobEin Arbeitsfahrzeug für die Schicht.
rentalEin gemietetes Fahrzeug für die Mietdauer.
temporaryAlles andere Kurzlebige (Admin-Spawn, Probefahrt, Fahrzeug bei einem Überfall). Der Standard.

GiveVehicleKeys

Gibt einem Spieler die Schlüssel eines Fahrzeugs.

Seite: Server · Wartet: nein · Lib: vehicleKeys.give (und spawnVehicle({ keysTo, purpose }) gibt sie für dich)

Signature
GiveVehicleKeys(source: number, vehicle: number | string, purpose?: KeyPurpose): void
Lua
exports['ai-core']:GiveVehicleKeys(source, vehicle, 'rental')

Parameter

Prop

Type

Rückgabe

Nichts. Der Aufruf tut nichts, wenn die Fahrzeug-Entity nicht existiert, das Kennzeichen leer ist, source keine Zahl ist oder kein Schlüsselsystem läuft. Ein Fehler des Schlüsselsystems wird geloggt, nicht geworfen.

Beispiel

import { onClientCallback, resourceExport, spawnVehicle } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";

const core = resourceExport("ai-core");
const SPAWN = { x: -1023.5, y: -2694.1, z: 13.9, heading: 150 };

onClientCallback("myscript:rentScooter", { lock: true }, async (source) => {
  if (!core.RemoveMoney(source, "cash", 100, "scooter_rental")) return fail("NOT_ENOUGH_MONEY");
  const vehicle = await spawnVehicle({ model: "faggio", coords: SPAWN, asker: source });
  if (!vehicle) {
    core.AddMoney(source, "cash", 100, "scooter_rental_refund");
    return fail("SPAWN_FAILED");
  }
  core.GiveVehicleKeys(source, vehicle, "rental");
  return { ok: true };
});

Ein frisch erstelltes Fahrzeug hat auf dem Server kein Kennzeichen, bis der Client seines Besitzers es synchronisiert hat. Übergib die Entity, kein Kennzeichen, das du direkt nach dem Erstellen gelesen hast; spawnVehicle der Lib wartet auf das Kennzeichen und kann die Schlüssel selbst geben (keysTo, purpose).

RemoveVehicleKeys

Nimmt einem Spieler die Schlüssel eines Fahrzeugs weg.

Seite: Server · Wartet: nein · Lib: vehicleKeys.remove

Signature
RemoveVehicleKeys(source: number, vehicle: number | string): void
Lua
exports['ai-core']:RemoveVehicleKeys(source, 'AB12CDE')

Parameter

Prop

Type

Rückgabe

Nichts. Dieselben stillen Fälle wie bei GiveVehicleKeys.

Beispiel

import { resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

/** Die Miete ist vorbei: Erst gehen die Schlüssel, dann der Roller. */
export function endRental(source: number, vehicle: number): void {
  core.RemoveVehicleKeys(source, vehicle);
  if (DoesEntityExist(vehicle)) DeleteEntity(vehicle);
}

Entferne die Schlüssel, bevor du das Fahrzeug löschst. Manche Schlüsselsysteme lesen das Kennzeichen von der Entity, was fehlschlägt, sobald sie weg ist.

HasVehicleKeys

Ob ein Spieler die Schlüssel eines Fahrzeugs hat.

Seite: Server · Wartet: nein · Lib: vehicleKeys.has

Signature
HasVehicleKeys(source: number, vehicle: number | string): boolean
Lua
local has = exports['ai-core']:HasVehicleKeys(source, vehicle)

Parameter

Prop

Type

Rückgabe

boolean: true, wenn der Spieler die Schlüssel hat. Auch true, wenn kein Schlüsselsystem läuft, das Schlüsselsystem diese Frage nicht beantworten kann oder fehlschlägt, sodass ein fehlendes Schlüssel-Skript nie Spieler aussperrt. false, wenn der Spieler keinen Schlüssel hat, die Fahrzeug-Entity nicht existiert, das Kennzeichen leer ist oder source keine Zahl ist.

Beispiel

import { onClientCallback, resourceExport, vehicleNearPlayer } from "@aicore-fivem/lib/server";
import { fail, oneArg, readId } from "@aicore-fivem/lib/shared";

const core = resourceExport("ai-core");

// Den Kofferraum eines Autos neben dem Spieler zu öffnen braucht seine Schlüssel.
onClientCallback("myscript:openTrunk", { args: oneArg(readId) }, (source, netId) => {
  const vehicle = vehicleNearPlayer(source, netId, { metres: 4 });
  if (!vehicle) return fail("TOO_FAR");
  if (!core.HasVehicleKeys(source, vehicle)) return fail("NO_KEYS");
  return { ok: true };
});

Auf dieser Seite