AI Core
Dokumentacja API

Wspólne typy

Każdy typ, do którego linkują strony API, z każdym polem, jego typem i przykładową wartością.

Strony API zapisują typy po nazwie (Vec3, ActionResult, InventoryRef...). Ta strona wyjaśnia każdy z nich raz: jego pola, co znaczy każde pole i przykładową wartość.

Skąd pochodzi typ:

PakietImportTypy
@aicore-fivem/sharedimport type { AiPlayerData } from "@aicore-fivem/shared";Wszystko na tej stronie, chyba że nagłówek mówi inaczej.
@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 nie ma typów w czasie działania. Tabela Lua z tymi samymi kluczami to ta sama wartość: { x = 1.0, y = 2.0, z = 3.0 } to Vec3. Tablice to listy Lua ({ 'police', 'sheriff' }), null to nil. Wektory opisuje Lib dla Lua.

Pozycje

Vec3

Punkt w świecie, w metrach. W GTA x to wschód, y to północ, z to góra.

Prop

Type

Przykład
const counter: Vec3 = { x: 25.7, y: -1347.3, z: 29.5 };
Lua
local counter = vector3(25.7, -1347.3, 29.5) -- albo { x = 25.7, y = -1347.3, z = 29.5 }

Vec4

Punkt z kierunkiem: gdzie stoi ped lub pojawia się pojazd i w którą stronę jest zwrócony. Pola vec4 panelu i narzędzie punktu w panelu zapisują ten kształt.

Prop

Type

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

vector4 w Lua nazywa kierunek w. Czytniki liba (readVec4) przyjmują zarówno heading, jak i w.

ZoneShape

Obszar w świecie. Używany przez klienckie Zones i przez serwerowe sprawdzanie obszarów (geometria stref). To jeden z trzech kształtów, wybierany przez type.

Sphere (kula wokół punktu):

Prop

Type

Cylinder (okrąg na ziemi, sięgający w górę i w dół):

Prop

Type

Poly (wielokąt na ziemi między dwiema wysokościami):

Prop

Type

Przykład
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,
};

Wyniki

ActionResult

Odpowiedź każdej akcji serwera dla klienta: albo sukces, albo klucz językowy, który klient pokazuje jako powód. Dodatkowe pola mogą jechać na gałęzi sukcesu (ActionResult<{ id: number }>). Sam nowy stan nigdy nie podróżuje w odpowiedzi: przychodzi jako delta.

Sukces:

Prop

Type

Odmowa:

Prop

Type

Przykład
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' }

Odmowy buduj przez fail; odpowiedzi czytaj przez isActionOk i replyError.

Gracze i postacie

AiPlayerData

Dane gracza, które ai-core wysyła do własnego klienta gracza: jeden pełny snapshot, gdy postać się wczytuje, potem tylko klucz, który się zmienił. Zwraca je też eksport GetPlayerData po obu stronach. Inne strony mogą nazywać to "danymi gracza".

Prop

Type

Przykład
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

Postać tak, jak widzą ją inne zasoby ("character" z GetCharacter, playerLoaded i AiPlayerData.character).

Prop

Type

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

JobMembership

Jedna praca postaci.

Prop

Type

Przykład
const membership: JobMembership = { job: "police", grade: 2 };

GangMembership

Jeden gang, do którego należy postać.

Prop

Type

Przykład
const membership: GangMembership = { gang: "ballas", grade: 0 };

SpawnPoint

Gdzie i jak wczytana postać pojawia się w świecie (ładunek, który ai-core wysyła, aby umieścić postać w świecie).

Prop

Type

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

Branding

Nazwa serwera i jego wygląd na pełnoekranowych menu (ustawienia General w panelu; eksport GetBranding).

Prop

Type

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

PlayerCache

Często czytane wartości lokalnego gracza, aktualizowane przez jeden obserwator ai-core (cache liba po stronie klienta). false znaczy "brak".

Prop

Type

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

UnloadReason

Dlaczego postać została zwolniona.

