Ana içeriğe geç

Eventler

XDEV Appearance, geliştiricilerin korunan dosyaları düzenlemeden dahili işleyişlere bağlanabilmesini sağlayan modüler bir event sistemi içerir.

Event sistemi şunlar için tasarlanmıştır:

  • entegrasyonlar
  • log sistemleri
  • senkronizasyon
  • harici sistemler
  • özel işleyişler
  • server-side otomasyonlar

Event Mantığı

Birçok appearance sistemi tutarsız veya hardcode event sistemleri sunar.

XDEV bunun yerine merkezi bir yapı kullanır:

sendEvent()

Amaç:

  • daha temiz entegrasyonlar
  • daha kolay bakım süreçleri
  • yapılandırılabilir event davranışları
  • modüler mimari

Event Yapılandırması

Event sistemleri şu yapılar üzerinden yapılandırılır:

Config.Events.ClientSide
Config.Events.ServerSide

Örnek:

Config.Events.ClientSide.system = {
OnMenuOpen = false,
OnMenuClose = false,
OnAppearanceSaved = false,
OnAppearanceCanceled = false,
OnPedChanged = false
}

Config.Events.ServerSide.system = {
OnSkinLoad = false,
OnSkinSave = false,
OnOutfitSave = false,
OnOutfitDelete = false
}

sendEvent Yardımcı Sistemi

Dahili event tetikleme sistemi şu yapıyı kullanır:

sendEvent('system:OnMenuOpen')

Yardımcı sistem otomatik olarak:

yapılandırmayı doğrular
event isimlerini oluşturur
client/server eventlerini tetikler
senkronizasyonu yönetir

Dahili Event Formatı

Oluşturulan event formatı:

resource_name:events:system:OnMenuOpen

Örnek:

xdev_appearance:events:system:OnMenuOpen

Client-Side Eventler

Desteklenen client eventleri:

OnMenuOpen
OnMenuClose
OnAppearanceSaved
OnAppearanceCanceled
OnPedChanged

Server-Side Eventler

Desteklenen server eventleri:

OnSkinLoad
OnSkinSave
OnOutfitSave
OnOutfitDelete

Event Durum Tipleri

Event yapılandırmaları birden fazla davranışı destekler.


false

OnMenuOpen = false

Davranış:

event tamamen devre dışı bırakılır

Hiçbir event tetiklenmez.


true

OnMenuOpen = true

Davranış:

event yalnızca mevcut tarafta tetiklenir

Örnek:

  • sadece client
  • sadece server

Eventin hangi tarafta oluştuğuna bağlı olarak değişir.


Özel Değer

Örnek:

OnMenuOpen = "sync"

Davranış:

event hem client hem server tarafında tetiklenir

Bu yapı otomatik senkronize işleyişler sağlar.


Client Event Örneği

Örnek listener:

RegisterNetEvent('xdev_appearance:events:system:OnMenuOpen', function()
print('Menu opened')
end)

Server Event Örneği

Örnek listener:

RegisterNetEvent('xdev_appearance:events:system:OnSkinSave', function(source)
print(source .. ' saved appearance')
end)

Menü Eventleri

Menü eventleri şunlar için kullanışlıdır:

kamera sistemleri
HUD gizleme sistemleri
ses sistemleri
animasyon sistemleri
UI senkronizasyonu

Appearance Kayıt Eventleri

Kayıt eventleri yaygın olarak şunlar için kullanılır:

log sistemleri
kimlik sistemleri
yedekleme sistemleri
Discord entegrasyonları

Kombin Eventleri

Kombin eventleri şunlar için kullanışlıdır:

gardırop sistemleri
üniforma sistemleri
meslek entegrasyonları
kombin paylaşımı

Ped Değişim Eventleri

Ped değişim eventleri şunlar için yardımcı olur:

custom ped yeniden oluşturma
silah sistemleri
dövme yenileme
addon ped senkronizasyonu

Senkronizasyon İşleyişi

Eventler çift taraflı senkronizasyon için yapılandırıldığında:

client eventi tetiklenir
server relay sistemi tetiklenir
eşleşen taraf eventi alır

Tüm işlemler helper sistemi üzerinden otomatik çalışır.


Güvenlik Tasarımı

Helper sistemi event tetiklemeden önce event mevcutluğunu bilinçli olarak doğrular.

Amaç:

geçersiz event spamini önlemek
eksik yapılandırma problemlerini önlemek
gereksiz network eventlerini azaltmak

Önerilen Kullanım

Önerilen event kullanım alanları:

harici entegrasyonlar
log sistemleri
analitik sistemleri
özel gameplay sistemleri

Geliştirici Notları

Event sistemi bilinçli olarak şu yapılarda kalacak şekilde tasarlanmıştır:

modüler
hafif
framework bağımsız
override uyumlu

Hardcode bağımlılıklar oluşturmadan çalışır.