Silah soket sistemine benzer bir şey yapmaya çalışıyorum. Silahlar şarj edilebilerek random şekilde örneğin parablow vurucak ve şarjından bir düşecek ve silahı kullanan kişinin manası düşecek. Ancak sorunum her vuruşta şarjından 1 düşüyor mana gitmiyor. Script aşağıda;

[ITEMDEF i_spear_parablow]
ID=i_spear
TYPE=t_weapon_fence
NAME=Parablow Spear
FLIP=0
WEIGHT=6

SKILL=Fencing
TWOHANDS=Y
REQSTR=50
DAM=8,33

ON=@Create
MOREY=200.0
ATTR=attr_magic
COLOR=0480
HITPOINTS={20 25}
MORE1=100

ON=@Click
MESSAGE <NAME>
MESSAGE [Sarj: <EVAL(<MORE1>)>]
RETURN 1

ON=@DClick
equip
return 1

on=@damage
if (<src.flags>&statf_stone) || (<src.region.safe>) || (<src.isevent.e_delucia>)
return 0
elseif (<src.findlayer(2).type> == t_weapon_fence) && !(<src.findid.i_parablow>)
IF (<MORE1> > 0)
if (<cont.MANA> >= 20)
if (rand(6) == 1)
MORE1=<MORE1>+-1
cont.mana=(<cont.mana>-20)
src.damage {25 35}
src.skill fail
var.act <src.act.uid>
src.newitem i_parablow
src.act.equip
src.act <var.act>
src.sayua 1772,0,0,0 * paradarbe alir *
else
src.damage {3 15}
src.skill fail
endif
else
src.sysmessage Yeterli mana yok silah ozelligini kullanamadiniz.
src.damage {3 15}
src.skill fail
endif
else
src.sysmessage @0,3 Şarjı olmadığından silah özelliği kullanamadınız.
src.damage {3 15}
src.skill fail
endif

[events e_parablow]
On=@GetHit
findid.i_parablow.remove

On=@Death
findid.i_parablow.remove

[itemdef i_parablow]
name=parablow
id=i_gold
type=t_eq_script
weight=0
layer=layer_special

On=@Equip
src.flags <src.flags>|04
src.events +e_parablow
timer 2

On=@UnEquip
cont.events -e_parablow
if !(<cont.flags>&statf_dead)
cont.flags <cont.flags>&~04
endif

On=@Timer
attr attr_decay
remove
return 1

edit//sorunu büyük ölçüde çözdüm ancak paralyze olması için gerekli olan itemi equip ettiremedim bir türlü scriptin son hali şu şekilde;

[ITEMDEF i_spear_parablow]
ID=i_spear
TYPE=t_weapon_fence
NAME=Parablow Spear
FLIP=0
WEIGHT=6

SKILL=Fencing
TWOHANDS=Y
REQSTR=50
DAM=8,33

ON=@Create
MOREY=200.0
ATTR=attr_magic
COLOR=0480
HITPOINTS={20 25}
MORE1=100

ON=@Click
MESSAGE <NAME>
MESSAGE [Sarj: <EVAL(<MORE1>)>]
RETURN 1

ON=@DClick
equip
return 1

on=@damage
if (<src.flags>&statf_stone) || (<src.region.safe>) || (<src.isevent.e_delucia>)
return 0
endif
if !(<src.findid.i_parablow>) && (<MORE1> > 0) && (<cont.MANA> >= 20)
if (rand(3) == 1)
MORE1=<MORE1>+-1
cont.mana=(<cont.mana>-20)
src.damage {25 35}
src.skill fail
var.act <src.act.uid>
src.newitem i_parablow
src.act.equip
src.act <var.act>
src.sayua 1772,0,0,0 * paradarbe alir *
return 1
else
cont.sysmessage @1759,3 Normal vuruş.
src.damage {3 15}
src.skill fail
return 1
endif
else
cont.sysmessage @1759,3 Şarjı yok yada mana yeterli değil.
src.damage {3 15}
src.skill fail
return 1
endif


