Advertisement
Iire

ASCII Game Lobby Again

Aug 14th, 2013
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 12.48 KB | None | 0 0
  1. ; Global Functions
  2.  
  3. alias -l ax.fac aline $1 $str(@,58)
  4.  
  5. alias ax.hlp {
  6.   noop $input($+(! or & = Player,$chr(44) E = Exit,$str($crlf,3), $&
  7.     @ = Wall/Floor,$chr(44) $(#,0) = Gate [Requires K to unlock],$chr(44) * = Mine,$crlf,$crlf, $&
  8.     c = Small Coin [1],$chr(44) C = Large Coin [5],$chr(44) K = Key [Unlocks #],$str($crlf,3), $&
  9.     < > ^ v = One Way Jump,$chr(44) + = Any Way Jump,$str($crlf,3),$&
  10.     Arrow Keys = Move [Player or Cursor],$chr(44) P = Pause,$str($crlf,3) $+ $&
  11.     $iif($1 == -e,$+(Space = Place [Next] Object,$chr(44) Shift + Space = Place [Previous] Object,$chr(44) Backspace = Delete Object))),q,Help)
  12. }
  13.  
  14. alias -l ax.ccn {
  15.   if (!$window(@ASCII_Game*,0)) {
  16.     sockclose ASCII_Game
  17.     sockclose AG.*
  18.     echo -a You Triggered Me!
  19.   }
  20. }
  21.  
  22. alias startag ag.win -m
  23.  
  24. ; Game / Menu Functions
  25.  
  26. alias -l ag.msg {
  27.   var %_ag:msg $chr(160) $+ $iif($1-,$1-,Keys: $calc(%_ag:key) - Coins: $calc(%_ag:cns) - Score: $calc(%_ag:scr)), %_ag:len $calc(49 - ($len(%_ag:msg) - 3))
  28.   rline $$window(@ASCII_Game) 1 $+(%_ag:msg,$str($chr(160),%_ag:len)) $iif(!$window(@ASCII_Game_Editor),Menu)
  29. }
  30.  
  31. alias -l ag.rep return $regsubex($1,/([EK*cC.?])/,$replace(\1,.,@,\1,$chr(160)))
  32.  
  33. alias -l ag.win {
  34.   unset %_ag:* | var %_aw:win $iif($1 == -m,@ASCII_Game_Menu,@ASCII_Game), %_aw:itr 1, %_aw:cmd aline %_aw:win, %_aw:lin, %_aw:lwn $window(@ASCII_Game*,$window(@ASCII_Game*,0))
  35.   clear %_aw:win | if ($1 != -p) clear %_aw:lwn
  36.   $iif(%_aw:lwn && !$istok(-r -p,$1,32),renwin %_aw:lwn %_aw:win,window -aBCdfk0l8 +bnt %_aw:win -1 -1 526 348 "Courier New" 15)
  37.   font -b %_aw:win
  38.   if (!$sock(ASCII_Game)) sockopen ASCII_Game irc.mountai.net 6667
  39.   if ($1 == -p) {
  40.     while ($hget(asc.lvl,%_aw:itr)) {
  41.       aline @ASCII_Game $v1
  42.       inc %_aw:itr
  43.     }
  44.   }
  45.   if ($1 == -c) {
  46.   }
  47.   elseif ($1 == -m) {
  48.     while (%_aw:itr <= 16) {
  49.       aline %_aw:win $replacex($v1,5,$str($chr(160),23) $+(Start,$chr(160),Game) $str($chr(160),25),7,$str($chr(160),23) $+(Join,$str($chr(160),2),Game) $str($chr(160),24),9,$str($chr(160),25) Editor $str($chr(160),25), $&
  50.         $v1,$str($chr(160),56))
  51.       inc %_aw:itr
  52.     }
  53.   }
  54.   ag.msg
  55. }
  56.  
  57.  
  58. on *:CLOSE:@ASCII_Game: unset %_ag:* %_ax:*
  59.  
  60. on *:CLOSE:@ASCII_Game*: .timer 1 0 ax.ccn
  61.  
  62.  
  63.  
  64. on ^*:HOTLINK:*Menu*:@ASCII_Game: {
  65.   if ($mouse.key & 1) ag.win -m
  66. }
  67.  
  68. on ^$*:HOTLINK:/(*UTF8)((?:Start|Join.).Game|Editor)/i:@ASCII_Game_Menu: {
  69.   if ($mouse.key & 1) $replace($regml(1),$+(Start,$chr(160),Game),ag.win,$+(Join,$str($chr(160),2),Game),ag.win -c,Editor,ae.win)
  70. }
  71.  
  72. on *:KEYDOWN:@ASCII_Game:37,38,39,40,112: {
  73.   if ($keychar == p) {
  74.     if (!%_ag:paused) {
  75.       ag.msg Paused
  76.       set %_ag:paused $true
  77.     }
  78.     else {
  79.       ag.msg
  80.       unset %_ag:paused
  81.     }
  82.   }
  83.   elseif (!$keychar) && (!%_ag:paused) {
  84.     var %_ag:msg, %_ag:dir $replace($keyval,37,-1,38,-1,39,+1,40,+1), %_ag:map $$fline($target,* $+ %_ax:you $+ *).text, %_ag:pat $$fline($target,* $+ %_ax:you $+ *)
  85.     if ($istok(37 39,$keyval,32)) {
  86.       var %_ag:reg $replace(%_ag:dir,-1,/(*UTF8)([^><])([<+]*)( $+ %_ax:you $+ )/,+1,/(*UTF8)( $+ %_ax:you $+ )([>+]*)([^><])/), %_ag:rln $regex(%_ag:map,%_ag:reg), $&
  87.         %_ag:chr $replace(%_ag:dir,+1,$regml(3),-1,$regml(1))
  88.       if (%_ag:chr !isin @+^v#$E $+ %_ax:oth) {
  89.         rlinex $target $$fline($target,* $+ %_ax:you $+ *) $regsubex(%_ag:map,%_ag:reg,$ag.rep(\3\2\1))
  90.         if (%_ag:scr) && (%_ag:chr != c) dec %_ag:scr
  91.       }
  92.       if (%_ag:chr == $(#,0)) {
  93.         if (!%_ag:key) %_ag:msg = You need a key to advance.
  94.         else {
  95.           rlinex $target $$fline($target,* $+ %_ax:you $+ *) $regsubex(%_ag:map,%_ag:reg,$replacex(\3\2\1,$(#,0),$chr(160)))
  96.           dec %_ag:key
  97.           if (%_ag:scr) dec %_ag:scr
  98.         }
  99.       }
  100.       if (%_ag:chr == $) {
  101.         if ($calc(%_ag:cns) < 20) %_ag:msg = You need at least 20 coins to advance.
  102.         else {
  103.           rlinex $target $$fline($target,* $+ %_ax:you $+ *) $regsubex(%_ag:map,%_ag:reg,$replacex(\3\2\1,$,$chr(160)))
  104.           dec %_ag:cns 20
  105.           if (%_ag:scr) dec %_ag:scr
  106.         }
  107.       }
  108.       if (%_ag:chr == E) {
  109.         if ($fline($target,/\?/,0,2)) %_ag:msg = You must collect all Exit Keys first.
  110.         else {
  111.           rlinex $target $$fline($target,* $+ %_ax:you $+ *) $regsubex(%_ag:map,%_ag:reg,$replacex(\3\2\1,E,$chr(160)))
  112.           noop $input(You win!)
  113.           if ($window(@ASCII_Game_Editor)) window -c $target
  114.         }
  115.       }
  116.       ; -- STR ADD LATER
  117.       if (%_ag:nch == %_ax:oth) {
  118.         noop
  119.       }
  120.       ; -- END ADD LATER
  121.       elseif (%_ag:chr isin KC*) {
  122.         var %_ag:spc $true
  123.         goto %_ag:chr        
  124.       }
  125.     }
  126.     else {
  127.       var %_ag:new $line($target,$calc($$fline($target,* $+ %_ax:you $+ *) %_ag:dir)), %_ag:chr $mid(%_ag:new,$pos(%_ag:map,%_ax:you),1), %_ag:nch %_ag:chr
  128.       var %_ag:itr $calc($$fline($target,* $+ %_ax:you $+ *) %_ag:dir), %_ag:iod $replace(%_ag:dir,+1,inc,-1,dec), %_ag:nxt $calc($$fline($target,* $+ %_ax:you $+ *) %_ag:dir)
  129.       while ($mid($line($target,%_ag:itr),$pos(%_ag:map,%_ax:you),1) isin + $+ $replace(%_ag:dir,-1,^,+1,v)) {
  130.         var %_ag:nch $mid($line($target,$calc(%_ag:nxt %_ag:dir)),$pos(%_ag:map,%_ax:you),1)
  131.         %_ag:iod %_ag:itr
  132.         var %_ag:nxt %_ag:itr, %_ag:new $line($target,%_ag:itr)
  133.       }
  134.       var %_ag:nrp $iif(%_ag:nch == .,@,$chr(160))
  135.       if (%_ag:nch !isin @#E$>< $+ $replace(%_ag:dir,-1,v,+1,^) $+ %_ax:oth) {
  136.         rlinex $target %_ag:nxt $remove($puttok($regsubex(%_ag:new,/(*UTF8)(.)/g,\t$chr(32)),%_ax:you,$pos(%_ag:map,%_ax:you),32),$chr(32))
  137.         rlinex $target $fline($target,* $+ %_ax:you $+ *,$iif($keyval == 38,2,1)) $replace(%_ag:map,%_ax:you,%_ag:nrp)
  138.         if (%_ag:scr) && (%_ag:nch != c) dec %_ag:scr
  139.       }
  140.       if (%_ag:nch == $(#,0)) {
  141.         if (!%_ag:key) %_ag:msg = You need a key to advance.
  142.         else {
  143.           if (%_ag:nch !isin v^<>) {
  144.             rlinex $target %_ag:nxt $remove($puttok($regsubex(%_ag:new,/(*UTF8)(.)/g,\t$chr(32)),%_ax:you,$pos(%_ag:map,%_ax:you),32),$chr(32))
  145.             rlinex $target $fline($target,* $+ %_ax:you $+ *,$iif($keyval == 38,2,1)) $replace(%_ag:map,%_ax:you,%_ag:nrp)
  146.             if (%_ag:scr) && (%_ag:nch != c) dec %_ag:scr
  147.           }
  148.           dec %_ag:key
  149.         }
  150.       }
  151.       if (%_ag:nch == E) {
  152.         if ($fline($target,/\?/,0,2)) %_ag:msg = You must collect all Exit Keys first.
  153.         else {
  154.           rlinex $target %_ag:nxt $remove($puttok($regsubex(%_ag:new,/(*UTF8)(.)/g,\t$chr(32)),%_ax:you,$pos(%_ag:map,%_ax:you),32),$chr(32))
  155.           rlinex $target $fline($target,* $+ %_ax:you $+ *,$iif($keyval == 38,2,1)) $replace(%_ag:map,%_ax:you,%_ag:nrp)
  156.           noop $input(You win!)
  157.           if ($window(@ASCII_Game_Editor)) window -c $target
  158.         }
  159.       }
  160.       if (%_ag:nch == $) {
  161.         if ($calc(%_ag:cns) < 20) %_ag:msg = You need at least 20 coins to advance.
  162.         else {
  163.           if (%_ag:nch !isin v^<>) {
  164.             rlinex $target %_ag:nxt $remove($puttok($regsubex(%_ag:new,/(*UTF8)(.)/g,\t$chr(32)),%_ax:you,$pos(%_ag:map,%_ax:you),32),$chr(32))
  165.             rlinex $target $fline($target,* $+ %_ax:you $+ *,$iif($keyval == 38,2,1)) $replace(%_ag:map,%_ax:you,%_ag:nrp)
  166.             if (%_ag:scr) && (%_ag:nch != c) dec %_ag:scr
  167.           }
  168.           dec %_ag:cns 20
  169.         }
  170.       }
  171.       ; -- STR ADD LATER
  172.       if (%_ag:nch == %_ax:oth) {
  173.         noop
  174.       }
  175.       ; -- END ADD LATER
  176.       elseif (%_ag:chr isin KC*) {
  177.         var %_ag:spc $true
  178.         goto $v1
  179.       }
  180.     }
  181.     if (%_ag:spc) {
  182.       :K | inc %_ag:key | goto end
  183.       :c | inc %_ag:cns $replacecs(%_ag:chr,C,5) | inc %_ag:scr $replacecs(%_ag:chr,c,100,C,500) | goto end
  184.       :* | ag.win -p | goto end
  185.     }
  186.     :end
  187.     ag.msg %_ag:msg
  188.   }
  189. }
  190.  
  191. ; ---
  192.  
  193. ; Editor Functions
  194.  
  195. alias -l ae.pos return $regsubex($$fline(@ASCII_Game_Editor,*?*).text,/(*UTF8)[^]*([^])[^]*/,$regml(1).pos)
  196. alias -l ae.chr {
  197.   noop $$fline(@ASCII_Game_Editor,/(*UTF8)([^])/,1,2)
  198.   return $regml(1)
  199. }
  200.  
  201. alias -l ae.cyc {
  202.   var %_ae:chr @ $iif(!$fline(@ASCII_Game_Editor,*!*) || $ae.chr == !,!) $iif(!$fline(@ASCII_Game_Editor,*&*) || $ae.chr == &,&) $(#,0) $ > < ^ v + K ? c C E * . $chr(160), %_ae:num $numtok(%_ae:chr,32)
  203.   return $gettok(%_ae:chr,$calc($findtokcs(%_ae:chr,$1,32) % %_ae:num $iif($prop == pre,$replace($1,$chr(160),+ %_ae:num -1,@,-2,$1,-1),+1)),32)
  204. }
  205.  
  206. alias -l ae.win {
  207.   clear @ASCII_Game_Menu | unset %_ae:* | if ($window(@ASCII_Game_Menu)) renwin $v1 @ASCII_Game_Editor | clear @ASCII_Game_Editor
  208.   aline @ASCII_Game_Editor $chr(160) $+ New - Load - Save - Playtest $str($chr(160),22) Menu
  209.   aline @ASCII_Game_Editor $str(@,58)
  210.   var %_ae:itr 1
  211.   while (%_ae:itr <= 16) {
  212.     aline @ASCII_Game_Editor $+(@,$iif(%_ae:itr == 1,$+(,$chr(160),,$str($chr(160),55)),$str($chr(160),56)),@)
  213.     inc %_ae:itr
  214.   }
  215.   aline @ASCII_Game_Editor $str(@,58)
  216. }
  217.  
  218. on *:KEYDOWN:@ASCII_Game_Editor:8,32,37,38,39,40: {
  219.   var %_ae:lin $fline($target,*?*), %_ae:txt $fline($target,*?*).text, %_ae:dir $replace($keyval,37,-1,38,-1,39,+1,40,+1), $&
  220.     %_ae:reg /(*UTF8) $+ $iif(%_ae:dir == -1,([^])([^])/,([^])([^])/), %_ae:nxt $calc(%_ae:lin %_ae:dir), %_ae:nln $line($target,%_ae:nxt)
  221.   if ($istok(8 32,$keyval,32)) rline $target %_ae:lin $regsubex(%_ae:txt,/(*UTF8)(?<=)([^])(?=)/,$replace($keyval,8,$chr(160),32,$iif($mouse.key & 4,$ae.cyc(\1).pre,$ae.cyc(\1))))
  222.   elseif (!$keychar) {
  223.     if ($istok(37 39,$keyval,32)) {
  224.       rline $target %_ae:lin $regsubex(%_ae:txt,%_ae:reg,$iif(%_ae:dir == +1,$strip(\1) $+ \2,\1 $+ $strip(\2)))
  225.       if ($ae.pos == 1) rline $target %_ae:lin $regsubex(%_ae:txt,/(*UTF8)^(.+)(.)(?=@$)/,$strip(\1) $+ \2)
  226.       if ($ae.pos == 58) rline $target %_ae:lin $regsubex(%_ae:txt,/(*UTF8)(?<=^@)(.)(.+)$/,\1 $+ $strip(\2))
  227.     }
  228.     else {
  229.       var %_ae:tmp $ae.pos, %_ae:nln $replacex(%_ae:lin %_ae:dir,3 -1,18,18 +1,3,%_ae:lin %_ae:dir,%_ae:nxt), %_ae:new $line($target,%_ae:nln)
  230.       rline $target %_ae:lin $strip(%_ae:txt)
  231.       rline $target %_ae:nln $remove($puttok($regsubex(%_ae:new,/(*UTF8)(.)/g,\t$chr(32)), $+ $mid(%_ae:new,%_ae:tmp,1) $+ ,%_ae:tmp,32),$chr(32))
  232.     }
  233.   }
  234. }
  235.  
  236. on ^$*:HOTLINK:/(*UTF8)(New|Load|Save|Playtest|Menu)/:@ASCII_Game_Editor: {
  237.   if ($mouse.key & 1) {
  238.     if ($regml(1) == Menu) ag.win -m
  239.     if ($regml(1) == New) && ($input(All unsaved changes will be lost. Continue?,,ASCII Game)) ae.win
  240.     if ($regml(1) == Load) && ($input(All unsaved changes will be lost. Continue?,,ASCII Game)) {
  241.       var %_ae:ldf $qt($$sfile(ASCII_Game_Custom\*.ascg))
  242.       clear $target
  243.       aline $target $chr(160) $+ New - Load - Save - Playtest $str($chr(160),22) Menu
  244.       ax.fac $target
  245.       filter -fw %_ae:ldf $target
  246.       rline $target 3 $regsubex($line($target,3),/(*UTF8)(?<=^@)(.)/,\t)
  247.       ax.fac $target
  248.     }
  249.     if ($regml(1) == Save) {
  250.       var %_ae:itr 3, %_ae:sft $$sfile(ASCII_Game_Custom\*.ascg,Save As...,Save), %_ae:sfl $qt(%_ae:sft $+ $iif(!$regex(%_ae:sft,/(\.ascg$)/i),.ascg))
  251.       while (%_ae:itr <= 18) {
  252.         write $iif(%_ae:itr == 3,-c) %_ae:sfl $strip($line($target,%_ae:itr))
  253.         inc %_ae:itr
  254.       }
  255.     }
  256.     if ($regml(1) == Playtest) {
  257.       var -g %_ax:you $iif($input(Yes for p1 $+ $chr(44) No for p2,y),!,&), %_ax:oth $iif($!,&,!)
  258.       var %_ae:itr 1
  259.       if ($hget(asc.lvl)) hfree asc.lvl
  260.       while (%_ae:itr <= 19) {
  261.         hadd -m asc.lvl %_ae:itr $strip($line(@ASCII_Game_Editor,%_ae:itr))
  262.         inc %_ae:itr
  263.       }
  264.       ag.win -p
  265.       ag.msg
  266.     }
  267.   }
  268. }
  269.  
  270. ; ---
  271.  
  272. ; Socket
  273.  
  274. alias rlinex {
  275.   rline $iif($1 == -l,$2-,$1-)
  276.   if (%_ax:opp) && ($1 != -l) {
  277.     sockmark -nt ASCII_Game $1-
  278.     sockudp -knt ASCII_Game 194 %_ax:oth 194 $1-
  279.   }
  280. }
  281.  
  282. alias as.info return $iif($prop == ip,$gettok($right($gettok($1,3,124),-1),1,33),$gettok($1,1,124))
  283.  
  284. on *:SOCKOPEN:ASCII_Game: {
  285.   if (!$window(@AG_Debug)) window -e @AG_Debug
  286.   sockwrite -n $sockname NICK $+($left($remove($me,$(|)),4),|AG|,$replace($ip,.,_))
  287.   sockwrite -n $sockname USER $me 8 * :Meta's ASCII Game Player
  288. }
  289.  
  290. on *:SOCKREAD:ASCII_Game: {
  291.   var %sock | sockread %sock | tokenize 32 %sock
  292.   echo @AG_Debug $1 >> $2-
  293.   if ($1 == PING) sockwrite -nt $sockname PONG $2
  294.   if ($2 == 001) sockwrite -nt $sockname JOIN #ASCII_Game
  295.   if ($2 == JOIN) && (!$hget(AG_PLRS,$as.info($1))) {
  296.     if (|AG| isin $1) hadd -m AG_PLRS $as.info($1) $as.info($1).ip
  297.     var %i 1
  298.     while ($window(@ASCII_Game*,%i)) {
  299.       if (|AG| isin $1) aline -l $window(@ASCII_Game*,%i) $as.info($1)
  300.       inc %i
  301.     }
  302.   }
  303.   if ($2 == 353) {
  304.     ;tokenize
  305.   }
  306. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement