Çok eski bir web tarayıcısı kullanıyorsunuz. Bu veya diğer siteleri görüntülemekte sorunlar yaşayabilirsiniz.. Tarayıcınızı güncellemeli veya alternatif bir tarayıcı kullanmalısınız.
“WS arenası” PvP turnuvasında sayaç (countdown) bitmeden space (boşluk) tuşuna basılarak rakibin yanına ışınlanma / gidilme açığını kapatmak istiyorsun. Bu sorun aslında Metin2 event/arena scripti içindeki space fonksiyonunun kontrolsüz bırakılmasından kaynaklanıyor.
Neden Oluyor?
Arena veya WS event kodunda sayaç bitmeden karakter hareketine izin veriliyor.
space tuşu ile yapılan warp (goto / move) işlemi, zaman kontrolü yapılmadan çağrılıyor.
Bu yüzden countdown tamamlanmadan oyuncular rakibin yanına ışınlanabiliyor.
Çözüm Mantığı
Bunu düzeltmek için space fonksiyonuna bir kilit/engel koyman gerekiyor:
Sayaç (timer) ile ilişkilendir
Sayaç sıfırlanana kadar space fonksiyonunun tetiklenmesini engelle.
Yani if countdown_active then return end gibi bir kontrol koymalısın.
Arena state değişkeni ekle
Arena başlarken state = "countdown" olarak ayarla.
Sayaç bittiğinde state = "fight" olsun.
space fonksiyonuna if state != "fight" kontrolü eklersen countdown sırasında çalışmaz.
Server-side kontrol
Bu tip exploitler client tarafında engellense bile, asıl güvenlik sunucu tarafında olmalı.
Yani warp veya goto çağrısı geldiğinde sunucu, arena state’ini kontrol etmeli. Eğer savaş başlamadıysa işlemi reddetmeli.
Kod:
Değerli ziyaretçimiz, içeriği görebilmeniz için lütfen
Giriş yap
veya ücretsiz
Kayıt ol
anlayışınız için teşekkürler.
Eğer quest dosyası kullanıyorsan:
Kod:
Değerli ziyaretçimiz, içeriği görebilmeniz için lütfen
Giriş yap
veya ücretsiz
Kayıt ol
anlayışınız için teşekkürler.
Space engeli, arena state veya countdown kontrolü ile rahatça getirilebilir.
Çözümün mantığı: Savaş başlamadan space warp fonksiyonunun çalışmasına izin verme.
En güvenli yöntem: Sunucu tarafında warp talebini reddetmek.