Bloga Geri Dön
Tutorial2 dk. okuma

FiveM Exports ve Eventler: Kaynaklar Arası İletişim

FiveM export'ları, event'leri ve trigger'larında uzmanlaşın: Resource'lar arasında temiz API'ler oluşturun, hatalı kalıplardan kaçının ve önde gelen açık kaynaklı script'lerden örnekleri takip edin.

Agency Scripts

Agency Scripts Kurucusu ve Baş Geliştiricisi

Eventler ve Exportlar: Hangisi Ne Zaman Kullanılmalı

FiveM, resource'lar arası iletişim için iki temel mekanizma sunar: event'ler ve export'lar. Event'ler doğası gereği asenkron ve 'ateşle ve unut' (fire-and-forget) yapısındadır; bu da onları bildirimler, loglama ve resource'lar arasında yan etkileri tetiklemek için ideal kılar. Export'lar ise değerleri anında döndüren senkron fonksiyon çağrılarıdır, bu da onları veri alma ve yardımcı fonksiyonlar için mükemmel yapar. Her kullanım senaryosu için doğru mekanizmayı seçmek, temiz ve sürdürülebilir FiveM kodu yazmanın temelidir.

Sunucu ve Client Eventleri

FiveM'deki eventler belirli yönlerde akar. TriggerServerEvent verileri istemciden sunucuya gönderir, burada güvenli bir şekilde işlenebilir. TriggerClientEvent verileri sunucudan bir veya tüm istemcilere gönderir; bir oyuncu source tanımlayıcısı ya da -1 yayın içindir. Şununla tetiklenen yerel event'ler: TriggerEvent aynı yürütme bağlamı içinde kalın. Ağ etkinliklerini her zaman şununla kaydedin: RegisterNetEvent işleyicileri eklemeden önce ve client tarafında kayıtlı herhangi bir olayın, injector kullanan hileciler tarafından tetiklenebileceğini unutmayın.

Eventlerinizi Güvenceye Alma

Sunucu taraflı event handler'lar gelen verileri her zaman doğrulamalıdır. Kaynak oyuncunun mevcut olduğunu kontrol edin, veri türlerinin beklentilerle eşleştiğini doğrulayın ve spam'i önlemek için rate limiting uygulayın. Veritabanı ID'leri gibi hassas bilgileri doğrulama olmadan asla client event'leri üzerinden iletmeyin. Yaygın bir yöntem: client'ın veri talep ettiği, sunucunun isteği doğrulayıp bilgiyi aldığı ve ardından söz konusu client'a bir yanıt event'i tetiklediği sunucu taraflı callback'ler kullanmaktır.

Export'lar ile Çalışma

Export'lar, bir kaynağın diğer kaynakların doğrudan çağırabileceği işlevleri kullanıma sunmasını sağlar. Export'ları şurada tanımlarsınız: fxmanifest.lua ve bunları script dosyalarınızda uygulayın. Başka bir resource şunu çağırdığında: exports['your-resource']:YourFunction(args), senkron olarak çalışır ve sonucu döndürür. Bu, framework köprüleri, paylaşılan yardımcı kütüphaneler ve kaynakları eventler aracılığıyla birbirine sıkı sıkıya bağlamadan telefon scriptlerinden, envanter sistemlerinden veya meslek yöneticilerinden verilere erişmek için özellikle kullanışlıdır.

Callback'ler ve Async Modelleri

Birçok FiveM framework'ü, event'leri yanıt işlemeyle birleştiren callback sistemleri uygular. QBCore şunu kullanır: QBCore.Functions.CreateCallback server tarafında ve QBCore.Functions.TriggerCallback client tarafında. ESX de şununla benzer bir yapıya sahiptir: ESX.RegisterServerCallback. Bu callback'ler, istemcinin sunucudan veri talep etmesini ve bunu bir callback fonksiyonunda almasını sağlayarak asenkron olaylar ile senkron hissi veren kod arasındaki boşluğu doldurur. Bu desenleri anlamak, sunucu yetkisi gerektiren veritabanı sorguları veya envanter kontrolleriyle çalışırken kritik öneme sahiptir.

Resource İletişimi İçin En İyi Uygulamalar

Çakışmaları önlemek için event adlarınızı şu kalıba benzer bir namespace altında tutun: resourceName:eventAction. Diğer geliştiricilerin kaynağınızla entegrasyon kurabilmesi için export'larınızı net bir şekilde belgeleyin. İki kaynağın birbirine export yaptığı ve yükleme sırası sorunlarına yol açabilecek döngüsel bağımlılıklar oluşturmaktan kaçının. Script'leriniz için API tasarlarken, basit veri erişimi için export'ları, sunucunuzun farklı bölümlerinde birden fazla adım veya yan etki içeren karmaşık iş akışları için event'leri tercih edin.

Başlamaya Hazır mısınız?

Scriptleri mağazamızdan edinin veya destek, güncellemeler ve gelecek yeniliklere göz atmak için Discord'a katılın.