attempt to index a number / boolean / string value
Bir script beklediğinden farklı türde bir yanıt aldı — çoğu zaman bir veritabanı sonucunu yanlış okuyarak.
Önce şunu yap
Bunun için koda bakmak gerekiyor — senin kurulumunda değil, script'te bir hata.
Ne anlama gelir
. ya da [], var olan ama tablo olmayan bir değerde kullanıldı. Bu, nil'i indekslemekten farklıdır: bir şey VAR, sadece yanlış türde. Bu genelde bir API'nin, kodun beklediğinden farklı bir biçim döndürdüğü anlamına gelir.
Neden olur
Ne sıklıkla doğru cevap olduğuna göre sıralı.
- 1
Bir native tablo değil tanıtıcı döndürdü
local ped = GetPlayerPed(-1)sonraped.x. Tanıtıcı bir sayıdır. - 2
Bir fonksiyon boolean başarı bayrağı döndürdü
Pek çok yardımcı
success, datadöndürür. Yalnızca ilk değeri alıp onu indekslemek tam olarak bunu verir. - 3
Bir sorgu sonucunun bir kat fazla derinden okunması
oxmysql
query, satırlardan oluşan bir DİZİ döndürür.result.identifierdiziyi indeksler; satırresult[1].identifierdır. - 4
Tablo beklenen yerde sayı olan bir config değeri
Config.Jobsın tablo yerine bir sayı olarak yazıldığıConfig.Jobs.police. - 5
Yanlış tarafta çağrılan metin metotları
('x'):upper()sorunsuzdur; x bir sayıykenx:upper()değildir.
Hangisinin seninki olduğu nasıl anlaşılır
print(type(thing), json.encode(thing))
Mesajdaki tür sana zaten ne olduğunu söyler; değer nereden geldiğini söyler.
Nereye bakmalı
Satır, ve bir iki satır üstünde değeri üreten çağrı.
Nasıl düzeltilir
-- oxmysql tek bir satır değil, satırlar döndürür
local rows = MySQL.query.await('SELECT * FROM users WHERE identifier = ?', { id })
local user = rows and rows[1]
if not user then return end
-- native'ler tanıtıcı döndürür
local ped = PlayerPedId()
local coords = GetEntityCoords(ped) -- BU bir vektörHâ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.