Sorun : Bir düello alanı kurdum hakem ve oyuncuların duracağı yerleri belirledim. Teklif, bahis herşey düzgün çalışıyor. Düello başlıyor fakat düello yapanlardan biri ölünce düello bitmiyor o şekilde alanda kalıyorlar :(

// -------------------------------------------------------------------------------------------------
// Pvp sirasinda shrinkten animal çikartma fixlendi.
// 25 kare yakinda katilimcilardan birisinin binegi varsa düello baslamiyor.
// Pvp sirasinda runebook açilmaz.
// Pvpde mark,recall,gate travel büyüleri kullanilamaz.
// Pvpden çikista, karma,fame,kill eski haline döner. Criminallik olmaz.
// -------------------------------------------------------------------------------------------------

// Order ordera - chaos chaos a dalmasi için fix.scp veya guild.scp de ayarlamalar yapmak gerekir.


//-----------------------------------------------------------------------------------------
// Npcs

[chardef c_cpvp_duello]
name #NAMES_HUMANMALE
id c_man
can mt_equip|mt_nonmover

On=@Create
str 9500
dex 25
int 25
color colors_skin
speechcolor 0481
food 990
npc 1

itemnewbie random_male_hair
color colors_hair
itemnewbie random_facial_hair
color match_hair
itemnewbie i_blackrock_chainmail_tunic
itemnewbie i_blackrock_chainmail_leggings
itemnewbie i_blackrock_chainmail_coif

on=@gethit
return 1
on=@spelleffect
return 1
on=@death
hits 100
return 1
on=@attack
return 1
on=@hit
return 1

on=@click
messageua 0481,6,6,enu [Duello Hakemi]
messageua 0481,6,6,enu <name>
return 1

on=@dclick
if (<src.findid.i_duellocu>)
src.findid.i_duellocu.remove
endif
if (<src.account.plevel>==7) && (<src.isgm>)
sdialog d_cpvp_duello_ayar
elif (<src.account.plevel>==1) || (<src.account.plevel>==7)
if (<distance> >3)
src.sysmessage @021 yetisemiyorsunuz...
return 1
endif
sdialog d_cpvp_duello
endif
return 1



//-----------------------------------------------------------------------------------------
// Dialogs

[dialog d_cpvp_duello_ayar]
0,0
resizepic 100 100 5120 300 200
resizepic 110 110 9350 280 180
dhtmlgump 170 120 300 20 0 0 <serv.name> Duello Sistemi

button 120 150 210 211 1 0 1
button 120 175 210 211 1 0 2
button 120 200 210 211 1 0 3
button 120 225 210 211 1 0 4
button 120 250 210 211 1 0 5
dhtmlgump 142 150 400 20 0 0 Normal Koordinati: <tag0.koordinat1>
dhtmlgump 142 175 400 20 0 0 Gerisayim Koordinati: <tag0.koordinat2>
dhtmlgump 142 200 400 20 0 0 Pvp'deki Koordinati: <tag0.koordinat3>
dhtmlgump 142 225 400 20 0 0 1.Player: <tag0.koordinat4>
dhtmlgump 142 250 400 20 0 0 2.Player: <tag0.koordinat5>

[dialog d_cpvp_duello_ayar button]
onbutton 1
var.hakemuid <uid>
targetfg hakemkoordinat 1
onbutton 2
var.hakemuid <uid>
targetfg hakemkoordinat 2
onbutton 3
var.hakemuid <uid>
targetfg hakemkoordinat 3
onbutton 4
var.hakemuid <uid>
targetfg hakemkoordinat 4
onbutton 5
var.hakemuid <uid>
targetfg hakemkoordinat 5



[dialog d_cpvp_duello]
0,0
resizepic 100 100 5120 300 270
resizepic 110 110 9350 280 250
dhtmlgump 170 120 300 20 0 0 <serv.name> Duello Sistemi

dhtmlgump 120 150 50 20 0 0 Bahis:
dtextentry 160 150 100 20 910 1 0

checkbox 120 180 210 211 0 1
checkbox 120 205 210 211 0 2
checkbox 120 230 210 211 0 3
dhtmlgump 143 180 300 20 0 0 Silaha poison var
dhtmlgump 143 205 300 20 0 0 Loot var
dhtmlgump 143 230 300 20 0 0 Magical var

dcroppedtext 120 260 120 20 0 Max Bandage:            [0:sinirsiz]
dtextentry 250 260 70 20 910 2 0
dcroppedtext 120 280 120 20 0 Max Potion :            [0:sinirsiz]
dtextentry 250 280 70 20 910 3 0

button 220 310 4023 4025 1 0 1

[dialog d_cpvp_duello button]
onbutton 1
if !(<isnum <argtxt[1]>>) || !(<isnum <argtxt[2]>>) || !(<isnum <argtxt[3]>>)
src.sysmessage @021 Sadece sayi yazabilirsiniz.
return 1
endif

serv.newitem i_duellocu
src.new.link <uid>
src.new.tag.bahis <argtxt[1]>
src.new.tag.maxbandage <argtxt[2]>
src.new.tag.maxpotion <argtxt[3]>
src.new.tag.poison <argchk[1]>
src.new.tag.loot <argchk[2]>
src.new.tag.magical <argchk[3]>
src.new.timer 45
src.new.equip

[dialog d_cpvp_duello_teklif]
0,0
resizepic 100 100 5120 300 280
resizepic 110 110 9350 280 260
dtext 170 120 0 <serv.name> Duello Sistemi

dtext 120 150 0 <cont.name> duello teklifinde bulundu

resizepic 123 187 5100 5 5
resizepic 123 209 5100 5 5
resizepic 123 231 5100 5 5
resizepic 123 253 5100 5 5
resizepic 123 275 5100 5 5
resizepic 123 297 5100 5 5
dtext 130 180 0 Bahis: <eval <tag.bahis>> gp
dtext 130 202 0 Silaha poison <qval (<tag0.poison>) ? var:yok>
dtext 130 224 0 Loot <qval (<tag0.loot>) ? var:yok>
dtext 130 246 0 Magical silah <qval (<tag0.magical>) ? var:yok>
dtext 130 268 0 Max Bandage: <eval <tag.maxbandage>>
dtext 130 290 0 Max Potion: <eval <tag.maxpotion>>

button 123 320 4023 4025 1 0 1
dtext 156 320 0 Kabul Ediyorum

[dialog d_cpvp_duello_teklif button]
onbutton 0
cont.sysmessage @021 <src.name> teklifi kabul etmedi
remove

onbutton 1
if (<src.memoryfindtype.memory_town>) && (<cont.memoryfindtype.memory_town>)
  if (<src.memoryfindtype.memory_town.link>==<cont.memoryfindtype.memory_town.link>)
  src.sysmessage @021 Ayni factiondakiler birbirleriyle duello yapamazlar
  cont.sysmessage @021 Ayni factiondakiler birbirleriyle duello yapamazlar
  endif
elif (<src.memoryfindtype.memory_guild>) && (<cont.memoryfindtype.memory_guild>)
  if (<src.memoryfindtype.memory_guild.link>==<cont.memoryfindtype.memory_guild.link>)
  src.sysmessage @021 Ayni guiddekiler birbirleriyle duello yapamazlar
  cont.sysmessage @021 Ayni guilddekiler birbirleriyle duello yapamazlar
  endif
endif

if (<eval <link.tag.pvpdeyim>>==1)
src.sysmessage @021 Duello alani su anda dolu.
cont.sysmessage @021 <src.name> teklifi kabul etti, ancak duello alani su anda dolu
return 1
endif

if (<src.restest <eval <tag.bahis>> i_gold>) && (<cont.restest <eval <tag.bahis>> i_gold>)
cont.consume <eval <tag.bahis>> i_gold
src.consume <eval <tag.bahis>> i_gold
else
src.sysmessage @021 <cont.name> veya sizde <eval <tag.bahis>> altin eksik
cont.sysmessage @021 <src.name> veya sizde <eval <tag.bahis>> altin eksik
return 1
endif

if (<src.findlayer.25>) || (<cont.findlayer.25>)
src.sysmessage @021 Binekle duello yapamazsiniz
cont.sysmessage @021 Binekle duello yapamazsiniz
return 1
endif

var.uid1 <src.uid>
var.uid2 <cont.uid>
forchars 25
if (<memoryfindtype.memory_ipet>)
if (<memoryfindtype.memory_ipet.link>==<var.uid1>) || (<memoryfindtype.memory_ipet.link>==<var.uid2>)
try uid.<var.uid1>.sysmessage @021 Sizin veya rakibinizin binekleri etrafta oldugu surece duello baslamayacaktir.
try uid.<var.uid2>.sysmessage @021 Sizin veya rakibinizin binekleri etrafta oldugu surece duello baslamayacaktir.
return 1
endif
endif
endfor
var.uid1
var.uid2

timer -1
src.go <link.tag.koordinat4>
src.food 15
src.tag.cpvp_duello_rakip <cont.uid>
src.tag.cpvp_duello_karma <src.karma>
src.tag.cpvp_duello_kills <src.kills>
src.tag.cpvp_duello_fame <src.fame>
cont.go <link.tag.koordinat5>
cont.food 15
cont.tag.cpvp_duello_rakip <src.uid>
cont.tag.cpvp_duello_karma <cont.karma>
cont.tag.cpvp_duello_kills <cont.kills>
cont.tag.cpvp_duello_fame <cont.fame>
link.tag.pvpdeyim 1
serv.newitem i_cpvp_duello_gerisayim
new.timer 1
new.morex 5
new.cont <link.uid>
link.go <link.tag.koordinat2>
link.tag.player1 <src.uid>
link.tag.player2 <cont.uid>


//-----------------------------------------------------------------------------------------
// Functions

[function hakemkoordinat]
try uid.<var.hakemuid>.tag.koordinat<args> <src.targp>
src.sysmessage @0481 Yeni koordinat ayarlandi : <src.targp>

[function cpvp_duello_loot]
serv.newitem i_bag
src.new.cont <src.findlayer.29>
local.bag <src.new>
var.lfor
//for <uid.<args>.rescount>
//if (<uid.<args>.findcont.<eval <var.lfor>>.attr>&attr_newbie)
//var.lfor <eval <var.lfor>> +1
else
//try uid.<args>.findcont.<eval <var.lfor>>.cont <uid.<local.bag>>
endif
endfor


//-----------------------------------------------------------------------------------------
// Items

[itemdef i_duellocu]
id i_memory
type t_eq_script
name duellocu

on=@equip
target @0481 Kiminle duello yapacaksin?

on=@targon_cancel
remove

on=@timer
remove
return 1

on=@targon_char
if !(<src.targ.isplayer>)
src.sysmessage @021 Sadece playerlarla duello yapabilirsiniz
return 1
elif (<src.targ.isevent.e_cpvp_duello>)
src.sysmessage @021 <src.targ.name> zaten duello yapiyor.
return 1
elif (<src.isevent.e_cpvp_duello>)
src.sysmessage @021 Zaten pvp yapiyorsunuz
return 1
elif (<src.uid>==<src.targ.uid>)
src.sysmessage @021 Kendinizle duello yapamazsiniz
return 1
endif
trysrc <src.targ.uid> sdialog d_cpvp_duello_teklif
src.sysmessage @0481 Teklif yapildi. Bekleyiniz.
timer 45
return 1




[itemdef i_cpvp_duello_gerisayim]
id i_memory
type t_eq_script
name gerisayim

on=@timer
if (<morex>==0)
cont.say BASLA
cont.go <cont.tag.koordinat3>
try uid.<cont.tag.player1>.events e_cpvp_duello
try uid.<cont.tag.player2>.events e_cpvp_duello
try uid.<cont.tag.player1>.findlayer.1.bounce
try uid.<cont.tag.player1>.events -e_cpvp_area
try uid.<cont.tag.player2>.events -e_cpvp_area
try uid.<cont.tag.player2>.findlayer.1.bounce
remove
else
timer 1
morex -=1
cont.say <morex>
endif
return 1






//-----------------------------------------------------------------------------------------
// Events

[events e_cpvp_duello]

on=@itemtargon_char
if (<findid.i_duellocu>)
obj <findid.i_duellocu.uid>
else
obj <uid.<tag.cpvp_duello_rakip>.findid.i_duellocu.uid>
endif
if !(<eval <obj.tag.maxbandage>>==0) && (<act.baseid>==i_bandage)
if (<eval <src.tag.bandagekullandim>> > <eval <obj.tag.maxbandage>-1>)
src.sysmessage @021 Daha fazla bandage kullanamazsiniz
return 1
else
src.tag.bandagekullandim <eval <src.tag.bandagekullandim>>+1
src.sysmessage @035 <eval <eval <obj.tag.maxbandage>> - <eval <src.tag.bandagekullandim>>> bandage kullanma hakkiniz kaldi
endif
endif

on=@itemdclick
if (<act.baseid>==i_runebook)
src.sysmessage @021 Pvp'de runebook kullanamazsiniz
return 1
endif
if (<act.baseid>==i_deed_animal)
src.sysmessage @021 Duelloda bunu yapamazsin
return 1
endif

if (<findid.i_duellocu>)
obj <findid.i_duellocu.uid>
else
obj <uid.<tag.cpvp_duello_rakip>.findid.i_duellocu.uid>
endif
if !(<eval <obj.tag.maxpotion>>==0) && (strmatch(*t_potion*,<act.type>))
if (<eval <src.tag.potionkullandim>> > <eval <obj.tag.maxpotion>-1>)
src.sysmessage @021 Daha fazla potion kullanamazsiniz
return 1
else
src.tag.potionkullandim <eval <src.tag.potionkullandim>>+1
src.sysmessage @035 <eval <eval <obj.tag.maxpotion>> - <eval <src.tag.potionkullandim>>> potion kullanma hakkiniz kaldi
endif
endif

on=@itemequip
if (<findid.i_duellocu>)
obj <findid.i_duellocu.uid>
else
obj <uid.<tag.cpvp_duello_rakip>.findid.i_duellocu.uid>
endif
if (<eval <obj.tag.poison>>==0) && (strmatch(*t_weapon*,<act.type>)) && (<eval <act.morez>> >0)
src.sysmessage @021 Poisonlu silah kullanamazsiniz
act.unequip
endif
if (<eval <obj.tag.magical>>==0) && (strmatch(*t_weapon*,<act.type>)) && (<act.attr>&attr_magic)
src.sysmessage @021 Magical silah kullanamazsiniz
act.unequip
endif

on=@spellcast
if (<argn>==45) || (<argn>==32) || (<argn>==52)
src.sysmessage @021 Pvpde bu buyuleri kullanamazsiniz
f_fizzle
skill fail
return 1
endif

[function f_cpvp_duello_death]
act <tag.cpvp_duello_rakip>
if (<findid.i_duellocu>)
obj <findid.i_duellocu.uid>
else
obj <act.findid.i_duellocu.uid>
endif

obj.link.go <obj.link.tag.koordinat1>
obj.link.tag.pvpdeyim
obj.link.tag.player1
obj.link.tag.player2
go <obj.link.tag.koordinat1>
if (<memoryfindtype.memory_sawcrime>)
memoryfindtype.memory_sawcrime.remove
endif
tag.cpvp_duello_fame <eval <tag.cpvp_duello_fame>>
tag.cpvp_duello_karma <eval <tag.cpvp_duello_karma>>
tag.cpvp_duello_kills <eval <tag.cpvp_duello_kills>>
tag.cpvp_duello_rakip
act.go <obj.link.tag.koordinat1>
if (<act.memoryfindtype.memory_sawcrime>)
act.memoryfindtype.memory_sawcrime.remove
endif
act.tag.cpvp_duello_fame <eval <act.tag.cpvp_duello_fame>>
act.tag.cpvp_duello_karma <eval <act.tag.cpvp_duello_karma>>
act.tag.cpvp_duello_kills <eval <act.tag.cpvp_duello_kills>>
act.tag.cpvp_duello_rakip

sysmessage @021 Duelloyu kaybettiniz...
act.sysmessage @0481 Tebrikler ! Duelloyu kazandiniz !

obj.remove

hits <str>



if (<eval <obj.tag.bahis>> >0)
trysrc <act> paraver <eval <obj.tag.bahis>*2>
act.sysmessage @0481 <eval <obj.tag.bahis>*2> altin bankaniza aktarildi
endif
if (<eval <obj.tag.loot>>==1)
findlayer.1.cont <findlayer.21>
findlayer.2.cont <findlayer.21>
findlayer.3.cont <findlayer.21>
findlayer.4.cont <findlayer.21>
findlayer.5.cont <findlayer.21>
findlayer.6.cont <findlayer.21>
findlayer.7.cont <findlayer.21>
findlayer.8.cont <findlayer.21>
findlayer.10.cont <findlayer.21>
findlayer.12.cont <findlayer.21>
findlayer.13.cont <findlayer.21>
findlayer.17.cont <findlayer.21>
findlayer.18.cont <findlayer.21>
findlayer.19.cont <findlayer.21>
findlayer.20.cont <findlayer.21>
findlayer.22.cont <findlayer.21>
findlayer.23.cont <findlayer.21>
findlayer.24.cont <findlayer.21>
trysrc <act> cpvp_duello_loot <findlayer.21>
endif

if (strmatch(*pvp*,<act.region.name>))
act.events +e_cpvp_area
endif
act.events -e_cpvp_duello
if (strmatch(*pvp*,<region.name>))
events +e_cpvp_area
endif
events -e_cpvp_duello



return 1


[events e_cpvp_area]
on=@attack
return 1
on=@hit
return 1
on=@gethit
return 1
on=@spellcast
if !(<src.uid>==<act.uid>)
f_fizzle
return 1
endif
on=@skillgain
return 1


[eof]
on=@death
src.f_cpvp_duello_death

veya

on=@death
src.f_cpvp_duello_death
return 1


events altına eklermisin eklermisin
tşk ettim oldu :)
Duelloda berabere bitmiyor ne yapmam lazım?
[Events beraberlikolsun]
On=@timer
timerf 200,src.go yollıycan yer işte.

Bu event'ide verdir işte saniye hesabı ilerler ortaki süre hesabını yap ayarla süreni yollucağın yerin kordinatınıda yazarsın sorunun kalmaz.
Denedim ama olmadı :S yollamıyor bir yere

Üye Ol veya Giriş Yap

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