AI Core
API-ReferenzLib: Shared und fivem

Fahrzeuge

plateOf, normalizePlate, vehicleTypeOfClass, toVehicleProps und toVehicleSetup: Kennzeichen als Schlüssel, Spawn-Typen und Fahrzeug-Aussehen aus nicht vertrauenswürdigen Daten.

TypeScript
import { plateOf } from "@aicore-fivem/lib/fivem"; // auch auf /client und /server
import { normalizePlate, vehicleTypeOfClass, toVehicleProps, toVehicleSetup } from "@aicore-fivem/lib/shared";

Kennzeichen

GTA füllt Kennzeichen mit Leerzeichen auf 8 Zeichen auf (" AI 1 "). Jedes Skript, das Daten pro Kennzeichen hält (Schlüssel, Sprit, Garagen), nutzt das getrimmte, großgeschriebene Kennzeichen als Schlüssel, damit dasselbe Fahrzeug überall passt.

plateOf

Das Kennzeichen eines Fahrzeugs, wie Schlüssel es nutzen: von der Entity gelesen, getrimmt, großgeschrieben.

Seite: Client und Server · Wartet: nein

Signatur
plateOf(vehicle: number): string

Lua: kein Zwilling; nutze GetVehicleNumberPlateText(vehicle):match('^%s*(.-)%s*$'):upper().

Parameter

Prop

Type

Rückgabewert

string: das Kennzeichen, getrimmt und großgeschrieben.

Beispiel

resource/server/index.ts
import { plateOf, vehicleOf } from "@aicore-fivem/lib/server";

function plateOfPlayerVehicle(source: number): string | null {
  const vehicle = vehicleOf(source);
  return vehicle === 0 ? null : plateOf(vehicle);
}

normalizePlate

Dasselbe Trimmen und Großschreiben für ein Kennzeichen, das du schon als Text hast (von einem Spieler eingegeben, in einer Datenbank gespeichert, von einem anderen Skript gesendet).

Seite: Client, Server und NUI · Wartet: nein

Signatur
normalizePlate(plate: string): string

Lua: kein Zwilling; nutze plate:match('^%s*(.-)%s*$'):upper().

Parameter

Prop

Type

Rückgabewert

string: getrimmt, großgeschrieben.

Beispiel

import { normalizePlate } from "@aicore-fivem/lib/shared";

normalizePlate("  ai 123 "); // "AI 123"

Spawnen

vehicleTypeOfClass

Wandelt eine GTA-Fahrzeugklasse (GetVehicleClassFromName) in den Typ um, den CreateVehicleServerSetter braucht: "bike", "boat", "heli", "plane", "train" oder "automobile". spawnVehicle der Lib erledigt das für dich; nutze es nur, wenn du CreateVehicleServerSetter selbst aufrufst.

Seite: Client, Server und NUI · Wartet: nein

Signatur
vehicleTypeOfClass(vehicleClass: number): string

Lua: kein Zwilling.

Parameter

Prop

Type

Rückgabewert

string: der Spawn-Typ. Jede oben nicht aufgeführte Klasse ist "automobile".

Beispiel

resource/client/index.ts
import { vehicleTypeOfClass } from "@aicore-fivem/lib/shared";

const type = vehicleTypeOfClass(GetVehicleClassFromName("frogger")); // "heli"

GetVehicleClassFromName ist ein Client-Native. Der Server erfährt den Typ eines Modells von einem Client (spawnVehicle der Lib fragt den Client von ai-core für dich).

Aussehen aus nicht vertrauenswürdigen Daten

toVehicleProps

Prüft gespeicherte oder empfangene Fahrzeug-Props und gibt ein sauberes VehicleProps-Objekt zurück, oder null, wenn die Daten nicht diese Form haben. Fehlende optionale Teile bekommen Standardwerte (Serien-Mods, keine Lackierung, volle Gesundheit); unbekannte Felder werden verworfen; das Kennzeichen wird auf 8 Zeichen gekürzt.

Seite: Client, Server und NUI · Wartet: nein

Signatur
toVehicleProps(value: unknown): VehicleProps | null

Lua: kein Zwilling.

Parameter

Prop

Type

Rückgabewert

VehicleProps, oder null, wenn value kein Objekt ist, v nicht 1 ist, model oder plate fehlt oder eines von colors, extraColors, neonColor, tyreSmoke, mods, extras, neon fehlt oder die falsche Länge hat.

Beispiel

resource/server/index.ts
import { optionalExport } from "@aicore-fivem/lib/server";
import { toVehicleProps } from "@aicore-fivem/lib/shared";

function storedColors(vehicleId: number): [number, number] | null {
  const vehicle = optionalExport("ai-vehicles")?.GetVehicle(vehicleId);
  const props = toVehicleProps(vehicle?.props);
  return props ? props.colors : null;
}

toVehicleSetup

Prüft ein empfangenes VehicleSetup Feld für Feld: Falsche Felder werden verworfen, die richtigen behalten. Nutze es auf einem Setup, das von einem Client oder einer anderen Ressource kommt, bevor du es an spawnVehicle übergibst.

Seite: Client, Server und NUI · Wartet: nein

Signatur
toVehicleSetup(value: unknown): VehicleSetup | null

Lua: kein Zwilling.

Parameter

Prop

Type

Rückgabewert

VehicleSetup mit nur den gültigen Feldern (Farben 0-255, livery 0-100, windowTint 0-6, dirt 0-15; maxed und engineOn nur, wenn genau true). null, wenn value kein Objekt ist.

Beispiel

import { toVehicleSetup } from "@aicore-fivem/lib/shared";

toVehicleSetup({ colors: [27, 27], windowTint: 9, maxed: "yes" });
// { colors: [27, 27], windowTint: undefined, maxed: undefined, ... }: die fehlerhaften Felder werden verworfen

Ein Client darf nie maxed: true oder eine freie Farbe für ein Fahrzeug wählen, für das er bezahlt: Prüfe den Preis auf dem Server anhand dessen, was das Setup enthält.

Auf dieser Seite