Aşağıdaki koddada belirttiğim gibi ceset üzerinde kullanılan fonksiyonu maxatacker ile sadece o npcyi kesen kişinin kullanmasını istiyorum fakat ... :(( olmadııı


[PLEVEL 1]
temizle

[function temizle]
if (<src.karma> < 1) || (<src.fame> < 1)
src.sysmessage @68,,1 Bu komutu sadece Karma'sı 5000'den yukarı olanlar kullanabilir.
src.sysmessage @38,,1 Sizin karma ve fameniz : <src.karma> , <src.fame>'dir
return 1
else
src.newitem i_targetbilet
src.act.equip
return 1

[itemdef i_targetbilet]
id i_gold
name bileter
type t_eq_script
LAYER=layer_special

on=@equip
target 
src.sysmessage @68,,1 Temizleyeceginiz cesedi secin?
timer 10
return 1

on=@targon_item
if (<src.targ.distance> > 3)
src.sysmessage @68,,1 Ceset'e uzaksiniz.
remove
return 1
endif
if !(<src.targ.link>=04fffffff)
src.sysmessage @68,,1 Bu bir ceset değil.
remove
return 1
endif

------------------------------------------
//// Bu bölümü sorgulatamadim bir türlü olmadı. Yardımcı olabilirmisiniz ?

if !(<src.uid>==<tag0.maxattacker>)
SRc.sysmessage @07a1,1,1 Bu npc'yi siz kesmediniz.
remove
return 1
endif
------------------------------------------
if !(<src.targ.baseid> == i_corpse)
src.sysmessage @68,,1 Bu bir ceset değil.
remove
return 1
endif
if !(<src.uid>==<tag0.maxattacker>)
SRc.sysmessage @07a1,1,1 Sen kes sen temizle.
return 1
endif
if (<src.targ.morex> == c_ticketnpc) 
src.targ.remove 
src.sysmessage @68,,1 Cevreyi temiz tuttugunuz icin ticket kazandiniz.
src.spell_say * Cesedi temizler *
src.newitem i_ticket
src.act.amount 3
src.act.bounce
remove
return 1
else
src.sysmessage @68,,1 Bu ceset degerli degil !
remove
return 1
endif

on=@timer
attr attr_decay
remove
return 1
Master
59.2997
Bu işlemin aktif olmasını istediğin varlığa şunu ekle;

on=@deathcorpse
argo.tag.attackermax = <attacker.max>

sorgulatırken ise;

if (<src.targ.tag.attackermax> != <src>)
remove
return 1
endif
Çok teşekkur ederim. Yalnız ben kesiyorum yine sen kes sen temizle yazıyor :huh
Master
59.2997
Sorgulara dikkat et eğer üsttekini eklediysen benim verdiğim ile çakışıp o uyarıyı vermesi normal.

Şu şekilde kullanmalısın;

if (<src.targ.distance> > 3)
src.sysmessage @68,,1 Ceset'e uzaksiniz.
remove
return 1
endif
if !(<src.targ.link>=04fffffff)
src.sysmessage @68,,1 Bu bir ceset değil.
remove
return 1
endif
if (<src.targ.tag.attackermax> != <src>)
src.sysmessage olmaz.
remove
return 1
endif
if (<src.targ.morex> == c_ticketnpc)
src.targ.remove
src.sysmessage @68,,1 Cevreyi temiz tuttugunuz icin ticket kazandiniz.
src.spell_say * Cesedi temizler *
src.newitem i_ticket
src.act.amount 3
src.act.bounce
remove
return 1
else
src.sysmessage @68,,1 Bu ceset degerli degil !
remove
return 1
endif
Kod içerisine aldığınızı aynen değiştirdim. Fakat ;


[function temizle]
if (<src.karma> < 1) || (<src.fame> < 1)
src.sysmessage @68,,1 Bu komutu sadece Karma'sı 5000'den yukarı olanlar kullanabilir.
src.sysmessage @38,,1 Sizin karma ve fameniz : <src.karma> , <src.fame>'dir
else
src.targetf f_temizle
src.sysmessage @68,,1 Temizleyeceğiniz cesedi seçin
endif
return 1

[functşın f_temizle]
if (<argo.distance> > 3)
if !(<argo.baseid> == i_corpse)
if (<src.targ.tag.attackermax> != <src>)
if !(<src.targ.morex> == c_ticketnpc)
src.sys_error Bu ceset degerli degil
else
argo.remove
src.sysmessage @68,,1 Cevreyi temiz tuttugunuz icin ticket kazandiniz.
src.spell_say * Cesedi temizler *
serv.newitem i_ticket
new.amount 3
new.cont <src>
endif
src.sys_error Olmaz
endif
src.sys_error Bu bir ceset değil
endif
src.sys_error Yaklasmalisiniz
endif
return 1

biraz performansını arttırdım. Eğer çakışırsa endiflerin üstüne return 1 eklersin
Bu ceset değerli değil diyor ...
if (<src.targ.tag.attackermax> != <src>)
if !(<src.targ.morex> == c_ticketnpc)

bunları

if (<argo.tag.attackermax> != <src>)
if !(<argo.morex> == c_ticketnpc)

şeklinde değiştir

Üye Ol veya Giriş Yap

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