AI Core
Referência da API

Tipos compartilhados

Cada tipo para o qual as páginas da API apontam, com cada campo, o tipo dele e um valor de exemplo.

As páginas da API escrevem os tipos pelo nome (Vec3, ActionResult, InventoryRef...). Esta página explica cada um uma vez: os campos, o que cada campo significa e um valor de exemplo.

De onde vem um tipo:

PacoteImportTipos
@aicore-fivem/sharedimport type { AiPlayerData } from "@aicore-fivem/shared";Tudo nesta página, a menos que o título diga outra coisa.
@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.

O Lua não tem tipos em tempo de execução. Uma table Lua com as mesmas chaves é o mesmo valor: { x = 1.0, y = 2.0, z = 3.0 } é um Vec3. Arrays são listas Lua ({ 'police', 'sheriff' }), null é nil. Veja Lib para Lua para vetores.

Posições

Vec3

Um ponto no mundo, em metros. No GTA, x é o leste, y é o norte, z é para cima.

Prop

Type

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

Vec4

Um ponto com uma direção: onde um ped fica ou um veículo aparece e para que lado ele olha. Os campos vec4 do painel e a ferramenta de pontos do painel gravam este formato.

Prop

Type

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

Um vector4 do Lua chama a direção de w. Os leitores da lib (readVec4) aceitam tanto heading quanto w.

ZoneShape

Uma área no mundo. Usada pelos Zones do cliente e pelas verificações de área do servidor (geometria de zonas). É um de três formatos, escolhido por type.

Esfera (uma bola ao redor de um ponto):

Prop

Type

Cilindro (um círculo no chão, que se estende para cima e para baixo):

Prop

Type

Polígono (um polígono no chão entre duas alturas):

Prop

Type

Exemplo
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,
};

Resultados

ActionResult

O que toda ação do servidor responde a um cliente: ou sucesso, ou uma chave de idioma que o cliente mostra como motivo. Campos extras podem ir no ramo de sucesso (ActionResult<{ id: number }>). O novo estado em si nunca viaja na resposta: ele chega como um delta.

Sucesso:

Prop

Type

Recusa:

Prop

Type

Exemplo
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' }

Monte recusas com fail; leia respostas com isActionOk e replyError.

Jogadores e personagens

AiPlayerData

Os dados do jogador que o ai-core envia ao próprio cliente do jogador: um snapshot completo quando o personagem carrega, e depois só a chave que mudou. Também retornados pelo export GetPlayerData nos dois lados. Outras páginas podem chamá-los de "dados do jogador".

Prop

Type

Exemplo
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

Um personagem como os outros recursos o veem (o "character" de GetCharacter, de playerLoaded e de AiPlayerData.character).

Prop

Type

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

JobMembership

Um emprego que um personagem tem.

Prop

Type

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

GangMembership

Uma gangue em que um personagem está.

Prop

Type

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

SpawnPoint

Onde e como um personagem carregado aparece no mundo (o payload que o ai-core envia para colocar o personagem no mundo).

Prop

Type

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

Branding

O nome e a aparência do servidor nos menus de tela cheia (configurações General do painel; export GetBranding).

Prop

Type

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

PlayerCache

Os valores do jogador local lidos com frequência, mantidos atualizados pelo observador único do ai-core (cache da lib no cliente). false significa "nenhum".

Prop

Type

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

UnloadReason

Por que um personagem foi liberado.

ValorSignificado
"dropped"O jogador saiu do servidor.
"switch"O jogador voltou para a tela de personagens.

Dinheiro

Nomes de contas

O dinheiro fica em contas com nome. A lista Accounts do painel define quais existem; o ai-core vem com estas:

NomeRótuloQuantia inicial
cashCash (dinheiro vivo)500
bankBank (banco)5000
black_moneyDirty money (dinheiro sujo)0
cryptoCrypto0

O dono de um servidor pode adicionar, renomear ou remover contas no painel, então leia a lista com o export GetAccountTypes em vez de supor qual é. Quando a lista está vazia, o ai-core mantém uma única conta cash.

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

AccountTypeDefinition

Um tipo de conta da lista Accounts do painel (GetAccountTypes retorna Record<string, AccountTypeDefinition>, indexado pelo nome da conta).

Prop

Type

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

MoneyRef

Um lado de uma transferência de dinheiro (TransferMoney): a conta de um jogador carregado, ou a conta compartilhada de um emprego ou gangue.

