Cómo crear un comando /car en FiveM con IA (paso a paso)

5 min de lectura

  • ia fivem
  • comando car fivem
  • spawnear vehículo
  • chatgpt fivem

Para crear un comando /car en FiveM con IA, descríbelo con palabras simples, deja que el agente busque conflictos de nombre, cree un recurso nuevo, añada la línea ensure y un permiso solo para admins, y pruébalo en el juego como admin y como jugador normal.

Un comando /car que genera un vehículo es de lo primero que quieren muchos dueños de FiveM, y es una buena prueba para cualquier IA para FiveM. Toca un script de cliente, uno de servidor, un manifest, server.cfg y permisos, y tiene un agujero de seguridad clásico si se escribe con descuido. Este artículo muestra cómo pedírselo a un agente que corre junto a tu servidor, qué hace el agente y cómo comprobar el resultado en el juego.

Si todavía eliges herramienta, lee antes la comparativa de IA para FiveM. Los pasos de abajo usan FiveAI, donde un agente trabaja dentro de tu carpeta server-data.

Paso 1: descríbelo con palabras simples

No hace falta nombrar archivos. Di qué quieres, quién puede usarlo y los límites:

Crea un comando /car. /car sultan genera un Sultan a mi lado y me sienta en el asiento del conductor. Solo pueden usarlo los admins. Si escribo un modelo que no existe, avísame.

Los tres detalles de ese mensaje hacen trabajo real. "Solo admins" evita que cualquier jugador genere coches. "Avísame" le da al comando un camino de error. El modelo como argumento hace que un solo comando sirva para cualquier vehículo.

Aquí puedes omitir el framework, porque generar un vehículo no depende de ESX, QBCore ni Qbox. Menciónalo cuando la petición toque dinero, trabajos o ítems, por ejemplo "cobra 500 $ al jugador cuando use /car".

Paso 2: qué hace el agente

El agente sigue la misma rutina en casi todas las peticiones, y puedes verla en el chat y en la consola en vivo:

  1. Busca primero. Revisa resources/ y server.cfg por si ya existe un comando car. Si existe, te lo dice y pregunta antes de tocarlo. Lo que ya existe es tuyo, así que no lo reescribe en silencio.
  2. Crea un recurso nuevo. Las funciones nuevas van en su propia carpeta dentro de resources/[fiveai]/ (aquí car-command), así que el resto de tus scripts no se toca.
  3. Añade la línea ensure a server.cfg para que el recurso arranque con el servidor.
  4. Configura el permiso. El comando es restringido, así que el jugador necesita el permiso command.car. El agente se lo da a un grupo o a jugadores concretos, no a todo el mundo.
  5. Arranca el recurso y lee la consola. Puede pedirte el visto bueno antes de arrancarlo, porque cambia el servidor en marcha. Después revisa la consola en busca de errores.
  6. Te informa con palabras simples: qué hizo, qué archivos y qué probar.

Un detalle que debes esperar: una línea de permisos en server.cfg solo se aplica tras reiniciar el servidor por completo. El agente no reinicia tu servidor por su cuenta. Te dice que el cambio se aplica cuando lo reinicies, por ejemplo desde txAdmin.

Paso 3: cómo es el resultado

El código exacto varía, pero un resultado correcto tiene esta forma. El manifest, fxmanifest.lua:

fx_version 'cerulean'
game 'gta5'
lua54 'yes'

server_script 'server.lua'
client_script 'client.lua'

El script de servidor registra un comando restringido y valida el argumento:

RegisterCommand('car', function(source, args)
    if source == 0 then return end

    local model = args[1]
    if not model or not model:match('^[%w_]+$') then
        TriggerClientEvent('chat:addMessage', source, { args = { 'car', 'Uso: /car <modelo>' } })
        return
    end

    TriggerClientEvent('fiveai_car:spawn', source, model)
end, true)

El último argumento, true, es lo que hace que el comando sea restringido. El script de cliente comprueba que el modelo existe, lo carga y lo genera:

RegisterNetEvent('fiveai_car:spawn', function(modelName)
    local hash = joaat(modelName)
    if not IsModelInCdimage(hash) or not IsModelAVehicle(hash) then
        TriggerEvent('chat:addMessage', { args = { 'car', modelName .. ' no es un vehículo.' } })
        return
    end

    RequestModel(hash)
    while not HasModelLoaded(hash) do Wait(0) end

    local ped = PlayerPedId()
    local coords = GetEntityCoords(ped)
    local vehicle = CreateVehicle(hash, coords.x, coords.y, coords.z, GetEntityHeading(ped), true, false)
    SetPedIntoVehicle(ped, vehicle, -1)
    SetModelAsNoLongerNeeded(hash)
end)

Y en server.cfg, junto a las otras líneas de permisos, el nombre del recurso y el permiso:

ensure car-command
add_ace group.admin command.car allow

Dos cosas que revisar al leer lo que produjo un agente. El comando es restringido, así que un jugador normal no puede usarlo, y el nombre del modelo se valida antes de usarlo. Si quieres entender por qué importan, lee por qué ChatGPT escribe scripts de FiveM rotos y la guía de la skill de seguridad de FiveM.

Paso 4: compruébalo en el juego

No te fíes de un "listo", tampoco el del agente. Pruébalo:

  1. Reinicia el servidor si el agente dijo que el permiso lo necesita, y entra.
  2. Ejecuta /car sultan como admin. Debería aparecer un Sultan donde estás y deberías quedar en el asiento del conductor.
  3. Ejecuta /car notacar. Deberías ver un error en el chat y ningún fallo.
  4. Ejecuta /car sultan como jugador normal. Debería rechazarse. Es la prueba que casi todos se saltan, y la que importa en un servidor en vivo.
  5. Mira la consola. Pregúntale al agente "¿hay errores en la consola?" o abre la consola F8 en el juego. Un arranque limpio no tiene líneas rojas del recurso nuevo.

Si algo falla, cuenta lo que viste: "el coche aparece pero no me sienta de conductor" o "la consola dice que no encuentra el recurso". El agente lee la consola y los archivos y corrige lo mínimo. No reescribe el recurso.

Adáptalo a tu servidor

Cuando el comando básico funcione, amplíalo de un cambio en un cambio y pide cada uno:

  • "Borra mi vehículo anterior de /car cuando genere uno nuevo."
  • "Permite solo estos modelos: sultan, buffalo, kuruma."
  • "Registra cada uso de /car con el nombre del jugador."
  • "Hazlo un beneficio de trabajo: solo la policía puede usarlo." Para este, dile al agente tu framework. La guía de ESX y la guía de QBCore muestran las APIs de jugador y trabajo que debe usar.

Peticiones pequeñas y concretas dan cambios pequeños y fáciles de revisar. Guarda resources/ en git para poder deshacer cualquiera.

Añade estas skills a Cursor, VS Code o Claude Code para que la IA conozca las APIs reales que se mencionan en este artículo.