🧩 Creazione di un Ponte Framework Personalizzato
Dream Bridge supporta ESX, QBCore e QBX out of the box. Se stai utilizzando un framework diverso o modificato, puoi implementare il tuo ponte personalizzato per garantire la compatibilità.
Questa guida ti guiderà nella creazione di un nuovo ponte utilizzando il modello custom
integrato.
💡 Nota: QBX (Qbox) è completamente compatibile con il ponte QBCore. Non è necessaria un'implementazione separata.
📁 Struttura del Ponte
Tutti i ponti si trovano nella cartella bridge/
.
Ogni framework (ad esempio, esx
, qbcore
, custom
) ha la propria sottocartella con:
client.lua
server.lua

Il ponte rileva automaticamente il framework attivo tramite GetResourceState
.
Importante: Se il tuo resource del framework viene rinominato (ad esempio,
es_extended
→roleplay_framework
), il rilevamento automatico potrebbe fallire.
🚀 Come Utilizzare il Ponte Personalizzato
Utilizza il ponte custom
:
- Stai utilizzando un framework standalone o non ufficiale/non supportato
➡️ Crea un nuovo ponte basato sul modellocustom
. - Hai bisogno di modificare/cambiare qualcosa in un ponte esistente.
➡️ Prova a modificare prima il ponte esistente. Ad esempio, la tua tabella owned_vehicles è diversa da quella predefinita. In questo caso devi solo modificare le funzioni relative ai veicoli nel ponte esistente. Non è necessario crearne uno nuovo o modificarli tutti. - Nessun framework supportato viene rilevato automaticamente.
➡️ Se hai rinominato il tuo resource del framework, potrebbe non essere rilevato automaticamente (ad esempio,es_extended
->roleplay_framework
). In questo caso, devi utilizzareGetResourceState
per il tuo resource rinominato nel file ponte corretto.
🛠️ Per Iniziare
- Copia la cartella
bridge/custom
Rinominala in modo che corrisponda al nome del tuo framework personalizzato (ad esempio,bridge/myframework
). - Modifica sia
client.lua
cheserver.lua
Implementa la tua logica nelle funzioni fornite. - Regola la logica di rilevamento del framework
Sostituisci o estendi i controlliGetResourceState
per rilevare il tuo framework personalizzato.
✅ Esempio: client.lua
if GetResourceState('my_framework') ~= 'started' then return end
DreamFramework.ServerFramework = 'myframework'
DreamFramework.ServerFrameworkLoaded = true
function DreamFramework.showHelpNotification(text)
-- Il tuo codice personalizzato per la visualizzazione dell'aiuto
end
function DreamFramework.getPlayerJobName()
return exports['my_framework']:GetJobName()
end
✅ Esempio: 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
🧠 Quali Funzioni Implementare?
Il tuo ponte deve implementare tutte le funzioni incluse nel modello custom
e in tutti gli altri ponti. Questo include:
- Funzioni del giocatore (ad esempio,
getPlayerFromId
,getPlayerName
) - Gestione dei lavori
- Inventario e denaro
- Proprietà dei veicoli
- Eventi come
OnPlayerLoaded
,OnPlayerJobChange
- Qualsiasi altra funzione che il ponte ha...
Controlla i file
bridge/custom/client.lua
ebridge/custom/server.lua
per l'elenco completo delle funzioni richieste.
Ogni singola funzione nel modello del ponte deve essere implementata nel tuo ponte personalizzato.
Se manca anche una sola funzione, il tuo framework probabilmente genererà errori multipli, interromperà gli script che dipendono da tali funzioni e causerà un comportamento inaspettato.
➡️ Controlla due volte bridge/myframework/client.lua
e bridge/myframework/server.lua
per assicurarti di avere una copertura completa delle funzioni.
Funzioni mancanti = esperienza interrotta.
⏰ Gestione degli Eventi
Alcuni eventi devono essere attivati manualmente per la compatibilità:
RegisterNetEvent('myfw:playerLoaded', function(playerId)
OnPlayerLoaded(playerId)
end)
RegisterNetEvent('myfw:jobChanged', function(playerId, newJob)
OnPlayerJobChange(playerId, newJob.name)
end)
💬 Suggerimenti
- Utilizza log come
print("[Ponte] Ponte personalizzato caricato")
per un debug più semplice. - Testa ogni funzione singolarmente in un ambiente controllato.
- Utilizza la cartella
custom
come base: è già precompilata con tutti gli stub richiesti.
🙌 Contribuisci con il Tuo Ponte
Hai creato un ponte funzionante per il tuo framework?
Sentiti libero di condividerlo con noi — aiuta gli altri a beneficiare della tua integrazione!
🧠 La tua contribuzione potrebbe diventare parte del progetto ufficiale e otterrai pieno credito per il tuo lavoro.
💡 Se hai domande o hai bisogno di aiuto, non esitare a contattarci sul nostro server Discord.
Buon coding! 🚀