AI Core
API-Referenz

Gemeinsame Typen

Jeder Typ, auf den die API-Seiten verlinken, mit jedem Feld, seinem Typ und einem Beispielwert.

Die API-Seiten schreiben Typen beim Namen (Vec3, ActionResult, InventoryRef...). Diese Seite erklärt jeden einmal: seine Felder, was jedes Feld bedeutet, und einen Beispielwert.

Woher ein Typ kommt:

PaketImportTypen
@aicore-fivem/sharedimport type { AiPlayerData } from "@aicore-fivem/shared";Alles auf dieser Seite, sofern die Überschrift nichts anderes sagt.
@aicore-fivem/lib/sharedimport type { Vec3 } from "@aicore-fivem/lib/shared";Vec3, Vec4, AccessRule, BlipStyle, ZoneShape, VehicleProps, VehicleSetup, PlacePed.
@aicore-fivem/lib/clientimport type { ProgressOptions } from "@aicore-fivem/lib/client";ProgressOptions.
@aicore-fivem/lib/serverimport type { ProgressForOptions } from "@aicore-fivem/lib/server";ProgressForOptions.

Lua hat zur Laufzeit keine Typen. Eine Lua-Tabelle mit denselben Schlüsseln ist derselbe Wert: { x = 1.0, y = 2.0, z = 3.0 } ist ein Vec3. Arrays sind Lua-Listen ({ 'police', 'sheriff' }), null ist nil. Siehe Lib für Lua für Vektoren.

Positionen

Vec3

Ein Punkt in der Welt, in Metern. GTAs x ist Osten, y ist Norden, z ist oben.

Prop

Type

Example
const counter: Vec3 = { x: 25.7, y: -1347.3, z: 29.5 };
Lua
local counter = vector3(25.7, -1347.3, 29.5) -- oder { x = 25.7, y = -1347.3, z = 29.5 }

Vec4

Ein Punkt mit Ausrichtung: wo ein Ped steht oder ein Fahrzeug spawnt und in welche Richtung es schaut. vec4-Felder des Panels und das Punkt-Werkzeug des Panels speichern diese Form.

Prop

Type

Example
const spawn: Vec4 = { x: -42.1, y: -1098.4, z: 26.4, heading: 158.0 };

Ein Lua-vector4 nennt die Ausrichtung w. Die Leser der Lib (readVec4) akzeptieren sowohl heading als auch w.

ZoneShape

Ein Bereich in der Welt. Wird von Client-Zones und von serverseitigen Bereichsprüfungen genutzt (Zonengeometrie). Es ist eine von drei Formen, gewählt über type.

Kugel (eine Kugel um einen Punkt):

Prop

Type

Zylinder (ein Kreis am Boden, der nach oben und unten reicht):

Prop

Type

Polygon (ein Bodenpolygon zwischen zwei Höhen):

Prop

Type

Example
const yard: ZoneShape = { type: "sphere", center: { x: 440.1, y: -981.2, z: 30.7 }, radius: 25 };
const lot: ZoneShape = {
  type: "poly",
  points: [ { x: 210, y: -810 }, { x: 240, y: -800 }, { x: 230, y: -770 }, { x: 200, y: -780 } ],
  minZ: 28,
  maxZ: 36,
};

Ergebnisse

ActionResult

Was jede Server-Aktion einem Client antwortet: entweder Erfolg oder einen Sprachschlüssel, den der Client als Grund anzeigt. Zusätzliche Felder können im Erfolgszweig mitfahren (ActionResult<{ id: number }>). Der neue Zustand selbst reist nie in der Antwort: Er kommt als Delta an.

Erfolg:

Prop

Type

Ablehnung:

Prop

Type

Example
const done: ActionResult = { ok: true };
const created: ActionResult<{ id: number }> = { ok: true, id: 42 };
const refused: ActionResult = { ok: false, error: "NOT_ENOUGH_MONEY" };
Lua
return { ok = true }
return aiLib.fail('NOT_ENOUGH_MONEY') -- { ok = false, error = 'NOT_ENOUGH_MONEY' }

