Athynas - 13-08-2018 18:30 GMT -
Merhaba, şimdi kısaca şöyle özetleyeyim; bir telepad yerleştirdim. Bu telepad üzerine gelen adam event alıyor. Bu eventın yanında memory giyiyor ve bu memorydeki timer ile her 5 saniyede bir çantasına belirlediğim random ore düşüyor. Şimdi benim istediğim eline aldığı balta ya da kazmaya göre çantasına ore ya da log düşmesi. Elinde kazma ya da balta olup olmadığını nasıl sorgulatabilirim? Tahmin ediyorum ki yine memorydeki on=@timer altında sorgulatarak ona göre ore ya da log vermesini veya eşya yok uyarısını verdirtmem gerekiyor. Ancak bunu nasıl yapabilirim?
Daha anlaşılır olmak ve özet geçmek babında; "eldeki eşyayı nasıl kontrol edebilirim?
*Tamam buldum, findlayer ile yapıyormuşuz
Son güncelleme: athynas tarafından 13-08-2018 20:27 GMT, 934 Gün önce düzenlendi.
Merhaba, şimdi kısaca şöyle özetleyeyim; bir telepad yerleştirdim. Bu telepad üzerine gelen adam event alıyor. Bu eventın yanında memory giyiyor ve bu memorydeki timer ile her 5 saniyede bir çantasına belirlediğim random ore düşüyor. Şimdi benim istediğim eline aldığı balta ya da kazmaya göre çantasına ore ya da log düşmesi. Elinde kazma ya da balta olup olmadığını nasıl sorgulatabilirim? Tahmin ediyorum ki yine memorydeki on=@timer altında sorgulatarak ona göre ore ya da log vermesini veya eşya yok uyarısını verdirtmem gerekiyor. Ancak bunu nasıl yapabilirim?
Daha anlaşılır olmak ve özet geçmek babında; "eldeki eşyayı nasıl kontrol edebilirim?
*Tamam buldum, findlayer ile yapıyormuşuz

