ESX / QBCore / Core nesnesi nil
Bir script framework'ünü bulamadı (ESX, QBCore, Qbox) — ya çalışmıyor, ya da bu script'ten sonra başlıyor.
Önce şunu yap
server.cfg içinde framework'ünün, başarısız olan script'in ÜSTÜNDE listelendiğinden emin ol.
Ne anlama gelir
Script, framework'ün paylaşılan nesnesini o nesneye sahip olmadan kullanmaya çalıştı. Hatanın kendisi genelde attempt to index a nil value (global 'ESX') olarak gelir, ama neden kendi yanıtını hak edecek kadar belirgindir.
Neden olur
Ne sıklıkla doğru cevap olduğuna göre sıralı.
- 1
Eski getSharedObject kalıbı, hâlâ dosya kapsamında
ESX = nil TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)Bu asenkrondur. Altındaki her kod, geri çağırmadan önce çalışır. ESX Legacy olayı tamamen kaldırdı, o yüzden modern bir sunucuda hiç tetiklenmez.
- 2
Framework başlatılmamış, ya da senin kaynağından sonra başlıyor
server.cfg'de
ensure my-scriptsatırının altındaensure es_extended. - 3
Kurulu sürüm için yanlış erişimci
ESX Legacy
getSharedObjectsunar; QBCoreGetCoreObjectsunar; Qbox kendi modülünü require etmeyi tercih eder. Diğer framework'ün çağrısını kullanmak nil verir. - 4
Yanlış tarafta kullanmak
İstemci ve sunucu nesneleri farklıdır. Yalnızca sunucuya ait bir metot, istemcide nesne yüklenmiş olsa bile nil'dir.
Hangisinin seninki olduğu nasıl anlaşılır
print(GetResourceState('es_extended'), ESX ~= nil)Durum started ama ESX nil ise, sorun erişimci ya da zamanlamadır. Durum başka bir şeyse, sorun server.cfg'dir.
Nereye bakmalı
Başarısız olan dosyanın başı, ve server.cfg'deki ensure sırası.
Nasıl düzeltilir
ESX Legacy — doğrudan, eşzamanlı, geri çağırma yok:
ESX = exports['es_extended']:getSharedObject()
QBCore:
local QBCore = exports['qb-core']:GetCoreObject()
Qbox:
local qbx = exports.qbx_core
Eski bir ESX'i desteklemek zorundaysan, en azından kullanmadan önce bekle:
CreateThread(function()
while ESX == nil do
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
Wait(100)
end
end)Hâlâ kendi kodunda mı takıldın?
Bu sayfa, bu hatanın genelde ne anlama geldiğini anlatır. Konsolunu Server Fixer'a yapıştır; içindeki her şeyi sıraya dizer ve önce ne yapman gerektiğini söyler. Kendin uğraşmak istemiyorsan ORBIE script'i onarır ve kaynağı sunucuna atmaya hazır geri verir.
bug_reportServer Fixer'ı açBu tür bir hata için Script Çevirici bir kaynağı ESX, QBCore ve Qbox arasında çevirir.