Ana içeriğe geç

Override Sistemleri

XDEV Appearance, geliştiricilerin korunan dosyaları düzenlemeden dahili davranışları güvenli şekilde değiştirmesini sağlayan modüler bir override sistemi içerir.

Override sistemi şunları desteklemek için tasarlanmıştır:

  • framework değişimleri
  • özel entegrasyonlar
  • ekonomi sistemleri
  • bildirim sistemleri
  • yetki sistemleri
  • animasyon sistemleri
  • doğrulama sistemleri

Override Mantığı

Birçok appearance sistemi framework mantığını doğrudan korunan dosyalar içerisine hardcode eder.

XDEV bilinçli olarak şunları birbirinden ayırır:

core mantığı
framework mantığı
özel mantıklar

Override hook sistemleri üzerinden çalışır.

Amaç:

  • daha kolay bakım süreçleri
  • daha güvenli güncellemeler
  • uyumluluk esnekliği
  • daha temiz entegrasyonlar

Override Konumları

Override sistemleri temel olarak şu dosyalar içerisinde bulunur:

shared/client.lua
shared/server.lua

Client-Side Override Sistemleri

Client-side override yapıları:

Config.Override.ClientSide.Functions

Server-Side Override Sistemleri

Server-side override yapıları:

Config.Override.ServerSide.Functions

DeadCheck Override

Amaç:

oyuncunun hayatta olup olmadığını doğrulamak

Örnek:

function Config.Override.ClientSide.Functions.DeadCheck(ped)
return false
end

Beklenen dönüş değeri:

true  -> oyuncu geçerli/hayatta
false -> işlemi engelle

VehicleCheck Override

Amaç:

araç durumunu doğrulamak

Örnek:

function Config.Override.ClientSide.Functions.VehicleCheck(ped)
return false
end

Beklenen dönüş değeri:

true  -> oyuncu araç içerisinde
false -> oyuncu araç içerisinde değil

Check Override

Amaç:

genel özel doğrulama hook sistemi

Örnek:

function Config.Override.ClientSide.Functions.Check(ped)
return false
end

Şunlar için kullanışlıdır:

  • admin kısıtlamaları
  • meslek kısıtlamaları
  • bölge kısıtlamaları
  • özel yetki sistemleri
  • event kilitleme sistemleri

Client Bildirim Override Sistemi

Amaç:

client-side bildirim sistemlerini değiştirmek

Örnek:

function Config.Override.ClientSide.Functions.SendNotify(message, ...)
return false
end

QBCore örneği:

QBCore.Functions.Notify(message, 'error')

Walkstyle Override

Amaç:

hareket stillerini kaydetmek ve geri yüklemek

Örnek:

function Config.Override.ClientSide.Functions.Walkstyle()

end

Desteklenen yapılar:

  • RPEmotes
  • özel hareket sistemleri
  • animasyon frameworkleri

Outfit ID Override

Amaç:

benzersiz kombin kimlikleri oluşturmak

Örnek:

function Config.Override.ServerSide.Functions.CreateOutfitID()
return 'OUTFIT_ID'
end

Geliştiriciler bunu şu sistemlerle değiştirebilir:

  • UUID sistemleri
  • timestamp sistemleri
  • rastgele üreticiler
  • harici API sistemleri

Para Override Sistemi

Amaç:

appearance ödeme sistemlerini yönetmek

Örnek:

function Config.Override.ServerSide.Functions.RemoveMoney(src, price)
return false
end

Beklenen dönüş değeri:

true  -> ödeme başarılı
false -> ödeme başarısız

Server Bildirim Override Sistemi

Amaç:

server-side bildirim sistemlerini değiştirmek

Örnek:

function Config.Override.ServerSide.Functions.SendNotify(src, message, ...)
return false
end

Şunlar için kullanışlıdır:

  • framework bildirimleri
  • Discord log sistemleri
  • admin sistemleri
  • özel UI sistemleri

Framework Ayarı

Framework davranışı şu yapı üzerinden değiştirilebilir:

Config.Override.ClientSide.Framework = true

Devre dışı bırakıldığında:

geliştiricilerin doğrulama sistemlerini manuel yazması gerekir

Evrensel Mimari

Override sistemleri bilinçli olarak framework bağımlı varsayımlardan kaçınır.

Bu yapı şu sistemlerle daha kolay entegrasyon sağlar:

QBCore
ESX
standalone sistemler
özel framework sistemleri

Önerilen Override İşleyişi

Önerilen entegrasyon süreci:

1. Bildirim sistemlerini yapılandır
2. Para yönetimini yapılandır
3. Doğrulama sistemlerini yapılandır
4. Walkstyle sistemlerini yapılandır
5. Yetki sistemlerini yapılandır

Güvenli Güncelleme Mantığı

Override sistemi güncelleme çakışmalarını azaltmak için geliştirilmiştir.

Geliştiricilerin mümkün olduğunca korunan mantıkları doğrudan düzenlememesi önerilir.

Bunun yerine:

davranışları override sistemleri üzerinden değiştir

Bu yapı şunları geliştirir:

  • güncelleme güvenliği
  • uyumluluk
  • sürdürülebilirlik

Geliştirici Notları

XDEV bilinçli olarak temel etkileşim katmanlarını override sistemleri üzerinden erişilebilir hale getirir çünkü appearance sistemleri genellikle sunucuya özel davranışlar gerektirir.

Override mimarisi özellikle şunlar için tasarlanmıştır:

sunucu özelleştirmeleri
framework değişimleri
uzun vadeli ölçeklenebilirlik

Core resource'u yeniden yazmadan çalışır.