AI Core
Referencia de la API

Tipos compartidos

Cada tipo al que enlazan las páginas de la API, con cada campo, su tipo y un valor de ejemplo.

Las páginas de la API escriben los tipos por su nombre (Vec3, ActionResult, InventoryRef...). Esta página explica cada uno una sola vez: sus campos, qué significa cada campo y un valor de ejemplo.

De dónde viene un tipo:

PaqueteImportTipos
@aicore-fivem/sharedimport type { AiPlayerData } from "@aicore-fivem/shared";Todo lo de esta página salvo que el título diga otra cosa.
@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 no tiene tipos en tiempo de ejecución. Una tabla de Lua con las mismas claves es el mismo valor: { x = 1.0, y = 2.0, z = 3.0 } es un Vec3. Los arrays son listas de Lua ({ 'police', 'sheriff' }), null es nil. Consulta Lib para Lua para los vectores.

Posiciones

Vec3

Un punto del mundo, en metros. En GTA x es el este, y el norte y z hacia arriba.

Prop

Type

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

Vec4

Un punto con orientación: dónde está un ped o aparece un vehículo y hacia dónde mira. Los campos vec4 del panel y la herramienta de puntos del panel guardan esta forma.

Prop

Type

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

Un vector4 de Lua llama w a la orientación. Los lectores de la lib (readVec4) aceptan tanto heading como w.

ZoneShape

Un área del mundo. La usan las Zones de cliente y las comprobaciones de área del servidor (geometría de zonas). Es una de tres formas, elegida por type.

Esfera (una bola alrededor de un punto):

Prop

Type

Cilindro (un círculo en el suelo que se extiende hacia arriba y hacia abajo):

Prop

Type

Polígono (un polígono en el suelo entre dos alturas):

Prop

Type

Ejemplo
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

Lo que cada acción del servidor responde a un cliente: o éxito, o una clave de idioma que el cliente muestra como motivo. La rama de éxito puede llevar campos extra (ActionResult<{ id: number }>). El nuevo estado nunca viaja en la respuesta: llega como delta.

Éxito:

Prop

Type

Rechazo:

Prop

Type

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

Crea los rechazos con fail; lee las respuestas con isActionOk y replyError.

Jugadores y personajes

AiPlayerData

Los datos del jugador que ai-core envía al propio cliente del jugador: un snapshot completo cuando carga el personaje y después solo la clave que cambió. También los devuelve el export GetPlayerData en ambos lados. Otras páginas pueden llamarlo "datos del jugador".

Prop

Type

Ejemplo
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

Un personaje tal como lo ven otros recursos (el "personaje" de GetCharacter, playerLoaded y AiPlayerData.character).

Prop

Type

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

JobMembership

Un trabajo que tiene un personaje.

Prop

Type

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

GangMembership

Una banda a la que pertenece un personaje.

Prop

Type

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

SpawnPoint

Dónde y cómo aparece en el mundo un personaje cargado (los datos que ai-core envía para poner al personaje en el mundo).

Prop

Type

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

Branding

El nombre y el aspecto del servidor en los menús a pantalla completa (ajustes General del panel; export GetBranding).

Prop

Type

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

PlayerCache

Los valores del jugador local que se leen a menudo, mantenidos al día por el único observador de ai-core (cache de la lib en el cliente). false significa "ninguno".

Prop

Type

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

UnloadReason

Por qué se soltó a un personaje.

ValorSignificado
"dropped"El jugador salió del servidor.
"switch"El jugador volvió a la pantalla de personajes.

Dinero

Nombres de cuenta

El dinero vive en cuentas con nombre. La lista Accounts del panel decide cuáles existen; ai-core trae estas:

NombreEtiquetaCantidad inicial
cashCash (efectivo)500
bankBank (banco)5000
black_moneyDirty money (dinero sucio)0
cryptoCrypto (cripto)0

Un dueño de servidor puede añadir, renombrar o quitar cuentas en el panel, así que lee la lista con el export GetAccountTypes en lugar de suponerla. Cuando la lista está vacía, ai-core mantiene una sola cuenta cash.

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

AccountTypeDefinition

Un tipo de cuenta de la lista Accounts del panel (GetAccountTypes devuelve Record<string, AccountTypeDefinition>, con el nombre de la cuenta como clave).

Prop

Type

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

MoneyRef

Un lado de una transferencia de dinero (TransferMoney): la cuenta de un jugador cargado, o la cuenta compartida de un trabajo o una banda.