WartośćZnaczenie
"dropped"Gracz opuścił serwer.
"switch"Gracz wrócił do ekranu postaci.

Pieniądze

Nazwy kont

Pieniądze są na nazwanych kontach. Lista Accounts w panelu ustala, które istnieją; ai-core dostarcza te:

NazwaEtykietaKwota startowa
cashCash (gotówka)500
bankBank5000
black_moneyDirty money (brudne pieniądze)0
cryptoCrypto (kryptowaluta)0

Właściciel serwera może dodawać, zmieniać nazwy lub usuwać konta w panelu, więc czytaj listę eksportem GetAccountTypes zamiast ją zakładać. Gdy lista jest pusta, ai-core trzyma jedno konto cash.

Przykład
core.AddMoney(source, "bank", 250, "Paycheck");

AccountTypeDefinition

Jeden typ konta z listy Accounts w panelu (GetAccountTypes zwraca Record<string, AccountTypeDefinition>, z nazwą konta jako kluczem).

Prop

Type

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

MoneyRef

Jedna strona przelewu pieniędzy (TransferMoney): konto wczytanego gracza albo wspólne konto pracy lub gangu.

Prop

Type

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

Prace i gangi

GradeDefinition

Jeden stopień pracy lub gangu (zawartość panelu).

Prop

Type

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

JobDefinition

Jedna praca z listy Jobs w panelu (GetJobDefinition). Stopień n z JobMembership to grades[n].

Prop

Type

Przykład
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

Jeden gang z listy Gangs w panelu (GetGangDefinition).

Prop

Type

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

AccessRule

Kto może korzystać z miejsca (sklepu, schowka, garażu): jedna z jobs albo jeden z gangs. Obie listy puste znaczą wszystkich. Z @aicore-fivem/lib/shared; czytaj przez readAccess.

Prop

Type

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

Ekwipunek

InventoryRef

Na którym ekwipunku działa wywołanie.

WartośćZnaczy
numberId serwera gracza: własny ekwipunek tego gracza.
stringDowolny inny ekwipunek według jego id: nazwa schowka, id bagażnika lub schowka w desce rozdzielczej.
Przykład
inventory.addItem(source, "water", 2);          // gracz
inventory.addItem("police_evidence", "phone", 1); // schowek

ItemMetadata

Dowolne dane zapisane na jednym stosie przedmiotów (Record<string, unknown>): numer seryjny, wytrzymałość, notatka. Każdy ekwipunek sam pokazuje niektóre klucze (label, description, image w większości z nich).

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

Metadane trzymaj małe i bezpieczne dla JSON (stringi, liczby, wartości logiczne, zwykłe obiekty i tablice). Dwa stosy z różnymi metadanymi nigdy się nie łączą.

InventoryStack

Jeden stos w ekwipunku (GetItems zwraca ich listę).

Prop

Type

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

UsedItem

Stos, który dostaje handler używalnego przedmiotu, gdy gracz używa przedmiotu.

Prop

Type

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

UsableItemHandler

(source: number, item: UsedItem) => unknown: działa, gdy gracz używa przedmiotu. Zwrócenie false zatrzymuje przedmiot w ekwipunkach, które same zabierają użyty przedmiot (ai-inventory zabiera ilość consume przedmiotu); inne ekwipunki działają według własnych ustawień przedmiotu.

Przykład
const onUse: UsableItemHandler = (source, item) => {
  if (item.metadata.durability === 0) return false; // zatrzymaj go
  return true;
};

ItemDefinition

Jeden przedmiot tak, jak definiuje go aktywny ekwipunek (GetItemDefinition). Inne strony mogą nazywać to "przedmiotem" lub "definicją przedmiotu".

Prop

Type

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

StashDefinition

Schowek tak, jak trzyma go ai-core (argumenty RegisterStash).

Prop

Type

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

ShopProduct

Jeden produkt sklepu skryptu.

Prop

Type

Przykład
const product: ShopProduct = { name: "bandage", price: 50 };

