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:

  1. Veritabanı: oxmysql
  2. Kütüphane: ox_lib
  3. Çerçeve: es_extended, qb-core veya qbx_core
  4. Envanter
  5. Diğer her şey

Çalışan bir sıra

QBCore için:

cfg
ensure oxmysql
ensure ox_lib
ensure qb-core
ensure ox_inventory
ensure [qb]

ensure [standalone]
ensure [mic]

QBox için:

cfg
ensure oxmysql
ensure ox_lib
ensure qbx_core
ensure ox_inventory
ensure [qbx]
ensure [standalone]

ESX için:

cfg
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

cfg
start my_script
ensure my_script
  • start durdurulmuşsa bir kaynağı başlatır.
  • ensure durdurulmuş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:

text
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-garages qb-core'a ihtiyaç duyuyorsa, qb-core'u ensure [qb] üstünde kendi satırında ensure edin veya manifestinde dependency '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:

lua
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ı ensure iki 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_script ve resources/[mic]/my_script varsa, 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:

  • oxmysql bir veritabanı hatası yazdırır: SQL kullanan hiçbir şey çalışmaz.
  • ox_lib başarısız olur: @ox_lib/init.lua olan 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 →

Okumaya devam edin