Baue Ablehnungen mit fail; lies Antworten mit isActionOk und replyError.

Spieler und Charaktere

AiPlayerData

Die Spielerdaten, die ai-core an den eigenen Client eines Spielers schickt: ein vollständiger Snapshot, wenn der Charakter lädt, danach nur der Schlüssel, der sich geändert hat. Wird auch vom Export GetPlayerData auf beiden Seiten zurückgegeben. Andere Seiten nennen es eventuell „Spielerdaten“.

Prop

Type

Example
const data: AiPlayerData = {
  character: { id: 12, citizenid: "AB12CD34", slot: 1, firstname: "Jane", lastname: "Doe", birthdate: "1994-05-12", sex: "female", nationality: "American" },
  money: { cash: 500, bank: 5000, black_money: 0, crypto: 0 },
  jobs: [{ job: "police", grade: 2 }],
  duty: "police",
  job: { job: "police", grade: 2 },
  gangs: [],
  activeGang: null,
  metadata: { hunger: 80, thirst: 75 },
};

CharacterInfo

Ein Charakter, wie andere Ressourcen ihn sehen (der „Charakter“ von GetCharacter, playerLoaded und AiPlayerData.character).

Prop

Type

Example
const character: CharacterInfo = {
  id: 12, citizenid: "AB12CD34", slot: 1,
  firstname: "Jane", lastname: "Doe", birthdate: "1994-05-12",
  sex: "female", nationality: "American",
};

JobMembership

Ein Job, den ein Charakter hat.

Prop

Type

Example
const membership: JobMembership = { job: "police", grade: 2 };

GangMembership

Eine Gang, in der ein Charakter ist.

Prop

Type

Example
const membership: GangMembership = { gang: "ballas", grade: 0 };

SpawnPoint

Wo und wie ein geladener Charakter in der Welt erscheint (die Nutzlast, die ai-core sendet, um den Charakter in die Welt zu setzen).

Prop

Type

Example
const spawn: SpawnPoint = { x: -1037.6, y: -2737.9, z: 20.2, heading: 330, model: "mp_f_freemode_01", armour: 0, health: 200 };

Branding

Name und Aussehen des Servers in Vollbildmenüs (Panel-Einstellungen General, Allgemein; Export GetBranding).

Prop

Type

Example
const branding: Branding = { name: "Los Santos RP", subtitle: "Serious roleplay", tagline: "Welcome", taglineSub: "Pick a character", background: "skyline" };

PlayerCache

Die oft gelesenen Werte des lokalen Spielers, aktuell gehalten von dem einen Beobachter von ai-core (Lib cache auf dem Client). false bedeutet „keiner“.

Prop

Type

Example
const snapshot: PlayerCache = { ped: 258, playerId: 0, serverId: 7, vehicle: 81922, seat: -1, weapon: false };

UnloadReason

Warum ein Charakter losgelassen wurde.

WertBedeutung
"dropped"Der Spieler hat den Server verlassen.
"switch"Der Spieler ist zum Charakterbildschirm zurückgekehrt.

Geld

Kontonamen

Geld liegt in benannten Konten. Die Liste Accounts (Konten) des Panels legt fest, welche existieren; ai-core wird mit diesen ausgeliefert:

NameLabelStartbetrag
cashCash500
bankBank5000
black_moneyDirty money0
cryptoCrypto0

Ein Serverbesitzer kann im Panel Konten hinzufügen, umbenennen oder entfernen, also lies die Liste mit dem Export GetAccountTypes, statt sie anzunehmen. Wenn die Liste leer ist, behält ai-core ein einzelnes Konto cash.

Example
core.AddMoney(source, "bank", 250, "Paycheck");

AccountTypeDefinition

Ein Kontotyp aus der Liste Accounts des Panels (GetAccountTypes gibt Record<string, AccountTypeDefinition> zurück, mit Kontonamen als Schlüssel).

