🧩 Создание пользовательского моста для фреймворка
Dream Bridge поддерживает ESX, QBCore и QBX из коробки. Если вы используете другой или измененный фреймворк, вы можете реализовать свой пользовательский мост, чтобы обеспечить совместимость.
Это руководство поможет вам создать новый мост, используя предоставленный встроенный шаблон custom
.
💡 Примечание: QBX (Qbox) полностью совместим с мостом QBCore. Отдельная реализация не требуется.
📁 Структура моста
Все мосты находятся в папке bridge/
.
У каждого фреймворка (например, esx
, qbcore
, custom
) есть своя подпапка с:
client.lua
server.lua

Мост автоматически определяет ваш активный фреймворк через GetResourceState
.
Важно: Если ваш ресурс фреймворка переименован (например,
es_extended
→roleplay_framework
), автоматическое обнаружение может сбоить.
🚀 Как использовать пользовательский мост
Используйте мост custom
:
- Вы используете автономный или неофициальный/неподдерживаемый фреймворк
➡️ Создайте новый мост на основе шаблонаcustom
. - Вам нужно отредактировать/изменить что-то в существующем мосте.
➡️ Попробуйте сначала отредактировать существующий мост. Например, ваша таблица owned_vehicles отличается от стандартной. В этом случае вам просто нужно отредактировать функции, связанные с транспортом, в существующем мосте. Нет необходимости создавать новый или редактировать все. - Поддерживаемый фреймворк не обнаружен по умолчанию.
➡️ Если вы переименовали ресурс вашего фреймворка, он может не быть обнаружен автоматически (например,es_extended
->roleplay_framework
). В этом случае вам нужно добавитьGetResourceState
для вашего переименованного ресурса в правильный файл моста.
🛠️ Начало работы
- Скопируйте папку
bridge/custom
Переименуйте ее, чтобы соответствовать названию вашего пользовательского фреймворка (например,bridge/myframework
). - Измените
client.lua
иserver.lua
Реализуйте свою логику в предоставленных заглушках функций. - Настройте логику обнаружения фреймворка
Замените или расширьте проверкиGetResourceState
для обнаружения вашего пользовательского фреймворка.
✅ Пример: client.lua
if GetResourceState('my_framework') ~= 'started' then return end
DreamFramework.ServerFramework = 'myframework'
DreamFramework.ServerFrameworkLoaded = true
function DreamFramework.showHelpNotification(text)
-- Ваш пользовательский код отображения справки
end
function DreamFramework.getPlayerJobName()
return exports['my_framework']:GetJobName()
end
✅ Пример: 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
🧠 Какие функции нужно реализовать?
Ваш мост должен реализовать все функции, включенные в пользовательский шаблон и все другие мосты. Сюда входят:
- Функции игрока (например,
getPlayerFromId
,getPlayerName
) - Управление работой
- Инвентарь и деньги
- Собственность на транспорте
- События типа
OnPlayerLoaded
,OnPlayerJobChange
- Любые другие функции, которые есть в мосте...
Проверьте файлы
bridge/custom/client.lua
иbridge/custom/server.lua
для полного списка необходимых функций.
Каждая функция в шаблоне моста должна быть реализована в вашем пользовательском мосту.
Если хотя бы одна функция отсутствует, ваш фреймворк скорее всего выдаст несколько ошибок, нарушит скрипты, полагающиеся на эти функции, и вызовет непредвиденное поведение.
➡️ Проверьте bridge/myframework/client.lua
и bridge/myframework/server.lua
, чтобы убедиться в полном покрытии функций.
Отсутствующие функции = неполноценный опыт.
⏰ Обработка событий
Некоторые события должны быть запущены вручную для совместимости:
RegisterNetEvent('myfw:playerLoaded', function(playerId)
OnPlayerLoaded(playerId)
end)
RegisterNetEvent('myfw:jobChanged', function(playerId, newJob)
OnPlayerJobChange(playerId, newJob.name)
end)
💬 Советы
- Используйте журналы типа
print("[Мост] Загружен пользовательский мост")
для упрощения отладки. - Тестируйте каждую функцию отдельно в контролируемой среде.
- Используйте папку
custom
в качестве базы — она уже заполнена всеми необходимыми заглушками.
🙌 Внесите свой вклад в мост
Создали рабочий мост для своего собственного фреймворка?
Не стесняйтесь поделиться им с нами — помогите другим воспользоваться вашей интеграцией!
🧠 Ваш вклад может стать частью официального проекта, и вы получите полное признание за свою работу.
💡 Если у вас есть вопросы или вам нужна помощь, не стесняйтесь обращаться к нам на нашем сервере Discord.
Счастливого кодинга! 🚀