server.cfg ensure sırası: FiveM için doğru kaynak başlama sırası
Kaynaklar başlama sırasından dolayı başarısız mı oluyor? Doğru server.cfg sırası (oxmysql, ox_lib, çerçeve, envanter, betikler), parantez klasörleri, ensure vs start ve çoğaltmalar.
Başlangıçta betiklerinizin yarısı nil hataları fırlatıyor, ancak bunları elle yeniden başlattığınızda çalışıyor. Bu kalıp, kaynakların yanlış sırada başladığını genellikle anlamına gelir. Bu kılavuz, ESX, QBCore ve QBox için çalışan bir sıra verir ve ensure vs start, parantez klasörleri ve çoğaltmaları açıklar.
Sıranın neden önemli olduğu
Kaynaklar server.cfg dosyasındaki satırların sırasında başlar. Yüklediğinde çerçeveyi okuyan bir betik, çerçeve henüz başlamadıysa nil alır. Aynı durum veritabanı katmanı ve ox_lib gibi kütüphaneler için de geçerlidir. Bunu temel katmanları en üste koyarak çözersiniz:
- Veritabanı:
oxmysql - Kütüphane:
ox_lib - Çerçeve:
es_extended,qb-coreveyaqbx_core - Envanter
- Diğer her şey
Çalışan bir sıra
QBCore için:
ensure oxmysql
ensure ox_lib
ensure qb-core
ensure ox_inventory
ensure [qb]
ensure [standalone]
ensure [mic]QBox için:
ensure oxmysql
ensure ox_lib
ensure qbx_core
ensure ox_inventory
ensure [qbx]
ensure [standalone]ESX için:
ensure oxmysql
ensure ox_lib
ensure es_extended
ensure ox_inventory
ensure [esx]
ensure [standalone]Kategori adlarını kendi klasörlerinize ayarlayın. ox_inventory yerine qb-inventory veya başka bir envanter kullanıyorsanız, bunu aynı konuma, çerçeveden hemen sonra (veya belgesi öyle söylüyorsa, önce) koyun.
İpucu: adla ensure ettiğiniz kaynakları (
oxmysql,ox_lib, çerçeve, envanter) bir bütün olarak ensure etmediğiniz klasörlerde tutun. Aksi takdirde iki kez ensure edilirler, aşağıdaki Çoğaltmalara bakın. Birçok kurulum bunları hiçbir zaman bir bütün olarak ensure edilen bir[core]klasöründe koyar.
İpucu: txAdmin tarifniz kendi sırasını yazabilir. Çalışanı tutun ve dosyayı yeniden yazmak yerine, betiğinizi yalnızca temel katmanların altına ekleyin.
ensure vs start
start my_script
ensure my_scriptstartdurdurulmuşsa bir kaynağı başlatır.ensuredurdurulmuşsa başlatır ve zaten çalışıyorsa yeniden başlatır.
Normal bir önyüklemede, hiçbir şey çalışmadığı için aynı şekilde davranırlar. Fark, canlı konsolda çalıştırdığınızda ortaya çıkar: ensure my_script yeni düzenlediyseniz bir betiği yeniden yüklemek istediğiniz şeydir. server.cfg dosyasında, yalnızca bir kelime hatırlamanız gereksin diye her yerde ensure kullanın. Diğer yön için, stop my_script bunu durdurur ve refresh sunucuyu resources klasöründe yeni veya değiştirilmiş manifestleri yeniden taramasını sağlar.
Parantez klasörleri kategorileri olarak
Adı parantez içinde olan bir klasör bir kaynak değildir. Bu bir kategoridir ve FiveM içinde bakar:
resources/
[core]/
ox_lib/
oxmysql/
qb-core/
[qb]/
qb-garages/
[standalone]/
my_other_script/
[mic]/
my_script/ensure [qb] [qb] içindeki her kaynağı başlatır. Bu server.cfg öğesini kısa tutar ve çoğu çerçeve paketi bu şekilde gönderilir. Bilmeniz gereken iki şey vardır:
- Parantez klasörü içindeki sıranın güvenilir olması beklenmez.
qb-garagesqb-core'a ihtiyaç duyuyorsa,qb-core'uensure [qb]üstünde kendi satırında ensure edin veya manifestindedependency 'qb-core'bildirin. Çekirdek şansa bağlı kalmamalıdır. - Bir kaynak başka bir kaynağın içinde iç içe olamaz. Parantezler yalnızca gruplama içindir. Bir betik klasörünü başka bir betiğin klasörü içine koyarsanız, FiveM bunu bulamaz. Kaynağı başlatamadı bölümüne bakın.
Parantez klasörü içindeki bir kaynak yine de kendi adıyla bulunur, bu nedenle klasör [core]/ox_lib olsa da ensure ox_lib çalışır.
Manifestdeki bağımlılıklar
server.cfg dosyasındaki satırları sıralamak bir araçtır. Bir betiğin manifestinde bir dependency satırı diğeridir ve daha güvenilirdir:
dependency 'ox_lib'
dependency 'oxmysql'FiveM daha sonra bu kaynakların var olduğunu kontrol eder ve bunları ilk olarak başlatır. Biri eksikse, nil hatası yerine net bir ileti alırsınız: X için Y kaynağının bağımlılığı bulunamadı. Her ikisini de kullanın: dosyada iyi bir sıra ve kontrol ettiğiniz manifestlerde bağımlılıklar.
Çoğaltmalar
Çoğaltmalarla iki şey ters gider:
- Aynı
ensureiki kez. Bir kaynağıserver.cfgöğesinde iki kez ensure etmek başlatır ve hemen sonra yeniden başlatır. Önyükleme süresini boşa harcar ve yinelenen veritabanı yazılarını veya başlangıçtaki olayları tetikleyebilir. İkinci satırı kaldırın. Bir parantez klasörünün adla ensure ettiğiniz bir kaynağı zaten içermediğini kontrol edin. - Aynı kaynak adıyla iki klasör.
resources/[old]/my_scriptveresources/[mic]/my_scriptvarsa, yalnızca biri kullanılır ve hangisi kontrol etmediğiniz bir şeydir. Birini silin veya yeniden adlandırın ve her zaman yeni bir betiği yüklemeden önce eski sürümü silin.
Yaptığınız bir düzeltmenin hiçbir etkisi yokmuş gibi göründüğünde, çalışmayan kopyayı düzenlemediğinizi kontrol edin.
Sıra yanlış olduğunda suçluyu bulun
Sunucuyu başlatın, sonra konsolun başından okuyun. Hata yazdıran ilk kaynak nedendir ve sonrasında her şey sonuç olabilir. Tipik örnekler:
oxmysqlbir veritabanı hatası yazdırır: SQL kullanan hiçbir şey çalışmaz.ox_libbaşarısız olur:@ox_lib/init.luaolan her betik kırılır (ox_lib düzeltmesi).- Çerçeve başarısız olur: bir oyuncu nesnesi için soran her betik nil alır.
İlk hatayı düzeltin ve yeniden başlatın.
Kontrol listesi
| Belirti | Çözüm |
|---|---|
| Önyükleme sırasında Nil hataları, elle yeniden başlattıktan sonra iyi | Temel katmanları betiklerin üzerine taşıyın |
| Betik ox_lib'e ihtiyaç duyuyor, başlangıçta başarısız oluyor | Üstüne ensure ox_lib koyun, dependency 'ox_lib' ekleyin |
| Düzenlenen betik yeniden yüklenmez | Canlı konsolda ensure my_script kullanın |
| Yeni klasör bulunamaz | refresh çalıştırın |
| Parantez klasörü kaynakları garip sırada başlar | Çekirdeği kendi satırında ilk olarak ensure edin |
| Betik eski davranış çalıştırır | Aynı adlı ikinci bir klasöre bakın |
| Aynı kaynak önyükleme sırasında yeniden başlar | Yinelenen ensure'u kaldırın |
Kısa yanıtlar
ensure ve start arasındaki fark nedir?
start durdurulmuş bir kaynağı başlatır. ensure durdurulmuşsa başlatır ve zaten çalışıyorsa yeniden başlatır. server.cfg dosyasında, her ikisi de yeni bir önyükleme sırasında aynı şekilde çalışır, ancak ensure olağan seçimdir.
ensure satırlarının sırası önemli midir?
Evet. Başka bir kaynağa bağlı olan bir kaynağın ondan sonra başlamalıdır. Veritabanı, ox_lib, çerçeve ve envanteri ilk olarak koyun, sonra diğer her şey.
Parantez klasörleri belirli bir sırada başlar mı?
Buna güvenmeyin. ensure [folder] içindeki kaynakları başlatır, ancak biri diğerine ihtiyaç duyuyorsa, sıraya bağlı olmak yerine manifestinde bir bağımlılık bildirin.
Bu sorunu yaşatmayan scriptler
Shop CreatorBir dakikadan kısa sürede dükkân kurun — sahipler, çalışanlar, kasalar ve soygunlar dahil.Scripti gör →
CCTV Security CamerasYerleştirilebilir kameralar, canlı çoklu görüntü tableti ve basılı delil fotoğrafları.Scripti gör →
Item Creator V2Animasyonlar, proplar, efektler ve daha fazlasıyla kullanılabilir eşyalar oluşturun — kod yazmadan.Scripti gör →