Prop

Type

Example
const bank: AccountTypeDefinition = { label: "Bank", start: 5000, allowNegative: false };

MoneyRef

Eine Seite einer Geldüberweisung (TransferMoney): das Konto eines geladenen Spielers oder das gemeinsame Konto eines Jobs oder einer Gang.

Prop

Type

Example
const player: MoneyRef = { source: 7, account: "bank" };
const society: MoneyRef = { owner: "job", id: "mechanic", account: "bank" };

Jobs und Gangs

GradeDefinition

Ein Rang eines Jobs oder einer Gang (Panel-Inhalt).

Prop

Type

Example
const grade: GradeDefinition = { label: "Sergeant", salary: 400, boss: false };

JobDefinition

Ein Job aus der Liste Jobs des Panels (GetJobDefinition). Rang n einer JobMembership ist grades[n].

Prop

Type

Example
const police: JobDefinition = {
  label: "Police", type: "leo", defaultDuty: false, listed: false,
  grades: [ { label: "Cadet", salary: 200, boss: false }, { label: "Chief", salary: 900, boss: true } ],
};

GangDefinition

Eine Gang aus der Liste Gangs des Panels (GetGangDefinition).

Prop

Type

Example
const ballas: GangDefinition = { label: "Ballas", grades: [ { label: "Recruit", salary: 0, boss: false } ] };

AccessRule

Wer einen Ort nutzen darf (einen Shop, ein Lager, eine Garage): einer aus jobs oder einer aus gangs. Beide Listen leer bedeutet alle. Aus @aicore-fivem/lib/shared; lies es mit readAccess.

Prop

Type

Example
const armoury: AccessRule = { jobs: ["police"], gangs: [], grades: { police: 2 }, onDuty: true };

Inventar

InventoryRef

Mit welchem Inventar ein Aufruf arbeitet.

WertBedeutet
numberDie Server-ID eines Spielers: das eigene Inventar dieses Spielers.
stringJedes andere Inventar über seine ID: ein Lagername, eine Kofferraum- oder Handschuhfach-ID.
Example
inventory.addItem(source, "water", 2);          // ein Spieler
inventory.addItem("police_evidence", "phone", 1); // ein Lager

ItemMetadata

Freie Daten, die auf einem Item-Stapel gespeichert sind (Record<string, unknown>): eine Seriennummer, Haltbarkeit, eine Notiz. Jedes Inventar zeigt einige Schlüssel selbst an (label, description, image bei den meisten).

Example
const metadata: ItemMetadata = { serial: "AB-1029", durability: 100 };

Halte Metadaten klein und JSON-sicher (Strings, Zahlen, Booleans, einfache Objekte und Arrays). Zwei Stapel mit unterschiedlichen Metadaten stapeln sich nie zusammen.

InventoryStack

Ein Stapel in einem Inventar (GetItems gibt eine Liste davon zurück).

Prop

Type

Example
const stack: InventoryStack = { name: "water", label: "Water", count: 3, slot: 4, metadata: {} };

UsedItem

Der Stapel, den ein Handler für benutzbare Items bekommt, wenn ein Spieler ein Item benutzt.

Prop

Type

Example
const used: UsedItem = { name: "lockpick", slot: 2, count: 1, metadata: { durability: 80 } };

UsableItemHandler

(source: number, item: UsedItem) => unknown: läuft, wenn ein Spieler das Item benutzt. Die Rückgabe false behält das Item in Inventaren, die ein benutztes Item selbst nehmen (ai-inventory nimmt die consume-Menge des Items); andere Inventare folgen ihren eigenen Item-Einstellungen.

Example
const onUse: UsableItemHandler = (source, item) => {
  if (item.metadata.durability === 0) return false; // behalten
  return true;
};

ItemDefinition

Ein Item, wie das aktive Inventar es definiert (GetItemDefinition). Andere Seiten nennen es eventuell „Item“ oder „Item-Definition“.

