rendered paste bodyalias -l game.load.lvl {
if ($1 == -sm) {
if (!$ini($scriptdirmultiplayer.ini,$2,0)) { echo -a Error, Map $2 not exists | halt }
var %y = 16
while (%y) {
var %x = 1
var %map = $readini($scriptdirmultiplayer.ini,$2,map $+ %y)
while (%x <= 16) {
var %object = $mid(%map,%x,1)
if ($mid(%map,%x,1)) {
if (%object == 1) { var %object = 30 }
elseif (%object == 2) { var %object = 31 }
elseif (%object == 3) { var %object = 32 }
hadd game.mp.objects $+(%x,x,%y) %object
}
inc %x
}
dec %y
}
if ($readini($scriptdirmultiplayer.ini,$2,wall) > 0) { game.mp.draw.walls $readini($scriptdirmultiplayer.ini,$2,wall) }
return
}
}
alias game.mp.draw.walls {
;game.draw.wall xmin xmax ymin ymax (x 1-16 y 1-10)
;Sudedam sienos kampus
hadd game.mp.objects $+($1,x,$3) 30
hadd game.mp.objects $+($2,x,$4) 30
hadd game.mp.objects $+($1,x,$4) 30
hadd game.mp.objects $+($2,x,$3) 30
if ($5 == broadcast) {
game.mp.sendpacket -b 3 1 30 $1 $3
game.mp.sendpacket -b 3 1 30 $2 $4
game.mp.sendpacket -b 3 1 30 $1 $4
game.mp.sendpacket -b 3 1 30 $2 $3
}
;piesiam sienas
var %xminwall = $calc($1 + 1)
var %xmaxwall = $2
while (%xminwall < %xmaxwall) {
;1
hadd game.mp.objects $+(%xminwall,x,$3) 30
if ($5 == broadcast) { game.mp.sendpacket -b 3 1 %xminwall $3 }
inc %xminwall
}
var %xminwall = $calc($1 + 1)
var %xmaxwall = $2
while (%xminwall < %xmaxwall) {
;3
hadd game.mp.objects $+(%xminwall,x,$4) 30
if ($5 == broadcast) { game.mp.sendpacket -b 3 1 30 %xminwall $4 }
inc %xminwall
}
var %xminwall = $calc($3 + 1)
var %xmaxwall = $4
while (%xminwall < %xmaxwall) {
;4
hadd game.mp.objects $+($1,x,%xminwall) 30
if ($5 == broadcast) { game.mp.sendpacket -b 3 1 30 $1 %xminwall }
inc %xminwall
}
var %xminwall = $calc($3 + 1)
var %xmaxwall = $4
while (%xminwall < %xmaxwall) {
;2
hadd game.mp.objects $+($2,x,%xminwall) 30
if ($5 == broadcast) { game.mp.sendpacket -b 3 1 30 $2 %xminwall }
inc %xminwall
}
}
alias game.mp.stop.srv {
game.mp.sendpacket -bt 9 Server is shuting Down!
sockclose game.mp.sr
hfree game.mp.deathpoints
hfree game.mp.objects
hfree game.mp.used.balls
hfree game.mp.balls
hfree game.mp.boxspawns
unset -s %game.mp.*
set %game.mp.no.move 1
timergame* off
timer.game* off
.timer 1 5 sockclose game* $chr(124) unset %game.mp.no.move
}
alias game.mp.load.srv {
if ($sock(game.mp.sr)) { echo -a Server already running! | return }
;game.mp.load.srv mapname
if ($hget(game.mp.deathpoints)) { hfree game.mp.deathpoints }
if ($hget(game.mp.objects)) { hfree game.mp.objects }
if ($hget(game.mp.used.balls)) { hfree game.mp.used.balls }
if ($hget(game.mp.balls)) { hfree game.mp.balls }
if ($hget(game.mp.boxspawns)) { hfree game.mp.boxspawns }
if ($hget(game.mp.nicks)) { hfree game.mp.nicks }
hmake game.mp.boxspawns
hmake game.mp.used.balls 10
hmake game.mp.objects 256
hmake game.mp.balls 10
hmake game.mp.nicks 10
hmake game.mp.deathpoints
.timer.game.mp.sr.sendping 0 10 game.mp.sr.sendping
set %game.mp.free.spawns $readini($scriptdirmultiplayer.ini,$1,playerspawnpoints)
var %x = $numtok(%game.mp.free.spawns,59)
while (%x) {
hadd game.mp.objects $replace($gettok(%game.mp.free.spawns,%x,59),$chr(32),x) 31
dec %x
}
set %game.mp.pl.limit $numtok($readini($scriptdirmultiplayer.ini,$1,playerspawnpoints),59)
game.load.lvl -sm $1
var %deathpoints = $readini($scriptdirmultiplayer.ini,$1,boxdeathpoints)
var %x = $numtok(%deathpoints,59)
while (%x) {
hadd game.mp.deathpoints $replace($gettok(%deathpoints,%x,59),$chr(32),x) 1
dec %x
}
set %game.mp.boxkilltime $readini($scriptdirmultiplayer.ini,$1,boxkilltime)
set %game.mp.destroyafterdeathspot $readini($scriptdirmultiplayer.ini,$1,destroyafterdeathspot)
set %game.mp.respawntime $readini($scriptdirmultiplayer.ini,$1,respawntime)
set %game.mp.boxmaxspawns $readini($scriptdirmultiplayer.ini,$1,boxmaxspawns)
var %boxspawns = $readini($scriptdirmultiplayer.ini,$1,boxspawnpoints)
set %game.mp.currentspawnpads 0
set %game.mp.totalboxes.to.spawn $2
set %game.mp.totalboxes.spawn $2
set %game.mp.current.map $1
set %game.mp.totalspawnpads $numtok(%boxspawns,59)
var %x = $numtok(%boxspawns,59)
while (%x) {
hadd game.mp.boxspawns %x $gettok(%boxspawns,%x,59)
dec %x
}
.timergamespawnboxes 0 %game.mp.respawntime game.mp.sr.spawnbox
.timergamekillidlebox 0 %game.mp.boxkilltime game.mp.sr.killbox
unset %game.mp.no.move
socklisten game.mp.sr 696
}
alias game.mp.change.lvl {
.timergame* off
if (!$ini($scriptdirmultiplayer.ini,$1,0)) { echo -a Error, Map $1 not exists | halt }
if ($numtok($readini($scriptdirmultiplayer.ini,$1,playerspawnpoints),59) < $sock(game.mp.sr.player*,0)) {
echo -s To many players for this map
halt
}
set %game.mp.totalboxes.to.spawn $2
unset -s %game.score*
hdel -w game.mp.objects *
hdel -w game.mp.deathpoints *
hdel -w game.mp.boxspawns *
set %game.mp.currentspawnpads 0
set %game.mp.respawntime $readini($scriptdirmultiplayer.ini,$1,respawntime)
set %game.mp.boxmaxspawns $readini($scriptdirmultiplayer.ini,$1,boxmaxspawns)
var %boxspawns = $readini($scriptdirmultiplayer.ini,$1,boxspawnpoints)
set %game.mp.totalspawnpads $numtok(%boxspawns,59)
var %x = $numtok(%boxspawns,59)
while (%x) {
hadd game.mp.boxspawns %x $gettok(%boxspawns,%x,59)
dec %x
}
set %game.mp.destroyafterdeathspot $readini($scriptdirmultiplayer.ini,$1,destroyafterdeathspot)
set %game.mp.boxkilltime $readini($scriptdirmultiplayer.ini,$1,boxkilltime)
var %deathpoints = $readini($scriptdirmultiplayer.ini,$1,boxdeathpoints)
var %x = $numtok(%deathpoints,59)
while (%x) {
hadd game.mp.deathpoints $replace($gettok(%deathpoints,%x,59),$chr(32),x) 1
dec %x
}
set %game.mp.free.spawns $readini($scriptdirmultiplayer.ini,$1,playerspawnpoints)
var %x = $numtok(%game.mp.free.spawns,59)
while (%x) {
hadd game.mp.objects $replace($gettok(%game.mp.free.spawns,%x,59),$chr(32),x) 31
dec %x
}
var %x = $numtok(%game.mp.free.spawns,59)
while (%x) {
hadd game.mp.objects $replace($gettok(%game.mp.free.spawns,%x,59),$chr(32),x) 31
dec %x
}
set %game.mp.pl.limit $numtok($readini($scriptdirmultiplayer.ini,$1,playerspawnpoints),59)
var %y = 16
while (%y) {
var %x = 1
var %map = $readini($scriptdirmultiplayer.ini,$1,map $+ %y)
while (%x <= 16) {
var %object = $mid(%map,%x,1)
if ($mid(%map,%x,1)) {
if (%object == 1) { var %object = 30 }
elseif (%object == 2) { var %object = 32 }
elseif (%object == 3) { var %object = 33 }
hadd game.mp.objects $+(%x,x,%y) %object
;game.mp.sendpacket -b 3 1 %object %x %y
}
inc %x
}
dec %y
}
if ($readini($scriptdirmultiplayer.ini,$1,wall) > 0) { game.mp.draw.walls $readini($scriptdirmultiplayer.ini,$1,wall) }
var %x = $sock(game.mp.sr.player.*,0)
while (%x) {
var %tmpspawn = $gettok(%game.mp.free.spawns,1,59)
var %pid = $sock(game.mp.sr.player.*,%x).mark
set %game.mp.free.spawns $deltok(%game.mp.free.spawns,1,59)
hadd game.mp.objects $+($gettok(%tmpspawn,1,32),x,$gettok(%tmpspawn,2,32)) $calc(%pid - 10)
hadd game.mp.balls %pid $gettok(%tmpspawn,1,32) $gettok(%tmpspawn,2,32)
hadd game.mp.used.balls %pid %tmpspawn
;game.mp.sendpacket -b 3 1 %pid $gettok(%tmpspawn,1,32) $gettok(%tmpspawn,2,32)
unset %game.mp.no.move
dec %x
}
set %game.mp.totalboxes.spawn $2
set %game.mp.current.map $1
.timergamespawnboxes 0 %game.mp.respawntime game.mp.sr.spawnbox
.timergamekillidlebox 0 %game.mp.boxkilltime game.mp.sr.killbox
game.mp.sendpacket -b 0 5
var %x = $hget(game.mp.objects,0).item
while (%x) {
game.mp.sendpacket -b 3 1 $iif($hget(game.mp.objects,$hget(game.mp.objects,%x).item) isnum 10-19,$calc($v1 + 10),$v1) $replace($hget(game.mp.objects,%x).item,x,$chr(32))
dec %x
}
game.mp.sendpacket -b 2 6 1 1
}
alias game.mp.sr.spawnbox {
;%game.mp.totalspawnpads
;%game.mp.currentspawnpads
;%game.mp.boxmaxspawns
;%game.mp.totalboxes.to.spawn
if (%game.mp.totalboxes.to.spawn < 0) {
.timergame* off
set %game.mp.no.move 1
game.mp.calc.results
return
}
if (%game.mp.currentspawnpads >= %game.mp.boxmaxspawns) { return }
var %spawnloc = $hget(game.mp.boxspawns,$hget(game.mp.boxspawns,$rand(1,%game.mp.totalspawnpads)).item)
if (!$game.mp.getobj($replace(%spawnloc,$chr(32),x))) {
game.mp.addobj -t $game.mp.gen.next.box %spawnloc
dec %game.mp.totalboxes.to.spawn
}
}
alias game.mp.calc.results {
var %x = $hget(game.mp.balls,0).item
while (%x) {
game.mp.sendpacket -bt 9 $hget(game.mp.nicks,$hget(game.mp.balls,%x).item) Has %game.score [ $+ [ $hget(game.mp.balls,%x).item ] ] Points!
dec %x
}
}
alias game.unique.id.gen {
if (%game.unique.id == 9999999) || (!%game.unique.id) { set %game.unique.id 999999 }
inc %game.unique.id
return %game.unique.id
}
on *:socklisten:game.mp.sr: {
var %id = $game.unique.id.gen
sockaccept game.mp.sr.playertmp $+ %id
if ($sock(game.mp.sr.player*,0) >= %game.mp.pl.limit) {
game.mp.sendpacket -pt game.mp.sr.playertmp $+ %id 9 Server is full! (Player Limit: %game.mp.pl.limit $+ )
sockclose game.mp.sr.playertmp $+ %id
}
else {
var %x = $hget(game.mp.used.balls,0).item
while (%x) {
var %balls = %balls $hget(game.mp.used.balls,%x).item
dec %x
}
;jeigu uztenka playerriu, siunciam i klienta paketa kad pasirinktu kamuoliuka, ir siunciam sarasa uzimtu kamuoliuku
game.mp.sendpacket -p game.mp.sr.playertmp $+ %id $len($remove(%balls,$chr(32))) 12 %balls
}
}
on *:sockclose:game.mp.sr.player.*: {
set %game.mp.free.spawns $instok(%game.mp.free.spawns,$hget(game.mp.used.balls,$sock($sockname).mark),-1,59)
var %obj = $replace($hget(game.mp.balls,$sock($sockname).mark),$chr(32),x)
;Jeigu po kamuoliuku nieko ner. tadu darom delete is game.objects ji
if ($game.mp.getobj(%obj) == $sock($sockname).mark) { hdel game.mp.objects $replace($hget(game.mp.balls,$sock($sockname).mark),$chr(32),x) }
game.mp.sendpacket -b 3 1 31 $hget(game.mp.used.balls,$sock($sockname).mark)
hadd game.mp.objects $replace($hget(game.mp.used.balls,$sock($sockname).mark),$chr(32),x) 31
var %obj.for.ball $game.mp.getobj($replace($hget(game.mp.balls,$sock($sockname).mark),$chr(32),x))
if ($sock($sockname).mark !== %obj.for.ball) {
game.mp.sendpacket -b 3 1 $iif(%obj.for.ball == $null,0,$ifmatch) $hget(game.mp.balls,$sock($sockname).mark)
}
else {
game.mp.sendpacket -b 3 1 0 $hget(game.mp.balls,$sock($sockname).mark)
hdel game.mp.objects $sock($sockname).mark
hdel game.mp.nicks $sock($sockname).mark
}
hdel game.mp.used.balls $sock($sockname).mark
hdel game.mp.balls $sock($sockname).mark
unset %game.score $+ $sock($sockname).mark
unset %game.nick $+ $sock($sockname).mark
}
on *:sockread:game.mp.sr.player*: {
sockread &packet
var %tmp = $bvar(&packet,1,$bvar(&packet,0)).text
;echo -a ServerRead: %tmp
;jeigu paketas gaunamas del kamuoliuko pasirinkimo, tadu entering to the game
;ir nusiunciam zaidejui mapa bei jo kamuoliuko id ir spawnloc
;taipobi irasom apie ji db ir visa kita sh :)
if (bs|* iswm %tmp) {
if ($gettok(%tmp,2,124) isnum 20-29) {
;patikrinant, ar niekas jam neuzbego uz akiu imant kamuoli
if ($sock(game.mp.sr.player*,0) >= %game.mp.pl.limit) {
game.mp.sendpacket -pt $sockname 9 To many players! Sorry!
sockclose $sockname
return
}
if ($hget(game.mp.used.balls,$gettok(%tmp,2,124))) {
game.mp.sendpacket -pt $sockname 9 Ball already in use! Select another!
var %x = $hget(game.mp.used.balls,0).item
while (%x) {
var %balls = %balls $hget(game.mp.used.balls,%x).item
dec %x
}
game.mp.sendpacket -p $sockname $len($remove(%balls,$chr(32))) 12 %balls
return
}
if ($hfind(game.mp.nicks,$gettok(%tmp,3,124))) {
game.mp.sendpacket -pt $sockname 9 Nick Already used! Choise another one!
game.mp.sendpacket -p $sockname 0 13
return
}
if ($gettok(%tmp,3,124) == $null) {
game.mp.sendpacket -pt $sockname 9 Wrong nickname
game.mp.sendpacket -p $sockname 0 13
return
}
hadd game.mp.nicks $gettok(%tmp,2,124) $gettok(%tmp,3,124)
var %tmpballloc = $gettok(%game.mp.free.spawns,1,59)
var %tmpspawn = $gettok(%game.mp.free.spawns,1,59)
set %game.mp.free.spawns $deltok(%game.mp.free.spawns,1,59)
sockrename $sockname game.mp.sr.player. $+ $gettok(%tmp,2,124)
sockmark game.mp.sr.player. $+ $gettok(%tmp,2,124) $gettok(%tmp,2,124)
hadd game.mp.objects $+($gettok(%tmpspawn,1,32),x,$gettok(%tmpspawn,2,32)) $calc($gettok(%tmp,2,124) - 10)
hadd game.mp.balls $gettok(%tmp,2,124) $gettok(%tmpspawn,1,32) $gettok(%tmpspawn,2,32)
hadd game.mp.used.balls $gettok(%tmp,2,124) %tmpspawn
if ($sock(game.mp.sr.player.*,0) == 2) {
.timergame* off
game.mp.sendpacket -bt 9 Game Comencing!
game.mp.count.comence 5
}
.timer $+ $game.unique.id.gen -m 1 1 game.mp.sr.senduserinfo $gettok(%tmp,2,124)
}
}
elseif (p * iswm %tmp) {
echo -s Player $hget(game.mp.nicks,$sock($sockname).mark) Ping: $calc($ticks - $gettok(%tmp,2,32))
}
elseif (%tmp isnum 1-4) {
game.mp.obj.handler -m $sock($sockname).mark %tmp
}
}
alias game.mp.sr.senduserinfo {
;pradedam sukt cikla apie objektus mape ;)
game.mp.sendpacket $1 0 5
var %x = $hget(game.mp.objects,0).item
while (%x) {
game.mp.sendpacket $1 3 1 $game.mp.getobj($hget(game.mp.objects,%x).item) $replace($hget(game.mp.objects,%x).item,x,$chr(32))
dec %x
}
var %x = $hget(game.mp.balls,0).item
while (%x) {
game.mp.sendpacket $1 3 1 $hget(game.mp.balls,%x).item $hget(game.mp.balls,$hget(game.mp.balls,%x).item)
dec %x
}
game.mp.sendpacket $1 1 8 $1
game.mp.sendpacket -b 0 6
}
alias game.mp.count.comence {
var %x = $1
var %y = 0
while (%x >= %y) {
.timergame.mp.comance.msg $+ $game.unique.id.gen 1 %y game.mp.sendpacket -bt 9 .. $+ $calc(%x - %y) $+ !
inc %y
}
timergame.mp.comance.msg $+ $game.unique.id.gen 1 %x game.mp.change.lvl %game.mp.current.map %game.mp.totalboxes.spawn
}
alias -l game.mp.obj.handler {
;31 Reserved pad loc
;30 - Wall (Not moveble/walkable)
;52 - Box (Normal)
;53 - SkullBox (TODO)
;54 - BonusBox (TODO)
;55 - TODO
;..59 TODO
;20-29 - Balls (Not moveble)
;10-19 - PlayerPads not movable/walkable (TODO CFG)
;game.mp.obj.handler -m pid move_side
if ($1 == -m) {
if (%game.mp.no.move) { game.mp.sendpacket $2 1 11 1 | return }
;pasiimam dabartines kamuoliuko koordinates
var %tmp = $hget(game.mp.balls,$2)
if (!%tmp) { game.mp.sendpacket $2 1 11 1 | return }
var %ballx $gettok(%tmp,1,32)
var %bally $gettok(%tmp,2,32)
;paskaiciuojam, i kokia vieta jis nori eit
;I kuria puse eina? 1 - Left; 2 - Up; 3 - Right; 4 - Down
if ($3 == 1) { var %ballx.new = $calc(%ballx - 1) | var %bally.new = %bally }
elseif ($3 == 2) { var %bally.new = $calc(%bally - 1) | var %ballx.new = %ballx }
elseif ($3 == 3) { { var %ballx.new = $calc(%ballx + 1) } | var %bally.new = %bally }
else { var %bally.new = $calc(%bally + 1) | var %ballx.new = %ballx }
;ar sekantis taskas laisvas, jei taip, judam priekin
var %obj = $game.mp.getobj($+(%ballx.new,x,%bally.new))
if (%ballx.new !isnum 1-16) || (%bally.new !isnum 1-16) { game.mp.sendpacket $2 1 11 1 | return }
elseif (%obj == $null) {
game.mp.sendpacket -b 6 2 $2 %ballx %bally %ballx.new %bally.new $iif($game.mp.getobj($+(%ballx,x,%bally)) !== $2,$ifmatch,0)
if ($game.mp.getobj($+(%ballx,x,%bally)) == $2) {
hdel game.mp.objects $+(%ballx,x,%bally)
}
hadd game.mp.objects $+(%ballx.new,x,%bally.new) $2
hadd game.mp.balls $2 %ballx.new %bally.new
return
}
elseif (%obj isnum 10-32) { game.mp.sendpacket $2 1 11 1 | return }
elseif (%obj isnum 50-59) {
;Jeigu kelio priekyje yra kazkokia deze, ziurim ar uz bus vietos dar toliau dezei pastumt
;I kuria puse eina? 1 - Left; 2 - Up; 3 - Right; 4 - Down
if ($3 == 1) {
var %nextpos = $calc(%ballx.new - 1)
var %obj.new = $game.mp.getobj($+(%nextpos,x,%bally))
if (%obj.new isnum 50-59) || (%obj.new isnum 20-32) || (%nextpos < 1) { game.mp.sendpacket $2 1 11 1 | return }
if (!%obj.new) { goto left }
if (%obj.new isnum 10-19) {
if ($hget(game.mp.balls,$calc(10 + %obj.new)),$chr(32) == %nextpos %bally) { game.mp.sendpacket $2 1 11 1 | return }
; dabartinis loc naujas location pado location ir dezes id
;###########333333
if ($game.mp.getobj($+(%ballx,x,%bally)) == $2) {
hdel game.mp.objects $+(%ballx,x,%bally)
}
hadd game.mp.objects $+(%ballx.new,x,%bally.new) $2
hadd game.mp.balls $2 %ballx.new %bally.new
var %score = $game.mp.gen.score(%obj)
set %game.score [ $+ [ $calc(%obj.new + 10) ] ] $calc(%game.score [ $+ [ $calc(%obj.new + 10) ] ] %score)
game.mp.sendpacket $calc(%obj.new + 10) 2 7 $replace(%score,+,255 $+ $chr(32),-,254 $+ $chr(32))
;Sukeista, kad negaidinetu :/ ###########3
game.mp.sendpacket -b 10 4 $2 %ballx %bally %ballx.new %bally.new %nextpos %bally $calc(%obj - 10) %obj.new $iif($game.mp.getobj($+(%ballx,x,%bally)) !== $2,$ifmatch,0)
;pridedam taskus
}
else {
:left
if (!$hget(game.mp.deathpoints,$+(%nextpos,x,%bally))) {
; dabartinis loc naujas location naujas obj loc objid kas po kojom?
game.mp.sendpacket -b 9 3 $2 %ballx %bally %ballx.new %bally.new %nextpos %bally %obj $iif($game.mp.getobj($+(%ballx,x,%bally)) !== $2,$ifmatch,0)
hadd game.mp.objects $+(%nextpos,x,%bally) $game.mp.getobj($+(%ballx.new,x,%bally.new)) $ticks
}
else {
; dabartinis loc naujas location naujas objloc objid kas po kojom?
game.mp.sendpacket -b 9 3 $2 %ballx %bally %ballx.new %bally.new %nextpos %bally 32 $iif($game.mp.getobj($+(%ballx,x,%bally)) !== $2,$ifmatch,0)
hadd -u $+ %game.mp.destroyafterdeathspot game.mp.objects $+(%nextpos,x,%bally) 32
.timergame.destroybox. $+ $game.unique.id.gen -o 1 %game.mp.destroyafterdeathspot game.mp.sendpacket -b 3 1 0 %nextpos %bally
}
if ($game.mp.getobj($+(%ballx,x,%bally)) == $2) {
hdel game.mp.objects $+(%ballx,x,%bally)
}
hadd game.mp.balls $2 %ballx.new %bally.new
hadd game.mp.objects $+(%ballx.new,x,%bally.new) $2
}
}
elseif ($3 == 2) {
var %nextpos = $calc(%bally.new - 1)
var %obj.new = $game.mp.getobj($+(%ballx,x,%nextpos))
if (%obj.new isnum 50-59) || (%obj.new isnum 20-32) || (%nextpos < 1) { game.mp.sendpacket $2 1 11 1 | return }
if (!%obj.new) { goto up }
if (%obj.new isnum 10-19) {
if ($hget(game.mp.balls,$calc(10 + %obj.new)),$chr(32) == %ballx %nextpos) { game.mp.sendpacket $2 1 11 1 | return }
; dabartinis loc naujas location pado location ir dezes id
;########33
if ($game.mp.getobj($+(%ballx,x,%bally)) == $2) {
hdel game.mp.objects $+(%ballx,x,%bally)
}
hadd game.mp.objects $+(%ballx.new,x,%bally.new) $2
hadd game.mp.balls $2 %ballx.new %bally.new
var %score = $game.mp.gen.score(%obj)
set %game.score [ $+ [ $calc(%obj.new + 10) ] ] $calc(%game.score [ $+ [ $calc(%obj.new + 10) ] ] %score)
game.mp.sendpacket $calc(%obj.new + 10) 2 7 $replace(%score,+,255 $+ $chr(32),-,254 $+ $chr(32))
;###########sukeista vietom, nes kitaip del nezinomu problemu gaidineja
game.mp.sendpacket -b 10 4 $2 %ballx %bally %ballx.new %bally.new %ballx %nextpos $calc(%obj - 10) %obj.new $iif($game.mp.getobj($+(%ballx,x,%bally)) !== $2,$ifmatch,0)
;pridedam taskus
}
else {
:up
if (!$hget(game.mp.deathpoints,$+(%ballx,x,%nextpos))) {
; dabartinis loc naujas location naujas obj loc objid kas po kojom?
game.mp.sendpacket -b 9 3 $2 %ballx %bally %ballx.new %bally.new %ballx %nextpos %obj $iif($game.mp.getobj($+(%ballx,x,%bally)) !== $2,$ifmatch,0)
hadd game.mp.objects $+(%ballx,x,%nextpos) $game.mp.getobj($+(%ballx.new,x,%bally.new)) $ticks
}
else {
; dabartinis loc naujas location kur zhus deze
game.mp.sendpacket -b 9 3 $2 %ballx %bally %ballx.new %bally.new %ballx %nextpos 32 $iif($game.mp.getobj($+(%ballx,x,%bally)) !== $2,$ifmatch,0)
hadd -u $+ %game.mp.destroyafterdeathspot game.mp.objects $+(%ballx,x,%nextpos) 32
.timergame.destroybox. $+ $game.unique.id.gen -o 1 %game.mp.destroyafterdeathspot game.mp.sendpacket -b 3 1 0 %ballx %nextpos
}
if ($game.mp.getobj($+(%ballx,x,%bally)) == $2) {
hdel game.mp.objects $+(%ballx,x,%bally)
}
hadd game.mp.objects $+(%ballx.new,x,%bally.new) $2
hadd game.mp.balls $2 %ballx.new %bally.new
return
}
}
elseif ($3 == 3) {
var %nextpos = $calc(%ballx.new + 1)
var %obj.new = $game.mp.getobj($+(%nextpos,x,%bally))
if (%obj.new isnum 50-59) || (%obj.new isnum 20-32) || (%nextpos > 16) { game.mp.sendpacket $2 1 11 1 | return }
if (!%obj.new) { goto right }
if (%obj.new isnum 10-19) {
if ($hget(game.mp.balls,$calc(10 + %obj.new)),$chr(32) == %nextpos %bally) { game.mp.sendpacket $2 1 11 1 | return }
; dabartinis loc naujas location pado location ir dezes id
;###########sukeista
if ($game.mp.getobj($+(%ballx,x,%bally)) == $2) {
hdel game.mp.objects $+(%ballx,x,%bally)
}
hadd game.mp.objects $+(%ballx.new,x,%bally.new) $2
hadd game.mp.balls $2 %ballx.new %bally.new
var %score = $game.mp.gen.score(%obj)
set %game.score [ $+ [ $calc(%obj.new + 10) ] ] $calc(%game.score [ $+ [ $calc(%obj.new + 10) ] ] %score)
game.mp.sendpacket $calc(%obj.new + 10) 2 7 $replace(%score,+,255 $+ $chr(32),-,254 $+ $chr(32))
game.mp.sendpacket -b 10 4 $2 %ballx %bally %ballx.new %bally.new %nextpos %bally $calc(%obj - 10) %obj.new $iif($game.mp.getobj($+(%ballx,x,%bally)) !== $2,$ifmatch,0)
;###########sukeista
;pridedam taskus
}
else {
:right
if (!$hget(game.mp.deathpoints,$+(%nextpos,x,%bally))) {
; dabartinis loc naujas location naujas obj loc objid kas po kojom?
game.mp.sendpacket -b 9 3 $2 %ballx %bally %ballx.new %bally.new %nextpos %bally %obj $iif($game.mp.getobj($+(%ballx,x,%bally)) !== $2,$ifmatch,0)
hadd game.mp.objects $+(%nextpos,x,%bally) $game.mp.getobj($+(%ballx.new,x,%bally.new)) $ticks
}
else {
; dabartinis loc naujas location kur zhus deze
game.mp.sendpacket -b 9 3 $2 %ballx %bally %ballx.new %bally.new %nextpos %bally 32 $iif($game.mp.getobj($+(%ballx,x,%bally)) !== $2,$ifmatch,0)
hadd -u $+ %game.mp.destroyafterdeathspot game.mp.objects $+(%nextpos,x,%bally) 32
.timergame.destroybox. $+ $game.unique.id.gen -o 1 %game.mp.destroyafterdeathspot game.mp.sendpacket -b 3 1 0 %nextpos %bally
}
if ($game.mp.getobj($+(%ballx,x,%bally)) == $2) {
hdel game.mp.objects $+(%ballx,x,%bally)
}
hadd game.mp.objects $+(%ballx.new,x,%bally.new) $2
hadd game.mp.balls $2 %ballx.new %bally.new
}
}
else {
var %nextpos = $calc(%bally.new + 1)
var %obj.new = $game.mp.getobj($+(%ballx,x,%nextpos))
if (%obj.new isnum 50-59) || (%obj.new isnum 20-32) || (%nextpos > 16) { game.mp.sendpacket $2 1 11 1 | return }
if (!%obj.new) { goto down }
if (%obj.new isnum 10-19) {
; dabartinis loc naujas location pado location ir dezes id ir pado id
if ($hget(game.mp.balls,$calc(10 + %obj.new)),$chr(32) == %ballx %nextpos) { game.mp.sendpacket $2 1 11 1 | return }
;#############sukeista
if ($game.mp.getobj($+(%ballx,x,%bally)) == $2) {
hdel game.mp.objects $+(%ballx,x,%bally)
}
hadd game.mp.balls $2 %ballx.new %bally.new
hadd game.mp.objects $+(%ballx.new,x,%bally.new) $2
var %score = $game.mp.gen.score(%obj)
set %game.score [ $+ [ $calc(%obj.new + 10) ] ] $calc(%game.score [ $+ [ $calc(%obj.new + 10) ] ] %score)
game.mp.sendpacket $calc(%obj.new + 10) 2 7 $replace(%score,+,255 $+ $chr(32),-,254 $+ $chr(32))
game.mp.sendpacket -b 10 4 $2 %ballx %bally %ballx.new %bally.new %ballx %nextpos $calc(%obj - 10) %obj.new $iif($game.mp.getobj($+(%ballx,x,%bally)) !== $2,$ifmatch,0)
;#########sukeista
;pridedam taskus
}
else {
:down
if (!$hget(game.mp.deathpoints,$+(%ballx,x,%nextpos))) {
; dabartinis loc naujas location naujas obj loc objid kas po kojom?
game.mp.sendpacket -b 9 3 $2 %ballx %bally %ballx.new %bally.new %ballx %nextpos %obj $iif($game.mp.getobj($+(%ballx,x,%bally)) !== $2,$ifmatch,0)
hadd game.mp.objects $+(%ballx,x,%nextpos) $game.mp.getobj($+(%ballx.new,x,%bally.new)) $ticks
}
else {
; dabartinis loc naujas location kur zhus deze
game.mp.sendpacket -b 9 3 $2 %ballx %bally %ballx.new %bally.new %ballx %nextpos 32 $iif($game.mp.getobj($+(%ballx,x,%bally)) !== $2,$ifmatch,0)
hadd -u $+ %game.mp.destroyafterdeathspot game.mp.objects $+(%ballx,x,%nextpos) 32
.timergame.destroybox. $+ $game.unique.id.gen -o 1 %game.mp.destroyafterdeathspot game.mp.sendpacket -b 3 1 0 %ballx %nextpos
}
if ($game.mp.getobj($+(%ballx,x,%bally)) == $2) {
hdel game.mp.objects $+(%ballx,x,%bally)
}
hadd game.mp.objects $+(%ballx.new,x,%bally.new) $2
hadd game.mp.balls $2 %ballx.new %bally.new
}
}
}
}
;return $iif($hget(game.objects,$+($1,x,$2)) == $null,0,$ifmatch)
}
alias game.mp.getobj {
return $gettok($hget(game.mp.objects,$1),1,32)
}
alias game.mp.getobj.id {
return $gettok($hget(game.mp.objects,$1),2,32)
}
alias game.mp.sr.killbox {
var %x = $hfind(game.mp.objects,5? ?*,0,w).data
while (%x) {
var %boxloc = $hfind(game.mp.objects,5? ?*,%x,w).data
if ( $calc($ticks - $gettok($hget(game.mp.objects,%boxloc),2,32)) > 15000) {
hdel game.mp.objects %boxloc
game.mp.sendpacket -b 3 1 0 $replace(%boxloc,x,$chr(32))
}
dec %x
}
}
alias game.mp.gen.score {
if ($1 == 51) { return +1 }
elseif ($1 == 54) { return +2 }
elseif ($1 == 52) { return -1 }
elseif ($1 == 53) { return $iif($rand(0,1),+,-) $+ $rand(0,5) }
elseif ($1 == 50) { return -5 }
elseif ($1 == 55) { return +5 }
}
alias game.mp.gen.next.box {
var %rand = $rand(1,100)
if (%rand <= 40) {
;+1
return 51
}
elseif (%rand <= 70) {
;+2
return 54
}
elseif (%rand <= 80) {
;-1
return 52
}
elseif (%rand <= 90) {
;? -5;5
return 53
}
elseif (%rand <= 95) {
;-5
return 50
}
else {
;+5
return 55
}
}
alias game.mp.addobj {
;game.mp.addobj objid x y
if (-t == $1) {
game.mp.sendpacket -b 3 1 $2 $3 $4
hadd game.mp.objects $3 $+ x $+ $4 $2 $ticks
return
}
if ($1 !isnum 20-29) {
game.mp.sendpacket -b 3 1 $1 $2 $3
hadd game.mp.objects $2 $+ x $+ $3 $1
}
else {
hadd game.mp.balls $1 $2 $3
game.mp.sendpacket -b 3 1 $1 $2 $3
}
}
alias game.mp.sr.sendping {
game.mp.sendpacket -bt 10 $ticks
}
alias game.mp.sendpacket {
;Broadcastinam plain BINARY
if ($1 == -b) {
bset &packet 1 $2-
var %socks = $sock(game.mp.sr.player.*,0)
while (%socks) {
sockwrite $sock(game.mp.sr.player.*,%socks) &packet
dec %socks
}
return
}
;Broadcastinam text->BINARY
elseif ($1 == -bt) {
;INDEX V A L U E S
bset -t &packet 1 $chr($len($3-)) $+ $chr($2) $+ $3-
var %socks = $sock(game.mp.sr.player.*,0)
while (%socks) {
sockwrite $sock(game.mp.sr.player.*,%socks) &packet
dec %socks
}
}
;Privaciai Plain BINARY
elseif (-p == $1) {
bset &packet 1 $3-
sockwrite $2 &packet
}
;Privaciai Text->BINARY
elseif (-pt == $1) {
bset -t &packet 1 $chr($len($4-)) $+ $chr($3) $+ $4-
sockwrite $2 &packet
}
;X Veikejuij Text->BINARY
elseif ($1 == -t) {
bset -t &packet 1 $chr($len($4-)) $+ $chr($3) $+ $4-
sockwrite game.mp.sr.player. $+ $2 &packet
}
;X Veikejuij Plain BINARY
else {
bset &packet 1 $2-
sockwrite game.mp.sr.player. $+ $1 &packet
}
bunset &packet
}
/*
===PACKET INDEX===
Start Objects = 5 </> Variable size: 0Bytes </> Packet size: 2Bytes
5-
End Objects = 6 </> Variable size: 0Bytes </> Packet size: 2Bytes
6-
Add Object = 1 </> Variable size: 3Bytes </> Packet size: 5Bytes
1-ID-X-Y
Move Ball = 2 </> Variable size: 6Bytes </> Packet size: 8Bytes
2-BallID-Old_X-Old_Y-New_X-New_Y-UnderBall
Move Object = 3 </> Variable size: 9Bytes </> Packet size: 11Bytes
3-BallID-Ball_x-Ball_y-New_ball_x-New_ball_y-Obj_x-Obj_y-objID-UnderBall
Move Object To Pad = 4 </> Variable size: 10Bytes </> Packet size: 12Bytes
4-ballid-Ball_X-Ball_Y-New_Ball_X-New_ball_Y-Pad_X-Pad_Y-BoxId-PadId-UnderBall
PING = 10 </> Variable size: ~10Bytes </> Packet size: ~13Bytes
10-readedticks(bvar.text)
Add Score = 7 </> Variable size: 2Bytes </> Packet size: 4Bytes
7-[254:-/255:+]score
Message = 9 </> Variable size: 1-900Bytes </> Packet size: 3-903Bytes
9-MSG
Selected Ball Add = 8 </> Variable size: 1Bytes </> Packet size: 3Bytes
8-BallID
BEEP = 11 </> Variable size: 1Bytes </> Packet size: 3Bytes
11-Times
Please Select Ball = 12 </> Variable size: 0-10Bytes </> Packet size: 2-12Bytes
12-used-ball-ids
Wrong Nickname = 13 </> Variable size: 0Bytes </> Packet size: 2Bytes
13-
*/