[events e_parablow]
On=@GetHit
findid.i_parablow.remove

On=@Death
findid.i_parablow.remove

[itemdef i_parablow]
name=parablow
id=i_gold
type=t_eq_script
weight=0
layer=layer_special

On=@Equip
src.flags <src.flags>|04
src.events +e_parablow
timer 3

On=@UnEquip
cont.events -e_parablow
if !(<cont.flags>&statf_dead)
cont.flags <cont.flags>&~04
endif

On=@Timer
attr attr_decay
remove
return 1


Bu konu [Joe] tarafından düzenlendi(2010-08-01 16:11, 13 yıl önce)
On=@Click
src.events +e_parablow

On=@unEquip
src.events -e_parablow

bu şekil yaparsan olur diye düşünüyorum bi dene benim parablow event'im o :) seninki farklıysa isimlerini değiştirirsin.
sorunum şu @Qnd paralyze eden itemi equip ettiremiyorum

sanırım şu satırlarda sorunum var :(
var.act <src.act.uid>
src.newitem i_parablow
src.act.equip
src.act <var.act>

scriptin tamamı;
[ITEMDEF i_spear_parablow]
ID=i_spear
TYPE=t_weapon_fence
NAME=Parablow Spear
FLIP=0
WEIGHT=6

SKILL=Fencing
TWOHANDS=Y
REQSTR=50
DAM=8,33

ON=@Create
MOREY=200.0
ATTR=attr_magic
COLOR=0480
HITPOINTS={20 25}
MORE1=100

ON=@Click
MESSAGE <NAME>
MESSAGE [Sarj: <EVAL(<MORE1>)>]
RETURN 1

ON=@DClick
equip
return 1

on=@damage
if (<src.flags>&statf_stone) || (<src.region.safe>) || (<src.isevent.e_delucia>)
return 0
endif
if !(<src.findid.i_parablow>) && (<MORE1> > 0) && (<cont.MANA> >= 20)
if (rand(3) == 1)
MORE1=<MORE1>+-1
cont.mana=(<cont.mana>-20)
src.damage {25 35}
src.skill fail
var.act <src.act.uid>
src.newitem i_parablow
src.act.equip
src.act <var.act>
src.sayua 1772,0,0,0 * paradarbe alir *
return 1
else
cont.sysmessage @1759,3 Normal vuruş.
src.damage {3 15}
src.skill fail
return 1
endif
else
cont.sysmessage @1759,3 Şarjı yok yada mana yeterli değil.
src.damage {3 15}
src.skill fail
return 1
endif


[events e_parablow]
On=@GetHit
findid.i_parablow.remove

On=@Death
findid.i_parablow.remove

[itemdef i_parablow]
name=parablow
id=i_gold
type=t_eq_script
weight=0
layer=layer_special

On=@Equip
src.flags <src.flags>|04
src.events +e_parablow
timer 3

On=@UnEquip
cont.events -e_parablow
if !(<cont.flags>&statf_dead)
cont.flags <cont.flags>&~04
endif

On=@Timer
attr attr_decay
remove
return 1
önce bunu bu şekil ekle.

[events e_spear]
On=@Hit
if (<src.flags>&statf_stone) || (<src.region.safe>)
	return 0
elseif (<findlayer(2).type> == t_weapon_fence) && (<fencing> >= 98.0)
	if (rand(840) <= <eval (<anatomy> / 10)>) && !(<src.findid.i_parablow>) // 125 20
		src.damage {15 20}
		src.skill fail
		src.newitem i_parablow
		new.equip
		src.say_trk * Paradarbe alir *
		return 1
	endif

sonrada bunu ekle bakalım olcak mı

On=@Equip
src.flags <src.flags>|04
src.events +e_parablow
timer 2

On=@UnEquip
cont.events -e_parablow
if !(<cont.flags>&statf_dead)
	cont.flags <cont.flags>&~04

eğerki onlar olmassa bunu dene

var.act <src.act.uid>
		src.newitem i_parablow
		new.equip
new.link=<uid>
		serv.newitem i_parablow
		new.equip
		new <var.act>
		src.say_trk * Paradalbe Alır *
		return 1
	endif
endif
Master
59.2997


[itemdef i_spear_parablow]
id=i_spear
type=t_weapon_fence
name=parablow spear
flip=0
weight=6
skill=fencing
twohands=y
reqstr=50
dam=8,33

on=@create
morey=200.0
attr=attr_magic
color=0480
hitpoints={20 25}
more1=100

on=@click
message <name>
message [sarj: <dmore1>]
return 1

on=@damage
if (<more1>) && (<cont.mana> >= 20) && (<R5>==1)
cont.mana -=20
more1 --
src.damage {25 35}
serv.newitem i_parablow,1,<src>,1
else
src.damage {3 15}
cont.sysmessage yeterli mana veya sarj yok.
endif

[itemdef i_parablow]
id=i_handr_1
name=parablow
type=t_eq_script
weight=0

on=@create
attr=attr_decay

on=@equip
cont.say *paradarbe alir*
cont.flags <cont.flags>|04
cont.events +e_parablow
timer 2

on=@unequip
cont.events -e_parablow
cont.flags <cont.flags>&~04

on=@timer
remove
return 1

[events e_parablow]
on=@gethit
findid(i_parablow).remove

on=@death
findid(i_parablow).remove


şu şekilde bir dener misin?
Denedim Slothere ama her vuruşta şarj düşüyo para darbe alir yaziyor ancak olmuyo :)