Prop

Type

Example
const water: ItemDefinition = { name: "water", label: "Water", weight: 500, unique: false, close: true, description: "Fresh water" };

StashDefinition

Ein Lager, wie ai-core es verwahrt (die Argumente von RegisterStash).

Prop

Type

Example
const evidence: StashDefinition = { name: "police_evidence", label: "Evidence", slots: 50, maxWeight: 100000, jobs: ["police"] };

ShopProduct

Ein Produkt eines Skript-Shops.

Prop

Type

Example
const product: ShopProduct = { name: "bandage", price: 50 };

ShopDefinition

Ein Shop, den ein Skript registriert. Der Server öffnet ihn für einen Spieler; er hat keinen eigenen Ort.

Prop

Type

Example
const shop: ShopDefinition = { name: "police_armoury", label: "Armoury", items: [{ name: "bandage", price: 50 }] };

HeldWeapon

Das Waffen-Item, das der lokale Spieler hält, wie das Inventar es kennt.

Prop

Type

Example
const held: HeldWeapon = { name: "WEAPON_PISTOL", label: "Pistol" };

Fahrzeuge

VehicleProps

Aussehen und Tuning eines Fahrzeugs als einfache Daten: Farben, Mods, Extras, Lackierung, Räder, Neon, Tönung, Kennzeichen und Zustand. Aus @aicore-fivem/lib/shared. Gespeichertes JSON trägt v: 1. Prüfe empfangene Daten mit toVehicleProps.

Prop

Type

Example
const props: VehicleProps = {
  v: 1, model: 1032823388, plate: "AI 123", plateIndex: 0,
  colors: [12, 12], extraColors: [0, 156], customPrimary: null, customSecondary: null,
  wheelType: 0, windowTint: -1, livery: -1, mods: { 11: 2, 18: 1 }, xenonColor: 255,
  neon: [false, false, false, false], neonColor: [255, 0, 255], tyreSmoke: [255, 255, 255],
  extras: { 1: true }, dirt: 0, engineHealth: 1000, bodyHealth: 1000,
};

VehicleSetup

Was ein frisch gespawntes Fahrzeug zusätzlich zu den Standardwerten des Modells bekommt (das setup von Lib spawnVehicle, die in einem Shop gewählte Farbe). Aus @aicore-fivem/lib/shared. Jedes Feld ist optional. Prüfe empfangene Daten mit toVehicleSetup.

Prop

Type

Example
const setup: VehicleSetup = { colors: [27, 27], windowTint: 1, engineOn: true };

KeyPurpose

Warum ein Spieler den Schlüssel eines Fahrzeugs bekommt. Schlüssel-Skripte behandeln jeden unterschiedlich. Alles Unbekannte zählt als "temporary".

WertNutze ihn, wenn
"purchase"Dem Spieler gehört jetzt das Fahrzeug (Händler, Admin-Vergabe): ein neuer Schlüssel, ältere Kopien funktionieren nicht mehr.
"garage"Ein eigenes Fahrzeug kommt aus der Garage: Der Besitzer hat den Schlüssel bereits.
"job"Ein Arbeitsfahrzeug für die Schicht.
"rental"Ein gemietetes Fahrzeug für die Mietdauer.
"temporary"Alles andere Kurzlebige (Admin-Spawn, Probefahrt, Fahrzeug bei einem Überfall). Der Standard.
Example
vehicleKeys.give(source, vehicle, "rental");

VehicleOwner

Wem ein Fahrzeug von ai-vehicles gehört.

Prop

Type

Example
const owner: VehicleOwner = { type: "character", id: "12" };

OwnedVehicle

Ein Fahrzeug mit Besitzer, wie ai-vehicles es führt (GetVehicle).

Prop

Type

Example
const car: OwnedVehicle = {
  id: 7, plate: "AI 123", owner: { type: "character", id: "12" }, model: "sultan",
  props: null, setup: null, state: "garage", garage: "legion", fuel: 100, engine: 1000, body: 1000,
};

