Önceden yazmıştım aslında ama yanlış yazdığımı fark edip silip baştan yazayım dedim, şöyle ki Writefile iyi bir çözüm olabilir ama yine de böyle bir sistem yapman çok zor. Şimdi şöyle ki bir Ultima Online haritası 7168x4096 kareden oluşur yani yaklaşık olarak 30 milyon kareden bahsediyoruz, bu haritayı 60x60 yani 3600 kareye bölsen bile yaklaşık olarak 8500 kordinat eder. Hadi diyelim bunun bir kısmı siyah alan, bir kısmı su falan filan desek 10 da 1 ine kadar düşürsek bile 1000den fazla kordinat demek.
Ki burada bu kordinatların 1000ini kayıt etsen ve 1000ini gezsen bile denk gelmeme şansın hala var, çünkü mesela suya yakın olan noktaların 60x60 karelik alanının kordinat noktası suyun içerisinde kalabilir. Bu da su içindeki kordinatlar iptal edilirse yürümeden npclerin bulunmasnı imkansız hale getirir.
Hadi diyelim bu kadar farktan bir şey olmaz dedik, yine de 1000 tane kordinatı bir şekilde bir oyuncuya kayıt ettirmeyi başarsan bile, 1000 tane kordinatın her birini 30sn tp + 30sn tracking desek 1 dakikada dolaşsa bütün spawnları dolaşması 20 saate yakın zaman alacaktır. Yani bırak tek günde dolaşmasını, 20 saat hiç bir şey yapmadan spawn dolaşabilecek sabırlı bir insanoğlu yoktur diye düşünüyorum.
Ancak yine de istediğin gibi bir sistem yapmak imkansız değil, mesela bir npc spawn olduğunda atıyorum 500 - 1000 arasında random bir sınırlama koyarsan bu kare sayısını azaltman mümkün. Atıyorum ki 5000, 5000 kordinatında spawn olmuş olsun bir npc, şöyle bir bilgi verirsin bu npc: 4381, 4051 ile 5683,5873 kordinatları arasında spawn olmuştur, böylece kare sayısı 2 milyona düşer bu da yaklaşık 700 kordinat demek, hadi bunun içinden gereksiz suları falan çıkarsan yani yine üstteki mantıkla gitsek 10 da 1 ine düşürsek, 60-70 kordinata denk gelir. Tabii ki sen 500 değil 100-250 ile limitlersin bu sayı çok daha fazla da azalabilir. En azından insanlara uygulanabilir bir miktarda kordinat verebilirsin böylelikle.
Yine de ille tüm haritayı yapacağım diyorsan tek yapman gereken 0,0 kordinatından başlayıp, önce 4096'ya ulaşacak yada geçecek kadar 0 da sabit kalıp Y yi arttıracaksın, 0,0 - 0,60 - 0,120...
Sonra y 4096'yı geçtiğinde X e 60 ekleyip aynı işlemi devam ettireceksin, bu döngü X 7168'i geçene kadar devam edecek.
Her kordinatı çektiğinde Serv.map komutu ile terrain vs kontrolünü yapacaksın, gerekli kontrollerini yapacaksın atıyorum şehir içi, guarded zone falan filan, onları eleyecek, sonra arkadaşların dediği gibi Writefile ile bir dosyaya yazdırabilirsin. Bildiğim kadarı ile Excel dosyasının bir formatı vardı, o formatı internetten bulup txt dosyasına o formatta yazarsan uzantısını değişip excel yaptığında excel o veriyi doğrudan okuyabiliyordu diye anımsıyorum, ama çok zaman geçti pek hatırlamıyorum, yine de yapmak istediğin şeyi yapsan bile, miktarlar insan sınırlarının çok çok ötesinde olacaktır.
Devamını göster
Geçmişi olmayanın, geleceği olmaz.
Scripting Destek Discord:
https://discord.gg/yXQ3m5S