Basit bir bomberman sistemi. Son günlerdeki bomberman tartışmalarını inceledikten sonra boş zamanımda yazıp yayınlamak istedim. Ama maalesef uğraşıcak fazla vaktim olmadığı için fazla çetrefilli olmayan "temel" niteliğinde bir sistem oluştu. Zamanım oldukça geliştirebilirim eğer istek olursa. Hatta şöyle yapabiliriz, bu scripti ultima-strike üyeleri olarak topluca geliştirebiliriz. Hem bir beyin fırtınası niteliğinde olur, hem de bunu ufak bir faaliyet olarak düşünebiliriz.
[comment bomberman_ultimastrike]
# Bu script Slothere tarafından 08/03/2009 - 01:20 tarihinde ultima-strike.com için yazılmıştır..
# Version: 056b+
[defname bomberman]
enterp 5800,800 // yarışmaya girildiğinde gidilecek koordinat
exitp 5733,808 // kaybedenlerin gidecegi koordinat
prices i_robe,i_katana,i_spellbook,i_potion_heal // kazanana verilecek ödüllerin belirlendiği bölüm
[function control]
ref1 = <argv[0]>
ref2 = <uid>
foritems 0
if (<baseid> == i_wall_bomber2)
remove
endif
endfor
forchars 0
if (<isplayer>) && !(<isgm>)
if (<ref1> != <uid>)
ref1.sysmessage @1153 <name> olduruldu
endif
say @1153 elendi!
sysmessage kaybettiniz.
go <def.exitp>
events -e_bomberman
hits = 0
timerf 3, resurrect
forplayers 99
if <isevent.e_bomberman>
local.playernum ++
endif
endfor
if <dlocal.playernum> == 1
ref1.bombermanwin
endif
endif
endfor
[function bombermanwin]
serv.allclients sysmessage @1153 Bomberman yarismasini <name> kazandi.
serv.newitem <f_array <def.prices>, <R<f_array_length <def.prices>>>>,1,<findlayer(21).uid>
events -e_bomberman
go <def.exitp>
serv.allclients events -e_bomberman
[events e_bomberman]
on=@GetHit
return 1
on=@Hit
return 1
on=@Attack
return 1
on=@LogOut
go <def.exitp>
events -e_bomberman
hits = 0
on=@SpellCast
return 1
on=@SkillStart
return 1
[plevel 1]
bomb
[function bomb]
if (!(<flags> & statf_dead) || (<src.isevent.e_bomberman>)) && !(<src.ctag0.bomb>)
serv.newitem i_bomb
new.p <src.p>
new.link = <src>
src.timerf 4, src.ctag0.bomb =
src.ctag.bomb = 1
new.timerf 1, say @1153 3
new.timerf 2, say @1153 2
new.timerf 3, say @1153 1
new.timerf 4, explode
endif
[itemdef i_bomb]
id = i_cannon_ball
type = t_normal
weight = 999
name = bomb
on=@Create
color = 1153
attr = attr_decay|attr_static
[function explode]
for s 1 2
serv.newitem i_fire_new
new.p <p>
new.control,<link>
serv.newitem i_fire_new
new.p <p.x>,<eval <p.y> + <dlocal.s>>,<p.z>
new.control,<link>
serv.newitem i_fire_new
new.p <p.x>,<eval <p.y> - <dlocal.s>>,<p.z>
new.control,<link>
serv.newitem i_fire_new
new.p <eval <p.x> + <dlocal.s>>,<p.y>,<p.z>
new.control,<link>
serv.newitem i_fire_new
new.p <eval <p.x> - <dlocal.s>>,<p.y>,<p.z>
new.control,<link>
endfor
remove
[itemdef i_fire_new]
id = i_fx_explode
type = t_normal
weight = 999
on=@Create
color = 025
attr = attr_static|attr_decay
timer = 1
on=@Timer
remove
return 1
[itemdef i_wall_bomber1]
id = i_stairs_marble
type = t_normal
name = wall
on=@Create
attr = attr_static|attr_move_never
color = 025
[itemdef i_wall_bomber2]
id = i_stairs_marble
type = t_normal
name = explode wall
on=@Create
attr = attr_static|attr_move_never
color = 0481
[FUNCTION f_array]
local.temp = <argv[<eval <argv> - 1>]> -1
return <argv[<dlocal.temp>]>
[FUNCTION f_array_length]
return <dargv>
[itemdef i_gate_bomberman]
id = i_moongate_blue
type = t_moongate
name = bomberman girisi
on=@Create
Color = 53
Attr = attr_move_never|attr_static
on=@Step
if (<src.isplayer>) && !(<src.findlayer(layer_horse)>)
src.events +e_bomberman
src.go <def.enterp>
endif
[eof]