Prop

Type

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

Empregos e gangues

GradeDefinition

Um cargo de um emprego ou gangue (conteúdo do painel).

Prop

Type

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

JobDefinition

Um emprego da lista Jobs do painel (GetJobDefinition). O cargo n de um JobMembership é grades[n].

Prop

Type

Exemplo
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

Uma gangue da lista Gangs do painel (GetGangDefinition).

Prop

Type

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

AccessRule

Quem pode usar um lugar (uma loja, um baú, uma garagem): um dos jobs ou uma das gangs. As duas listas vazias significam todos. De @aicore-fivem/lib/shared; leia com readAccess.

Prop

Type

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

Inventário

InventoryRef

Em qual inventário uma chamada trabalha.

ValorSignifica
numberO id de servidor de um jogador: o inventário desse jogador.
stringQualquer outro inventário pelo id: o nome de um baú, o id de um porta-malas ou porta-luvas.
Exemplo
inventory.addItem(source, "water", 2);          // um jogador
inventory.addItem("police_evidence", "phone", 1); // um baú

ItemMetadata

Dados livres gravados numa pilha de itens (Record<string, unknown>): um número de série, a durabilidade, uma nota. Cada inventário mostra algumas chaves ele mesmo (label, description, image na maioria deles).

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

Mantenha a metadata pequena e segura para JSON (strings, números, booleans, objetos e arrays simples). Duas pilhas com metadata diferente nunca se juntam.

InventoryStack

Uma pilha num inventário (GetItems retorna uma lista delas).

Prop

Type

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

UsedItem

A pilha que um handler de item usável recebe quando um jogador usa um item.

Prop

Type

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

UsableItemHandler

(source: number, item: UsedItem) => unknown: roda quando um jogador usa o item. Retornar false mantém o item em inventários que tiram um item usado eles mesmos (o ai-inventory tira a quantidade de consume do item); outros inventários seguem as próprias configurações de itens.

Exemplo
const onUse: UsableItemHandler = (source, item) => {
  if (item.metadata.durability === 0) return false; // mantém o item
  return true;
};

ItemDefinition

Um item como o inventário ativo o define (GetItemDefinition). Outras páginas podem chamá-lo de "item" ou "definição de item".

Prop

Type

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

StashDefinition

Um baú como o ai-core o guarda (os argumentos de RegisterStash).

Prop

Type

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

ShopProduct

Um produto de uma loja de script.

Prop

Type

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

ShopDefinition

Uma loja que um script registra. O servidor a abre para um jogador; ela não tem um lugar próprio.

Prop

Type

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

HeldWeapon

O item de arma que o jogador local segura, como o inventário o conhece.

Prop

Type

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

Veículos

VehicleProps

O visual e o tuning de um veículo como dados simples: cores, mods, extras, livery, rodas, neon, insulfilm, placa e estado. De @aicore-fivem/lib/shared. O JSON gravado traz v: 1. Verifique dados recebidos com toVehicleProps.

Prop

Type

Exemplo
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

O que um veículo recém-spawnado recebe por cima dos padrões do modelo (o setup do spawnVehicle da lib, a cor escolhida numa loja). De @aicore-fivem/lib/shared. Cada campo é opcional. Verifique dados recebidos com toVehicleSetup.

Prop

Type

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

KeyPurpose

Por que um jogador recebe a chave de um veículo. Os scripts de chaves tratam cada um de forma diferente. Qualquer valor desconhecido conta como "temporary".

ValorUse quando
"purchase"O jogador agora é dono do veículo (concessionária, admin deu): uma chave nova, cópias antigas param de funcionar.
"garage"Um veículo próprio sai da garagem: o dono já tem a chave.
"job"Um veículo de trabalho para o turno.
"rental"Um veículo alugado pelo tempo do aluguel.
"temporary"Qualquer outra coisa de curta duração (spawn de admin, test drive, veículo de assalto). O padrão.
Exemplo
vehicleKeys.give(source, vehicle, "rental");

VehicleOwner

Quem é dono de um veículo do ai-vehicles.

Prop

Type

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

OwnedVehicle

Um veículo próprio como o ai-vehicles o guarda (GetVehicle).

Prop

Type

Exemplo
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,
};

Mundo

Weather

