FiveM'de script eklemek, bir klasörü sunucuya atıp yeniden başlatmaktan ibaret değildir. Script'ler FiveM'de resource (kaynak) olarak çalışır ve bir resource'un çalışabilmesi için doğru klasörde olması, geçerli bir fxmanifest.lua dosyası bulundurması, bağımlılıklarının kendisinden önce yüklenmesi ve gerekiyorsa veritabanı tablolarının içe aktarılmış olması gerekir. Bu dört şarttan biri eksikse script sessizce çalışmaz ya da konsolu hatalarla doldurur. Bu rehberde ESX ve QBCore için script ekleme sürecini sıfırdan, hata ayıklamasıyla birlikte anlatıyoruz.
FiveM'de her şey bir resource'tur: framework'ünüz, haritalar, araç modelleri, envanter sistemi ve indirdiğiniz o iş script'i. Bir resource, içinde en az bir fxmanifest.lua dosyası bulunan klasördür.
Bu dosya sunucuya şunları söyler: hangi oyun için yazıldığı, hangi dosyaların istemcide, hangilerinin sunucuda çalışacağı ve hangi resource'lara bağımlı olduğu. Tipik bir manifest şöyle görünür:
fx_version 'cerulean' — API sürümügame 'gta5' — hedef oyunclient_scripts { 'client/*.lua' } — istemcide çalışacak dosyalarserver_scripts { '@oxmysql/lib/MySQL.lua', 'server/*.lua' } — sunucuda çalışacak dosyalarshared_scripts { 'config.lua' } — her iki tarafta da yüklenecek dosyalardependencies { 'es_extended', 'ox_lib' } — bağımlılıklarBir klasörde fxmanifest.lua yoksa sunucu o klasörü resource olarak görmez; konsola uyarı basar ve devam eder. "Script'i attım ama hiçbir şey olmadı" şikayetlerinin bir kısmının kaynağı budur.
Script'i indirdiğinizde ilk kontrol edeceğiniz şey, hangi framework için yazıldığıdır. ESX için yazılmış bir envanter script'i QBCore sunucusunda çalışmaz — çalışsa bile oyuncu verilerini bulamaz. Script sayfasında genellikle şu etiketlerden biri yazar: ESX, QBCore, Qbox veya Standalone. Standalone olanlar framework'ten bağımsızdır ve her sunucuda çalışır.
İkinci kontrol: arşivin içindeki README.md dosyası. Bağımlılıklar burada yazar ve çoğu kişi bu dosyayı okumadan kuruluma başladığı için saatlerini kaybeder.
Script klasörünü sunucunuzun resources dizinine yerleştirin. Düzenli bir sunucuda kategori klasörleri kullanılır:
server-data/resources/[scripts]/script-adi/
Köşeli parantezli klasörler ([scripts], [esx], [maps]) FiveM'de kategori anlamına gelir. Bunları tek satırla toplu başlatabilirsiniz: ensure [scripts].
Üç kritik kural:
banka sistemi yerine banka-sistemi.MyScript ile myscript farklı iki şeydir. Windows'ta çalışan bir yapılandırma Linux'ta "Could not find resource" hatası verebilir.Arşivi açtığınızda içinde tek bir klasör daha çıkıyorsa (örneğin script-adi/script-adi/fxmanifest.lua) iç klasörü dışarı alın. fxmanifest.lua dosyası, resource klasörünün doğrudan içinde olmalıdır.
Script oyuncu verisi saklıyorsa (banka, envanter, ev, araç sistemi) arşivde bir .sql dosyası bulunur. Bu tabloları veritabanınıza aktarmadan script çalışmaz.
phpMyAdmin ile: Veritabanınızı seçin → İçe Aktar sekmesi → dosyayı seçin → Başlat.
Komut satırı ile: mysql -u kullanici -p veritabani < script.sql
Aktarmadan önce veritabanınızın yedeğini alın. Bazı SQL dosyaları DROP TABLE komutu içerir ve mevcut tablolarınızı silebilir — bu, oyuncu verilerinizin tamamen kaybolması demektir.
FiveM'de veritabanı erişimi oxmysql üzerinden yapılır. Sunucunuzda kuruluysa server.cfg içinde şuna benzer bir satır olmalıdır:
set mysql_connection_string "mysql://kullanici:sifre@localhost:3306/veritabani"
Alternatif olarak DSN biçimi de kullanılabilir:
set mysql_connection_string "user=kullanici;password=sifre;host=localhost;port=3306;database=veritabani"
İki pratik not: şifrenizde ; , / ? : @ & = + $ # karakterleri varsa bağlantı bozulabilir — böyle bir durumda diğer biçimi deneyin veya şifreyi sadeleştirin. Ayrıca oxmysql, kaynak listesinin en üstünde başlatılmalıdır.
Bu adım, script eklemenin en çok hata yapılan kısmıdır. FiveM resource'ları server.cfg'deki sırayla yükler ve bir script, bağımlı olduğu resource'tan sonra gelmelidir.
Doğru sıralama şöyledir:
ensure oxmysql — veritabanı katmanı, her şeyden önceensure ox_lib — yaygın yardımcı kütüphaneensure es_extended (ESX) veya ensure qb-core (QBCore) — frameworkensure [scripts] veya tek tek ensure script-adi — sizin script'lerinizensure ile start arasındaki fark şudur: start resource'u yalnızca başlatır, ensure ise zaten çalışıyorsa yeniden başlatır. Sunucu yapılandırmasında her zaman ensure kullanın.
Script'i eklerken tek seferde bir tane ekleyin ve sunucuyu yeniden başlatın. Beş script'i aynı anda eklerseniz hata çıktığında hangisinin sorumlu olduğunu bulmak çok daha zor olur.
Çoğu script config.lua veya shared/config.lua dosyasıyla gelir. Burada ayarlamanız gerekenler genellikle şunlardır: framework seçimi ('esx' / 'qb'), dil/locale ayarı, meslek (job) isimleri, koordinatlar ve fiyatlar.
Framework seçimi yanlışsa script sorunsuz başlar ama hiçbir şey yapmaz — çünkü oyuncu verisine erişemez. "Script çalışıyor ama komutlar tepki vermiyor" durumunda ilk bakılacak yer burasıdır.
Sunucuyu yeniden başlatın veya konsoldan restart script-adi komutunu çalıştırın. Ardından iki yeri kontrol edin:
Hata mesajını okumadan tahmin yürütmeyin. FiveM'in hata çıktıları genellikle dosya adını ve satır numarasını verir; sorunun yerini doğrudan söyler.
Kurulum adımları iki framework'te de aynıdır, ancak dikkat etmeniz gereken birkaç fark vardır.
ESX tarafında: Framework resource'unun adı es_extended'dir. Script'ler oyuncu nesnesine ESX.GetPlayerFromId() gibi çağrılarla erişir. ESX'in eski (1.1) ve yeni (Legacy) sürümleri arasında fonksiyon isimleri değiştiği için, indirdiğiniz script'in hangi ESX sürümü için yazıldığına bakın — "ESX Legacy uyumlu" ibaresi yoksa eski sürüm için yazılmış olabilir ve nil value hataları alırsınız.
QBCore tarafında: Framework resource'unun adı qb-core'dur ve çoğu resmi script qb- önekiyle gelir (qb-inventory, qb-banking). QBCore ekosisteminde script'ler birbirine ESX'e göre daha sıkı bağlıdır; bir envanter script'ini değiştirdiğinizde ona bağlı diğer script'lerin de güncellenmesi gerekebilir.
Ortak nokta: Her iki framework de artık ox_lib ve oxmysql ekosistemine yaslanıyor. Yeni script'lerin çoğu bu ikisini bağımlılık olarak istiyor, dolayısıyla sunucunuzda kurulu değillerse ilk iş onları kurmak olmalı.
Framework seçimini henüz yapmadıysanız veya değiştirmeyi düşünüyorsanız, bu kararın neredeyse geri dönüşsüz olduğunu unutmayın: tüm script'leriniz seçtiğiniz framework'e göre yazılır.
server.cfg'deki isim uyuşmuyor. Linux'ta büyük/küçük harf farkını kontrol edin. Klasörün gerçekten resources altında olduğundan emin olun.ensure es_extended satırını script'inizin üstüne alın..sql dosyası içe aktarılmamış veya yanlış veritabanına aktarılmış.config.lua içindeki framework ayarı yanlış, ya da yetki (permission) tanımı eksik.ensure satırını geçici olarak yorum satırı yapın (# ile), sunucuyu temiz başlatın ve konsol loglarını okuyun.resmon komutuyla hangi resource'un kaynak yediğini bulun. Genellikle tek bir kötü yazılmış script tüm sunucuyu yavaşlatır.Ücretsiz script sitelerinden indirdiğiniz dosyalar her zaman masum değildir. FiveM ekosisteminde backdoor içeren script'ler yaygın bir sorundur — bu script'ler sunucunuza uzaktan komut çalıştırma, oyunculara para basma veya veritabanınızı dışarı sızdırma yeteneği verebilir.
Kurulumdan önce şunlara bakın: PerformHttpRequest ile bilinmeyen adreslere yapılan istekler, load() veya assert(load(...)) ile çalıştırılan şifrelenmiş kod blokları, anlamsız uzunlukta base64 dizileri. Bunlardan birini görüyorsanız o script'i kurmayın.
Sunucu tarafındaki genel sertleştirme adımları için sunucu güvenliği için ilk 10 adım rehberimize göz atabilirsiniz. Aynı mantığın MTA tarafındaki karşılığını ise MTA sunucusuna script ekleme yazımızda ele almıştık.
Script eklemek kolaydır; onlarca script'i aynı anda akıcı çalıştırmak donanım işidir. FiveM ana döngüsü büyük ölçüde tek çekirdek üzerinde çalıştığı için yüksek saat hızlı işlemci, SQL sorgularının gecikmesiz dönmesi için de NVMe disk gerekir. Nubitro'nun FiveM sunucu paketleri anında kurulum, 200 Tbps+ DDoS koruması ve 7/24 destekle geliyor. Tam kontrol isteyenler AMD Ryzen 9 tabanlı Türkiye lokasyonlu VDS seçeneklerimizi inceleyebilir. Sunucunuzu henüz kurmadıysanız FiveM sunucusu nasıl kurulur rehberimizle başlayın.
Üç şeyi sırayla kontrol edin: klasör gerçekten resources altında mı, klasörün içinde doğrudan fxmanifest.lua var mı, ve server.cfg'de ensure satırı doğru yazılmış mı. Bu üçü tamamsa konsolda kırmızı hata satırlarını okuyun.
Hayır. Framework'ler oyuncu verisini, meslek sistemini ve para birimini farklı yapıda tutar. Bazı script'ler her iki framework'ü de destekleyecek şekilde yazılır; bunu config.lua içindeki framework seçeneğinden anlarsınız. Desteklemiyorsa ya köprü (bridge) resource kullanmanız ya da script'i uyarlamanız gerekir.
start resource'u başlatır; zaten çalışıyorsa hiçbir şey yapmaz. ensure ise çalışmıyorsa başlatır, çalışıyorsa yeniden başlatır. server.cfg içinde her zaman ensure tercih edin.
Önce mevcut klasörün ve veritabanının yedeğini alın. Yeni sürümü açın, kendi config.lua ayarlarınızı yeni dosyaya taşıyın (eski config'i olduğu gibi kopyalamayın, yeni sürümde yeni ayarlar olabilir). Sürüm notlarında SQL değişikliği belirtiliyorsa o dosyayı da içe aktarın.
Teknik bir üst sınır yok; sınır donanımınız ve script kalitesidir. 100 hafif script, kötü yazılmış 10 script'ten daha az yük yaratabilir. Ölçüt sayı değil, resmon çıktısındaki milisaniye değerleridir.
Dosyaları açıp PerformHttpRequest, load(, uzun base64 blokları gibi şüpheli kalıpları arayın. Şifrelenmiş (escrow dışı) kod içeren ücretsiz script'lere güvenmeyin. Mümkünse script'i önce test sunucusunda deneyin.
fxmanifest.lua dosyası olmadan tanınmaz.server.cfg sırası kritik: oxmysql → ox_lib → framework → script'leriniz.