Testador de scripts FiveM
Envie um recurso e veja o que está errado antes de ele chegar ao seu servidor: manifesto, Lua, API do framework e segurança de eventos, além de um sandbox CfxLua que executa seus eventos, threads, exports e callbacks de NUI. Seu código fica no seu navegador.
Solte aqui o ZIP de um recurso
Uma pasta de recurso FiveM em .zip (máx. 5 MB), um único arquivo .lua ou código colado. Nada é enviado: a análise e a simulação rodam nesta aba.
As verificações estáticas e a simulação CfxLua rodam localmente em um Web Worker. Seus arquivos só são enviados ao RPCrate se você escolher “Abrir no RPCrate AI”. Resultados simulados não provam que um recurso funciona em um FXServer real ou no GTA V.
O que o testador verifica
- Sintaxe Lua, incluindo as extensões CfxLua do FiveM (vetores, atribuição composta, navegação segura, hashes com crase)
- fxmanifest.lua: fx_version, game, scripts e globs que não correspondem a nenhum arquivo, arquivos NUI que não são enviados, lua54, inicialização do ox_lib, dependências
- Chamadas de QBCore, Qbox, ESX, ox_lib, ox_inventory e ox_target contra versões upstream fixadas, incluindo o lado cliente/servidor
- Natives que não existem ou existem só do outro lado, segundo as tipagens publicadas pela Cfx.re
- Eventos de rede tratados sem RegisterNetEvent, callbacks nunca registrados, exports próprios nunca definidos
- Eventos de servidor que confiam em valores do cliente para dinheiro, itens ou empregos, ações privilegiadas sem checagem de permissão, source usado depois de Wait
- Loops infinitos sem Wait e handlers de início/parada que rodam para todo recurso
O que roda, o que é simulado e o que precisa de um servidor real
Roda de verdade: seu Lua em CfxLua 5.4 compilado para WebAssembly, com o scheduler do FiveM (CreateThread, Wait, SetTimeout), eventos, msgpack e json, e início e parada de recursos.
Simulado pelo RPCrate: um servidor e um cliente por jogador, TriggerServerEvent/TriggerClientEvent com source, exports entre recursos, state bags, callbacks de NUI, comandos com aces, KVP de recurso e test doubles de QBCore, Qbox, ESX, ox_lib, ox_inventory, ox_target, qb-target e oxmysql.
Precisa de um servidor real: natives do jogo (entidades, veículos, peds, mundo), OneSync, o banco de dados, dados reais do framework e scripts em JavaScript ou C#. Quando o código chama esses itens, o resultado indica “parcial” e lista as chamadas.
Exemplos práticos
Um evento de compra que confia no 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)O preço vem do cliente, então qualquer jogador pode comprar de graça ou enviar um reembolso de qualquer valor. O analisador sinaliza o padrão (LAB-SEC-001); em seguida, o cenário de payloads hostis envia eventos forjados como um jogador sem emprego e mostra o dinheiro que o servidor entregou.
Correção: buscar o preço no servidor (Items[item].price) e ignorar o que o cliente envia.
Um evento que o FiveM descarta em silêncio
-- client.lua
TriggerServerEvent('shop:sell', 'bread')
-- server.lua
AddEventHandler('shop:sell', function(item) … end) -- LAB-EVT-001O cliente o dispara com TriggerServerEvent, mas o servidor só usa AddEventHandler. O FiveM o descarta com “was not safe for net”; a simulação mostra a mesma linha no trace, e o LAB-EVT-001 aponta para o handler.
Um loop que congela o cliente
CreateThread(function()
while true do -- LAB-SCH-001
if open then DisableControlAction(0, 1, true) end
end
end)while true do … end sem Wait nunca cede o controle. O LAB-SCH-001 marca o loop e, no sandbox, o watchdog para a thread com “missing Wait in a loop?” em vez de congelar o seu navegador.
Perguntas frequentes
- Preciso do GTA V ou de um servidor FiveM para testar um script?
- Não. O testador analisa e verifica o recurso e executa o Lua dele em um sandbox CfxLua no seu navegador. Para tudo que depende do mundo do jogo ou de um banco de dados real, o relatório diz exatamente o que ainda precisa de um servidor real.
- Meu código é enviado?
- Não. A análise e a simulação rodam em um Web Worker no seu navegador. Só “Abrir no RPCrate AI” envia os arquivos para a sua conta RPCrate, e apenas depois de você entrar.
- Um teste aprovado significa que o script funciona no meu servidor?
- Significa que o comportamento simulado foi aprovado. É uma evidência forte para a ligação de eventos, as checagens de segurança e os erros de Lua, mas não uma garantia para natives do jogo, OneSync ou a versão exata do seu framework.
- Quais frameworks são suportados?
- QBCore, Qbox e ESX, além de ox_lib, ox_inventory, ox_target, qb-target e oxmysql. As verificações estáticas usam as APIs upstream fixadas deles; o sandbox carrega test doubles claramente identificados que listam o que implementam.
- Ele consegue corrigir os erros?
- Abra o recurso no RPCrate AI: ele recebe os achados e os resultados dos testes, propõe uma alteração que você pode revisar como diff, salva como nova versão e o Lab roda as verificações e os cenários de novo.
Corrija o que o testador encontrou
Abra o recurso no RPCrate AI para corrigir os achados com um diff revisável, rodar os testes de novo e baixar o resultado, ou verifique um manifesto com o gerador de fxmanifest.
O sandbox executa o CfxLua do FiveM por meio do FiveLab (MIT), fixado em uma revisão auditada.
Mais ferramentas gratuitas
- Gerador e validador de fxmanifestCrie um manifesto de recurso e verifique suas diretivas.
- Criador e verificador de server.cfgCrie uma configuração de servidor ou verifique suas configurações atuais.
- Criador de empregos QBCoreCrie um emprego no mapa com cargos, zonas e funções e baixe o recurso.