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 à RPScripts se você escolher “Abrir no RPScripts 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 pela RPScripts: 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 RPScripts AI” envia os arquivos para a sua conta RPScripts, 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 RPScripts 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 RPScripts 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.