ShopDefinition

Sklep rejestrowany przez skrypt. Serwer otwiera go dla gracza; sklep nie ma własnego miejsca.

Prop

Type

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

HeldWeapon

Przedmiot broni, który trzyma lokalny gracz, tak jak zna go ekwipunek.

Prop

Type

Przykład
const held: HeldWeapon = { name: "WEAPON_PISTOL", label: "Pistol" };

Pojazdy

VehicleProps

Wygląd i tuning pojazdu jako zwykłe dane: kolory, modyfikacje, dodatki, malowanie, koła, neony, przyciemnienie szyb, tablica i stan. Z @aicore-fivem/lib/shared. Zapisany JSON zawiera v: 1. Otrzymane dane sprawdzaj przez toVehicleProps.

Prop

Type

Przykład
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

Co świeżo stworzony pojazd dostaje ponad domyślne ustawienia modelu (setup funkcji spawnVehicle z liba, kolor wybrany w sklepie). Z @aicore-fivem/lib/shared. Każde pole jest opcjonalne. Otrzymane dane sprawdzaj przez toVehicleSetup.

Prop

Type

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

KeyPurpose

Dlaczego gracz dostaje klucz pojazdu. Skrypty kluczy traktują każdy powód inaczej. Wszystko nieznane liczy się jako "temporary".

WartośćUżywaj, gdy
"purchase"Gracz jest teraz właścicielem pojazdu (dealer, nadanie przez admina): nowy klucz, starsze kopie przestają działać.
"garage"Posiadany pojazd wyjeżdża z garażu: właściciel ma już klucz.
"job"Pojazd służbowy na czas zmiany.
"rental"Wypożyczony pojazd na czas wypożyczenia.
"temporary"Wszystko inne krótkotrwałe (spawn admina, jazda próbna, pojazd z napadu). Domyślne.
Przykład
vehicleKeys.give(source, vehicle, "rental");

VehicleOwner

Kto jest właścicielem pojazdu ai-vehicles.

Prop

Type

Przykład
const owner: VehicleOwner = { type: "character", id: "12" };

OwnedVehicle

Posiadany pojazd tak, jak trzyma go ai-vehicles (GetVehicle).

Prop

Type

Przykład
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,
};

Świat

Weather

Nazwa typu pogody z kontraktu qb-weathersync, dokładnie wielkimi literami: "EXTRASUNNY", "CLEAR", "NEUTRAL", "SMOG", "FOGGY", "OVERCAST", "CLOUDS", "CLEARING", "RAIN", "THUNDER", "SNOW", "BLIZZARD", "SNOWLIGHT", "XMAS", "HALLOWEEN". Lista to stała WEATHERS; isWeather(value) sprawdza wartość.

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

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

BlipStyle

Wygląd blipa tak, jak zapisuje go widżet blip panelu. Z @aicore-fivem/lib/shared; czytaj przez readBlipStyle.

Prop

Type

Przykład
const style: BlipStyle = { sprite: 52, color: 2, scale: 0.8 };

PlacePed

NPC stojący w miejscu (sklepikarz, urzędnik). Z @aicore-fivem/lib/shared; czytaj przez readPlacePed.

Prop

Type

Przykład
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 } };

UI gracza

NotificationKind

Kolor i ikona karty powiadomienia: "success", "error", "info" lub "warning". Inne strony mogą nazywać to "rodzajem powiadomienia".

Przykład
notify(source, "Vehicle stored", "success"); // serwerowy lib notify(source, text, kind?, duration?)

Notification

Karta powiadomienia. Rysuje ją ai-lib; teksty są już przetłumaczone przez nadawcę.

Prop

Type

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

ProgressOptions

Co pokazuje kliencki pasek postępu (progress liba po stronie klienta) i jak gracz może się ruszać, gdy pasek trwa. Z @aicore-fivem/lib/client.

Prop

Type

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

ServerProgress