Prop

Type

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

Trabajos y bandas

GradeDefinition

Un rango de un trabajo o una banda (contenido del panel).

Prop

Type

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

JobDefinition

Un trabajo de la lista Jobs del panel (GetJobDefinition). El rango n de un JobMembership es grades[n].

Prop

Type

Ejemplo
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

Una banda de la lista Gangs del panel (GetGangDefinition).

Prop

Type

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

AccessRule

Quién puede usar un lugar (una tienda, un alijo, un garaje): uno de los jobs o una de las gangs. Ambas listas vacías significa todo el mundo. De @aicore-fivem/lib/shared; léelo con readAccess.

Prop

Type

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

Inventario

InventoryRef

En qué inventario trabaja una llamada.

ValorSignifica
numberEl id de servidor de un jugador: el inventario propio de ese jugador.
stringCualquier otro inventario por su id: un nombre de alijo, un id de maletero o de guantera.
Ejemplo
inventory.addItem(source, "water", 2);          // un jugador
inventory.addItem("police_evidence", "phone", 1); // un alijo

ItemMetadata

Datos libres guardados en una pila de objetos (Record<string, unknown>): un número de serie, la durabilidad, una nota. Cada inventario muestra por sí mismo algunas claves (label, description, image en la mayoría).

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

Mantén los metadatos pequeños y aptos para JSON (cadenas, números, booleanos, objetos y arrays simples). Dos pilas con metadatos distintos nunca se apilan juntas.

InventoryStack

Una pila en un inventario (GetItems devuelve una lista de estas).

Prop

Type

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

UsedItem

La pila que recibe un handler de objeto usable cuando un jugador usa un objeto.

Prop

Type

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

UsableItemHandler

(source: number, item: UsedItem) => unknown: se ejecuta cuando un jugador usa el objeto. Devolver false conserva el objeto en los inventarios que retiran ellos mismos el objeto usado (ai-inventory retira la cantidad consume del objeto); los demás inventarios siguen sus propios ajustes de objeto.

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

ItemDefinition

Un objeto tal como lo define el inventario activo (GetItemDefinition). Otras páginas pueden llamarlo "objeto" o "definición de objeto".

Prop

Type

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

StashDefinition

Un alijo tal como lo guarda ai-core (los argumentos de RegisterStash).

Prop

Type

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

ShopProduct

Un producto de la tienda de un script.

Prop

Type

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

ShopDefinition

Una tienda que registra un script. El servidor la abre para un jugador; no tiene un lugar propio.

Prop

Type

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

HeldWeapon

El objeto de arma que lleva el jugador local, tal como lo conoce el inventario.

Prop

Type

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

Vehículos

VehicleProps

El aspecto y el tuning de un vehículo como datos simples: colores, mods, extras, vinilo, ruedas, neón, tintado, matrícula y estado. De @aicore-fivem/lib/shared. El JSON guardado lleva v: 1. Comprueba los datos recibidos con toVehicleProps.

Prop

Type

Ejemplo
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

Lo que recibe un vehículo recién aparecido además de los valores por defecto del modelo (el setup de spawnVehicle de la lib, el color elegido en una tienda). De @aicore-fivem/lib/shared. Todos los campos son opcionales. Comprueba los datos recibidos con toVehicleSetup.

Prop

Type

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

KeyPurpose

Por qué un jugador recibe la llave de un vehículo. Los scripts de llaves tratan cada caso de forma distinta. Cualquier valor desconocido cuenta como "temporary".

ValorÚsalo cuando
"purchase"El jugador ahora es dueño del vehículo (concesionario, entrega de un admin): una llave nueva, las copias anteriores dejan de funcionar.
"garage"Un vehículo en propiedad sale del almacén: el dueño ya tiene la llave.
"job"Un vehículo de trabajo para el turno.
"rental"Un vehículo alquilado durante el tiempo de alquiler.
"temporary"Cualquier otra cosa de corta duración (aparición por un admin, prueba de conducción, vehículo de un robo). El valor por defecto.
Ejemplo
vehicleKeys.give(source, vehicle, "rental");

VehicleOwner

Quién es dueño de un vehículo de ai-vehicles.

Prop

Type

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

OwnedVehicle

Un vehículo en propiedad tal como lo guarda ai-vehicles (GetVehicle).

Prop

Type

Ejemplo
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

