Saltar al contenido
rpcrate

Probador de scripts de FiveM

Sube un recurso y mira qué falla antes de que llegue a tu servidor: manifiesto, Lua, API del framework y seguridad de eventos, más un sandbox CfxLua que ejecuta sus eventos, hilos, exports y callbacks de NUI. Tu código se queda en tu navegador.

Suelta aquí el ZIP de un recurso

Una carpeta de recurso de FiveM como .zip (máx. 5 MB), un único archivo .lua o código pegado. No se sube nada: el análisis y la simulación se ejecutan en esta pestaña.

Las comprobaciones estáticas y la simulación CfxLua se ejecutan localmente en un Web Worker. Tus archivos solo se envían a RPCrate si eliges «Abrir en RPCrate AI». Los resultados simulados no demuestran que un recurso funcione en un FXServer real ni en GTA V.

Qué comprueba el probador

  • Sintaxis Lua, incluidas las extensiones CfxLua de FiveM (vectores, asignación compuesta, navegación segura, hashes con comillas invertidas)
  • fxmanifest.lua: fx_version, game, scripts y globs que no coinciden con ningún archivo, archivos NUI que no se envían, lua54, inicialización de ox_lib, dependencias
  • Llamadas a QBCore, Qbox, ESX, ox_lib, ox_inventory y ox_target contra versiones upstream fijadas, incluido el lado cliente/servidor
  • Natives que no existen o que solo existen en el otro lado, según los tipados publicados por Cfx.re
  • Eventos de red gestionados sin RegisterNetEvent, callbacks que nunca se registran, exports propios que nunca se definen
  • Eventos de servidor que confían en valores del cliente para dinero, ítems o trabajos, acciones privilegiadas sin comprobación de permisos, source usado tras Wait
  • Bucles infinitos sin Wait y manejadores de inicio/parada que se ejecutan para cada recurso

Qué se ejecuta, qué se simula y qué necesita un servidor real

Se ejecuta de verdad: tu Lua sobre CfxLua 5.4 compilado a WebAssembly, con el planificador de FiveM (CreateThread, Wait, SetTimeout), eventos, msgpack y json, e inicio y parada de recursos.

Simulado por RPCrate: un servidor y un cliente por jugador, TriggerServerEvent/TriggerClientEvent con source, exports entre recursos, state bags, callbacks de NUI, comandos con aces, KVP de recurso y dobles de prueba de QBCore, Qbox, ESX, ox_lib, ox_inventory, ox_target, qb-target y oxmysql.

Necesita un servidor real: natives del juego (entidades, vehículos, peds, mundo), OneSync, la base de datos, datos reales del framework y scripts de JavaScript o C#. Cuando el código los llama, el resultado indica «parcial» y lista las llamadas.

Ejemplos prácticos

Un evento de compra que confía en el cliente

RegisterNetEvent('shop:buy', function(item, price)
    local src = source
    local Player = QBCore.Functions.GetPlayer(src)
    if not Player or not Items[item] then return end
    if Player.Functions.RemoveMoney('cash', price, 'shop') then
        Player.Functions.AddItem(item, 1)
        TriggerClientEvent('shop:bought', src, item)
    end
end)

El precio viene del cliente, así que cualquier jugador puede comprar gratis o enviar un reembolso de cualquier importe. El analizador marca el patrón (LAB-SEC-001); después, el escenario de payloads hostiles envía eventos manipulados como un jugador sin trabajo y muestra el dinero que el servidor entregó.

Solución: buscar el precio en el servidor (Items[item].price) e ignorar lo que envía el cliente.

Un evento que FiveM descarta en silencio

-- client.lua
TriggerServerEvent('shop:sell', 'bread')

-- server.lua
AddEventHandler('shop:sell', function(item) … end) -- LAB-EVT-001

El cliente lo dispara con TriggerServerEvent, pero el servidor solo usa AddEventHandler. FiveM lo descarta con «was not safe for net»; la simulación muestra la misma línea en la traza y LAB-EVT-001 señala el manejador.

Un bucle que congela el cliente

CreateThread(function()
    while true do -- LAB-SCH-001
        if open then DisableControlAction(0, 1, true) end
    end
end)

while true do … end sin Wait nunca cede el control. LAB-SCH-001 marca el bucle y, en el sandbox, el watchdog detiene el hilo con «missing Wait in a loop?» en lugar de congelar tu navegador.

Preguntas frecuentes

¿Necesito GTA V o un servidor de FiveM para probar un script?
No. El probador analiza y comprueba el recurso y ejecuta su Lua en un sandbox CfxLua en tu navegador. Para todo lo que dependa del mundo del juego o de una base de datos real, el informe te indica exactamente qué sigue necesitando un servidor real.
¿Se sube mi código?
No. El análisis y la simulación se ejecutan en un Web Worker en tu navegador. Solo «Abrir en RPCrate AI» envía los archivos a tu cuenta de RPCrate, y únicamente después de iniciar sesión.
¿Una prueba superada significa que el script funciona en mi servidor?
Significa que el comportamiento simulado se superó. Es una evidencia sólida para el cableado de eventos, las comprobaciones de seguridad y los errores de Lua, pero no una garantía para las natives del juego, OneSync ni tu versión exacta del framework.
¿Qué frameworks son compatibles?
QBCore, Qbox y ESX, además de ox_lib, ox_inventory, ox_target, qb-target y oxmysql. Las comprobaciones estáticas usan sus API upstream fijadas; el sandbox carga dobles de prueba claramente etiquetados que listan lo que implementan.
¿Puede corregir los errores?
Abre el recurso en RPCrate AI: recibe los hallazgos y los resultados de las pruebas, propone un cambio que puedes revisar como diff, lo guarda como nueva versión y el Lab vuelve a ejecutar las comprobaciones y los escenarios.

Corrige lo que encontró el probador

Abre el recurso en RPCrate AI para reparar los hallazgos con un diff revisable, volver a ejecutar las pruebas y descargar el resultado, o comprueba un manifiesto con el generador de fxmanifest.

El sandbox ejecuta el CfxLua de FiveM mediante FiveLab (MIT), fijado en una revisión auditada.

Más herramientas gratuitas

Todas las herramientas gratuitas →