Nubes - 09-03-2015 17:25 GMT -
Beyler uzun zamandır ara verdiğim için kodların bazılarını nasıl uyguladığımızı unuttumda. Craft Robe itemi bazı skillere +10 vermektedir. 8x skill total varken craft robe ile 850.0 civarı bir skilltotal oluyor . Ve Serverda her ihtimale karşı yazdığım skilltotal aşımı durumda stone edip stara atıyor ama bu robeyi giyen oyundan çıkıp girdiğinde skilltotal ihlal etmiş gibi görüyor ve stara atıyor bunu nasıl engelleyebiliriz.
Beyler uzun zamandır ara verdiğim için kodların bazılarını nasıl uyguladığımızı unuttumda. Craft Robe itemi bazı skillere +10 vermektedir. 8x skill total varken craft robe ile 850.0 civarı bir skilltotal oluyor . Ve Serverda her ihtimale karşı yazdığım skilltotal aşımı durumda stone edip stara atıyor ama bu robeyi giyen oyundan çıkıp girdiğinde skilltotal ihlal etmiş gibi görüyor ve stara atıyor bunu nasıl engelleyebiliriz.
Rowall - 09-03-2015 17:29 GMT -
Üzerinde craft robe varsa sorgu yaptırma
Üzerinde craft robe varsa sorgu yaptırma
RasmuS - 11-03-2015 00:22 GMT -
Burada kırmızı ile yazdım 2 yerine bu robe giyildiğinde kaç tane ekstra 10.0 yetenek veriliyorsa onun sayısını yaz.
Robe idsi yazan bölüme de robe baseidsini yaz. Sorunsuz çalışacaktır. İlk aklıma gelen yöntem bu.
Son güncelleme: TheRaskol tarafından 11-03-2015 02:48 GMT tarihinde, önce.
Kod:
if (<src.findlayer(22).baseid> == robe idsi)
if (<src.skilltotal> > 800.0)
local.extraskill <eval 10*<span style="color:#F93737">2</span>>
local.skilltotal <eval <src.skilltotal>-<dlocal.extraskill>>
if (<dlocal.skilltotal> > 800.0)
src.sysmessage Çok fazla yeteneğin var be koçum seni böyle alalım
src.stone 1
return 1
endif
endif
endif
Burada kırmızı ile yazdım 2 yerine bu robe giyildiğinde kaç tane ekstra 10.0 yetenek veriliyorsa onun sayısını yaz.
Robe idsi yazan bölüme de robe baseidsini yaz. Sorunsuz çalışacaktır. İlk aklıma gelen yöntem bu.
Son güncelleme: TheRaskol tarafından 11-03-2015 02:48 GMT tarihinde, önce.
xwerswoodx - 11-03-2015 04:26 GMT -
Üzerinde robe veya skillleri etkileyen başka bir eşya varsa skillsum arttırmak yada devre dışı bırakmak gerekir. Bunun en basit yöntemi tek tek eşyaları sorgulamaktır, ancak her item için ayrı sorgu yaptırmak gerekir ve gereksiz bir uğraştır. Bunun yerine, itemlerin ON=@Create altına TAG0.SKILLPLUS (ismi kafamdan attım) gibi bir tag tanıtıp onu kontrol ettirmek daha basittir. Örneğin;
gibi basitçe tanımladık. Şimdi bu itemden 2 tane yapsak her biri için sorgu gerekirdi, bunun yerine TAG0.SKILLPLUS diye ortak bir tag kullandık, peki sorgulamayı nasıl yapacağız?
Layerlerimiz sphere defs içinden;
O zaman bizim yapacağımız 1. layerden 24. layere kadar sorgulamak fakat çanta değişmediği için onu devre dışı bırakmak olacak.
Kodu denemedim, hatalar olabilir, ama bundan sonra eklediğin her iteme sadece TAG0.SKILLPLUS=1000 gibi eklersen o otomatik giyildiğinde tanıyacaktır. Ama dediğim gibi saatin, yorgunluğun ve uzun zamandan sonra kod yazmanın yorgunluğu var, iyice açıklayamamış olabilirim.
Ek olarak önceden var olan robelarda bu sistemin aktif olabilmesi için var olan robelara tag0.skillplus verilmesi gerekir, ya itemleri silip yeniden çıkarırsınız yada daha basit bir yöntemi On=@EquipTest altında eğer TAG0.SKILLPLUS yoksa, otomatik olarak itemi yenileme ekleyebilirsiniz.
gibi.
Diğer bir yöntem foritems ile var olan tüm robelara tag tanımlamaktır.
Yinede eğer siz yok ben hepsini tek tek sorgularım diyorsanız size kalmış İyi forumlar.
Üzerinde robe veya skillleri etkileyen başka bir eşya varsa skillsum arttırmak yada devre dışı bırakmak gerekir. Bunun en basit yöntemi tek tek eşyaları sorgulamaktır, ancak her item için ayrı sorgu yaptırmak gerekir ve gereksiz bir uğraştır. Bunun yerine, itemlerin ON=@Create altına TAG0.SKILLPLUS (ismi kafamdan attım) gibi bir tag tanıtıp onu kontrol ettirmek daha basittir. Örneğin;
Kod:
[Itemdef i_robe_blabla]
ID=i_robe
On=@Create
TAG0.SKILLPLUS=100 // 100 == 10.0
On=@EquipTest
SRC.MAGERY += <DTAG0.SKILLPLUS>
On=@Unequip
SRC.MAGERY -= <DTAG.SKILLPLUS>
gibi basitçe tanımladık. Şimdi bu itemden 2 tane yapsak her biri için sorgu gerekirdi, bunun yerine TAG0.SKILLPLUS diye ortak bir tag kullandık, peki sorgulamayı nasıl yapacağız?
Layerlerimiz sphere defs içinden;
Kod:
layer_hand1 1
layer_hand2 2
layer_shoes 3
layer_pants 4 // bone legs + pants.
layer_shirt 5
layer_helm 6
layer_gloves 7
layer_ring 8
layer_talisman 9 // talisman (se and ml)
layer_collar 10 // gorget or necklace.
layer_hair 11
layer_half_apron 12
layer_chest 13 // armor chest
layer_wrist 14 // watch
layer_light 15 // a itemid_light_src equip item can be put here.
layer_beard 16 // try to have only men have this.
layer_tunic 17 // jester suit or full apron.
layer_ears 18 // earrings
layer_arms 19 // armor
layer_cape 20 // cape
layer_pack 21 // only used by itemid_backpack
layer_robe 22 // robe over all.
layer_skirt 23 // skirt or kilt.
layer_legs 24 // 0x18 = plate legs.
O zaman bizim yapacağımız 1. layerden 24. layere kadar sorgulamak fakat çanta değişmediği için onu devre dışı bırakmak olacak.
Kod:
[Function f_check_skills] //Source.f_check_skills
LOCAL.LIMIT=<skillclass.skillsum> //Başlangıç limitimizi skillsum limiti olarak belirleyelim, 8x ise 8000 olacaktır.
for 1 24 //Toplam layer sayısı 24.
if (<DLOCAL._FOR> != 21) //Çantamız değilse.
if !(<isempty <findlayer.<dlocal._for>.tag0.skillplus>>) //TAG0.SKILLPLUS 0 dan büyükse, yani boş değilse.
LOCAL.LIMIT +=<DTAG0.SKILLPLUS> //Eğer tag varsa limite onuda ekleyelim.
endif
endif
endfor
if (<skilltotal> > <dlocal.limit>) //Skill toplamı limitimizden fazlaysa;
stone 1
go Star
return 1
endif
Kodu denemedim, hatalar olabilir, ama bundan sonra eklediğin her iteme sadece TAG0.SKILLPLUS=1000 gibi eklersen o otomatik giyildiğinde tanıyacaktır. Ama dediğim gibi saatin, yorgunluğun ve uzun zamandan sonra kod yazmanın yorgunluğu var, iyice açıklayamamış olabilirim.
Ek olarak önceden var olan robelarda bu sistemin aktif olabilmesi için var olan robelara tag0.skillplus verilmesi gerekir, ya itemleri silip yeniden çıkarırsınız yada daha basit bir yöntemi On=@EquipTest altında eğer TAG0.SKILLPLUS yoksa, otomatik olarak itemi yenileme ekleyebilirsiniz.
Kod:
On=@EquipTest
if (<DTAG0.SKILLPLUS> <= 0)
serv.newitem i_robe_blabla,1,<src>
remove
endif
gibi.
Diğer bir yöntem foritems ile var olan tüm robelara tag tanımlamaktır.
Yinede eğer siz yok ben hepsini tek tek sorgularım diyorsanız size kalmış İyi forumlar.
Axuare - 11-03-2015 05:06 GMT -
Adam sabahın dört buçuğunda şafakla beraber didaktik şiir yazmış..İlham kaynağı olan craft robeye ve onu giyecek güzel insanlara selam olsun.
Adam sabahın dört buçuğunda şafakla beraber didaktik şiir yazmış..İlham kaynağı olan craft robeye ve onu giyecek güzel insanlara selam olsun.