Ana içeriğe geç

🧩 Özel Bir Çerçeve Köprüsü Oluşturma

Dream Bridge, ESX, QBCore ve QBX'i kutudan çıkar çıkmaz destekler. Farklı veya değiştirilmiş bir çerçeve kullanıyorsanız, uyumluluğu sağlamak için kendi özel köprünüzü uygulayabilirsiniz.

Bu kılavuz, sağlanan yerleşik custom şablonunu kullanarak yeni bir köprü oluşturmayı adım adım anlatır.

💡 Not: QBX (Qbox), QBCore köprüsü ile tam uyumludur. Ayrı bir uygulama gerekmez.


📁 Köprü Yapısı

Tüm köprüler bridge/ klasöründe bulunur. Her çerçeve (örneğin, esx, qbcore, custom) kendi alt klasörüne sahiptir:

  • client.lua
  • server.lua
Köprü Yapısı

Köprü, etkin çerçevenizi otomatik olarak GetResourceState aracılığıyla algılar.

Önemli: Çerçeve kaynağınız yeniden adlandırılırsa (örneğin, es_extendedroleplay_framework), otomatik algılama başarısız olabilir.


🚀 Özel Köprüyü Nasıl Kullanılır

custom köprüsünü kullanın:

  • Bağımsız veya resmi olmayan/desteklenmeyen bir çerçeve kullanıyorsunuz
    ➡️ custom şablonuna dayalı yeni bir köprü oluşturun.
  • Mevcut bir köprüde bir şeyi düzenlemeye/işlemeye ihtiyacınız var
    ➡️ Önce mevcut köprüyü düzenlemeyi deneyin. Örneğin, sahip olduğunuz_araçlar tablosu varsayılanından farklı ise, sadece mevcut köprüde araçlarla ilgili işlevleri düzenlemeniz yeterlidir. Yeni bir tane oluşturmanıza veya tümünü düzenlemenize gerek yok.
  • Desteklenen bir çerçeve varsayılan olarak algılanmaz.
    ➡️ Çerçeve kaynağınızı yeniden adlandırdıysanız, otomatik olarak algılanmayabilir (örneğin, es_extended -> roleplay_framework). Bu durumda, yeniden adlandırılmış kaynağınızı doğru köprü dosyasında algılamak için GetResourceState kullanmanız gerekir. Özel Köprü GetResourceState

🛠️ Başlarken

  1. bridge/custom klasörünü kopyalayın
    Adınızıza uyan özel çerçeve adınızla yeniden adlandırın (örneğin, bridge/myframework).
  2. Hem client.lua hem de server.lua dosyalarını düzenleyin
    Sağlanan işlev boşluklarına mantığınızı uygulayın.
  3. Çerçeve algılama mantığını ayarlayın
    Özel çerçevenizi algılamak için GetResourceState kontrollerini değiştirin veya genişletin.

✅ Örnek: client.lua

Örnek client.lua
if GetResourceState('my_framework') ~= 'started' then return end

DreamFramework.ServerFramework = 'myframework'
DreamFramework.ServerFrameworkLoaded = true

function DreamFramework.showHelpNotification(text)
-- Özel yardım bildirimi kodunuzu buraya ekleyin
end

function DreamFramework.getPlayerJobName()
return exports['my_framework']:GetJobName()
end

✅ Örnek: server.lua

Örnek 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

🧠 Hangi İşlevleri Uygulamalısınız?

Köprünüz, özel şablon ve diğer tüm köprülerde bulunan tüm işlevleri uygulamalıdır. Bu şunları içerir:

  • Oyuncu işlevleri (örneğin, getPlayerFromId, getPlayerName)
  • İş yönetimi
  • Envanter ve para
  • Araç sahipliği
  • Olaylar gibi OnPlayerLoaded, OnPlayerJobChange
  • Köprüde bulunan diğer işlevler... Gerekli tüm işlevlerin tam listesi için bridge/custom/client.lua ve bridge/custom/server.lua dosyalarını kontrol edin.
⚠️ Gerekli İşlevler Zorunludur

Köprü şablonundaki her işlev özel köprünüzde uygulanmalıdır.
Eğer bir işlev eksikse, çerçeveniz muhtemelen çoklu hata fırlatacak, bu işlevlere dayanan betikleri bozacak ve beklenmeyen davranışlara neden olacaktır.

➡️ bridge/myframework/client.lua ve bridge/myframework/server.lua dosyalarını kontrol ederek tüm işlevlerin kapsamını sağladığınızdan emin olun.

Eksik işlevler = bozuk deneyim.


⏰ Olay İşleme

Uyumluluk için bazı olaylar manuel olarak tetiklenmelidir:

RegisterNetEvent('myfw:playerLoaded', function(playerId)
OnPlayerLoaded(playerId)
end)

RegisterNetEvent('myfw:jobChanged', function(playerId, newJob)
OnPlayerJobChange(playerId, newJob.name)
end)

💬 İpuçları

  • Hata ayıklamayı kolaylaştırmak için print("[Köprü] Özel köprü yüklendi") gibi günlükleri kullanın.
  • Her işlevi kontrol edin ve denetimli bir ortamda bireysel olarak test edin.
  • Tüm gerekli boşluklarla önceden doldurulmuş olan custom klasörünü bir temel olarak kullanın.

🙌 Köprünüzü Paylaşın

Kendi çerçeveniz için çalışan bir köprü mü oluşturdunuz?
Çalışmanızı bizimle paylaşmaktan çekinmeyin — diğerlerinin entegrasyonunuzdan faydalanmasına yardımcı olun!

🧠 Katkınız resmi projenin bir parçası haline gelebilir ve çalışmanız için tam kredi alırsınız.
💡 Herhangi bir sorunuz varsa veya yardıma ihtiyacınız varsa, Discord sunucumuzda bize ulaşmaktan çekinmeyin.


Kodlamaya devam edin! 🚀