Merhaba,


Aklıma bir sistem geldide şimdi sorgularla bu işlem yapılacak orası kesin fakat npci nasıl yürütücem orasını hiç bilmediğimden bir danışayım dedim.

Misal adamda bir event var e_staff bu evente sahip olan kişi npc'e 5 kare yaklaştığında kaçmaya başlıcak ama yürüme değil bildin koştursun :D distance 5 olarak yapsak sorun çıkmaz sanırım.Varmı böyle birşeyi yapabilecek birisi
Kaçan kovalanır ayrıca yapılsa bile çok komik şeyler ortaya çıkar biz daha 4 nala koştururken tuhaf tuhaf yerlere takılıyoruz.
Çok doğru ufak yerlere takılması çok olur duvarların etrafından dolaşması için bişey vardı o eklenirse olabilir ama kapalı bi yerde kaçabilir mi bilmiyorum .
Master
59.2997
Sphere'da istediğin hiç bir zaman tam anlamıyla sorunsuz çalışmaz ve öyle hemen yapalım olsun şeklinde kolay bir iş değil. Tek bir npc ile yanlış kodlamada koca sunucunun anasını ağlatabilirsiniz.
sphereda bi halta timer veremiyoruz, verilse npcye falan check ettirilir ama sphere scriptingde foritems 20 yazsan bile kasma olurken..
boş saatime denk geldin

[events e_run]
on=@npclookatchar
if <src.isplayer>
runrun
endif

[function runrun]
if <dir> == 1
tag.dir <dirin tam tersi yönü fakat harf cinsinden n,nw gibi>
elif <dir> == 2
tag.dir <?>
elif ..
serv.newitem i_runner
new.p <p>
new.link <uid>

[itemdef i_runner]
id=i_memory

on=@create
timer 1

on=@timer
timerf 5,remove
try uid.<link>.run <tag.dir> 1
timerd <r2,5>
..
..

normal bir playerın koşamıyacağı seviyede koşar, charlar timerdi sadece itemden verilen uid emriyle yer herkes bilmez bunu :P kaçma mantığı olarak da baktığı yönün ters yönüne depar atıcak işte rastgele hızlarda o dirleri 8 yön içinde yapman lazım ama denemedim sistemi bu arada.

Bu konu Brownie tarafından düzenlendi(2012-07-31 14:32, 11 yıl önce)
Master
59.2997
Şimdi yine bir şeyler yazıcam yine bazı tipler çıkıp egoist diyecek. :) Neyse içimde kalmasın.

Brownie : charlar timerdi sadece itemden verilen uid emriyle yer herkes bilmez bunu :P

Xantier'a laf sokmuşsunda boşuna olmuş. Neyden söz ettiğini niye öyle söylediğini anlamadığın çok belli.

Birde refi kavrayamadınız deyince yine egoist ben oluyorum :)

ref1 <link>
try uid.<ref1>.run <tag.dir> 1

Bu nedir usta? Link'in tanımı ne, türü ne biliyor musun? Ref ne peki? Try.uid niçin kullanılır ve amacı nedir? Bunları hep ezberden kullanıyorsunuz. Hep mantığınız; çalışıyor mu, tamam problem yok. Optimizasyon boşuna çıkartılmış. Mantıklı kod yazmak, algoritma vs hikaye yani... Kod çalışsında nasıl çalışırsa çalışsın.

Normal bir item'ın timer'ı bile sphere'ı felç edebilirken bu npc'den 3-5 tane koyabileceğinizi göz önüne alırsak timerd kullanarak tecavüze teşvik etmiş oluyorsunuz.
uo-deve bak bakalım tıpatıp aynı mesajı kaç dakika önce yazmışım da xantiere laf sokmuşum failledin mlsf =/ refi biliyorum evet try uidin ne için kullanıldığını da biliyorum sistemin dinamikliğiyle ilgilenmiyorum sormuş adam söyledim.
Master
59.2997
Brownie : uo-deve bak bakalım tıpatıp aynı mesajı kaç dakika önce yazmışım da xantiere laf sokmuşum failledin mlsf =/ refi biliyorum evet try uidin ne için kullanıldığını da biliyorum sistemin dinamikliğiyle ilgilenmiyorum sormuş adam söyledim.

Uo-dev'i falan takip etmiyorum. Burada ne yazdıysan ona göre yazdım. Fail'lik bir durum yok ortada. Sen bir üstte xantier'ın timer yanıtından sonra çıkıp bunu yazıyorsan bu şekilde anlaşılman çok doğal.

Brownie : sistemin dinamikliğiyle ilgilenmiyorum sormuş adam söyledim.

Sırf şunu demen bile bilmediğini gösteriyor. Üstte de dedim, çalışıyorsa sorun yok mantığı.
sonradan okudum yorumları öyle anlaşılıyor evet kendinden çok emin yazmışsın cümleyi o yüzden öyle dedim altta yazdığın paragrafı da anlamadım linki tekrardan refe tanıtmanın gereksizliğinden söz ediyorsun galiba düzelttim mutlu olucaksan
src, ref, act, link bunlar nesnedir, try ise uidleri nesneye çevirmek için vardır.
player ile npc arasındaki koordinatlara yapılacak basit bir matematik işlemiyle kaçması gereken yönü hesaplatıp moveto komutu ile 20-30 kare 180 derece arkasındaki bir koordinat verilerek speedmode ile koşması sağlanabilir. herhangi bir script yazmayalı çok uzun süre geçti. genç arkadaşlar bi kurcalayın bu bahsettiğim mevzuyu.
draw senden şunu istiyorum oyuna girip mini mapi yanına çek tek tek her yöne bakıp .show dir yazarak dir 0 ---> n / dir 1 ---> nw bla bla şeklinde mini mape karşılık gelen yerleri söylersen scripti son haline getiririm bu arada 5 kare olayını .xvisualrange 5 ile yapabilirsin olabilitesi var garanti vermiyorum ama
sağ aşaya dir 2 sağ çapraz aşaya dir 1 sağ yukarı dir 0 sağ çapraz yukarı dir 7 yukarı dir 6 sol çapraz yukarı dir 5 sol aşaya dir 4 sol çapraz aşaya dir 3

Anlatabildim umarım :)
0-7
N NE E SE S SW W NW



Üye Ol veya Giriş Yap

Bu forum başlığına mesaj atmak istiyorsanız hemen üye olun veya giriş yapın.