🧩 Tworzenie niestandardowego mostu ramowego
Dream Bridge obsługuje ESX, QBCore i QBX od razu. Jeśli korzystasz z innego lub zmodyfikowanego ramowego systemu, możesz zaimplementować swój niestandardowy most w celu zapewnienia kompatybilności.
Ten przewodnik przeprowadzi cię przez tworzenie nowego mostu przy użyciu wbudowanego szablonu custom
.
💡 Wskazówka: QBX (Qbox) jest w pełni kompatybilny z mostem QBCore. Nie jest wymagana osobna implementacja.
📁 Struktura mostu
Wszystkie mosty znajdują się w folderze bridge/
.
Każdy ramowy system (np. esx
, qbcore
, custom
) ma swój własny podfolder z:
client.lua
server.lua

Most automatycznie wykrywa aktywny ramowy system za pomocą GetResourceState
.
Ważne: Jeśli zasób twojego ramowego systemu zostanie zmieniony nazwę (np.
es_extended
→roleplay_framework
), automatyczne wykrywanie może zawieść.
🚀 Jak używać niestandardowego mostu
Użyj mostu custom
:
- Korzystasz z samodzielnego lub nieoficjalnego/niewspieranego ramowego systemu
➡️ Stwórz nowy most oparty na szabloniecustom
. - Musisz edytować/zmienić coś w istniejącym moście.
➡️ Spróbuj najpierw edytować istniejący most. np. Tabela owned_vehicles różni się od domyślnej. W tym przypadku wystarczy edytować funkcje związane z pojazdami w istniejącym moście. Nie trzeba tworzyć nowego ani edytować wszystkiego. - Żaden obsługiwany ramowy system nie jest wykrywany domyślnie.
➡️ Jeśli zmieniłeś nazwę zasobu ramowego, może nie zostać on automatycznie wykryty (np.es_extended
->roleplay_framework
). W takim przypadku musisz dodaćGetResourceState
do swojego zasobu o zmienionej nazwie w odpowiednim pliku mostu.
🛠️ Rozpoczęcie pracy
- Skopiuj folder
bridge/custom
Zmień nazwę, aby pasowała do nazwy twojego niestandardowego ramowego systemu (np.bridge/myframework
). - Zmodyfikuj zarówno
client.lua
, jak iserver.lua
Wprowadź swoją logikę w dostarczone szablony funkcji. - Dostosuj logikę wykrywania ramowego systemu
Zastąp lub rozszerz sprawdzeniaGetResourceState
, aby wykryć twój niestandardowy ramowy system.
✅ Przykład: client.lua
if GetResourceState('my_framework') ~= 'started' then return end
DreamFramework.ServerFramework = 'myframework'
DreamFramework.ServerFrameworkLoaded = true
function DreamFramework.showHelpNotification(text)
-- Twój niestandardowy kod wyświetlania pomocy
end
function DreamFramework.getPlayerJobName()
return exports['my_framework']:GetJobName()
end
✅ Przykład: 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
🧠 Jakie funkcje należy zaimplementować?
Twój most musi implementować wszystkie funkcje zawarte w szablonie custom
oraz innych mostach. Obejmuje to:
- Funkcje gracza (np.
getPlayerFromId
,getPlayerName
) - Zarządzanie pracą
- Inwentarz i pieniądze
- Własność pojazdów
- Zdarzenia takie jak
OnPlayerLoaded
,OnPlayerJobChange
- Jakiekolwiek inne funkcje, które ma most...
Sprawdź pliki
bridge/custom/client.lua
ibridge/custom/server.lua
w celu uzyskania pełnej listy wymaganych funkcji.
Każda pojedyncza funkcja w szablonie mostu musi być zaimplementowana w twoim niestandardowym moście.
Jeśli brakuje nawet jednej funkcji, twój ramowy system prawdopodobnie wyświetli wiele błędów, przerwie skrypty polegające na tych funkcjach i spowoduje niespodziewane zachowanie.
➡️ Sprawdź podwójnie pliki bridge/myframework/client.lua
i bridge/myframework/server.lua
, aby upewnić się, że wszystkie funkcje są zaimplementowane.
Brakujące funkcje = złe doświadczenie.
⏰ Obsługa zdarzeń
Niektóre zdarzenia muszą być wyzwalane ręcznie w celu zapewnienia kompatybilności:
RegisterNetEvent('myfw:playerLoaded', function(playerId)
OnPlayerLoaded(playerId)
end)
RegisterNetEvent('myfw:jobChanged', function(playerId, newJob)
OnPlayerJobChange(playerId, newJob.name)
end)
💬 Wskazówki
- Używaj logów, takich jak
print("[Most] Załadowano niestandardowy most")
, aby ułatwić debugowanie. - Testuj każdą funkcję osobno w kontrolowanym środowisku.
- Skorzystaj z folderu
custom
jako bazy — jest już wypełniony wszystkimi wymaganymi szablonami.
🙌 Przekaż swój most
Stworzyłeś działający most dla własnego ramowego systemu?
Nie krępuj się podzielić się nim z nami — pomóż innym skorzystać z twojej integracji!
🧠 Twoja kontrybucja może stać się częścią oficjalnego projektu, a ty otrzymasz pełne uznanie za swoją pracę.
💡 Jeśli masz jakiekolwiek pytania lub potrzebujesz pomocy, śmiało skontaktuj się z nami na naszym serwerze Discord.
Miłego kodowania! 🚀