Un nombre de tipo de clima del contrato de qb-weathersync, en mayúsculas exactas: "EXTRASUNNY", "CLEAR", "NEUTRAL", "SMOG", "FOGGY", "OVERCAST", "CLOUDS", "CLEARING", "RAIN", "THUNDER", "SNOW", "BLIZZARD", "SNOWLIGHT", "XMAS", "HALLOWEEN". La lista es la constante WEATHERS; isWeather(value) comprueba un valor.

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

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

BlipStyle

El aspecto de un blip tal como lo guarda el widget blip del panel. De @aicore-fivem/lib/shared; léelo con readBlipStyle.

Prop

Type

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

PlacePed

Un NPC de pie en un lugar (un tendero, un empleado). De @aicore-fivem/lib/shared; léelo con readPlacePed.

Prop

Type

Ejemplo
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 } };

Interfaz del jugador

NotificationKind

El color y el icono de una tarjeta de notificación: "success", "error", "info" o "warning". Otras páginas pueden llamarlo "tipo de notificación".

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

Notification

Una tarjeta de notificación. La dibuja ai-lib; el remitente ya envía los textos traducidos.

Prop

Type

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

ProgressOptions

Lo que muestra la barra de progreso del cliente (progress de la lib en el cliente) y cómo puede moverse el jugador mientras corre. De @aicore-fivem/lib/client.

Prop

Type

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

ServerProgress

La barra que un flujo del servidor muestra en el cliente de un jugador (progressFor de la lib). Los mismos campos que ProgressOptions sin whileDead. ProgressForOptions (de @aicore-fivem/lib/server) añade un campo:

Prop

Type

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

Una fila de un menú.

Prop

Type

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

Un menú para mostrar (menu de la lib, aiLib.menu.show en Lua).

Prop

Type

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

InputField

Un campo de un diálogo de entrada. Es un campo numérico o un campo de texto, elegido por type.

Campo numérico:

Prop

Type

Campo de texto:

Prop

Type

InputRequest

Un diálogo de entrada para mostrar (input de la lib, aiLib.input en Lua).

Prop

Type

Ejemplo
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

Dónde flota un aviso en el mundo: un punto fijo, o puntos sobre entidades. Los desplazamientos de entidad están en el espacio propio de la entidad, así que el aviso se mueve y gira con ella (una puerta que se abre). De varios puntos de entidad, en cada frame se muestra el más cercano al jugador.

Punto:

Prop

Type

Puntos de entidad:

Prop

Type

Ejemplo
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

El selector de objetos de ai-core para herramientas de admin: cada objeto del inventario activo con su imagen, un buscador y una cantidad.

Prop

Type

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

PickedItem

Una fila que responde el selector de objetos.

Prop

Type

SkillDifficulty

Lo difícil que es una etapa de la prueba de habilidad: "easy", "medium", "hard", o la propia forma de ox_lib { areaSize: number; speedMultiplier: number }. Las etapas con nombre: easy = arco verde de 50 grados a 0.6 vueltas por segundo, medium = 40 a 0.85, hard = 25 a 1.

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

LockpickResult

Lo que responde el forzado de cerradura: "opened" (la cerradura se abrió), "broken" (el jugador rompió todas las ganzúas) o "cancelled" (el jugador lo cerró).

RadialItem

Un elemento de la rueda radial (radial de la lib). Sus funciones se ejecutan en el recurso que lo añadió; ai-core quita el elemento cuando ese recurso se detiene.

Prop

Type

Ejemplo
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

Una línea de ayuda de teclas que un script muestra durante un rato (las teclas del noclip de admin). Da keybind o key.

Prop

Type

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

KeyHintWhen

Cuándo aparece en los HUD la ayuda de un keybind: "foot" (a pie), "vehicle" (en un vehículo) o "always". El dueño del servidor puede cambiarlo en el panel; un keybind sin este valor nunca muestra ayuda.

KeyHintView

Una fila de las ayudas de teclas que muestra un HUD (export de cliente GetKeyHints, evento ai-core:client:keyHints): la tecla tal como la tiene asignada el jugador y lo que hace.

Prop

Type

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

Logs, alertas, teléfono

LogOptions

Detalles extra de una línea de log (aiLog de la lib, export Log).

Prop

Type

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

LogLevel

Gravedad de una línea de log: "debug", "info", "warn" o "error".

LogChannel

Cómo describe un recurso uno de sus canales de log (aiLogChannels de la lib, export LogChannels, llamado una vez al iniciar). Las urls de webhook nunca están aquí: el dueño del servidor las pone en el panel de ai-core.