Son güncelleme: athynas tarafından 13-08-2018 20:27 GMT, 934 Gün önce düzenlendi.
xwerswoodx - 13-08-2018 20:30 GMT -
Elindeki kazmayı findlayer ile sorgulayabilirsin, tam olarak kazma 1 mi yoksa 2. layere mi geliyordu hatırlamıyorum. Ancak .info dan layer bölümüne bakabilirsin.
Sonrasında, oyuncuyu ne olarak çekiyorsan, SRC ise
Script Kodu:
İle sorgulayabilirsin. Ben burada layeri 2 olarak seçtim eğer layer kaç ise sen ona göre yazmalısın.
Memory den sorgulayacaksan eğer, oyuncu Container yani CONT'a eşit olacağı için şu şekilde sorgulamak gerekecektir.
Script Kodu:
Buradaki
Script Kodu:
Sonrasındaki
Script Kodu:
Burada 2. elinde tuttuğu (tüm çift elli kılıçlar için 2. el esas alınır) eşyanın Type'ını çektik ve t_pickaxe mi diye kontrol ettik. Sen Burada TYPE yerine BASEID yazıp == i_benim_pickaxem gibi sorgulayabilirsin.
Elindeki kazmayı findlayer ile sorgulayabilirsin, tam olarak kazma 1 mi yoksa 2. layere mi geliyordu hatırlamıyorum. Ancak .info dan layer bölümüne bakabilirsin.
Sonrasında, oyuncuyu ne olarak çekiyorsan, SRC ise
Script Kodu:
if <SRC.FINDLAYER.2> && <SRC.FINDLAYER.2.TYPE> == t_pickaxe
İle sorgulayabilirsin. Ben burada layeri 2 olarak seçtim eğer layer kaç ise sen ona göre yazmalısın.
Memory den sorgulayacaksan eğer, oyuncu Container yani CONT'a eşit olacağı için şu şekilde sorgulamak gerekecektir.
Script Kodu:
if <CONT.FINDLAYER.2> && <CONT.FINDLAYER.2.TYPE> == t_pickaxe
Buradaki
Script Kodu:
<CONT.FINDLAYER.2>
Eşyanın olup olmadığını kontrol eder. Eğer eşya yok ise direkt iptal etsin ki TYPE yapıp 0 unknown Type tarzı hatalar almamak için önce sorguladık.Sonrasındaki
Script Kodu:
<CONT.FINDLAYER.2.TYPE> == t_pickaxe
Burada 2. elinde tuttuğu (tüm çift elli kılıçlar için 2. el esas alınır) eşyanın Type'ını çektik ve t_pickaxe mi diye kontrol ettik. Sen Burada TYPE yerine BASEID yazıp == i_benim_pickaxem gibi sorgulayabilirsin.
Athynas - 13-08-2018 21:15 GMT -
Şu noktada tıkandım, muhakkak benim göremediğim basit bir hata yaptım ancak işin içinden çıkamadım. Baltayı bir türlü görmüyor, direkt elseden sonraki uyarıyı veriyor, kazmada sorun yok normal işlevinde çalışıyor hata nerede acaba?
Script Kodu:
Şu noktada tıkandım, muhakkak benim göremediğim basit bir hata yaptım ancak işin içinden çıkamadım. Baltayı bir türlü görmüyor, direkt elseden sonraki uyarıyı veriyor, kazmada sorun yok normal işlevinde çalışıyor hata nerede acaba?
Script Kodu:
if ((<cont.findlayer(layer_hand1).baseid> == i_pickaxe)
topobj.sysmessage @0790,,1 Topladığınız malzemeyi çantanıza koydunuz.
topobj.kaz
cont.newitem random_ore {1 2}
cont.bounce <new>
timer 5
elseif ((<cont.findlayer(layer_hand1).baseid> == i_hatchet)
topobj.sysmessage @0790,,1 Topladığınız malzemeyi çantanıza koydunuz.
topobj.kir
cont.newitem i_log {1 2}
cont.bounce <new>
timer 5
else
topobj.sysmessage @0790,,1 Bu alanda kaynak toplayabilmek için elinizde bir kazma ya da balta olması gerekiyor.
timer 5
endif
return 1
topobj.sysmessage @0790,,1 Topladığınız malzemeyi çantanıza koydunuz.
topobj.kaz
cont.newitem random_ore {1 2}
cont.bounce <new>
timer 5
elseif ((<cont.findlayer(layer_hand1).baseid> == i_hatchet)
topobj.sysmessage @0790,,1 Topladığınız malzemeyi çantanıza koydunuz.
topobj.kir
cont.newitem i_log {1 2}
cont.bounce <new>
timer 5
else
topobj.sysmessage @0790,,1 Bu alanda kaynak toplayabilmek için elinizde bir kazma ya da balta olması gerekiyor.
timer 5
endif
return 1
xwerswoodx - 14-08-2018 04:59 GMT -
Hatana gelirsek, baltanın layerini doğru yazdığından emin misin? Layerleri kontrol etmedim çünkü. Diğer yandan ifler için 2 kere parantez açmışsın, 1 kere açıp 1 kere kapatman gerek. Ayrıca oyuncuya verdiğin kazmanın baseid sinin i_hatched olduğunu kontrol etmelisin, eğer özel bir balta kullanıyorsa mesela i_hatched_benim gibi onu yazmalısın. Diğer yandan parantezler dışında hata görünmüyor. Ayrıca elseif yerine elif kullanmak daha sağlıklı oolacaktır. Ancak kazmanın hand1 de olması baltaya da hand1 zorunluluğu getirmiyor, baltanın layerini kontrol etmeni öneririm. Ayrıca parantezler ufak bir hata olsa da işleyişi engelleyebilirler bu yüzden baştan birer parantez kaldırmalısın.
Hatana gelirsek, baltanın layerini doğru yazdığından emin misin? Layerleri kontrol etmedim çünkü. Diğer yandan ifler için 2 kere parantez açmışsın, 1 kere açıp 1 kere kapatman gerek. Ayrıca oyuncuya verdiğin kazmanın baseid sinin i_hatched olduğunu kontrol etmelisin, eğer özel bir balta kullanıyorsa mesela i_hatched_benim gibi onu yazmalısın. Diğer yandan parantezler dışında hata görünmüyor. Ayrıca elseif yerine elif kullanmak daha sağlıklı oolacaktır. Ancak kazmanın hand1 de olması baltaya da hand1 zorunluluğu getirmiyor, baltanın layerini kontrol etmeni öneririm. Ayrıca parantezler ufak bir hata olsa da işleyişi engelleyebilirler bu yüzden baştan birer parantez kaldırmalısın.
Athynas - 14-08-2018 10:23 GMT -
Layerın doğru olduğuna emindim zaten ikisi de aynı eldeydi. Ancak dediğin gibi xWerswoodx parantezlerden kaynaklı bir hata olmuş şimdi tıkır tıkır çalışıyor. Teşekkürler.
Layerın doğru olduğuna emindim zaten ikisi de aynı eldeydi. Ancak dediğin gibi xWerswoodx parantezlerden kaynaklı bir hata olmuş şimdi tıkır tıkır çalışıyor. Teşekkürler.