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:
| Paquete | Import | Tipos |
|---|---|---|
@aicore-fivem/shared | import type { AiPlayerData } from "@aicore-fivem/shared"; | Todo lo de esta página salvo que el título diga otra cosa. |
@aicore-fivem/lib/shared | import type { Vec3 } from "@aicore-fivem/lib/shared"; | Vec3, Vec4, AccessRule, BlipStyle, ZoneShape, VehicleProps, VehicleSetup, PlacePed. |
@aicore-fivem/lib/client | import type { ProgressOptions } from "@aicore-fivem/lib/client"; | ProgressOptions. |
@aicore-fivem/lib/server | import 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
const counter: Vec3 = { x: 25.7, y: -1347.3, z: 29.5 };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
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
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
const done: ActionResult = { ok: true };
const created: ActionResult<{ id: number }> = { ok: true, id: 42 };
const refused: ActionResult = { ok: false, error: "NOT_ENOUGH_MONEY" };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
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
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
const membership: JobMembership = { job: "police", grade: 2 };GangMembership
Una banda a la que pertenece un personaje.
Prop
Type
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
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
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
const snapshot: PlayerCache = { ped: 258, playerId: 0, serverId: 7, vehicle: 81922, seat: -1, weapon: false };UnloadReason
Por qué se soltó a un personaje.
| Valor | Significado |
|---|---|
"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:
| Nombre | Etiqueta | Cantidad inicial |
|---|---|---|
cash | Cash (efectivo) | 500 |
bank | Bank (banco) | 5000 |
black_money | Dirty money (dinero sucio) | 0 |
crypto | Crypto (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.
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
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
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
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
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
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
const armoury: AccessRule = { jobs: ["police"], gangs: [], grades: { police: 2 }, onDuty: true };Inventario
InventoryRef
En qué inventario trabaja una llamada.
| Valor | Significa |
|---|---|
number | El id de servidor de un jugador: el inventario propio de ese jugador. |
string | Cualquier otro inventario por su id: un nombre de alijo, un id de maletero o de guantera. |
inventory.addItem(source, "water", 2); // un jugador
inventory.addItem("police_evidence", "phone", 1); // un alijoItemMetadata
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).
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
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
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.
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
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
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
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
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
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
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
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. |
vehicleKeys.give(source, vehicle, "rental");VehicleOwner
Quién es dueño de un vehículo de ai-vehicles.
Prop
Type
const owner: VehicleOwner = { type: "character", id: "12" };OwnedVehicle
Un vehículo en propiedad tal como lo guarda ai-vehicles (GetVehicle).
Prop
Type
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.
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
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
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".
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
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
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
const bar: ProgressForOptions = { label: "Picking the lock", duration: 6000, scenario: "PROP_HUMAN_PARKING_METER", minRatio: 0.9 };MenuItem
Una fila de un menú.
Prop
Type
const row: MenuItem = { id: "water", label: "Water ($5)", icon: "bottle-water" };MenuRequest
Un menú para mostrar (menu de la lib, aiLib.menu.show en Lua).
Prop
Type
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
| Valor | La 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
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
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
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" },
};