Welt

Weather

Ein Wettertyp-Name des Vertrags von qb-weathersync, exakt in Großbuchstaben: "EXTRASUNNY", "CLEAR", "NEUTRAL", "SMOG", "FOGGY", "OVERCAST", "CLOUDS", "CLEARING", "RAIN", "THUNDER", "SNOW", "BLIZZARD", "SNOWLIGHT", "XMAS", "HALLOWEEN". Die Liste ist die Konstante WEATHERS; isWeather(value) prüft einen Wert.

Example
import { isWeather, type Weather } from "@aicore-fivem/shared";

const next: Weather = "RAIN";
if (isWeather(input)) world.setWeather(input);

BlipStyle

Das Aussehen eines Blips, wie das blip-Widget des Panels es speichert. Aus @aicore-fivem/lib/shared; lies es mit readBlipStyle.

Prop

Type

Example
const style: BlipStyle = { sprite: 52, color: 2, scale: 0.8 };

PlacePed

Ein NPC, der an einem Ort steht (ein Ladenbesitzer, ein Angestellter). Aus @aicore-fivem/lib/shared; lies es mit readPlacePed.

Prop

Type

Example
const clerk: PlacePed = { model: "mp_m_shopkeep_01", scenario: "WORLD_HUMAN_STAND_IMPATIENT", coords: { x: 24.5, y: -1346.6, z: 29.5, heading: 270 } };

Spieler-UI

NotificationKind

Farbe und Icon einer Benachrichtigungskarte: "success", "error", "info" oder "warning". Andere Seiten nennen es eventuell „Benachrichtigungsart“.

Example
notify(source, "Vehicle stored", "success"); // Server-Lib notify(source, text, kind?, duration?)

Notification

Eine Benachrichtigungskarte. ai-lib zeichnet sie; die Texte sind vom Absender bereits übersetzt.

Prop

Type

Example
const card: Notification = { text: "Vehicle stored", kind: "success", duration: 3000 };

ProgressOptions

Was der Client-Fortschrittsbalken (Lib progress auf dem Client) zeigt und wie sich der Spieler bewegen darf, während er läuft. Aus @aicore-fivem/lib/client.

Prop

Type

Example
const repair: ProgressOptions = {
  label: "Repairing",
  duration: 8000,
  anim: { dict: "mini@repair", clip: "fixing_a_player" },
  canCancel: true,
  disable: { move: true, combat: true },
};

ServerProgress

Der Balken, den ein Server-Ablauf im Client eines Spielers laufen lässt (Lib progressFor). Dieselben Felder wie ProgressOptions ohne whileDead. ProgressForOptions (aus @aicore-fivem/lib/server) fügt ein Feld hinzu:

Prop

Type

Example
const bar: ProgressForOptions = { label: "Picking the lock", duration: 6000, scenario: "PROP_HUMAN_PARKING_METER", minRatio: 0.9 };

Eine Zeile eines Menüs.

Prop

Type

Example
const row: MenuItem = { id: "water", label: "Water ($5)", icon: "bottle-water" };

Ein anzuzeigendes Menü (Lib menu, Lua aiLib.menu.show).

Prop

Type

Example
const shop: MenuRequest = {
  title: "24/7",
  items: [ { id: "water", label: "Water ($5)" }, { id: "bread", label: "Bread ($3)" } ],
};

InputField

Ein Feld eines Eingabedialogs. Es ist ein Zahlenfeld oder ein Textfeld, gewählt über type.

Zahlenfeld:

Prop

Type

Textfeld:

Prop

Type

InputRequest

Ein anzuzeigender Eingabedialog (Lib input, Lua aiLib.input).

Prop

Type

Example
const fine: InputRequest = {
  title: "Write a fine",
  confirm: "Send",
  fields: [
    { name: "amount", label: "Amount", type: "number", min: 1, max: 10000 },
    { name: "reason", label: "Reason", type: "text", maxLength: 80 },
  ],
};