Prop

Type

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

DispatchAlert

Una alerta de policía (o de otro trabajo). El script de alertas activo se la muestra a los miembros de servicio de jobs. Los textos ya van traducidos.

Prop

Type

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

PhoneMail

Un correo que un script envía al teléfono de un jugador.

Prop

Type

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

PhoneNotification

Una notificación en el teléfono de un jugador.

Prop

Type

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

Facturación, MDT, EMS, garajes

BillRequest

Una factura que envía un script (billing.send de la lib): de un trabajo (multas, tarifas de servicio) o de un jugador, a un jugador. Los textos ya van traducidos.

Prop

Type

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

UnpaidBill

Una factura abierta de un jugador.

Prop

Type

MdtRecord

Un registro que un script escribe en el MDT de la policía (mdt.record de la lib). Los textos ya van traducidos.

Prop

Type

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

MdtRecordKind

De qué trata un registro del MDT: "fine", "warrant", "arrest" o "jail".

DistressCall

La llamada de un jugador caído a los médicos (ems.distress de la lib).

Prop

Type

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

GaragedVehicle

Uno de los vehículos de un jugador que guarda un script de garajes.

Prop

Type

Aspecto

CharacterAppearance

Un aspecto tal como lo entrega la capa de apariencia de ai-core: el modelo del ped y los datos propios del script de ropa. Trata data como opaco: devuelve el objeto entero a ApplyAppearance sin cambios.

Prop

Type

ClothingMenu

Un menú del script de ropa que abren otros scripts: "clothing" (tienda de ropa), "barber" o "outfits" (los conjuntos guardados del jugador).

JobOutfit

Un conjunto de trabajo (uniforme) para el modelo freemode que lleva el jugador. Solo cambian las piezas de la lista.

Prop

Type

OutfitPiece

Una pieza de un conjunto de trabajo.

Prop

Type

Ejemplo
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

Un comando de addCommand de la lib, tal como el recurso se lo anuncia a ai-core (la pestaña Commands del panel lo lista).

Prop

Type

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

CommandParam

Un argumento de un comando de addCommand de la lib, analizado y comprobado antes de que se ejecute el handler.

Prop

Type

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

Panel de administración

PanelSchema

El panel de administración de un script: qué archivos de datos tiene y cómo los organiza el panel. Un recurso se lo entrega al AdminPanel de la lib (consulta Panel de administración). Cada campo de texto es una clave de idioma de los locales/*.json del recurso.

Prop

Type

Ejemplo
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

Un archivo de datos de un panel.

Prop

Type

TabSpec

Una pestaña del panel, que muestra un archivo.

Prop

Type

CardSpec

Una tarjeta de campos dentro de una pestaña.

Prop

Type

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

LookupSource

Una lista de valores entre los que elige un campo del panel. Un lookup en un campo de texto o de nombres hace que el servidor rechace cualquier otra cosa y que el panel ofrezca la lista.

ValorLa lista
"item"Objetos del inventario activo.
"job"Trabajos de la lista Jobs del panel.
"gang"Bandas de la lista Gangs del panel.
"account"Cuentas de dinero.
"resource"Recursos iniciados.
"player"Jugadores conectados, por citizen id.
"vehicle"Cada modelo de vehículo que tiene el juego del admin, addons incluidos. El servidor nunca lo rechaza (no puede listar modelos).
"ped"Los modelos de ped de GTA. El servidor nunca lo rechaza.

AdminDelta

Un registro cambiado de un archivo del panel, reenviado a los admins que tienen el panel abierto (export AdminPanelChanged).

Prop

Type

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

UpdateInfo

Un script cuya release de GitHub es más nueva que la versión en marcha (la comprobación de actualizaciones de ai-core, export GetUpdates).

Prop

Type

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

Puente de vRP

VrpConfig

El mapeo de permisos de vRP del panel (data/vrp.json), tal como lo lee el puente de vRP de ai-core (export de servidor GetVrpConfig; el evento local ai-core:vrp:config lleva la misma forma tras un cambio).

Prop

Type

VrpPermissionRule: concede permission a quien coincida con cualquier objetivo rellenado.

Prop

Type

VrpGroupAlias: un nombre de grupo de vRP que significa un rango de trabajo o banda, o admin (rangos al estilo vRPex como "Coronel").

Prop

Type

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

En esta página