şu şekilde çözdük Robert nickli arkadaşın sayesinde;

Scriptin çalışan hali

[ITEMDEF i_spear_parablow]
ID=i_spear
TYPE=t_weapon_fence
NAME=Parablow Spear
FLIP=0
WEIGHT=6

SKILL=Fencing
TWOHANDS=Y
REQSTR=50
DAM=8,33

ON=@Create
	MOREY=200.0
	ATTR=attr_magic
	COLOR=0480
	HITPOINTS={20 25}
	MORE1=100

ON=@Click
MESSAGE <NAME>
MESSAGE [Sarj: <EVAL(<MORE1>)>]
RETURN 1

ON=@DClick
equip
return 1

on=@equip
src.events +e_spear_1

on=@unequip
src.events -e_spear_1


[events e_spear_1]							
On=@Hit
if (<flags>&statf_stone) || (<region.safe>) || (<isevent.e_delucia>)
return 0
endif
if !(<findid.i_parablow>) && (<findid.i_spear_parablow.MORE1> > 0) && (<MANA> >= 20)
	if (rand(3) == 1)
		findid.i_spear_parablow.MORE1 -=1
		mana -=20
		src.damage {25 35}
		src.skill fail
		var.act <src.act.uid>
		src.newitem i_parablow
		src.act.equip
		src.act <var.act>
		src.sayua 1772,0,0,0 * paradarbe alir *
		return 1
	else
		sysmessage @1759,3 Normal vuruş
		src.damage {3 15}
		return 1
	endif
else
sysmessage @1759,3 Mananız yada Şarjınız olmadığından özel vuruş yapamadınız.
src.damage {3 15}
return 1
endif

[events e_parablow]
On=@GetHit 
findid.i_parablow.remove

On=@Death
findid.i_parablow.remove

[itemdef i_parablow]
name=parablow
id=i_gold
type=t_eq_script
weight=0
layer=layer_special

On=@Equip
src.flags <src.flags>|04
src.events +e_parablow
timer 3

On=@UnEquip
cont.events -e_parablow
if !(<cont.flags>&statf_dead)
	cont.flags <cont.flags>&~04
endif

On=@Timer
attr attr_decay
remove
return 1

Üye Ol veya Giriş Yap

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