Normalde yazarın yaptığı birden fazla hata var, level int tanımlı ve max lonca leveli 20, bu durumda level'in 0'dan az veya 20'den fazla (veya eşit) olmaması gerekir (bu fonksiyonun devreye girmesi için) bunu engellemek için kontrol koymuş ama "yada" operatörü yerine "ve" operatörü kullanmış yani bu kontrol eğer level 0'dan düşükse "ve" level 20'ye eşit veya 20'den yüksekse devreye girecek, yani bunun olma ihtimali yok çünkü level aynı anda hem 0'dan düşük hem de 20'den yüksek olamaz, aslında burada "yada(||)" operatörü kullanması gerekiyordu fakat yanlış yazmış. Ama burada ana problem farklı;
Sadece 20 seviye olabilecek bir veriye int tanımlamış yani 0'ın altında değer alabilir daha sonra bunu engellemek için kontrol koymuş onu da yanlış koymuş, benim eğitim hayatımda öğrendiğim stil mümkün olan en az kodu yazarak verilen işi yapmak üzerineydi o yüzden bu tarz durumlar çok absürt ve yanlış geliyor, bu veri tipi 0'ın altında olamaz değil mi mesela, tamam o zaman buna unsigned bir veri tipi tanımla böylece 0'ın altını kontrol etmene gerek kalmaz, int yerine unsigned short kullan mesela, problem bitti. Metin2'nin dev ekibinin ana olarak C dilinde profesyonel olan insanlardan oluştuğunu düşünüyorum, yazdıkları tüm fonksiyonlarda ezberlerini bozmayıp gerekli gereksiz demeden her şeyi int tanımlayıp geçmişler, bu nelere sebep oldu peki ? 0'ın altında değer almaması gereken fonksiyonlarda int tanımlayıp kontrol de eklemedikleri her yerde problem yaşattı, bir iki örnek; /war -111 açığı, /mob -1 açığı vs.
Bu sebeple siz siz olun yazdığınız sistemlerde de her zaman doğru veri tipini kullanın böylece hem daha az kod yazarsınız hem de hata şansınız azalır, sevgiler.