🧩 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
 
De bridge detecteert automatisch je actieve framework via GetResourceState.
Belangrijk: Als je framework resource hernoemd is (bijv.
es_extended→roleplay_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 decustomtemplate.
- 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 jeGetResourceStatetoevoegen aan je hernoemde resource in het juiste bridge bestand. 
🛠️ Aan de Slag
- Kopieer de bridge/custommap
 Hernoem deze om overeen te komen met de naam van jouw aangepaste framework (bijv.bridge/myframework).
- Bewerk zowel client.luaalsserver.lua
 Implementeer je logica in de gegeven functie stubs.
- Pas de framework detectie logica aan 
 Vervang of breid deGetResourceStatecontroles uit om jouw aangepaste framework te detecteren.
✅ 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
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.luaenbridge/custom/server.luabestanden voor de volledige lijst van vereiste functies.
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 custommap 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! 🚀