Ga naar hoofdinhoud

🧩 Het maken van een Aangepaste Framework Bridge

Dream Bridge ondersteunt standaard ESX, QBCore en QBX. Als je een ander of aangepast framework gebruikt, kun je je eigen aangepaste bridge implementeren om compatibiliteit te garanderen.

Deze handleiding begeleidt je bij het maken van een nieuwe bridge met behulp van de ingebouwde custom template.

💡 Opmerking: QBX (Qbox) is volledig compatibel met de QBCore bridge. Er is geen aparte implementatie nodig.


📁 Structuur van de Bridge

Alle bridges bevinden zich in de map bridge/. Elk framework (bijv. esx, qbcore, custom) heeft zijn eigen submap met:

  • client.lua
  • server.lua
Bridge Structuur

De bridge detecteert automatisch je actieve framework via GetResourceState.

Belangrijk: Als je framework resource hernoemd is (bijv. es_extendedroleplay_framework), kan de automatische detectie mislukken.


🚀 Hoe de aangepaste Bridge te Gebruiken

Gebruik de custom bridge:

  • Je gebruikt een zelfstandig of niet-officieel/niet-ondersteund framework
    ➡️ Maak een nieuwe bridge op basis van de custom template.
  • Je moet iets bewerken/veranderen in een bestaande bridge.
    ➡️ Probeer eerst de bestaande bridge te bewerken. Bijvoorbeeld: jouw owned_vehicles tabel is anders dan de standaard. In dit geval hoef je alleen de voertuig gerelateerde functies in de bestaande bridge te bewerken. Je hoeft geen nieuwe te maken of alles te bewerken.
  • Er wordt standaard geen ondersteund framework gedetecteerd.
    ➡️ Als je je framework resource hebt hernoemd, wordt deze mogelijk niet automatisch gedetecteerd (bijv. es_extended -> roleplay_framework). In dit geval moet je GetResourceState toevoegen aan je hernoemde resource in het juiste bridge bestand. Aangepaste Bridge GetResourceState

🛠️ Aan de Slag

  1. Kopieer de bridge/custom map
    Hernoem deze om overeen te komen met de naam van jouw aangepaste framework (bijv. bridge/myframework).
  2. Bewerk zowel client.lua als server.lua
    Implementeer je logica in de gegeven functie stubs.
  3. Pas de framework detectie logica aan
    Vervang of breid de GetResourceState controles uit om jouw aangepaste framework te detecteren.

✅ Voorbeeld: client.lua

Voorbeeld client.lua
if GetResourceState('my_framework') ~= 'started' then return end

DreamFramework.ServerFramework = 'myframework'
DreamFramework.ServerFrameworkLoaded = true

function DreamFramework.showHelpNotification(text)
-- Jouw aangepaste help weergave code
end

function DreamFramework.getPlayerJobName()
return exports['my_framework']:GetJobName()
end

✅ Voorbeeld: server.lua

Voorbeeld 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

🧠 Welke Functies te Implementeren?

Je bridge moet alle functies implementeren die zijn opgenomen in de custom template en alle andere bridges. Dit omvat:

  • Speler functies (bijv. getPlayerFromId, getPlayerName)
  • Functies voor baanbeheer
  • Inventaris & geld
  • Voertuig eigendom
  • Events zoals OnPlayerLoaded, OnPlayerJobChange
  • Alle andere functies die de bridge heeft... Controleer de bridge/custom/client.lua en bridge/custom/server.lua bestanden voor de volledige lijst van vereiste functies.
⚠️ Vereiste Functies Zijn Verplicht

Elke functie in de bridge template moet geïmplementeerd worden in jouw aangepaste bridge.
Als zelfs één functie ontbreekt, zal jouw framework waarschijnlijk meerdere fouten veroorzaken, scripts breken die vertrouwen op die functies, en onverwacht gedrag veroorzaken.

➡️ Controleer bridge/myframework/client.lua en bridge/myframework/server.lua om te zorgen voor volledige functie dekking.

Ontbrekende functies = slechte ervaring.


⏰ Event Afhandeling

Sommige events moeten handmatig worden getriggerd voor compatibiliteit:

RegisterNetEvent('myfw:playerLoaded', function(playerId)
OnPlayerLoaded(playerId)
end)

RegisterNetEvent('myfw:jobChanged', function(playerId, newJob)
OnPlayerJobChange(playerId, newJob.name)
end)

💬 Tips

  • Gebruik logs zoals print("[Bridge] Aangepaste bridge geladen") voor gemakkelijker debuggen.
  • Test elke functie afzonderlijk in een gecontroleerde omgeving.
  • Maak gebruik van de custom map als basis — deze is al vooraf ingevuld met alle vereiste stubs.

🙌 Draag Bij aan Jouw Bridge

Heb je een werkende bridge gemaakt voor jouw eigen framework?
Voel je vrij om het met ons te delen — help anderen profiteren van jouw integratie!

🧠 Jouw bijdrage kan onderdeel worden van het officiële project, en je krijgt volledige erkenning voor je werk.
💡 Als je vragen hebt of hulp nodig hebt, neem gerust contact met ons op via onze Discord server.


Veel codeerplezier! 🚀