Advertisement
Iire

Untitled

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