Zum Inhalt springen
rpcrate

FiveM-Script-Tester

Lade eine Ressource hoch und sieh, was nicht stimmt, bevor sie deinen Server erreicht: Manifest, Lua, Framework-API und Event-Sicherheit, dazu eine CfxLua-Sandbox, die Events, Threads, Exports und NUI-Callbacks ausführt. Dein Code bleibt in deinem Browser.

ZIP-Datei der Ressource hier ablegen

Ein FiveM-Ressourcenordner als .zip (max. 5 MB), eine einzelne .lua-Datei oder eingefügter Code. Es wird nichts hochgeladen: Analyse und Simulation laufen in diesem Tab.

Statische Prüfungen und die CfxLua-Simulation laufen lokal in einem Web Worker. Deine Dateien werden nur an RPCrate gesendet, wenn du „In RPCrate AI öffnen“ wählst. Simulierte Ergebnisse beweisen nicht, dass eine Ressource auf einem echten FXServer oder in GTA V funktioniert.

Was der Tester prüft

  • Lua-Syntax einschließlich der CfxLua-Erweiterungen von FiveM (Vektoren, zusammengesetzte Zuweisung, Safe Navigation, Backtick-Hashes)
  • fxmanifest.lua: fx_version, game, Skripte und Globs, die keine Datei treffen, NUI-Dateien, die nicht gesendet werden, lua54, ox_lib-Initialisierung, Abhängigkeiten
  • Aufrufe von QBCore, Qbox, ESX, ox_lib, ox_inventory und ox_target gegen festgelegte Upstream-Versionen, inklusive Client-/Server-Seite
  • Natives, die nicht existieren oder nur auf der anderen Seite existieren, anhand der veröffentlichten Typings von Cfx.re
  • Net-Events ohne RegisterNetEvent, nie registrierte Callbacks, nie definierte eigene Exports
  • Server-Events, die Client-Werten für Geld, Items oder Jobs vertrauen, privilegierte Aktionen ohne Berechtigungsprüfung, source nach Wait verwendet
  • Endlosschleifen ohne Wait und Start-/Stopp-Handler, die für jede Ressource laufen

Was läuft, was simuliert wird und was einen echten Server braucht

Läuft echt: dein Lua auf CfxLua 5.4, kompiliert zu WebAssembly, mit dem Scheduler von FiveM (CreateThread, Wait, SetTimeout), Events, msgpack und json sowie Ressourcenstart und -stopp.

Von RPCrate simuliert: ein Server und ein Client pro Spieler, TriggerServerEvent/TriggerClientEvent mit source, Exports zwischen Ressourcen, State Bags, NUI-Callbacks, Befehle mit aces, Ressourcen-KVP sowie Test-Doubles von QBCore, Qbox, ESX, ox_lib, ox_inventory, ox_target, qb-target und oxmysql.

Braucht einen echten Server: Game-Natives (Entities, Fahrzeuge, Peds, Welt), OneSync, die Datenbank, echte Framework-Daten sowie JavaScript- oder C#-Skripte. Ruft Code diese auf, lautet das Ergebnis „teilweise getestet“ und listet die Aufrufe auf.

Beispiele aus der Praxis

Ein Kauf-Event, das dem Client vertraut

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)

Der Preis kommt vom Client, also kann jeder Spieler gratis kaufen — oder eine Erstattung beliebiger Höhe senden. Der Analyzer markiert das Muster (LAB-SEC-001); das Szenario mit feindlichen Payloads sendet dann präparierte Events als Spieler ohne Job und zeigt das Geld, das der Server ausgezahlt hat.

Lösung: Den Preis auf dem Server nachschlagen (Items[item].price) und ignorieren, was der Client sendet.

Ein Event, das FiveM stillschweigend verwirft

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

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

Der Client löst es mit TriggerServerEvent aus, aber der Server nutzt nur AddEventHandler. FiveM verwirft es mit „was not safe for net“ — die Simulation zeigt dieselbe Zeile im Trace, und LAB-EVT-001 verweist auf den Handler.

Eine Schleife, die den Client einfriert

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

while true do … end ohne Wait gibt nie ab. LAB-SCH-001 markiert die Schleife, und in der Sandbox stoppt der Watchdog den Thread mit „missing Wait in a loop?“, statt deinen Browser einzufrieren.

FAQ

Brauche ich GTA V oder einen FiveM-Server, um ein Script zu testen?
Nein. Der Tester parst und prüft die Ressource und führt ihr Lua in einer CfxLua-Sandbox in deinem Browser aus. Für alles, was von der Spielwelt oder einer echten Datenbank abhängt, sagt dir der Bericht genau, was noch einen echten Server braucht.
Wird mein Code hochgeladen?
Nein. Analyse und Simulation laufen in einem Web Worker in deinem Browser. Nur „In RPCrate AI öffnen“ sendet die Dateien an dein RPCrate-Konto, und das erst nach dem Login.
Heißt „bestanden“, dass das Script auf meinem Server funktioniert?
Es heißt, dass das simulierte Verhalten bestanden hat. Das ist ein starker Hinweis für Event-Verdrahtung, Sicherheitsprüfungen und Lua-Fehler, aber keine Garantie für Game-Natives, OneSync oder deine genaue Framework-Version.
Welche Frameworks werden unterstützt?
QBCore, Qbox und ESX sowie ox_lib, ox_inventory, ox_target, qb-target und oxmysql. Die statischen Prüfungen nutzen deren festgelegte Upstream-APIs; die Sandbox lädt klar gekennzeichnete Test-Doubles, die auflisten, was sie implementieren.
Kann es die Fehler beheben?
Öffne die Ressource in RPCrate AI: Sie erhält die Befunde und Testergebnisse, schlägt eine Änderung vor, die du als Diff prüfen kannst, speichert sie als neue Version, und das Lab führt die Prüfungen und Szenarien erneut aus.

Behebe, was der Tester gefunden hat

Öffne die Ressource in RPCrate AI, um Befunde mit einem prüfbaren Diff zu beheben, die Tests erneut auszuführen und das Ergebnis herunterzuladen — oder prüfe ein Manifest mit dem fxmanifest-Generator.

Die Sandbox führt FiveMs CfxLua über FiveLab (MIT) aus, festgelegt auf eine geprüfte Revision.

Weitere kostenlose Tools

Alle kostenlosen Tools →