PromptAnchor

Wo eine Welt-Aufforderung schwebt: ein fester Punkt oder Stellen an Entities. Entity-Offsets sind im eigenen Raum der Entity, sodass die Aufforderung sich mit ihr bewegt und dreht (eine schwingende Tür). Von mehreren Entity-Stellen wird in jedem Frame die dem Spieler nächste angezeigt.

Punkt:

Prop

Type

Entity-Stellen:

Prop

Type

Example
const atPoint: PromptAnchor = { x: 25.7, y: -1347.3, z: 30.2 };
const onDoor: PromptAnchor = { anchors: [{ entity: door, offset: { x: 0.5, y: 0, z: 0 } }] };

ItemPickerRequest

Die Item-Auswahl von ai-core für Admin-Werkzeuge: jedes Item des aktiven Inventars mit seinem Bild, einer Suche und einer Menge.

Prop

Type

Example
const request: ItemPickerRequest = { title: "Give items", target: 7 };

PickedItem

Eine Zeile, die die Item-Auswahl antwortet.

Prop

Type

SkillDifficulty

Wie schwer eine Stufe einer Geschicklichkeitsprüfung ist: "easy", "medium", "hard" oder die eigene Form von ox_lib { areaSize: number; speedMultiplier: number }. Die benannten Stufen: easy = grüner Bogen von 50 Grad bei 0,6 Umdrehungen pro Sekunde, medium = 40 bei 0,85, hard = 25 bei 1.

Example
const stages: SkillDifficulty[] = ["easy", "medium", { areaSize: 30, speedMultiplier: 1.2 }];

LockpickResult

Was der Dietrich antwortet: "opened" (das Schloss hat sich geöffnet), "broken" (der Spieler hat jeden Dietrich zerbrochen) oder "cancelled" (der Spieler hat ihn geschlossen).

RadialItem

Ein Eintrag des Radialrads (Lib radial). Seine Funktionen laufen in der Ressource, die ihn hinzugefügt hat; ai-core verwirft den Eintrag, wenn diese Ressource stoppt.

Prop

Type

Example
const item: RadialItem = {
  id: "engine", label: "Engine", icon: "car", parent: "vehicle",
  canShow: () => cache.seat === -1,
  onPressed: () => SetVehicleEngineOn(cache.vehicle as number, !GetIsVehicleEngineRunning(cache.vehicle as number), false, true),
};

KeyHintRequest

Eine Tasten-Hilfezeile, die ein Skript für eine Weile zeigt (Noclip-Tasten für Admins). Gib keybind oder key an.

Prop

Type

Example
const hint: KeyHintRequest = { label: "Speed up", key: "SHIFT", icon: "gauge-high" };

KeyHintWhen

Wann der Hinweis eines Keybinds in HUDs erscheint: "foot" (zu Fuß), "vehicle" (in einem Fahrzeug) oder "always". Der Serverbesitzer kann es im Panel ändern; ein Keybind ohne diesen Wert zeigt nie einen Hinweis.

KeyHintView

Eine Zeile der Tastenhinweise, die ein HUD zeigt (Client-Export GetKeyHints, Event ai-core:client:keyHints): die Taste, wie der Spieler sie belegt hat, und was sie tut.

Prop

Type

Example
const row: KeyHintView = { id: "noclip_speed", key: "SHIFT", label: "Speed up", icon: "gauge-high" };

Logs, Alarme, Handy

LogOptions

Zusätzliche Details einer Log-Zeile (Lib aiLog, Export Log).

Prop

Type

Example
aiLog("payments", "Paid a bill", { source, metadata: { amount: 250 } });

LogLevel

Schweregrad einer Log-Zeile: "debug", "info", "warn" oder "error".

LogChannel

Wie eine Ressource einen ihrer Log-Kanäle beschreibt (Lib aiLogChannels, Export LogChannels, einmal beim Start aufgerufen). Webhook-URLs stehen nie hier: Der Serverbesitzer legt sie im Panel von ai-core fest.