Pasek, który serwerowy proces uruchamia na kliencie gracza (progressFor liba). Te same pola co ProgressOptions bez whileDead. ProgressForOptions (z @aicore-fivem/lib/server) dodaje jedno pole:

Prop

Type

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

Jeden wiersz menu.

Prop

Type

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

Menu do pokazania (menu liba, w Lua aiLib.menu.show).

Prop

Type

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

InputField

Jedno pole okna wprowadzania. To pole liczbowe albo tekstowe, wybierane przez type.

Pole liczbowe:

Prop

Type

Pole tekstowe:

Prop

Type

InputRequest

Okno wprowadzania do pokazania (input liba, w Lua aiLib.input).

Prop

Type

Przykład
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

Gdzie unosi się podpowiedź w świecie: stały punkt albo miejsca na encjach. Przesunięcia encji są w przestrzeni samej encji, więc podpowiedź porusza się i obraca razem z nią (otwierane drzwi). Z kilku miejsc na encjach w każdej klatce pokazywane jest to najbliżej gracza.

Punkt:

Prop

Type

Miejsca na encjach:

Prop

Type

Przykład
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

Wybierak przedmiotów ai-core dla narzędzi administratora: każdy przedmiot aktywnego ekwipunku z obrazkiem, wyszukiwaniem i ilością.

Prop

Type

Przykład
const request: ItemPickerRequest = { title: "Give items", target: 7 };

PickedItem

Jeden wiersz, którym odpowiada wybierak przedmiotów.

Prop

Type

SkillDifficulty

Jak trudny jest etap sprawdzianu umiejętności: "easy", "medium", "hard" albo własny kształt ox_lib { areaSize: number; speedMultiplier: number }. Nazwane etapy: easy = zielony łuk 50 stopni przy 0.6 obrotu na sekundę, medium = 40 przy 0.85, hard = 25 przy 1.

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

LockpickResult

Co odpowiada wytrych: "opened" (zamek się otworzył), "broken" (gracz złamał każdy wytrych) lub "cancelled" (gracz go zamknął).

RadialItem

Jeden element koła radialnego (radial liba). Jego funkcje działają w zasobie, który go dodał; ai-core usuwa element, gdy ten zasób się zatrzymuje.

Prop

Type

Przykład
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

Linia pomocy klawiszy, którą skrypt pokazuje przez jakiś czas (klawisze noclipa administratora). Podaj keybind lub key.

Prop

Type

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

KeyHintWhen

Kiedy podpowiedź skrótu klawiszowego pokazuje się w HUD: "foot" (pieszo), "vehicle" (w pojeździe) lub "always". Właściciel serwera może to zmienić w panelu; skrót bez tej wartości nigdy nie pokazuje podpowiedzi.

KeyHintView

Jeden wiersz podpowiedzi klawiszy pokazywanych przez HUD (kliencki eksport GetKeyHints, zdarzenie ai-core:client:keyHints): klawisz tak, jak gracz go przypisał, i co robi.

Prop

Type

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

Logi, alerty, telefon

LogOptions

Dodatkowe szczegóły linii logu (aiLog liba, eksport Log).

Prop

Type

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

LogLevel

Poziom ważności linii logu: "debug", "info", "warn" lub "error".

LogChannel

Jak zasób opisuje jeden ze swoich kanałów logów (aiLogChannels liba, eksport LogChannels, wywoływany raz przy starcie). Url webhooków nigdy tu nie ma: właściciel serwera ustawia je w panelu ai-core.

Prop

Type

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

DispatchAlert

Alert policji (lub innej pracy). Aktywny skrypt alertów pokazuje go członkom jobs na służbie. Teksty są już przetłumaczone.

Prop

Type

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

PhoneMail

Mail, który skrypt wysyła na telefon gracza.

Prop

Type

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

PhoneNotification

Powiadomienie na telefonie gracza.

Prop

Type

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

Rachunki, MDT, EMS, garaże

BillRequest

Rachunek wysyłany przez skrypt (billing.send liba): od pracy (mandaty, opłaty za usługi) lub od gracza, do gracza. Teksty są już przetłumaczone.

