alias -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- */