Um nome de tipo de clima do contrato do qb-weathersync, em maiúsculas exatas: "EXTRASUNNY", "CLEAR", "NEUTRAL", "SMOG", "FOGGY", "OVERCAST", "CLOUDS", "CLEARING", "RAIN", "THUNDER", "SNOW", "BLIZZARD", "SNOWLIGHT", "XMAS", "HALLOWEEN". A lista é a constante WEATHERS; isWeather(value) verifica um valor.

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

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

BlipStyle

A aparência de um blip como o widget blip do painel a grava. De @aicore-fivem/lib/shared; leia com readBlipStyle.

Prop

Type

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

PlacePed

Um NPC parado num lugar (um lojista, um atendente). De @aicore-fivem/lib/shared; leia com readPlacePed.

Prop

Type

Exemplo
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 do jogador

NotificationKind

A cor e o ícone de um card de notificação: "success", "error", "info" ou "warning". Outras páginas podem chamá-lo de "tipo de notificação".

Exemplo
notify(source, "Vehicle stored", "success"); // notify(source, text, kind?, duration?) da lib de servidor

Notification

Um card de notificação. O ai-lib o desenha; os textos já vêm traduzidos por quem envia.

Prop

Type

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

ProgressOptions

O que a barra de progresso do cliente (progress da lib no cliente) mostra e como o jogador pode se mover enquanto ela corre. De @aicore-fivem/lib/client.

Prop

Type

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

ServerProgress

A barra que um fluxo do servidor roda no cliente de um jogador (progressFor da lib). Os mesmos campos de ProgressOptions sem whileDead. ProgressForOptions (de @aicore-fivem/lib/server) adiciona um campo:

Prop

Type

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

Uma linha de um menu.

Prop

Type

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

Um menu a mostrar (menu da lib, aiLib.menu.show em Lua).

Prop

Type

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

InputField

Um campo de uma caixa de entrada. É um campo numérico ou um campo de texto, escolhido por type.

Campo numérico:

Prop

Type

Campo de texto:

Prop

Type

InputRequest

Uma caixa de entrada a mostrar (input da lib, aiLib.input em Lua).

Prop

Type

Exemplo
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

Onde um prompt do mundo flutua: um ponto fixo, ou pontos em entidades. Os deslocamentos de entidade ficam no espaço próprio da entidade, então o prompt se move e gira com ela (uma porta que abre). De vários pontos em entidades, o mais próximo do jogador é mostrado a cada frame.

Ponto:

Prop

Type

Pontos em entidades:

Prop

Type

Exemplo
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

O seletor de itens do ai-core para ferramentas de admin: cada item do inventário ativo com a imagem, uma busca e uma quantidade.

Prop

Type

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

PickedItem

Uma linha que o seletor de itens responde.

Prop

Type

SkillDifficulty

O quanto um estágio de skill check é difícil: "easy", "medium", "hard", ou o formato próprio do ox_lib { areaSize: number; speedMultiplier: number }. Os estágios nomeados: easy = arco verde de 50 graus a 0.6 voltas por segundo, medium = 40 a 0.85, hard = 25 a 1.

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

LockpickResult

O que o lockpick responde: "opened" (a fechadura abriu), "broken" (o jogador quebrou todas as gazuas) ou "cancelled" (o jogador o fechou).

RadialItem

Um item da roda radial (radial da lib). As funções dele rodam no recurso que o adicionou; o ai-core descarta o item quando esse recurso para.

Prop

Type

Exemplo
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

Uma linha de ajuda de tecla que um script mostra por um tempo (as teclas do noclip de admin). Informe keybind ou key.

Prop

Type

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

KeyHintWhen

Quando a dica de um keybind aparece nos HUDs: "foot" (a pé), "vehicle" (num veículo) ou "always". O dono do servidor pode mudar isso no painel; um keybind sem isso nunca mostra dica.

KeyHintView

Uma linha das dicas de teclas que um HUD mostra (export de cliente GetKeyHints, evento ai-core:client:keyHints): a tecla como o jogador a tem associada e o que ela faz.

Prop

Type

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

Logs, alertas, celular

LogOptions

Detalhes extras de uma linha de log (aiLog da lib, export Log).

Prop

Type

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

LogLevel

Gravidade de uma linha de log: "debug", "info", "warn" ou "error".

LogChannel

Como um recurso descreve um dos seus canais de log (aiLogChannels da lib, export LogChannels, chamado uma vez ao iniciar). As urls de webhook nunca ficam aqui: o dono do servidor as define no painel do ai-core.