Prop

Type

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

UnpaidBill

Jeden otwarty rachunek gracza.

Prop

Type

MdtRecord

Wpis, który skrypt zapisuje w policyjnym MDT (mdt.record liba). Teksty są już przetłumaczone.

Prop

Type

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

MdtRecordKind

Czego dotyczy wpis MDT: "fine", "warrant", "arrest" lub "jail".

DistressCall

Wezwanie medyków przez powalonego gracza (ems.distress liba).

Prop

Type

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

GaragedVehicle

Jeden z pojazdów gracza trzymany przez skrypt garażu.

Prop

Type

Wygląd

CharacterAppearance

Wygląd tak, jak wydaje go warstwa wyglądu ai-core: model peda i własne dane skryptu ubrań. Traktuj data jako nieprzejrzyste: oddaj cały obiekt do ApplyAppearance bez zmian.

Prop

Type

ClothingMenu

Menu skryptu ubrań, które otwierają inne skrypty: "clothing" (sklep z ubraniami), "barber" lub "outfits" (zapisane stroje gracza).

JobOutfit

Strój pracy (mundur) dla modelu freemode, który nosi gracz. Zmieniają się tylko wymienione części.

Prop

Type

OutfitPiece

Jedna część stroju pracy.

Prop

Type

Przykład
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 } ],
};

Komendy

CommandInfo

Komenda addCommand liba tak, jak zasób zgłasza ją do ai-core (karta Commands w panelu ją wyświetla).

Prop

Type

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

CommandParam

Jeden argument komendy addCommand liba, parsowany i sprawdzany przed uruchomieniem handlera.

Prop

Type

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

Panel administratora

PanelSchema

Panel administratora skryptu: jakie ma pliki danych i jak panel je układa. Zasób przekazuje go do AdminPanel liba (zobacz Panel administratora). Każde pole tekstowe to klucz językowy z locales/*.json zasobu.

Prop

Type

Przykład
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

Jeden plik danych panelu.

Prop

Type

TabSpec

Jedna karta panelu, pokazująca jeden plik.

Prop

Type

CardSpec

Jedna karta pól wewnątrz karty panelu.

Prop

Type

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

LookupSource

Lista wartości, z której wybiera pole panelu. lookup na polu tekstowym lub polu nazw sprawia, że serwer odrzuca wszystko inne, a panel oferuje listę.

WartośćLista
"item"Przedmioty aktywnego ekwipunku.
"job"Prace z listy Jobs w panelu.
"gang"Gangi z listy Gangs w panelu.
"account"Konta pieniężne.
"resource"Uruchomione zasoby.
"player"Gracze online, według citizen id.
"vehicle"Każdy model pojazdu, który ma gra administratora, łącznie z dodatkami. Serwer nigdy go nie odrzuca (nie umie wyświetlić listy modeli).
"ped"Modele pedów GTA. Serwer nigdy ich nie odrzuca.

AdminDelta

Zmieniony rekord pliku panelu, przekazywany administratorom, którzy mają otwarty panel (eksport AdminPanelChanged).

Prop

Type

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

UpdateInfo

Skrypt, którego wydanie na GitHubie jest nowsze niż uruchomiona wersja (sprawdzanie aktualizacji ai-core, eksport GetUpdates).

Prop

Type

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

Most vRP

VrpConfig

Mapowanie uprawnień vRP z panelu (data/vrp.json) tak, jak czyta je most vRP ai-core (serwerowy eksport GetVrpConfig; lokalne zdarzenie ai-core:vrp:config niesie ten sam kształt po zmianie).

Prop

Type

VrpPermissionRule: nadaje permission każdemu, kto pasuje do dowolnego wypełnionego celu.

Prop

Type

VrpGroupAlias: nazwa grupy vRP, która oznacza stopień pracy lub gangu albo administratora (rangi w stylu vRPex, takie jak "Coronel").

Prop

Type

Przykład
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" },
};

Na tej stronie