Prop

Type

Example
aiLogChannels({ payments: { dataset: "my-shop" }, debug: { active: false } });

DispatchAlert

Ein Alarm für die Polizei (oder einen anderen Job). Das aktive Alarm-Skript zeigt ihn den Mitgliedern von jobs, die im Dienst sind. Die Texte sind bereits übersetzt.

Prop

Type

Example
const alert: DispatchAlert = { code: "10-71", title: "Shots fired", source, jobs: ["police"], priority: "high" };

PhoneMail

Eine Mail, die ein Skript an das Handy eines Spielers sendet.

Prop

Type

Example
const mail: PhoneMail = { sender: "Los Santos Customs", subject: "Your car is ready", message: "Pick it up at the garage." };

PhoneNotification

Eine Benachrichtigung auf dem Handy eines Spielers.

Prop

Type

Example
const note: PhoneNotification = { title: "Bank", message: "You received $250", app: "bank" };

Rechnungen, MDT, EMS, Garagen

BillRequest

Eine Rechnung, die ein Skript sendet (Lib billing.send): von einem Job (Bußgelder, Servicegebühren) oder von einem Spieler, an einen Spieler. Die Texte sind bereits übersetzt.

Prop

Type

Example
const bill: BillRequest = { to: 7, amount: 250, label: "Speeding", from: source, job: "police" };

UnpaidBill

Eine offene Rechnung eines Spielers.

Prop

Type

MdtRecord

Eine Akte, die ein Skript in das Polizei-MDT schreibt (Lib mdt.record). Die Texte sind bereits übersetzt.

Prop

Type

Example
const record: MdtRecord = { kind: "jail", target: 7, by: source, title: "Armed robbery", minutes: 20 };

MdtRecordKind

Worum es in einer MDT-Akte geht: "fine", "warrant", "arrest" oder "jail".

DistressCall

Der Ruf eines Spielers am Boden an die Sanitäter (Lib ems.distress).

Prop

Type

Example
const call: DistressCall = { jobs: ["ambulance"], message: "Unconscious" };

GaragedVehicle

Eines der Fahrzeuge eines Spielers, das ein Garagen-Skript verwahrt.

Prop

Type

Aussehen

CharacterAppearance

Ein Aussehen, wie die Aussehens-Ebene von ai-core es herausgibt: das Ped-Modell und die eigenen Daten des Kleidungs-Skripts. Behandle data als undurchsichtig: Gib das ganze Objekt unverändert an ApplyAppearance zurück.

Prop

Type

ClothingMenu

Ein Menü eines Kleidungs-Skripts, das andere Skripte öffnen: "clothing" (Kleidungsgeschäft), "barber" (Friseur) oder "outfits" (die gespeicherten Outfits des Spielers).

JobOutfit

Ein Job-Outfit (Uniform) für das Freemode-Modell, das der Spieler trägt. Nur die aufgelisteten Teile ändern sich.

Prop

Type

OutfitPiece

Ein Teil eines Job-Outfits.

Prop

Type

Example
const uniform: JobOutfit = {
  components: [ { id: 11, collection: "", index: 55, texture: 0 }, { id: 4, collection: "", index: 35, texture: 0 } ],
  props: [ { id: 0, collection: "", index: 46, texture: 0 } ],
};

Befehle

CommandInfo

Ein Befehl von Lib addCommand, wie die Ressource ihn bei ai-core ankündigt (der Tab Commands des Panels listet ihn).

Prop

Type

Example
const info: CommandInfo = { names: ["jail", "prison"], help: "Jails a player", params: [{ name: "id", type: "playerId" }], aces: ["ai.admin"] };

CommandParam

Ein Argument eines Befehls von Lib addCommand, geparst und geprüft, bevor der Handler läuft.

Prop

Type

