Bloga Geri Dön
Tutorial2 dk. okuma

FiveM İçin Lua Script Temelleri: Geliştirici Başlangıç Kiti

Sıfırdan FiveM için Lua script geliştirmeyi öğrenin. İlk çalışan resource paketinizi hızla yazmanız için sözdizimi, natives, client vs server, eventler ve gerçek örnekler.

Agency Scripts

Agency Scripts Kurucusu ve Baş Geliştiricisi

FiveM İçin Neden Lua?

Lua, FiveM geliştirmede kullanılan birincil script dilidir ve bunun geçerli bir nedeni vardır. Hafiftir, hızlı çalışır ve FiveM'e güç veren CitizenFX framework'üne derinlemesine entegre edilmiştir. İster basit bir komut scripti ister karmaşık bir roleplay sistemi geliştiriyor olun, Lua temellerini anlamak yetkin bir FiveM geliştiricisi olmanın ilk adımıdır. Daha ağır dillerin aksine Lua, her milisaniyenin önemli olduğu gerçek zamanlı oyun sunucusu scriptleri için gereken performans payını sağlar.

Değişkenler, Türler ve Fonksiyonlar

Lua dinamik tipleme kullanır, yani değişken türlerini açıkça belirtmeniz gerekmez. Yerel değişkenler şununla tanımlanır: local anahtar kelimesidir ve kendi bloklarıyla sınırlıdır; global değişkenler ise her yerden erişilebilirdir ancak FiveM scriptlerinde performans ve güvenlik nedeniyle bunlardan kaçınılmalıdır. Lua dilinde fonksiyonlar birinci sınıf değerlerdir, yani onları değişkenlerde saklayabilir, argüman olarak iletebilir ve diğer fonksiyonlardan döndürebilirsiniz. Bu esneklik, FiveM event handler ve callback yapılarının çalışma mantığının merkezinde yer alır.

Tablolar ile Çalışma

Tablolar, Lua'daki en güçlü veri yapısıdır ve aynı anda dizi, sözlük ve nesne olarak hizmet eder. FiveM'de oyuncu verilerini, yapılandırma seçeneklerini ve envanter eşyalarını depolamak için sürekli olarak tabloları kullanacaksınız. Bir tablo karma anahtar türlerini ve iç içe geçmiş yapıları barındırabilir, bu da onu son derece çok yönlü kılar. Tabloların şununla nasıl yineleneceğini anlamak: pairs() ve ipairs() hem istemci hem de sunucu tarafında veri koleksiyonlarını verimli bir şekilde işlemek için gereklidir.

Citizen.CreateThread ve Oyun Döngüleri

FiveM'e özgü en önemli Lua fonksiyonlarından biri şudur: Citizen.CreateThread, ana oyun thread'ini engellemeden asenkron kod çalıştırmanızı sağlar. Bu thread'lerin içinde genellikle şunu kullanırsınız: Citizen.Wait(ms) yürütme zamanlamasını kontrol etmek için. Yaygın bir yöntem, şununla bir döngü oluşturmaktır: while true do bir thread içinde, koşulları kontrol etmek veya oyun durumunu güncellemek için bekleme aralıkları kullanarak. Bekleme aralığını doğru ayarlamak performans için kritik öneme sahiptir, çünkü şu özelliklere sahip bir thread: Wait(0) her karede çalışır ve yalnızca gerçekten kare başına güncelleme gerektiren görevlere ayrılmalıdır.

Eventler ve İletişim

FiveM script'leri, istemci ile sunucu etkileşiminin bel kemiği olan event'ler aracılığıyla iletişim kurar. Event handler'ları şununla kaydedersiniz: RegisterNetEvent ve AddEventHandler, ardından bunları şununla tetikleyin: TriggerEvent, TriggerServerEvent, veya TriggerClientEvent. İstemci tarafı ve sunucu tarafı event'ler arasındaki ayrımı anlamak, güvenli script'ler geliştirmek için kritik öneme sahiptir. Kötü niyetli oyuncular istemcide kayıtlı herhangi bir event'i rastgele verilerle tetikleyebileceğinden, sunucu tarafında doğrulama yapmadan istemciden gönderilen verilere asla güvenmeyin.

İlk Scriptiniz ile Başlarken

İlk FiveM script'inizi oluşturmak için resources dizininizde yeni bir klasör oluşturun, bir fxmanifest.lua resource meta verileri ile birlikte bir istemci veya sunucu Lua dosyası ekleyin. Bildirim gösteren veya oyuncuyu ışınlayan bir komut gibi basit bir şeyle başlayın. Değişikliklerinizi resource'u şununla yeniden başlatarak test edin: ensure komutunu sunucu konsolunda çalıştırın. Alıştıkça FiveM dokümantasyonu üzerinden native fonksiyonları keşfedin ve istemci tarafı render işlemlerini sunucu tarafı mantığıyla birleştiren daha karmaşık sistemler oluşturmaya başlayın.

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.