Merhaba arkadaşlar,
Bir çoğumuz oyun içinde uzaklık sorgusunu DISTANCE komutu ile yapıyoruz. Eğer SphereX kullanıyor ve NoDiagonalCheck flag'ı açık kullanıyorsanız, bu size her zaman doğru sonucu verebilir. Ancak daha eski sürümlerde emulatör kullanıyor veya Combat sisteminin saçmalamaması için NoDiagonalCheck flag kullanmıyorsanız maalesef DISTANCE komutu çapraz yönlerde doğru sonuç vermez.
Örneğin, ekranın ortasında duran bir karakter ekranın üst orta kısmına doğru 9 kare görebilir ancak DISTANCE sorgusu buraya 12 kare sonucu verir. Emulatör içindeki uzaklık sorgusunda yuvarlama mantığı vardır. Yani eğer uzaklık 8.1 ise bu uzaklık 9 olarak sayılır. Bu durumda, kesin uzaklık bilgisine ihtiyacınız olan bir sistem yazıyorsanız aşağıda paylaşacağım komut işinizi görecektir.
// GERÇEK DİSTANCEYİ VEREN KOMUT [FUNCTION REALDISTANCE] REF1=<ARGV[0]> REF2=<ARGV[1]> LOCAL.XDIF=<EVAL SQRT(<EVAL (<REF1.P.X>-<REF2.P.X>) * (<REF1.P.X>-<REF2.P.X>)>)> LOCAL.YDIF=<EVAL SQRT(<EVAL (<REF1.P.Y>-<REF2.P.Y>) * (<REF1.P.Y>-<REF2.P.Y>)>)> IF (<DLOCAL.XDIF> > <DLOCAL.YDIF>) RETURN <DLOCAL.XDIF> ELSE RETURN <DLOCAL.YDIF> ENDIF
if (<realdistance <src>,<hedef>> > 2) src.sysmessage <hedef> konuma 2 kareden uzaksın else src.sysmessage <hedef> konuma 2 kare veya daha yakınsın endif
Umarım işinize yarayacak bir komut olur. İnternette softdistance diye benzer bir komut karşınıza çıkabilir. Bu komut çok eski emulatör sürümlerinde yazılmış olduğundan, direkt güncel şeklini kullanmak daha iyi olacaktır.
Başarılar dilerim!
1 Kullanıcı
Ultima Online 6 dakika önce
Sunucular 1 hafta önce
Sunucular 1 hafta önce
Sohbet & Geyik 2 hafta önce
Sunucular 2 hafta önce
Ultima Online 2 hafta önce
Ultima Online 1 ay önce
Sunucular 1 ay önce
Sphere Scripting 1 ay önce
Ultima Online 1 ay önce
Sunucular 1 ay önce
Diğer Oyunlar 1 ay önce
2024-10-31 22:47
2024-10-14 17:45
2024-09-26 14:21
2024-07-08 22:50
2024-07-08 22:34
2024-06-19 22:05
2024-06-01 02:19
2024-05-31 21:17