home *** CD-ROM | disk | FTP | other *** search
/ WinFiles.com / InfoMagic-WinFilesDotCom-June1998-Disc3of3-DAMAGED_DISC.iso / chat-textadd / C-Script.exe / AddOns / mserver.mrc < prev    next >
Text File  |  1998-05-16  |  23KB  |  456 lines

  1. ;==========
  2. ;Multi-Server v2.0 - http://www.c-script.com/
  3. ;
  4. ;Originally created for C-Script v3.0 by zforce, but totally re-written
  5. ;for C-Script v5.0 and up by jCd and SethD.
  6. ;==========
  7.  
  8. ;Menus
  9. menu @msquery {
  10.   Whois:ms.toserver WHOIS $mid($active,3,999)
  11.   CTCP
  12.   .Ping:ms.e $clr(ctcp) -> $chr(91) $+ $mid($active,3,999) $+ $chr(93) PING | ms.toserver PRIVMSG $mid($active,3,999) :PING $ctime $+ 
  13.   .Version:ms.e $clr(ctcp) -> $chr(91) $+ $mid($active,3,999) $+ $chr(93) VERSION | ms.toserver PRIVMSG $mid($active,3,999) :VERSION
  14.   -
  15.   Join:ms.toserver JOIN $$?="Channel"
  16.   Quit:ms.toserver quit : $+ %ms.vers
  17. }
  18. menu @mschan {
  19.   dclick { if ($left($sline($active,1),1) == @) || ($left($sline($active,1),1) == +) { window -e @á $+ $mid($sline($active,1),2,999) $rand(0,200) $rand(0,200) 400 120 %ms.adir $+ msqpop.mrc $winfont } | else window -e @á $+ $mid($sline($active,1),1,999) $rand(0,200) $rand(0,200) 400 120 %ms.adir $+ msqpop.mrc $winfont }
  20.   Ban List:ms.toserver mode $mid($active,2,999) +b
  21.   Channel
  22.   . $+ $ms.opdv(1,Op) $+ :ms.opdv 2 +o
  23.   . $+ $ms.opdv(1,DeOp) $+ :ms.opdv 3 -o
  24.   . $+ $ms.opdv(1,Voice) $+ :ms.opdv 4 +v
  25.   . $+ $ms.opdv(1,DeVoice) $+ :ms.opdv 5 -v
  26.   .Channel Mode:ms.toserver mode $mid($active,2,999) $$?="Enter Channel Mode(s):"
  27.   . $+ $ms.opdv(1,Kick,...) $+ :ms.opdv 6 $?="Enter a reason:"
  28.   Colors
  29.   .Black/green:ms.sendmsg $ibg($$?="Enter Text To Colorize:")
  30.   .Black/red/green:ms.sendmsg $ibrg($$?="Enter Text To Colorize:")
  31.   .Black/white:ms.sendmsg $ibw($$?="Enter Text To Colorize:")
  32.   .Box:ms.sendmsg 4,4  $$?="Enter Text To Box:" $+ ! | ms.sendmsg 0,4  $!  1,1! | ms.sendmsg 4,4  $!  1,1! | ms.sendmsg 0,0 1,1 $! $+ !
  33.   .Brain:ms.sendmsg $iBrain($$?="Enter Text to Colorize:")
  34.   .Brick:ms.sendmsg $iBrick($$?="Enter Text To Brick:")
  35.   .Red/Green:ms.sendmsg $irg($$?="Enter Text To Colorize:")
  36.   .Red/White:ms.sendmsg $irw($$?="Enter Text To Colorize:")
  37.   .Reverse:ms.sendmsg $iReverse($$?="Enter Text To Reverse:")
  38.   -
  39.   Channel List:ms.toserver list
  40.   Play a Sound:set %ms.ssfile $$dir="Choose a file:" $wavedir | ms.toserver PRIVMSG $mid($active,2,999) :SOUND $nopath(%ms.ssfile) $+  | ms.sendmsg That was $nopath(%ms.ssfile) ( $+ $lof(%ms.ssfile) bytes) | splay %ms.ssfile
  41.   -
  42.   Change Topic:ms.toserver TOPIC $mid($active,2,999) : $+ $$?="Topic:"
  43.   Join:ms.toserver JOIN $$?="Channel:"
  44.   Names:ms.toserver names $mid($active,2,999)
  45.   Part:ms.toserver part $mid($active,2,999)
  46.   -
  47.   Quit:ms.toserver quit : $+ %ms.vers
  48. }
  49. menu @MServeráHelp {
  50.   dclick window -c @mserveráhelp
  51.   Close Help:window -c @mserveráhelp
  52. }
  53. menu @BanáList {
  54.   dclick ms.banlist
  55.   Remove Ban(s):ms.banlist
  56. }
  57. menu @List {
  58.   dclick ms.toserver join $sline(@List,1)
  59.   Join:ms.toserver join $sline(@List,1)
  60. }
  61. menu @LinksáList {
  62.   dclick ms.linkscon
  63.   Connect to Server:ms.linkscon
  64. }
  65. menu @StatusáWindow {
  66.   MOTD:ms.toserver motd
  67.   LUsers:ms.toserver lusers
  68.   Links:wincheck @linksáList -l @LinksáList $center(750,300,@linksáList) $wh(750,300,@linksáList) @LinksáList Comic sans ms 12 | ms.toserver links
  69.   -
  70.   Channel List:ms.toserver list
  71.   Who:ms.toserver who $?="Parms:"
  72.   Join:ms.toserver join #$?="Channel:"
  73.   Names:ms.toserver names #$?="Channel:"
  74.   Part:ms.toserver part #$?="Channel:"
  75.   Part All:ms.toserver join 0
  76.   Quit:ms.toserver quit : $+ %ms.vers
  77.   -
  78.   Connect:mserver $$?="Server:" $?="Port:"
  79. }
  80. on 1:START:ms.unload
  81. on 1:close:@#*:if ($sock(mserver).port != $null) { ms.toserver PART $mid($active,2,999) }
  82. on 1:close:@StatusáWindow:ms.toserver quit : $+ %ms.vers | sockclose MSERVER | ms.unload
  83. ;Status window, query, and channel handling
  84. on 1:INPUT:@á* {
  85.   if ($pos($1,$chr(47)) == 1) {
  86.     set %ms.tmp.cmnd $read -s $+ $mid($1,2,$calc($len($1) - 1)) $scriptdir $+ msalias.mrc
  87.     if (%ms.tmp.cmnd == $null) { ms.toserver $mid($1,2,$calc($len($1) - 1)) $2- | halt }
  88.     elseif (%ms.tmp.cmnd != $null) { %ms.tmp.cmnd | halt }
  89.   }
  90.   else { ms.sendmsg $1- | halt }
  91. }
  92. on 1:INPUT:@#*,@StatusáWindow {
  93.   if (($gettok($1,1,32) == /me) || ($gettok($1,1,32) == /say) && ($active == @StatusáWindow)) { ms.e $clr(info) *** You're not on a channel | halt }
  94.   elseif ($pos($1,$chr(47)) == 1) {
  95.     set %ms.tmp.cmnd $read -s $+ $mid($1,2,$calc($len($1) - 1)) $scriptdir $+ msalias.mrc
  96.     if (%ms.tmp.cmnd == $null) { ms.toserver $mid($1,2,$calc($len($1) - 1)) $2- | halt }
  97.     elseif (%ms.tmp.cmnd != $null) { %ms.tmp.cmnd | halt }
  98.   }
  99.   else { if ($active == @statusáwindow) { ms.e $clr(info) *** You're not on a channel } | else { ms.sendmsg $1- } | halt }
  100. }
  101. ;Socket events
  102. on 1:sockopen:MSERVER {
  103.   if ($sockerr > 0) { ms.err | halt }
  104.   set %ms.mode + | sockmark mserver $readini mirc.ini mirc nick | sockwrite -tn MSERVER NICK $readini mirc.ini mirc nick | sockwrite -tn MSERVER USER $readini mirc.ini ident userid "" " $+ %ms.server $+ " : $+ $readini mirc.ini mirc user | set %ms.online Yes | sockmark mserver $readini mirc.ini mirc nick
  105. }
  106. on 1:sockread:MSERVER: {
  107.   if ($sockerr > 0) { ms.err | halt }
  108.   :back
  109.   sockread %ms.read
  110.   if ($sockbr == 0) return
  111.   ms.process %ms.read
  112.   goto back
  113. }
  114. on 1:sockclose:MSERVER {
  115.   if ($sockerr > 0) { ms.err | halt }
  116.   if ($window(@StatusáWindow) != $null) { echo $clr(info) @StatusáWindow *** Disconnected }
  117.   ms.unload
  118. }
  119. ;Unloading MServer
  120. alias ms.unload unset %ms.* | winclose @banálist @links @list | .sockclose MSERVER
  121. ; Send data directly to server
  122. alias ms.toserver {
  123.   if ($sock(MSERVER,1) == $null) { ms.e $clr(info) *** Not connected to server | halt }
  124.   sockwrite -tn MSERVER $1-
  125. }
  126. ;Channel control
  127. alias ms.opdv {
  128.   if ($1 == 1) {
  129.     if ($sline($active,0) == 0) { return }
  130.     if ($sline($active,0) > 1) { return $2 Selected $+ $3 }
  131.     if ($sline($active,0) < 2) { return $2 $+ $3 }
  132.   }
  133.   unset %ms.rs*
  134.   if ($1 isnum 2-5) { set %ms.cont mode $mid($active,2,999) | set %ms.rs $2 }
  135.   if ($1 == 6) { set %ms.cont kick $mid($active,2,999) | set %ms.rs2 $2- }
  136.   set %ms.count 0
  137.   :next
  138.   inc %ms.count | if (%ms.count > $sline($active,0)) { halt }
  139.   if ($mid($sline($active,%ms.count),1,1) == @) || ($mid($sline($active,%ms.count),1,1) == +) { ms.toserver %ms.cont %ms.rs $mid($sline($active,%ms.count),2,999) %ms.rs2 }
  140.   else ms.toserver %ms.cont %ms.rs $sline($active,%ms.count) %ms.rs2
  141.   goto next
  142. }
  143. ;Error alias for different situations.
  144. alias ms.err {
  145.   ms.e $clr(info) The M-Server has encountered an error connecting to %ms.server
  146.   ms.e $clr(info) Possible Causes:
  147.   ms.e $clr(info) 1. Connection to the server timed out.
  148.   ms.e $clr(info) 2. You tried to connect to an invalid server port.
  149.   ms.e $clr(info) 3. You tried to connect to an invalid server.
  150.   ms.e $clr(info) Please try one of the following:
  151.   ms.e $clr(info) 1. Connect again to a different port.
  152.   ms.e $clr(info) 2. Connect again to a different server.
  153.   ms.e $clr(info) 3. Connect again at a later time.
  154.   ms.unload
  155. }
  156. ;MServer help
  157. alias mshelp {
  158.   wincheck @MServeráHelp @MServeráHelp $center(540,320,@MServeráHelp) $wh(540,320,@MServeráHelp) @MServeráHelp Comic Sans MS 12
  159.   loadbuf -p @MServeráHelp $scriptdir $+ mserver.chf
  160.   sline @MServeráHelp 14 | window -b @MServeráHelp
  161. }
  162. ;Parsing of incoming data from server
  163. alias ms.process {
  164.   ;Numerics
  165.   if ($group(#rawecho) == on) {
  166.     if ($2 == 311) { ms.e $clr(info) å) Whois Reply: $+ $clr(info2) $4 ( $+ $5 $+ @ $+ $6 $+ ) | ms.e $clr(info) å) IRC Name: $+ $clr(info2) $ms.col($8-) | halt }
  167.     if ($2 == 319) { set %chans $ms.col($5-) | halt }
  168.     if ($2 == 307) { ms.e $clr(info) å)  $3 is a Registered NickName | halt }
  169.     if ($2 == 312) { ms.e $clr(info) å) Channels: $+ $clr(info2) $var(None,%chans)  $+ $clr(info) $+ Server: $+ $clr(info2) $5 | unset %chans | halt }
  170.     if ($2 == 301) { if ($3 == $me) { halt } | else { ms.e $clr(info) å) $4 is Away: $ms.col($5-) | halt } }
  171.     if ($2 == 310) { ms.e $clr(info) å) $4 $ms.col($5-) | halt }
  172.     if ($2 == 313) { ms.e $clr(info) å) $4 $ms.col($5-) | halt }
  173.     if ($2 == 309) { ms.e $clr(info) å) $4 $ms.col($5-) | halt }
  174.     if ($2 == 308) { ms.e $clr(info) å) $4 $ms.col($5-) | halt }
  175.     if ($2 == 314) { ms.e $clr(info) å) WhoWas reply for: $+ $clr(info2) $4 ( $+ $5 $+ @ $+ $6 $+ ) | ms.e $clr(info) å) Name: $+ $clr(info2) $ms.col($8-) | halt }
  176.     if ($2 == 317) { ms.e $clr(info) å) Idle Time: $+ $clr(info2) $duration($calc($ctime - $6)) | halt }
  177.     if ($2 == 318) { linesep @statusáwindow | halt }
  178.     if ($2 == 369) { linesep @statusáwindow | halt }
  179.     if ($2 == 421) { ms.e $clr(info) å) Unknown command: $+ $clr(info2) $4 | halt }
  180.     if ($2 == 401) { ms.e $clr(info) å) No such nick: $+ $clr(info2) $4 | halt }
  181.     if ($2 == 402) { ms.e $clr(info) å) No such server: $+ $clr(info2) $4 | halt }
  182.     if ($2 == 403) { ms.e $clr(info) å) No such channel: $+ $clr(info2) $4 | halt }
  183.     if ($2 == 404) { ms.e $clr(info) å) Cannot send to channel | halt }
  184.     if ($2 == 406) { ms.e $clr(info) å) There was no such nickname: $+ $clr(info2) $4 | halt }
  185.     if ($2 == 433) { if ($4 == $readini mirc.ini mirc anick) { editbox @statusáwindow /nick } | ms.e $clr(info) å) NickName already in use: $+ $clr(info2) $4 | set %ms.nniu 1 }
  186.     if ($2 == 472) { ms.e $clr(info) å) Unknown mode: $+ $clr(info2) $4 | halt }
  187.     if ($2 == 501) { ms.e $clr(info) å) Unknown mode flag | halt }
  188.   }
  189.   if ($2 == 001) { set %ms.server $ms.col($gettok($1,1,32)) | sockmark mserver $gettok($gettok($4-,$calc($count($4-,$chr(32)) + 1),32),1,33) | ms.title }
  190.   if ($2 == 221) { set %ms.mode $4 | ms.title | halt }
  191.   if ($2 == 321) { wincheck @list -sl @List $center(741,250,@list) $wh(741,250,@List) @list comic sans ms 12 | halt }
  192.   if ($2 == 322) { aline @List $4 ááááá $5 ááááá $ms.col($6) $7- | if (%ms.lstwld isin $4-) { aline @List $4 ááááá $5 ááááá $ms.col($6) $7- } | halt }
  193.   if ($2 == 323) { window -b @List | ms.e $clr(info) *** End of /list | halt } 
  194.   if ($2 == 324) { titlebar $ms.w($4) [ $+ $5 $+ ]: $gettok($window($ms.w($4)).titlebar,2-999,32) | halt }
  195.   if ($2 == 329) || ($2 == 331) { halt }
  196.   if ($2 == 332) { titlebar $ms.w($4) $gettok($window($ms.w($4)).titlebar,1,58) $+ : $ms.col($5-) | echo $clr(info2) $ms.w($4) *** Topic is ' $+ $ms.col($5-) $+ ' | halt }
  197.   if ($2 == 333) { echo $clr(info2) $ms.w($4) *** Set by $5 on $asctime($6) | halt }
  198.   if ($2 == 353) {
  199.     if (%ms.names != $null) {
  200.       set %ms.list $ms.col($6-) | set %ms.count 0
  201.       :nn
  202.       inc %ms.count | if ($gettok(%ms.list,%ms.count,32) == $null) { goto nnend }
  203.       aline -l %ms.names $gettok(%ms.list,%ms.count,32)
  204.       goto nn
  205.       :nnend
  206.       halt
  207.     } 
  208.   }
  209.   if ($2 == 364) { set %ms.temp $remove($6,:) | inc %ms.temp | iline @LinksáList 1 $str($remove($6,:),á) $4 ( $+ $remove($6,:) $+ ) $7- | halt }
  210.   if ($2 == 365) { ms.e $clr(info) *** End of Links list | halt }
  211.   if ($2 == 366) { if (%ms.names != $null) { unset %ms.names | halt } }
  212.   if ($2 == 367) {
  213.     if ($window(@BanáList).state == $null) { wincheck @BanáList -l @BanáList $center(330,100,@banálist) $wh(330,100,@banálist) @banálist comic sans ms 12 }
  214.     aline @Banálist $4 $+ á $+ $5 $+ á-- Set by $6 on $asctime($7)
  215.     halt
  216.   }
  217.   if ($2 == 368) { if ($window(@banálist).state == $null) { ms.e $clr(info2) *** No bans on $4 } | halt }
  218.   if ($2 == 433) { if ($3 == *) && ($sock(mserver).mark != $readini mirc.ini mirc anick) { sockmark mserver $readini mirc.ini mirc anick | ms.title | ms.toserver NICK $readini mirc.ini mirc anick | goto 433 } | if ($3 == *) && ($sock(mserver).mark == +)  { editbox @statusáwindow /nick } | :433 | if (%ms.nniu != $null) { unset %ms.nniu | halt } }
  219.   if ($2 isnum) { ms.e $clr(normal) $ms.col($4-) }
  220.   ;Non-numerics
  221.   if ($2 == INVITE) { ms.e $clr(info2) *** $ms.col($gettok($1,1,$asc(!))) ( $+ $gettok($1,2,$asc(!)) $+ ) has invited you to join $ms.col($4) | halt }
  222.   if ($1 == ERROR) { ms.e $clr(info2) *** ERROR: $ms.col($2-) | halt }
  223.   if ($1 == PING) { sockwrite -n mserver PONG $2 | halt }
  224.   if ($2 == NICK) {
  225.     if ($ms.col($gettok($1,1,$asc(!))) == $sock(mserver).mark) { sockmark mserver $ms.col($3) | ms.title | ms.e $clr(info2) *** Your nick is now $ms.col($3) }
  226.     ms.nick $ms.col($gettok($1,1,$asc(!))) $ms.col($3)
  227.     halt
  228.   }
  229.   if ($2 == NOTICE) {
  230.     if ($chr(35) !isin $3) { if ($chr(1) isin $4) { if (PING isin $4) { set %ms.rem $remove($5,$chr(1)) | ms.e $clr(ctcp) [ $+ $ms.col($gettok($1,1,$asc(!))) $ms.col($ms.col($4)) reply]: $calc( ($ticks - [ %ms.rem ] ) / 1024) seconds | halt } | ms.e $clr(ctcp) [ $+ $ms.col($gettok($1,1,$asc(!))) $ms.col($ms.col($4)) reply]: $remove($5-,$chr(1)) | halt } | ms.e $clr(notice) - $+ $ms.col($gettok($1,1,$asc(!))) $+ - $ms.col($4) $5- | halt }   
  231.     if ($mid($3,2,1) == $chr(35)) { echo $clr(notice) $3 - $+ $ms.col($gettok($1,1,$asc(!))) $+ : $+ $3 $+ - $ms.col($4) $5- }
  232.     else ms.e $clr(notice) - $+ $ms.col($gettok($1,1,$asc(!))) $+ : $+ $3 $+ - $ms.col($4) $5-
  233.     halt
  234.   }
  235.   if ($2 == PRIVMSG) {
  236.     if (($chr(1) isin $4) && ($4 != : $+ $chr(1) $+ ACTION)) { 
  237.       unset %ms.fr
  238.       if (($chr(1) isin $4) && ($chr(35) isin $3)) { set %ms.fr : $+ $3 }
  239.       if ($4 == : $+ $chr(1) $+ VERSION $+ $chr(1)) {       
  240.         ms.e $clr(ctcp) [ $+ $ms.col($gettok($1,1,$asc(!))) $+ %ms.fr VERSION]
  241.         sockwrite -n mserver NOTICE $ms.col($gettok($1,1,$asc(!))) : $+ $chr(1) $+ VERSION %ms.vers
  242.         halt 
  243.       }
  244.       if ($4 == : $+ $chr(1) $+ PING) {
  245.         ms.e $clr(ctcp) [ $+ $ms.col($gettok($1,1,$asc(!))) $+ %ms.fr PING]
  246.         sockwrite -n mserver NOTICE $ms.col($gettok($1,1,$asc(!))) : $+ $chr(1) $+ PING $5 $+ $chr(1)
  247.         halt 
  248.       }
  249.       if ($4 == : $+ $chr(1) $+ USERINFO $+ $chr(1)) {
  250.         ms.e $clr(ctcp) [ $+ $ms.col($gettok($1,1,$asc(!))) $+ %ms.fr USERINFO]
  251.         sockwrite -n mserver NOTICE $ms.col($gettok($1,1,$asc(!))) : $+ $chr(1) $+ USERINFO %ms.vers
  252.         halt 
  253.       }
  254.       if ($4 == : $+ $chr(1) $+ CLIENTINFO $+ $chr(1)) {
  255.         ms.e $clr(ctcp) [ $+ $ms.col($gettok($1,1,$asc(!))) $+ %ms.fr CLIENTINFO]
  256.         sockwrite -n mserver NOTICE $ms.col($gettok($1,1,$asc(!))) : $+ $chr(1) $+ CLIENTINFO %ms.vers
  257.         halt 
  258.       }
  259.       if ($4 == : $+ $chr(1) $+ TIME $+ $chr(1)) {
  260.         ms.e $clr(ctcp) [ $+ $ms.col($gettok($1,1,$asc(!))) $+ %ms.fr TIME]
  261.         sockwrite -n mserver NOTICE $ms.col($gettok($1,1,$asc(!))) : $+ $chr(1) $+ TIME $atime $+ $chr(1)
  262.         halt 
  263.       }
  264.       if ($4 == : $+ $chr(1) $+ FINGER $+ $chr(1)) {
  265.         ms.e $clr(ctcp) [ $+ $ms.col($gettok($1,1,$asc(!))) $+ %ms.fr FINGER ]
  266.         sockwrite -n mserver NOTICE $ms.col($gettok($1,1,$asc(!))) : $+ $chr(1) $+ FINGER %ms.vers
  267.         halt 
  268.       }
  269.     }
  270.     if ($chr(35) !isin $3) {
  271.       if ($4 == : $+ $chr(1) $+ ACTION) { echo $clr(action) $ms.w($ms.col($gettok($1,1,$asc(!))),$ms.col($gettok($1,2,$asc(!)))) * $ms.col($gettok($1,1,$asc(!))) $remove($5-,$chr(1)) | halt }
  272.       if ($chr(1) isin $4) { 
  273.         if ($4 == : $+ $chr(1) $+ DCC) {
  274.           ms.e $clr(ctcp) [ $+ $ms.col($gettok($1,1,$asc(!))) DCC]
  275.           .raw PRIVMSG $me $4-
  276.           halt 
  277.         }
  278.         ms.e $clr(ctcp) [ $+ $ms.col($gettok($1,1,$asc(!))) $ms.col($ms.col($4)) $+ ] $remove($5-,$chr(1))
  279.         halt 
  280.       }
  281.       echo $clr(normal) $ms.w($ms.col($gettok($1,1,$asc(!))),$ms.col($gettok($1,2,$asc(!)))) < $+ $ms.col($gettok($1,1,$asc(!))) $+ > $ms.col($4-)
  282.       halt
  283.     }
  284.     if ($4 == : $+ $chr(1) $+ ACTION) { echo $clr(action) $ms.w($3) * $ms.col($gettok($1,1,$asc(!))) $remove($5-,$chr(1)) | halt }
  285.     if ($chr(1) isin $4) { 
  286.       ms.e $clr(ctcp) $chr(91) $+ $ms.col($gettok($1,1,$asc(!))) $remove(%ms.fr,:) $ms.col($ms.col($remove($4,$chr(1)))) $+ $chr(93) $remove($5-,$chr(1))
  287.       halt 
  288.     }
  289.     if ($mid($3,1,1) == @) { echo $3 * $+ $ms.col($gettok($1,1,$asc(!))) $+ : $+ $3 $+ * $ms.col($4) $5- | halt }
  290.     echo $clr(normal) $ms.w($3,$ms.col($gettok($1,1,$asc(!)))) < $+ $ms.col($gettok($1,1,$asc(!))) $+ > $ms.col($4) $5-
  291.     halt
  292.   }
  293.   if ($2 == QUIT) {
  294.     ms.e $clr(info) *** $ms.col($gettok($1,1,$asc(!))) has quit IRC ( $+ $4- $+ ) | set %ms.count1 0 | set %ms.count2 $window(0)
  295.     :quit
  296.     inc %ms.count1 | if (%ms.count1 > %ms.count2) { goto quite }
  297.     if (@#* iswm $window(%ms.count1)) { set %ms.nq quit | ms.rem $window(%ms.count1) $ms.col($gettok($1,1,$asc(!))) $4- }
  298.     goto quit
  299.     :quite
  300.     unset %ms.nq
  301.     halt
  302.   }
  303.   if ($2 == KICK) {
  304.     if ($4 == $sock(mserver).mark) {
  305.       ms.e $clr(info2) *** You were kicked from $3 by $ms.col($gettok($1,1,$asc(!))) ( $+ $ms.col($5-) $+ )   
  306.       window -c $ms.w($3)
  307.       halt
  308.     }    
  309.     echo $clr(info2) $ms.w($3) *** $4 was kicked by $ms.col($gettok($1,1,$asc(!))) ( $+ $ms.col($5-) $+ )   
  310.     ms.rem $ms.w($3) $4
  311.   }
  312.   if ($2 == JOIN) {    
  313.     if ($ms.col($gettok($1,1,$asc(!))) == $sock(mserver).mark) {
  314.       set %ms.names @ $+ $ms.col($3)
  315.       wincheck %ms.names -esl11 %ms.names $rand(0,200) $rand(0,200) 570 220 @mschan $winfont
  316.       echo $clr(info2) $ms.w($ms.col($3)) *** Now talking in $ms.col($3) | titlebar %ms.names [+]: | sockwrite -n mserver MODE $ms.col($3)
  317.       halt
  318.     }
  319.     echo $clr(info2) $ms.w($ms.col($3)) *** $ms.col($gettok($1,1,$asc(!))) ( $+ $gettok($1,2,$asc(!)) $+ ) has joined $ms.col($3)
  320.     aline -l @ $+ $ms.col($3) $ms.col($gettok($1,1,$asc(!)))
  321.     halt
  322.   }
  323.   if ($2 == PART) {
  324.     if ($ms.col($gettok($1,1,$asc(!))) == $sock(mserver).mark) { window -c $ms.w($3) | halt }
  325.     if ($4 != $null) { echo $clr(info2) $ms.w($3) *** $ms.col($gettok($1,1,$asc(!))) ( $+ $ms.col($gettok($1,2,$asc(!))) $+ ) has left $3 ( $+ $ms.col($4-) $+ ) }
  326.     else { echo $clr(info2) $ms.w($3) *** $ms.col($gettok($1,1,$asc(!))) ( $+ $ms.col($gettok($1,2,$asc(!))) $+ ) has left $3 }
  327.     unset %ms.nq | ms.rem $ms.w($3) $ms.col($gettok($1,1,$asc(!))) | halt
  328.   }
  329.   if ($2 == TOPIC) { titlebar $ms.w($3) $gettok($window($ms.w($3)).titlebar,1,32) $ms.col($4-) | echo $clr(info2) $ms.w($3) *** $ms.col($gettok($1,1,$asc(!))) changes topic to ' $+ $ms.col($4-) $+ ' | halt }
  330.   if ($2 == MODE) {
  331.     if ($left($3,1) == $chr(35)) {
  332.       echo $clr(mode) $ms.w($3) *** $ms.col($gettok($1,1,$asc(!))) sets mode: $ms.col($4-)
  333.       set %ms.mode 0 | set %ms.vo 0
  334.       :mode
  335.       inc %ms.mode | if ($mid($4,%ms.mode,1) == $null) { goto modend }
  336.       if ($mid($4,%ms.mode,1) == +) { set %ms.type + }
  337.       if ($mid($4,%ms.mode,1) == -) { set %ms.type - }
  338.       if ($mid($4,%ms.mode,1) == b) { inc %ms.vo }
  339.       if ($mid($4,%ms.mode,1) == o) {
  340.         inc %ms.vo | ms.rem $ms.w($3) $gettok($5-,%ms.vo,32)
  341.         if (%ms.type == +) { aline -l $ms.w($3) @ $+ $gettok($5-,%ms.vo,32) }
  342.         else aline -l $ms.w($3) $gettok($5-,%ms.vo,32)
  343.       }
  344.       if ($mid($4,%ms.mode,1) == v) {
  345.         inc %ms.vo
  346.         if ($ms.op($ms.w($3),$gettok($5-,%ms.vo,32)) == $null) {
  347.           ms.rem $ms.w($3) $gettok($5-,%ms.vo,32)
  348.           if (%ms.type == +) { aline -l $ms.w($3) + $+ $gettok($5-,%ms.vo,32) }
  349.           else aline -l $ms.w($3) $gettok($5-,%ms.vo,32)
  350.         }
  351.       }
  352.       goto mode
  353.       :modend
  354.     }
  355.     else ms.e $clr(mode) *** $ms.col($gettok($1,1,$asc(!))) sets mode: $ms.col($4-)
  356.     sockwrite -n mserver MODE $3
  357.   } 
  358.   halt
  359. }
  360. ;Echos all information to the status window
  361. alias ms.e echo $1 @statusáwindow $2-
  362. ;Returns all information accept the first letter
  363. alias ms.col {
  364.   if ($mid($1,1,1) == :) { return $mid($1-,2,9999) }
  365.   if ($mid($2,1,1) == :) { return $1 $mid($2-,2,9999) }
  366.   return $1-
  367. }
  368. ;Sends a message
  369. alias ms.sendmsg {
  370.   if ($left($active,2) == @#) { ms.toserver PRIVMSG $mid($active,2,999) : $+ $1- | echo $active < $+ $sock(mserver).mark $+ > $1- }
  371.   if ($left($active,2) == @á) { ms.toserver PRIVMSG $mid($active,3,999) : $+ $1- | echo $active < $+ $sock(mserver).mark $+ > $1- }
  372. }
  373. ;Returns the proper window name
  374. alias ms.w {
  375.   if ($mid($1,1,1) == $chr(35)) { return @ $+ $1 }
  376.   if ($mid($1,1,1) == @) { return $1 }
  377.   else {
  378.     set %ms.w @á $+ $1
  379.     if ($window(%ms.w).state == $null) { window -e @á $+ $1 $rand(0,200) $rand(0,200) 400 120 @msquery $winfont }
  380.     titlebar @á $+ $1 ( $+ $2- $+ ) | return @á $+ $1
  381.   }
  382. }
  383. ;Removes a line from the channel list
  384. alias ms.rem {
  385.   set %ms.lines $line($1,0,1) | set %ms.count 0
  386.   :next
  387.   inc %ms.count | if (%ms.count > %ms.lines) { goto end }
  388.   set %ms.read $line($1,%ms.count,1) | unset %ms.str
  389.   if ($remove($remove(%ms.read,+),@) == $2) {
  390.     if (@ isin %ms.read) { set %ms.str @ } | if (+ isin %ms.read) { set %ms.str + }
  391.     dline -l $1 %ms.count
  392.     if (%ms.nq == nick) { echo $clr(info2) $1 *** $2 is now known as $3 | aline -l $1 %ms.str $+ $3 }
  393.     if (%ms.nq == quit) { echo $clr(info) $1 *** $2 has quit IRC ( $+ $3- $+ ) }
  394.     goto end
  395.   }
  396.   goto next
  397.   :end
  398. }
  399. ;Nick change
  400. alias ms.nick {
  401.   set %ms.count2 $window(0) | set %ms.count1 0 | set %ms.nq nick
  402.   :next
  403.   inc %ms.count1 | if (%ms.count1 > %ms.count2) { goto end }
  404.   if (@#* iswm $window(%ms.count1)) { ms.rem $window(%ms.count1) $1 $2 }
  405.   goto next
  406.   :end
  407.   unset %ms.nq
  408. }
  409. ;@Status Window titlebar
  410. alias ms.title titlebar @StatusáWindow $sock(mserver).mark $chr(91) $+ %ms.mode $+ $chr(93)  on %ms.server (Port: $sock(mserver).port $+ )
  411. ;Closes all windows
  412. alias ms.closeall {
  413.   set %ms.count 0
  414.   :next
  415.   inc %ms.count | if (%ms.count > $window(0)) { goto end }
  416.   if (@#* iswm $window(%ms.count)) || (@á* iswm $window(%ms.count)) { window -c $window(%ms.count) }
  417.   goto next
  418.   :end
  419. }
  420. ;Links
  421. alias ms.linkscon {
  422.   if ($chr(91) isin $gettok($sline(@LinksáList,1),2,32)) { ms.server 1 $remove($remove($gettok($sline(@LinksáList,1),2,32),$chr(93)),$chr(91)) 6667 | goto done }
  423.   if ($chr(91) isin $gettok($sline(@LinksáList,1),3,32)) { ms.server 1 $remove($remove($gettok($sline(@LinksáList,1),3,32),$chr(93)),$chr(91)) 6667 | goto done }
  424.   if ($chr(91) isin $gettok($sline(@LinksáList,1),4,32)) { ms.server 1 $remove($remove($gettok($sline(@LinksáList,1),4,32),$chr(93)),$chr(91)) 6667 | goto done }
  425.   if ($chr(46) isin $gettok($sline(@LinksáList,1),2,32)) { ms.server 1 $gettok($sline(@LinksáList,1),2,32) 6667 | goto done }
  426.   else { ms.e $clr(info) *** Unable to resolve DNS for $gettok($sline(@LinksáList,1),2,32) | goto done }
  427.   :done
  428. }
  429. alias ms.server {
  430.   ms.unload | ms.closeall | wincheck @StatusáWindow -e @StatusáWindow $center(600,200,@statusáwindow) $wh(600,200,@statusáwindow) @statusáwindow $winfont | titlebar @StatusáWindow
  431.   if ($2 == $null) { set %ms.server $server }
  432.   else { set %ms.server $2 }
  433.   if ($3 isnum) { sockopen mserver %ms.server $3 | echo $clr(info) @statusáwindow *** Connecting to %ms.server ( $+ $3 $+ ) }
  434.   else { sockopen mserver %ms.server 6667 | echo $clr(info) @statusáwindow *** Connecting to %ms.server (6667) }
  435.   set %ms.vers Multi-Server v2.0 - www.C-Script.com | halt
  436. }
  437. alias ms.op {
  438.   set %ms.count4 0
  439.   :next
  440.   inc %ms.count4 | if (%ms.count4 > $line($1,0,1)) { goto end }
  441.   set %ms.read $line($1,%ms.count4,1)
  442.   if ($mid(%ms.read,1,1) == @) && (@ $+ $2 == %ms.read) { return 1 }
  443.   goto next
  444.   :end
  445.   return
  446. }
  447. alias ms.banlist {
  448.   set %ms.count 0
  449.   :next
  450.   inc %ms.count | if (%ms.count > $sline(@banálist,0)) { goto end }
  451.   ms.toserver mode $gettok($sline(@banálist,%ms.count),1,160) -b $gettok($sline(@banálist,%ms.count),2,160)
  452.   goto next
  453.   :end
  454. }
  455. alias mserver ms.server server $1-
  456.