Fahrzeuge
plateOf, normalizePlate, vehicleTypeOfClass, toVehicleProps und toVehicleSetup: Kennzeichen als Schlüssel, Spawn-Typen und Fahrzeug-Aussehen aus nicht vertrauenswürdigen Daten.
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
plateOf(vehicle: number): stringLua: kein Zwilling; nutze GetVehicleNumberPlateText(vehicle):match('^%s*(.-)%s*$'):upper().
Parameter
Prop
Type
Rückgabewert
string: das Kennzeichen, getrimmt und großgeschrieben.
Beispiel
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
normalizePlate(plate: string): stringLua: 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
vehicleTypeOfClass(vehicleClass: number): stringLua: kein Zwilling.
Parameter
Prop
Type
Rückgabewert
string: der Spawn-Typ. Jede oben nicht aufgeführte Klasse ist "automobile".
Beispiel
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
toVehicleProps(value: unknown): VehicleProps | nullLua: 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
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
toVehicleSetup(value: unknown): VehicleSetup | nullLua: 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 verworfenEin 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.