Zum Hauptinhalt springen

🧩 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
Bridge Struktur

Die Brücke erkennt dein aktives Framework automatisch über GetResourceState.

Wichtig: Wenn das Ressourcen-Framework umbenannt wurde (z. B. es_extendedroleplay_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 der custom-Vorlage.
  • Du musst etwas in einer bestehenden Brücke bearbeiten/ändern.
    ➡️ Versuche zuerst, die bestehende Brücke zu bearbeiten. Z. B. deine owned_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 du GetResourceState für deine umbenannte Ressource in der entsprechenden Brückendatei verwenden. Custom Bridge GetResourceState

🛠️ Los geht's

  1. Kopiere den Ordner bridge/custom
    Benenne ihn so um, dass er dem Namen deines benutzerdefinierten Frameworks entspricht (z. B. bridge/myframework).
  2. Bearbeite sowohl client.lua als auch server.lua
    Implementiere deine Logik in den bereitgestellten Funktions-Stubs.
  3. Passe die Framework-Erkennungslogik an
    Ersetze oder erweitere die GetResourceState-Prüfungen, um dein benutzerdefiniertes Framework zu erkennen.

✅ Beispiel: client.lua

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

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 und bridge/custom/server.lua auf die vollständige Liste der erforderlichen Funktionen.
⚠️ Erforderliche Funktionen sind obligatorisch

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! 🚀