THE ORB
Studio başlatılıyor

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ı.

groupsPara ya da eşyalar ters davranıyorcodeGeliştirici gerektirir

Önce şunu yap

Oyuncunun veritabanındaki satırında, mesajın adlandırdığı sütunda boş değer var mı kontrol et.

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

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. 1

    Eksik bir tablo alanı

    O eşyanın fiyat girdisi yokken Config.Prices[item] * count.

  2. 2

    NULL olan bir veritabanı sütunu

    NULL, 0 olarak değil nil olarak gelir. bank değeri hiç başlatılmamış bir oyuncu satırı, ona dokunan her bakiye hesabını bozar.

  3. 3

    İstemcinin göndermesi gereken ve göndermediği bir değer

    İstemcinin atladığı bir yük üzerinde amount * price yapan bir olay işleyicisi.

  4. 4

    Başlatılmamış bir değişkende biriktirme

    total tanımlanmış ama hiç başlangıç değeri verilmemişken total = 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.

Bununla birlikte gelen hatalar