🧩 Creating a Custom Framework Bridge
Dream Bridge unterstützt ESX, QBCore und QBX standardmäßig. Wenn du ein anderes oder modifiziertes Framework verwendest, kannst du deine eigene benutzerdefinierte Brücke implementieren, um die Kompatibilität sicherzustellen.
Dieser Leitfaden führt dich durch das Erstellen einer neuen Brücke mit der eingebauten custom
-Vorlage.
💡 Hinweis: QBX (Qbox) ist vollständig kompatibel mit der QBCore-Brücke. Eine separate Implementierung ist nicht erforderlich.
📁 Bridge Struktur
Alle Bridges befinden sich im Ordner bridge/
.
Jedes Framework (z. B. esx
, qbcore
, custom
) hat seinen eigenen Unterordner mit:
client.lua
server.lua

Die Brücke erkennt dein aktives Framework automatisch über GetResourceState
.
Wichtig: Wenn das Ressourcen-Framework umbenannt wurde (z. B.
es_extended
→roleplay_framework
), kann die automatische Erkennung fehlschlagen.
🚀 Wie man die custom Bridge verwendet
Verwende die custom
-Brücke:
- Du verwendest ein eigenständiges oder inoffizielles/nicht unterstütztes Framework
➡️ Erstelle eine neue Brücke basierend auf dercustom
-Vorlage. - Du musst etwas in einer bestehenden Brücke bearbeiten/ändern.
➡️ Versuche zuerst, die bestehende Brücke zu bearbeiten. Z. B. deineowned_vehicles
-Tabelle unterscheidet sich von der Standardeinstellung. In diesem Fall musst du nur die fahrzeugbezogenen Funktionen in der bestehenden Brücke bearbeiten. Du musst keine neue erstellen oder alle ändern. - Es wird kein unterstütztes Framework standardmäßig erkannt.
➡️ Wenn du deine Framework-Ressource umbenannt hast (z. B.es_extended
->roleplay_framework
), wird sie möglicherweise nicht automatisch erkannt. In diesem Fall musst duGetResourceState
für deine umbenannte Ressource in der entsprechenden Brückendatei verwenden.
🛠️ Los geht's
- Kopiere den Ordner
bridge/custom
Benenne ihn so um, dass er dem Namen deines benutzerdefinierten Frameworks entspricht (z. B.bridge/myframework
). - Bearbeite sowohl
client.lua
als auchserver.lua
Implementiere deine Logik in den bereitgestellten Funktions-Stubs. - Passe die Framework-Erkennungslogik an
Ersetze oder erweitere dieGetResourceState
-Prüfungen, um dein benutzerdefiniertes Framework zu erkennen.
✅ Beispiel: client.lua
if GetResourceState('my_framework') ~= 'started' then return end
DreamFramework.ServerFramework = 'myframework'
DreamFramework.ServerFrameworkLoaded = true
function DreamFramework.showHelpNotification(text)
-- Dein eigener Code zur Anzeige der Hilfenachricht
end
function DreamFramework.getPlayerJobName()
return exports['my_framework']:GetJobName()
end
✅ Beispiel: server.lua
if GetResourceState('my_framework') ~= 'started' then return end
DreamFramework.ServerFramework = 'myframework'
DreamFramework.ServerFrameworkLoaded = true
function DreamFramework.getPlayerFromId(source)
return exports['my_framework']:GetPlayer(source)
end
function DreamFramework.getPlayerMoney(source, account)
local player = DreamFramework.getPlayerFromId(source)
return player.money or 0
end
🧠 Welche Funktionen müssen implementiert werden?
Deine Brücke muss alle Funktionen implementieren, die in der Custom-Vorlage und allen anderen Bridges enthalten sind. Dazu gehören:
- Spielerfunktionen (z. B.
getPlayerFromId
,getPlayerName
) - Jobverwaltung
- Inventar & Geld
- Fahrzeugbesitz
- Ereignisse wie
OnPlayerLoaded
,OnPlayerJobChange
- Alle anderen Funktionen, die die Brücke hat...
Überprüfe die Dateien
bridge/custom/client.lua
undbridge/custom/server.lua
auf die vollständige Liste der erforderlichen Funktionen.
Jede einzelne Funktion in der Bridge-Vorlage muss in deiner benutzerdefinierten Brücke implementiert werden.
Wenn eine einzige Funktion fehlt, wird dein Framework wahrscheinlich mehrere Fehler auslösen, Skripte unterbrechen, die sich auf diese Funktionen verlassen, und zu unerwartetem Verhalten führen.
➡️ Überprüfe bridge/myframework/client.lua
und bridge/myframework/server.lua
, um eine vollständige Funktionsabdeckung sicherzustellen.
Fehlende Funktionen = kaputte Erfahrung.
⏰ Ereignisbehandlung
Einige Ereignisse müssen manuell ausgelöst werden, um die Kompatibilität zu gewährleisten:
RegisterNetEvent('myfw:playerLoaded', function(playerId)
OnPlayerLoaded(playerId)
end)
RegisterNetEvent('myfw:jobChanged', function(playerId, newJob)
OnPlayerJobChange(playerId, newJob.name)
end)
💬 Tipps
- Verwende Protokolle wie
print("[Brücke] Geladene benutzerdefinierte Brücke")
für eine einfachere Fehlersuche. - Teste jede Funktion einzeln in einer kontrollierten Umgebung.
- Nutze den Ordner
custom
als Basis — er ist bereits mit allen erforderlichen Stubs gefüllt.
🙌 Trage deine Bridge bei
Hast du eine funktionierende Brücke für dein eigenes Framework erstellt?
Teile sie gerne mit uns — hilf anderen, von deiner Integration zu profitieren!
🧠 Dein Beitrag kann Teil des offiziellen Projekts werden, und du erhältst vollen Kredit für deine Arbeit.
💡 Wenn du Fragen hast oder Hilfe benötigst, wende dich gerne an unser Discord-Server.
Viel Spaß beim Programmieren! 🚀