🧩 Criando uma Ponte de Framework Personalizada
A Dream Bridge suporta ESX, QBCore e QBX prontamente. Se você estiver usando um framework diferente ou modificado, você pode implementar sua própria ponte personalizada para garantir compatibilidade.
Este guia irá te orientar na criação de uma nova ponte utilizando o modelo custom
fornecido.
💡 Observação: O QBX (Qbox) é totalmente compatível com a ponte do QBCore. Não é necessária uma implementação separada.
📁 Estrutura da Ponte
Todas as pontes estão localizadas na pasta bridge/
.
Cada framework (por exemplo, esx
, qbcore
, custom
) possui sua própria subpasta com:
client.lua
server.lua

A ponte detecta automaticamente seu framework ativo via GetResourceState
.
Importante: Se o recurso do seu framework for renomeado (por exemplo,
es_extended
→roleplay_framework
), a detecção automática pode falhar.
🚀 Como Usar a Ponte Personalizada
Utilize a ponte custom
:
- Você está usando um framework independente ou não oficial/não suportado
➡️ Crie uma nova ponte com base no modelocustom
. - Você precisa editar/mudar algo em uma ponte existente.
➡️ Tente editar a ponte existente primeiro. Por exemplo, sua tabela owned_vehicles é diferente da padrão. Neste caso, você só precisa editar as funções relacionadas a veículos na ponte existente. Não é necessário criar uma nova ou editar tudo. - Nenhum framework suportado é detectado por padrão.
➡️ Se você renomeou o recurso do seu framework, ele pode não ser detectado automaticamente (por exemplo,es_extended
->roleplay_framework
). Neste caso, você precisa adicionarGetResourceState
para o seu recurso renomeado no arquivo correto da ponte.
🛠️ Primeiros Passos
- Copie a pasta
bridge/custom
Renomeie-a para corresponder ao nome do seu framework personalizado (por exemplo,bridge/myframework
). - Modifique tanto
client.lua
quantoserver.lua
Implemente sua lógica nos stubs de função fornecidos. - Ajuste a lógica de detecção do framework
Substitua ou estenda as verificaçõesGetResourceState
para detectar seu framework personalizado.
✅ Exemplo: client.lua
if GetResourceState('my_framework') ~= 'started' then return end
DreamFramework.ServerFramework = 'myframework'
DreamFramework.ServerFrameworkLoaded = true
function DreamFramework.showHelpNotification(text)
-- Seu código personalizado de exibição de ajuda
end
function DreamFramework.getPlayerJobName()
return exports['my_framework']:GetJobName()
end
✅ Exemplo: 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
🧠 Quais Funções Implementar?
Sua ponte deve implementar todas as funções incluídas no modelo customizado e em todas as outras pontes. Isso inclui:
- Funções de jogador (por exemplo,
getPlayerFromId
,getPlayerName
) - Gerenciamento de empregos
- Inventário e dinheiro
- Propriedade de veículos
- Eventos como
OnPlayerLoaded
,OnPlayerJobChange
- Quaisquer outras funções que a ponte tenha...
Verifique os arquivos
bridge/custom/client.lua
ebridge/custom/server.lua
para a lista completa de funções necessárias.
Cada função no modelo de ponte deve ser implementada em sua ponte personalizada.
Se mesmo uma função estiver faltando, seu framework provavelmente lançará múltiplos erros, quebrará scripts que dependem dessas funções e causará comportamento inesperado.
➡️ Verifique bridge/myframework/client.lua
e bridge/myframework/server.lua
para garantir cobertura total de funções.
Funções faltando = experiência comprometida.
⏰ Manipulação de Eventos
Alguns eventos devem ser acionados manualmente para compatibilidade:
RegisterNetEvent('myfw:playerLoaded', function(playerId)
OnPlayerLoaded(playerId)
end)
RegisterNetEvent('myfw:jobChanged', function(playerId, newJob)
OnPlayerJobChange(playerId, newJob.name)
end)
💬 Dicas
- Use logs como
print("[Ponte] Ponte personalizada carregada")
para facilitar a depuração. - Teste cada função individualmente em um ambiente controlado.
- Utilize a pasta
custom
como base — ela já está preenchida com todos os stubs necessários.
🙌 Contribua com Sua Ponte
Fez uma ponte funcional para seu próprio framework?
Sinta-se à vontade para compartilhá-la conosco — ajude outros a se beneficiarem da sua integração!
🧠 Sua contribuição pode se tornar parte do projeto oficial, e você receberá créditos completos pelo seu trabalho.
💡 Se tiver alguma dúvida ou precisar de ajuda, sinta-se à vontade para nos contatar em nosso servidor Discord.
Feliz codificação! 🚀