THE ORB
Studio başlatılıyor

attempt to call a nil value

Bir script var olmayan bir fonksiyonu kullanmaya çalıştı — genelde framework'ünün başka bir sürümü için yazıldığı için.

groupsO özellik çalışmayı bırakıyorcodeGeliştirici gerektirir

Önce şunu yap

Script'in senin framework'ün ve onun senin sürümün için yapıldığını kontrol et.

bug_reportBunun yerine tüm konsolunu yapıştır

Ne anlama gelir

Script, fonksiyon olmayan bir şeyi çağırmaya çalıştı. Parantez içindeki ad ne olduğunu söyler: (global 'ESX'), (field 'GetPlayerData'), (method 'getJob').

method 'x' dikkatle okunmaya değer: çağrının iki nokta üst üste kullandığı (obj:x()) ve tabloda x olmadığı anlamına gelir. Bu neredeyse her zaman bir framework sürüm farkıdır — metot yeniden adlandırılmış ya da taşınmıştır.

Neden olur

Ne sıklıkla doğru cevap olduğuna göre sıralı.

  1. 1

    Bu tarafta var olmayan bir native

    Sunucuda çağrılan istemci native'leri, ya da tersi. Çizim, girdi ve kamera native'lerinin çoğu yalnızca istemcidedir, yani sunucuda o global basitçe nil'dir ve onu çağırmak nil'i çağırmaktır.

  2. 2

    Sürümler arasında yeniden adlandırılmış bir framework metodu

    xPlayer.getJob() ile xPlayer.job, QBCore.Functions.GetPlayerData ile PlayerData, ESX Legacy ile ESX 1.1. Bir sürüm için yazılmış script'ler, diğerinde olmayan metotları çağırır.

  3. 3

    nil'e çözülen bir export

    Kaynağın durdurulduğu, yanlış adlandırıldığı ya da öyle bir ad sunmadığı exports['res']:method(). FiveM hata atmak yerine nil döndürür, o yüzden arıza burada iner.

  4. 4

    Fonksiyon dosyanın daha aşağısında tanımlı

    Lua local function f atamasını, ayrıştırma anında değil, o satır çalıştığında yapar. Tanımının üstünde f() çağırmak nil çağırmaktır.

  5. 5

    Bir yazım hatası

    TriggerServerEvnet, ya da gerçek native PlayerPedId iken GetPlayerPedId.

Hangisinin seninki olduğu nasıl anlaşılır

Çağrının üstünde:

print(type(theThing))

Bir native için nil, yanlış taraftasın demektir — her girdi için istemci/sunucu bilgisini listeleyen native referansına bak. table, bir tabloyu çağırıyorsun demektir, ki bu genelde : gereken yerde . kullanıldığı anlamına gelir.

Nereye bakmalı

Adı geçen dosya ve satır. Ad küresel bir native ise, kendi kodunun yanlış olduğunu varsaymadan önce native referansında ara.

Nasıl düzeltilir

-- export'lar: güvenmeden önce kaynağın ayakta olduğunu kontrol et
if GetResourceState('ox_inventory') ~= 'started' then return end
local count = exports.ox_inventory:Search(src, 'count', 'water')

-- framework metotları: o sürümün API'sini oku, tahmin etme
local job = xPlayer.job          -- ESX Legacy
-- local job = xPlayer.getJob()  -- daha eski ESX

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 Optimizer script'i okur ve bunun arkasındaki kodu onarır.

Bununla birlikte gelen hatalar