Example
const params: CommandParam[] = [
  { name: "id", type: "playerId", help: "Player id" },
  { name: "reason", type: "longString", help: "Reason", optional: true },
];

Admin-Panel

PanelSchema

Das Admin-Panel eines Skripts: welche Datendateien es hat und wie das Panel sie anordnet. Eine Ressource übergibt es an AdminPanel der Lib (siehe Admin-Panel). Jedes Textfeld ist ein Sprachschlüssel aus locales/*.json der Ressource.

Prop

Type

Example
const schema: PanelSchema = {
  title: "ADMIN_TITLE",
  icon: "store",
  files: { shops: { kind: "records", sync: "all", labelPath: "label", sections: { label: { type: "text", min: 1, max: 48 }, coords: { type: "vec3" } } } },
  tabs: [{ id: "shops", file: "shops", icon: "store", label: "ADMIN_TAB_SHOPS", desc: "ADMIN_TAB_SHOPS_DESC", cards: [] }],
};

FileSpec

Eine Datendatei eines Panels.

Prop

Type

TabSpec

Ein Tab des Panels, der eine Datei zeigt.

Prop

Type

CardSpec

Eine Karte mit Feldern innerhalb eines Tabs.

Prop

Type

Example
const card: CardSpec = {
  icon: "location-dot",
  title: "ADMIN_CARD_PLACE",
  fields: [{ widget: "point", path: "coords", label: "ADMIN_F_COORDS", hint: "ADMIN_H_COORDS" }],
};

LookupSource

Eine Werteliste, aus der ein Panel-Feld wählt. Ein lookup auf einem Text- oder Namensfeld lässt den Server alles andere ablehnen und das Panel die Liste anbieten.

WertDie Liste
"item"Items des aktiven Inventars.
"job"Jobs aus der Liste Jobs des Panels.
"gang"Gangs aus der Liste Gangs des Panels.
"account"Geldkonten.
"resource"Gestartete Ressourcen.
"player"Online-Spieler, per Citizen-ID.
"vehicle"Jedes Fahrzeugmodell, das das Spiel des Admins hat, Addons eingeschlossen. Wird vom Server nie abgelehnt (er kann keine Modelle auflisten).
"ped"Die Ped-Modelle von GTA. Wird vom Server nie abgelehnt.

AdminDelta

Ein geänderter Datensatz einer Panel-Datei, weitergeleitet an die Admins, die das Panel geöffnet haben (Export AdminPanelChanged).

Prop

Type

Example
const delta: AdminDelta = { resource: "my-shop", file: "shops", key: "legion", value: { label: "Legion" } };

UpdateInfo

Ein Skript, dessen GitHub-Release neuer ist als die laufende Version (Update-Prüfung von ai-core, Export GetUpdates).

Prop

Type

Example
const update: UpdateInfo = { resource: "ai-core", label: "ai-core", current: "1.4.0", latest: "1.5.0", url: "https://github.com/..." };

vRP-Brücke

VrpConfig

Die vRP-Berechtigungszuordnung des Panels (data/vrp.json), wie die vRP-Brücke von ai-core sie liest (Server-Export GetVrpConfig; das lokale Event ai-core:vrp:config trägt nach einer Änderung dieselbe Form).

Prop

Type

VrpPermissionRule: gewährt permission jedem, der auf irgendein ausgefülltes Ziel passt.

Prop

Type

VrpGroupAlias: ein vRP-Gruppenname, der einen Job- oder Gang-Rang oder Admin bedeutet (Ränge im vRPex-Stil wie "Coronel").

Prop

Type

Example
const config: VrpConfig = {
  defaults: { jobPrefix: true, jobOnDuty: true, adminPrefix: true, playerPrefix: true },
  permissions: [{ permission: "police.armory", job: "police", gang: "", group: "", grade: 2, onDuty: true, admin: false, everyone: false }],
  groups: { Coronel: { job: "police", gang: "", grade: 4, admin: false } },
  items: { "edible|tacos": "tacos" },
};

Auf dieser Seite