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-001El 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
- Generador y validador de fxmanifestCrea un manifiesto de recurso y verifica sus directivas.
- Creador y verificador de server.cfgCrea una configuración de servidor o revisa tus ajustes actuales.
- Creador de empleos QBCoreCrea un empleo en el mapa con rangos, zonas y funciones y descarga el recurso.