attempt to perform arithmetic
Bir script boş bir değerle matematik yapmaya çalıştı — çoğu zaman hiç ayarlanmamış bir para ya da eşya miktarı.
Önce şunu yap
Oyuncunun veritabanındaki satırında, mesajın adlandırdığı sütunda boş değer var mı kontrol et.
Ne anlama gelir
+, -, *, /, % ya da ^, sayı olmayan bir şeye uygulandı. Mesaj onu adlandırır: attempt to perform arithmetic on a nil value (field 'amount').
Lua aritmetikte sayısal metinleri dönüştürür ("5" + 1 6 eder), o yüzden bir metin bunu nadiren tetikler. Nil neredeyse her zaman tetikler.
Neden olur
Ne sıklıkla doğru cevap olduğuna göre sıralı.
- 1
Eksik bir tablo alanı
O eşyanın fiyat girdisi yokken
Config.Prices[item] * count. - 2
NULL olan bir veritabanı sütunu
NULL, 0 olarak değil nil olarak gelir.
bankdeğeri hiç başlatılmamış bir oyuncu satırı, ona dokunan her bakiye hesabını bozar. - 3
İstemcinin göndermesi gereken ve göndermediği bir değer
İstemcinin atladığı bir yük üzerinde
amount * priceyapan bir olay işleyicisi. - 4
Başlatılmamış bir değişkende biriktirme
totaltanımlanmış ama hiç başlangıç değeri verilmemişkentotal = total + x.
Hangisinin seninki olduğu nasıl anlaşılır
Mesajda adı geçen işleneni yazdır. Veritabanından geldiyse sütunda NULL var mı bak:
SELECT COUNT(*) FROM users WHERE bank IS NULL;
Nereye bakmalı
Adı geçen satır, sonra o işlenenin kaynağı.
Nasıl düzeltilir
Kullanırken değil, okurken varsayılan ver:
local price = Config.Prices[item] or 0 local total = price * (count or 1)
Veritabanı için sorunun tekrarını imkânsız kıl:
ALTER TABLE users MODIFY bank INT NOT NULL DEFAULT 0;
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.