Prop

Type

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

DispatchAlert

Um alerta para a polícia (ou outro emprego). O script de alertas ativo o mostra aos membros em serviço de jobs. Os textos já vêm traduzidos.

Prop

Type

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

PhoneMail

Um e-mail que um script envia para o celular de um jogador.

Prop

Type

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

PhoneNotification

Uma notificação no celular de um jogador.

Prop

Type

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

Faturas, MDT, EMS, garagens

BillRequest

Uma fatura que um script envia (billing.send da lib): de um emprego (multas, taxas de serviço) ou de um jogador, para um jogador. Os textos já vêm traduzidos.

Prop

Type

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

UnpaidBill

Uma fatura em aberto de um jogador.

Prop

Type

MdtRecord

Um registro que um script escreve no MDT da polícia (mdt.record da lib). Os textos já vêm traduzidos.

Prop

Type

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

MdtRecordKind

Do que trata um registro do MDT: "fine", "warrant", "arrest" ou "jail".

DistressCall

O chamado de um jogador caído aos médicos (ems.distress da lib).

Prop

Type

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

GaragedVehicle

Um dos veículos de um jogador guardados por um script de garagem.

Prop

Type

Visuais

CharacterAppearance

Um visual como a camada de aparência do ai-core o entrega: o modelo do ped e os dados próprios do script de roupas. Trate data como opaco: devolva o objeto inteiro a ApplyAppearance sem alterações.

Prop

Type

ClothingMenu

Um menu de script de roupas que outros scripts abrem: "clothing" (loja de roupas), "barber" ou "outfits" (os outfits salvos do jogador).

JobOutfit

Um outfit de emprego (uniforme) para o modelo freemode que o jogador usa. Só as peças listadas mudam.

Prop

Type

OutfitPiece

Uma peça de um outfit de emprego.

Prop

Type

Exemplo
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 } ],
};

Comandos

CommandInfo

Um comando do addCommand da lib, como o recurso o anuncia ao ai-core (a aba Commands do painel o lista).

Prop

Type

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

CommandParam

Um argumento de um comando do addCommand da lib, interpretado e verificado antes de o handler rodar.

Prop

Type

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

Painel de administração

PanelSchema

O painel de administração de um script: quais arquivos de dados ele tem e como o painel os organiza. Um recurso o entrega ao AdminPanel da lib (veja Painel de administração). Cada campo de texto é uma chave de idioma dos locales/*.json do recurso.

Prop

Type

Exemplo
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

Um arquivo de dados de um painel.

Prop

Type

TabSpec

Uma aba do painel, que mostra um arquivo.

Prop

Type

CardSpec

Um card de campos dentro de uma aba.

Prop

Type

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

LookupSource

Uma lista de valores de onde um campo do painel escolhe. Um lookup num campo de texto ou de nomes faz o servidor recusar qualquer outra coisa e o painel oferecer a lista.

ValorA lista
"item"Itens do inventário ativo.
"job"Empregos da lista Jobs do painel.
"gang"Gangues da lista Gangs do painel.
"account"Contas de dinheiro.
"resource"Recursos iniciados.
"player"Jogadores online, pelo citizen id.
"vehicle"Cada modelo de veículo que o jogo do admin tem, addons incluídos. Nunca recusado pelo servidor (ele não consegue listar modelos).
"ped"Os modelos de ped do GTA. Nunca recusado pelo servidor.

AdminDelta

Um registro alterado de um arquivo do painel, encaminhado aos admins que estão com o painel aberto (export AdminPanelChanged).

Prop

Type

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

UpdateInfo

Um script cuja release no GitHub é mais nova que a versão em execução (verificação de atualizações do ai-core, export GetUpdates).

Prop

Type

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

Ponte vRP

VrpConfig

O mapeamento de permissões vRP do painel (data/vrp.json), como a ponte vRP do ai-core o lê (export de servidor GetVrpConfig; o evento local ai-core:vrp:config traz o mesmo formato depois de uma mudança).

Prop

Type

VrpPermissionRule: concede permission a quem corresponder a qualquer alvo preenchido.

Prop

Type

VrpGroupAlias: um nome de grupo do vRP que significa um cargo de emprego ou gangue, ou admin (patentes no estilo vRPex, como "Coronel").

Prop

Type

Exemplo
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" },
};

Nesta página