mIRC MUD Client Script — File Browser

mIRCMUDClientScriptv1.6b / mIRCMUDClientScriptv1.6b / Mudclient / Mudclient.mrc

Mudclient.mrc — 35.69 KB — Download this file

;==========================================================
;  mIRC MUD Client Script Version 1.6b
;  By Brenton Scott aka Trixar_za
;  http://www.trixarian.co.cc
;
;  Multi-Space Support:
;     spaces.dll v1.1 - multi-space support DLL for mIRC
;     Copyright (c) 2005-2009, David van Moolenbroek
;                              http://www.xise.nl/mirc/
;
;==========================================================

;=========
; Loading
;=========
on *:LOAD:{
  if ($version < 6.20) {
    echo -
    echo 4 WARNING:
    echo -
    echo MUDClient might not function correctly with your copy of mIRC!
    echo Please update to the latest mIRC from http://www.mirc.com
    echo -
  }
  if (!%mud.address) { %mud.address = mud.wormhole.se }
  if (%mud.winreopen) { unset %mud.winreopen }
  if (!%mud.port) { %mud.port = 4000 }
  if (!%mud.numwalk) { %mud.numwalk = 1 }
  if (!%mud.tbarhide) { %mud.tbarhide = 1 }
  if (!%mud.colourdot) { %mud.colourdot = on }
  if (!%mud.echodot) { %mud.echodot = on }
  if (!%mud.quitdot) { %mud.quitdot = off }
  if (!%mud.returndot) { %mud.returndot = off }
  if (!%mud.font) { %mud.font = FixedSys }
  if (!%mud.fontsize) {
    if (%mud.font == FixedSys) || (%mud.font == Courier) { %mud.fontsize = 9 }
    else { %mud.fontsize = 14 }
  }
  if ((!%mud.logdot) && (%mud.logging)) { %mud.logdot = on }
  if ((!%mud.logdot) && (!%mud.logging)) { %mud.logdot = off }
  if ((!%mud.tbarhidedot) && (%mud.tbarhide)) { %mud.tbarhidedot = on }
  if ((!%mud.tbarhidedot) && (!%mud.tbarhide)) { %mud.tbarhidedot = off }
  if ((!%mud.numdot) && (%mud.numwalk)) { %mud.numdot = on }
  if ((!%mud.numdot) && (!%mud.numwalk)) { %mud.numdot = off }
  if ((!%mud.keeptexton) && (!%mud.keeptext)) { %mud.keeptextdot = off }
  if ((!%mud.keeptexton) && (%mud.keeptext)) {
    %mud.keeptextdot = off
    unset %mud.keeptext
  }
  if ((!%mud.fontdot1) && (%mud.font == FixedSys)) { %mud.fontdot1 = $chr(171) }
  if ((!%mud.spacedef) && (!%mud.spaceoff) && (!%mud.spacealt)) { %mud.spacedef = $chr(171) }
  if ((!%mud.quit) || (%mud.quit != quit)) { %mud.quit = quit }
  if ((!%mud.return) || (%mud.return != $lf)) { %mud.return = $lf }
  if ((!%mud.aldot) && (!%mud.name) && (!%mud.password)) { %mud.aldot = is not set }
  if ((!%mud.aldot) && (%mud.name) && (!%mud.password)) { %mud.aldot = is not set }
  if ((!%mud.aldot) && (%mud.name) && (%mud.password)) { %mud.aldot = is set }
  if ((!%mud.saydot) && (!%mud.saymode)) { %mud.saydot = off }
  if ((!%mud.saydot) && (%mud.saymode)) { %mud.saydot = on }
  if ((!%mud.logpath2) && (%mud.logging)) { %mud.logpath2 = $sdir($logdir) }
}

;=======
; Menus
;=======
menu status,channel,query {
  MUDclient
  .Connect:{
    if (!%mud.enter) { %mud.enter = 1 }
    dialog -ma MUDclient MUDclient
  }
  .-
  .Features
  ..Global Logging
  ...Global Logging %mud.logdot:{
    if (!%mud.logging) {
      if (!%mud.logpath2) { %mud.logpath2 = $sdir($logdir) }
      set %mud.logging 1
      set %mud.logdot on
      halt
    }
    else {
      unset %mud.logging
      set %mud.logdot off
      halt
    }
  }
  ...-
  ...Set Logging Path:{
    if (!%mud.logpath2) { %mud.logpath2 = $sdir($logdir) }
    else { %mud.logpath2 = $sdir($qt(%mud.logpath2)) }
    halt
  }
  ..Auto-login %mud.aldot:dialog -m Autologin Autologin
  ..Command Locking %mud.saydot:{
    if (!%mud.saymode) {
      var %mud.jset $?="What command do you want to lock?"
      if (%mud.jset) {
        set %mud.saymode %mud.jset
        set %mud.saydot on
        halt
      }
      else { halt }
    }
    else {
      unset %mud.saymode
      set %mud.saydot off
      halt
    }
  }
  ..Numpad Walking %mud.numdot:{
    if (!%mud.numwalk) {
      set %mud.numwalk 1
      set %mud.numdot on
      halt
    }
    else {
      unset %mud.numwalk
      set %mud.numdot off
      halt
    }
  }
  ..Keep Sent Text %mud.keeptextdot:{
    if (!%mud.keeptexton) {
      set %mud.keeptexton 1
      set %mud.keeptextdot on
      halt
    }
    else {
      unset %mud.keeptexton
      unset %mud.keeptext
      set %mud.keeptextdot off
      halt
    }
  }
  .Settings
  ..Font
  ...Default Font %mud.fontdot1:{
    set %mud.fontdot1 $chr(171)
    set %mud.font FixedSys
    set %mud.fontsize 9
    unset %mud.fontdot2 %mud.fontdot3 %mud.fontdot4
  }
  ...-
  ...Courier %mud.fontdot2:{
    set %mud.fontdot2 $chr(171)
    set %mud.font Courier
    set %mud.fontsize 9
    unset %mud.fontdot1 %mud.fontdot3 %mud.fontdot4
  }
  ...Courier New %mud.fontdot3:{
    set %mud.fontdot3 $chr(171)
    set %mud.font Courier New
    set %mud.fontsize 14
    unset %mud.fontdot1 %mud.fontdot2 %mud.fontdot4
  }
  ...Lucida Console %mud.fontdot4:{
    set %mud.fontdot4 $chr(171)
    set %mud.font Lucida Console
    set %mud.fontsize 14
    unset %mud.fontdot1 %mud.fontdot2 %mud.fontdot3
  }
  ..Compatibility
  ...Input Echoing %mud.echodot:{
    if (%mud.noecho) {
      unset %mud.noecho
      %mud.echodot = on
    }
    else {
      %mud.noecho = 1
      %mud.echodot = off
    }
  }
  ...MUCK QUIT %mud.quitdot:{
    if (%mud.quit == quit) {
      set %mud.quit QUIT
      set %mud.quitdot on
    }
    else {
      set %mud.quit quit
      set %mud.quitdot off
    }
  }
  ...CRLF Return %mud.returndot:{
    if (%mud.return == $lf) {
      set %mud.return $crlf
      set %mud.returndot on
    }
    else {
      set %mud.return $lf
      set %mud.returndot off
    }
  } 
  ..Colour
  ...Auto-Set Colours %mud.colourdot:{
    %mud.colourdot = on
    unset %mud.customcolour %mud.customwhitedot %mud.customblackdot %mud.customstripdot %mud.clearviewdot
    if ($color(background) == 0 || $color(background) == 15) {
      %mud.colour = 1
      %mud.bn = 99,01
      %mud.bn2 = 01,00
      %mud.by = 99,08
      %mud.by2 = 99,07
      %mud.bm = 99,13
      %mud.bm2 = 99,06
      %mud.bw = 99,15
      %mud.bw2 = 99,01
    }
    else {
      %mud.colour = 15
      %mud.bn = 99,01
      %mud.bn2 = 15,01
      %mud.bw = 99,15
      %mud.bw2 = 01,15
      %mud.bm = 99,13
      %mud.bm2 = 99,06
    }
  }
  ...-
  ...White Backgrounds %mud.customwhitedot:{
    %mud.colourdot = off
    %mud.customwhitedot = $chr(171)
    %mud.customcolour = 1
    %mud.colour = 1
    %mud.bn = 99,01
    %mud.bn2 = 01,00
    %mud.by = 99,08
    %mud.by2 = 99,07
    %mud.bm = 99,13
    %mud.bm2 = 99,06
    %mud.bw = 99,15
    %mud.bw2 = 99,01
    unset %mud.customblackdot %mud.customstripdot %mud.clearviewdot
  }
  ...Black Backgrounds %mud.customblackdot:{
    %mud.colourdot = off
    %mud.customblackdot = $chr(171)
    %mud.customcolour = 15
    %mud.colour = 15
    %mud.bn = 99,01
    %mud.bn2 = 15,01
    %mud.bw = 99,15
    %mud.bw2 = 01,15
    %mud.bm = 99,13
    %mud.bm2 = 99,06
    unset %mud.customwhitedot %mud.customstripdot %mud.clearviewdot
  }
  ...Clearview Colours %mud.clearviewdot:{
    %mud.colourdot = off
    %mud.clearviewdot = $chr(171)
    %mud.bm = 99,13
    %mud.bm2 = 99,06
    %mud.customcolour = clearview
    unset %mud.colour %mud.customwhitedot %mud.customstripdot %mud.customblackdot
  }
  ...-
  ...Strip All The Colours %mud.customstripdot:{
    %mud.colourdot = off
    %mud.customstripdot = $chr(171)
    %mud.customcolour = strip
    unset %mud.colour %mud.customwhitedot %mud.customblackdot %mud.clearviewdot
  }
  ..Spacing
  ...Default %mud.spacedef:{
    %mud.spacedef = $chr(171)
    unset %mud.spacealt %mud.spaceoff %mud.spacing
  }
  ...Alternitive %mud.spacealt:{
    set %mud.spacing 1
    %mud.spacealt = $chr(171)
    unset %mud.spaceoff %mud.spacedef
  }
  ...-
  ...Disabled %mud.spaceoff:{
    set %mud.spacing 1
    %mud.spaceoff = $chr(171)
    unset %mud.spacealt %mud.spacedef
  }
  ..Tabbar
  ...Tabbar Auto-Hide %mud.tbarhidedot:{
    if (!%mud.tbarhide) {
      set %mud.tbarhide 1
      set %mud.tbarhidedot on
      halt
    }
    else {
      unset %mud.tbarhide
      set %mud.tbarhidedot off
      halt
    }
  }
  ...Edit Tabbar Defaults:/run notepad.exe $qt($scriptdir $+ \ $+ Mudclienttab.cfg)
  ...-
  ...Refresh All Tabbars:{
    if ($window(@MUDclient*,0)) {
      var %mud.winnum = $window(@MUDclient*,0)
      while (%mud.winnum) {
        var %mud.window = $window(@MUDclient*,%mud.winnum)
        var %mud.i = $calc($lines($qt($scriptdir\MUDclienttab.cfg))+1)
        var %mud.b = 1
        var %mud.gimme = 1
        clear -l %mud.window
        while %mud.b < %mud.i {
          %mud.gimme = $read($qt($scriptdir\MUDclienttab.cfg),%mud.b)
          iline -ln %mud.window %mud.b %mud.gimme
          inc %mud.b
        }
        dec %mud.winnum
      }
    }
  }
  .Other
  ..Docs
  ...Read The Mudclient Manual:/run notepad.exe $qt($scriptdir $+ \ $+ Mudclient Manual.txt)
  ...Read The Mudclient Version list:/run notepad.exe $qt($scriptdir $+ \ $+ Mudclient Version.txt)
  ...Read The Mudclient TODO list:/run notepad.exe $qt($scriptdir $+ \ $+ Mudclient TODO.txt)
  ...Read The Beginner's Guide:/run notepad.exe $qt($scriptdir $+ \ $+ WormholeMUD's Advice for Beginners.txt)
  .-
  .Close All:{
    closemud DCALL
    close -@ @MUDclient*
    halt
  }
  .Disconnect All:closemud DCALL
}

menu @MUDclient* {
  Connect:{
    if (!%mud.enter) { %mud.enter = 1 }
    %mud.address = $gettok($active,2,58)
    %mud.port = $gettok($active,3,58)
    dialog -m MUDclient MUDclient
  }
  -
  Features
  .Global Logging
  ..Global Logging %mud.logdot:{
    if (!%mud.logging) {
      echo -m $active 7GLOBAL LOGGING ON
      if (!%mud.logpath2) { %mud.logpath2 = $sdir($logdir) }
      set %mud.logging 1
      set %mud.logdot on
      halt
    }
    else {
      echo -m $active 7GLOBAL LOGGING OFF
      unset %mud.logging
      set %mud.logdot off
      halt
    }
  }
  ..-
  ..Set Logging Path:{
    if (!%mud.logpath2) { %mud.logpath2 = $sdir($logdir) }
    else { %mud.logpath2 = $sdir($qt(%mud.logpath2)) }
    halt
  }
  .Auto-login %mud.aldot:dialog -m Autologin Autologin
  .Command Locking %mud.saydot:{
    if (!%mud.saymode) {
      var %mud.jset $?="What command do you want to lock?"
      if (%mud.jset) {
        set %mud.saymode %mud.jset
        echo -m $active 7COMMAND LOCKING ON
        set %mud.saydot on
        halt
      }
      else { halt }
    }
    else {
      echo -m $active 7COMMAND LOCKING OFF
      unset %mud.saymode
      set %mud.saydot off
      halt
    }
  }
  .Numpad Walking %mud.numdot:{
    if (!%mud.numwalk) {
      echo -m $active 7NUMPAD WALKING ON
      set %mud.numwalk 1
      set %mud.numdot on
      halt
    }
    else {
      echo -m $active 7NUMPAD WALKING OFF
      unset %mud.numwalk
      set %mud.numdot off
      halt
    }
  }
  .Keep Sent Text %mud.keeptextdot:{
    if (!%mud.keeptexton) {
      set %mud.keeptexton 1
      set %mud.keeptextdot on
      halt
    }
    else {
      unset %mud.keeptexton
      unset %mud.keeptext
      set %mud.keeptextdot off
      halt
    }
  }
  Settings
  .Font
  ..Default Font %mud.fontdot1:{
    set %mud.fontdot1 $chr(171)
    set %mud.font FixedSys
    set %mud.fontsize 9
    unset %mud.fontdot2 %mud.fontdot3 %mud.fontdot4
    font -a %mud.fontsize %mud.font
  }
  ..-
  ..Courier %mud.fontdot2:{
    set %mud.fontdot2 $chr(171)
    set %mud.font Courier
    set %mud.fontsize 9
    unset %mud.fontdot1 %mud.fontdot3 %mud.fontdot4
    font -a %mud.fontsize %mud.font
  }
  ..Courier New %mud.fontdot3:{
    set %mud.fontdot3 $chr(171)
    set %mud.font Courier New
    set %mud.fontsize 14
    unset %mud.fontdot1 %mud.fontdot2 %mud.fontdot4
    font -a %mud.fontsize %mud.font
  }
  ..Lucida Console %mud.fontdot4:{
    set %mud.fontdot4 $chr(171)
    set %mud.font Lucida Console
    set %mud.fontsize 14
    unset %mud.fontdot1 %mud.fontdot2 %mud.fontdot3
    font -a %mud.fontsize %mud.font
  }
  .Compatibility
  ..Input Echoing %mud.echodot:{
    if (%mud.noecho) {
      unset %mud.noecho
      %mud.echodot = on
    }
    else {
      %mud.noecho = 1
      %mud.echodot = off
    }
  }
  ..MUCK QUIT %mud.quitdot:{
    if (%mud.quit == quit) {
      set %mud.quit QUIT
      set %mud.quitdot on
    }
    else {
      set %mud.quit quit
      set %mud.quitdot off
    }
  }
  ..CRLF Return %mud.returndot:{
    if (%mud.return == $lf) {
      set %mud.return $crlf
      set %mud.returndot on
    }
    else {
      set %mud.return $lf
      set %mud.returndot off
    }
  } 
  .Colour
  ..Auto-Set Colours %mud.colourdot:{
    %mud.colourdot = on
    unset %mud.customcolour %mud.customwhitedot %mud.customblackdot %mud.customstripdot %mud.clearviewdot
    if ($color(background) == 0 || $color(background) == 15) {
      %mud.colour = 1
      %mud.bn = 99,01
      %mud.bn2 = 01,00
      %mud.by = 99,08
      %mud.by2 = 99,07
      %mud.bm = 99,13
      %mud.bm2 = 99,06
      %mud.bw = 99,15
      %mud.bw2 = 99,01
    }
    else {
      %mud.colour = 15
      %mud.bn = 99,01
      %mud.bn2 = 15,01
      %mud.bw = 99,15
      %mud.bw2 = 01,15
      %mud.bm = 99,13
      %mud.bm2 = 99,06
    }
  }
  ..-
  ..White Backgrounds %mud.customwhitedot:{
    %mud.colourdot = off
    %mud.customwhitedot = $chr(171)
    %mud.customcolour = 1
    %mud.colour = 1
    %mud.bn = 99,01
    %mud.bn2 = 01,00
    %mud.by = 99,08
    %mud.by2 = 99,07
    %mud.bm = 99,13
    %mud.bm2 = 99,06
    %mud.bw = 99,15
    %mud.bw2 = 99,01
    unset %mud.customblackdot %mud.customstripdot %mud.clearviewdot
  }
  ..Black Backgrounds %mud.customblackdot:{
    %mud.colourdot = off
    %mud.customblackdot = $chr(171)
    %mud.customcolour = 15
    %mud.colour = 15
    %mud.bn = 99,01
    %mud.bn2 = 15,01
    %mud.bw = 99,15
    %mud.bw2 = 01,15
    %mud.bm = 99,13
    %mud.bm2 = 99,06
    unset %mud.customwhitedot %mud.customstripdot %mud.clearviewdot
  }
  ..Clearview Colours %mud.clearviewdot:{
    %mud.colourdot = off
    %mud.clearviewdot = $chr(171)
    %mud.bm = 99,13
    %mud.bm2 = 99,06
    %mud.customcolour = clearview
    unset %mud.colour %mud.customwhitedot %mud.customstripdot %mud.customblackdot
  }
  ..-
  ..Strip All The Colours %mud.customstripdot:{
    %mud.colourdot = off
    %mud.customstripdot = $chr(171)
    %mud.customcolour = strip
    unset %mud.colour %mud.customwhitedot %mud.customblackdot %mud.clearviewdot
  }
  .Spacing
  ..Default %mud.spacedef:{
    %mud.spacedef = $chr(171)
    unset %mud.spacealt %mud.spaceoff %mud.spacing
  }
  ..Alternitive %mud.spacealt:{
    set %mud.spacing 1
    %mud.spacealt = $chr(171)
    unset %mud.spaceoff %mud.spacedef
  }
  ..-
  ..Disabled %mud.spaceoff:{
    set %mud.spacing 1
    %mud.spaceoff = $chr(171)
    unset %mud.spacealt %mud.spacedef
  }
  .Tabbar
  ..Tabbar Auto-Hide %mud.tbarhidedot:{
    if (!%mud.tbarhide) {
      var %mud.window $active
      set %mud.tbarhide 1
      set %mud.tbarhidedot on
      set %mud.winreopen 1
      savebuf 9999 $active $qt($logdirMUD\ $+ $active $+ -tempbuffer.log)
      close -@ %mud.window
      window -HexSl12k[9] +bestxn %mud.window %mud.font %mud.fontsize
      if (%mud.colour) { loadbuf 9999 -pic $+ %mud.colour $active $qt($logdirMUD\ $+ $active $+ -tempbuffer.log) }
      else { loadbuf 9999 -pi $active $qt($logdirMUD\ $+ $active $+ -tempbuffer.log) }
      .remove $qt($logdirMUD\ $+ $active $+ -tempbuffer.log)
      var %mud.i = $calc($lines($qt($scriptdir\MUDclienttab.cfg))+1)
      var %mud.b = 1
      var %mud.gimme = 1
      while %mud.b < %mud.i {
        %mud.gimme = $read($qt($scriptdir\MUDclienttab.cfg),%mud.b)
        iline -ln %mud.window %mud.b %mud.gimme
        inc %mud.b
      }
      halt
    }
    else {
      var %mud.window $active
      unset %mud.tbarhide
      set %mud.tbarhidedot off
      set %mud.winreopen 1
      savebuf 9999 $active $qt($logdirMUD\ $+ $active $+ -tempbuffer.log)
      close -@ %mud.window
      window -exSl12k[9] +bestxn %mud.window %mud.font %mud.fontsize
      if (%mud.colour) { loadbuf 9999 -pic $+ %mud.colour $active $qt($logdirMUD\ $+ $active $+ -tempbuffer.log) }
      else { loadbuf 9999 -pi $active $qt($logdirMUD\ $+ $active $+ -tempbuffer.log) }
      .remove $qt($logdirMUD\ $+ $active $+ -tempbuffer.log)
      var %mud.i = $calc($lines($qt($scriptdir\MUDclienttab.cfg))+1)
      var %mud.b = 1
      var %mud.gimme = 1
      while %mud.b < %mud.i {
        %mud.gimme = $read($qt($scriptdir\MUDclienttab.cfg),%mud.b)
        iline -ln %mud.window %mud.b %mud.gimme
        inc %mud.b
      }
      halt
    }
  }
  ..Edit Tabbar Defaults:/run notepad.exe $qt($scriptdir $+ \ $+ Mudclienttab.cfg)
  ..-
  ..Refresh This Tabbar:{
    var %mud.window $active
    var %mud.i = $calc($lines($qt($scriptdir\MUDclienttab.cfg))+1)
    var %mud.b = 1
    var %mud.gimme = 1
    clear -l %mud.window
    while %mud.b < %mud.i {
      %mud.gimme = $read($qt($scriptdir\MUDclienttab.cfg),%mud.b)
      iline -ln %mud.window %mud.b %mud.gimme
      inc %mud.b
    }
    halt
  }
  ..Refresh All Tabbars:{
    if ($window(MUDclient*,1)) {
      var %mud.winnum = $window(@MUDclient*,0)
      while (%mud.winnum) {
        var %mud.window = $window(@MUDclient*,%mud.winnum)
        var %mud.i = $calc($lines($qt($scriptdir\MUDclienttab.cfg))+1)
        var %mud.b = 1
        var %mud.gimme = 1
        clear -l %mud.window
        while %mud.b < %mud.i {
          %mud.gimme = $read($qt($scriptdir\MUDclienttab.cfg),%mud.b)
          iline -ln %mud.window %mud.b %mud.gimme
          inc %mud.b
        }
        dec %mud.winnum
      }
    }
  }
  Other
  .mIRC Logging
  ..Logging on:log on $active
  ..Logging off:log off $active
  ..-
  ..Clear:{}
  .Buffer
  ..Save As...:{
    var %mud.bufsave = $sfile($logdir $+ \ $+ $active $+ -buffer.log,Save Buffer As...,Save)
    if (!%mud.bufsave) { halt }
    savebuf 9999 $active $qt(%mud.bufsave)
    echo -m $active 7Buffer Saved to $nopath(%mud.bufsave)
    halt
  }
  ..Save && Log As...:{
    var %mud.bufsave = $sfile($logdir $+ \ $+ $active $+ -buffer.log,Save Buffer & Log As...,Save)
    if (!%mud.bufsave) { halt }
    savebuf 9999 $active $qt(%mud.bufsave)
    echo -m $active 7Buffer Saved & Logging to $nopath(%mud.bufsave)
    log on $active -f %qt(%mud.bufsave)
    halt
  }
  ..-
  ..Clear:clear $active
  .Docs
  ..Read The Mudclient Manual:/run notepad.exe $qt($scriptdir $+ \ $+ Mudclient Manual.txt)
  ..Read The Mudclient Version list:/run notepad.exe $qt($scriptdir $+ \ $+ Mudclient Version.txt)
  ..Read The Mudclient TODO list:/run notepad.exe $qt($scriptdir $+ \ $+ Mudclient TODO.txt)
  ..Read The Beginner's Guide:/run notepad.exe $qt($scriptdir $+ \ $+ WormholeMUD's Advice for Beginners.txt)
  -
  Close:{
    if ($sock($remove($active,@))) { closemud $active }
    close -@ $active
  }
  Disconnect:closemud $active
}

;===========================
; Dialogs & Window Creation
;===========================
dialog MUDclient {
  title "MUD Client"
  size -1 -1 200 135
  edit %mud.address, 1, 5 25 190 20, autohs
  text "Port:", 2, 6 47 50 20
  edit %mud.port, 3, 5 65 190 20, autohs
  button "Connect", 4, 5 95 60 30, ok
  button "Cancel", 5, 135 95 60 30, cancel
  box "Remote Host:", 6, 0 1 200 135
}

dialog Autologin {
  title "Auto-login"
  size -1 -1 200 135
  edit %mud.name, 1, 5 25 190 20, autohs
  text "Password:", 2, 6 47 50 20
  edit %mud.password, 3, 5 65 190 20, autohs
  button "OK", 4, 5 95 60 30, ok
  button "Cancel", 5, 135 95 60 30, cancel
  box "Name:", 6, 0 1 200 135
}

on *:DIALOG:Autologin:sclick:4:{
  %mud.name = $did(1).text
  %mud.password = $did(3).text
  if ((!%mud.name) && (!%mud.password)) { %mud.aldot = is not set }
  elseif ((!%mud.name) && (%mud.password)) { %mud.aldot = is not set }
  elseif ((%mud.name) && (!%mud.password)) { %mud.aldot = is not set }
  elseif ((%mud.name) && (%mud.password)) { %mud.aldot = is set }
}

on *:DIALOG:MUDclient:sclick:4:{
  if (!%mud.enter) { %mud.enter = 1 }
  %mud.address = $did(1).text
  %mud.port = $did(3).text
  var %mud.socket = MUDclient: $+ %mud.address $+ : $+ %mud.port
  var %mud.window = @MUDclient: $+ %mud.address $+ : $+ %mud.port

  if ($sock(%mud.socket)) { closemud %mud.window }
  if (+ isincs %mud.port) { sockopen -e %mud.socket %mud.address $removecs(%mud.port,+) }
  else { sockopen %mud.socket %mud.address %mud.port }
  if (%mud.winreopen) { unset %mud.winreopen }
  if (%mud.tbarhide) { window -HexSl12k[9] +bestxn %mud.window %mud.font %mud.fontsize }
  else { window -exSl12k[9] +bestxn %mud.window %mud.font %mud.fontsize }
  var %mud.i = $calc($lines($qt($scriptdir\MUDclienttab.cfg))+1)
  var %mud.b = 1
  var %mud.gimme = 1
  while %mud.b < %mud.i {
    %mud.gimme = $read($qt($scriptdir\MUDclienttab.cfg),%mud.b)
    iline -ln %mud.window %mud.b %mud.gimme
    inc %mud.b
  }
  if (+ isincs %mud.port) {
    if ($window(%mud.window)) {
      echo -m %mud.window 7Connecting with SSL to %mud.address on port $removecs(%mud.port,+)
    }
  }
  else {
    if ($window(%mud.window)) {
      echo -m %mud.window 7Connecting to %mud.address on port %mud.port
    }
  }
}

;=================
; Opening Routine
;=================
on *:SOCKOPEN:MUDclient*:{
  set %mud.spacedll $dll($qt($scriptdirspaces.dll), loaded, )
  var %mud.socket = $sockname
  var %mud.window = @ $+ %mud.socket
  if (!%mud.customcolour) {
    if ($color(background) == 0 || $color(background) == 15) { %mud.colour = 1 }
    else { %mud.colour = 15 }
  }
  elseif (%mud.customcolour == 1) { %mud.colour = 1 }
  elseif (%mud.customcolour == 15) { %mud.colour = 15 }
  elseif (%mud.customcolour == strip) { unset %mud.colour }
  elseif (%mud.customcolour == clearview) {
    unset %mud.colour
    %mud.bm = 99,13
    %mud.bm2 = 99,06
  }
  if (%mud.colour == 1) {
    %mud.bn = 99,01
    %mud.bn2 = 01,00
    %mud.by = 99,08
    %mud.by2 = 99,07
    %mud.bm = 99,13
    %mud.bm2 = 99,06
    %mud.bw = 99,15
    %mud.bw2 = 99,01
  }
  elseif (%mud.colour == 15) {
    %mud.bn = 99,01
    %mud.bn2 = 15,01
    %mud.bw = 99,15
    %mud.bw2 = 01,15
    %mud.bm = 99,13
    %mud.bm2 = 99,06
  }
  if ($sockerr > 0) {
    if ($window(%mud.window)) { echo -m %mud.window 4Cannot Connect to %mud.address }
    return
  }
  else {
    if ($window(%mud.window)) { echo -m %mud.window 7Connection Opened to %mud.address }
    if (%mud.logging) {
      var %mud.logpath = $qt(%mud.logpath2 $+ \ $+ %mud.window $+ .log)
      write %mud.logpath $chr(160)
      write %mud.logpath Starting Session: $fulldate
      write %mud.logpath Session Ident: %mud.window
      write %mud.logpath $logstamp Connection Opened to %mud.address
    }
    if ((%mud.name) && (%mud.password)) {
      if ($sock(%mud.socket).status == active) {
        sockwrite -nt %mud.socket %mud.name
        sockwrite -nt %mud.socket %mud.password
        unset %mud.enter
      }
    }
  }
}

;=============================================
; Reading, Processing and Outputting Routines
;=============================================
on *:SOCKREAD:MUDclient*:{
  var %mud.socket = $sockname
  var %mud.window = @ $+ %mud.socket
  var %mud.logpath = $qt(%mud.logpath2 $+ \ $+ %mud.window $+ .log)
  :mud.nextread
  if (!$window(%mud.window)) { halt }
  if ($sockerr > 0) {
    if ($window(%mud.window)) { echo -m %mud.window 4Connection to $gettok(%mud.window,2,58) Lost }
    return
  }
  else {
    sockread -f %mud.data
    if ($sockbr == 0) { return }
    if (!%mud.data) { %mud.data = $chr(160) }
    if (%mud.data !isalnum) {
      if (*[* iswmcs %mud.data) {
        if (%mud.customcolour != strip) {
          if ( isincs %mud.data) { %mud.data = $replacecs(%mud.data,,04) }
          elseif ( isincs %mud.data) { %mud.data = $replacecs(%mud.data,,04) }
          if ( isincs %mud.data) { %mud.data = $replacecs(%mud.data,,07) }
          elseif (( isincs %mud.data) && ( !isincs %mud.data)) { %mud.data = $replacecs(%mud.data,,07) }
          if ( isincs %mud.data) { %mud.data = $replacecs(%mud.data, ,06) }
          elseif (( isincs %mud.data) && ( !isincs %mud.data)) { %mud.data = $replacecs(%mud.data,,06) }
          if ( isincs %mud.data) { %mud.data = $replacecs(%mud.data,,99) }
          if (*[*30m* iswmcs %mud.data) { %mud.data = $regsubex(%mud.data,(\[(0;)*30m),$null) }
        }
        if (*[2* iswmcs %mud.data) { %mud.data = $regsubex(%mud.data,(\[2([0-9];[0-9]{1,2})f),$null) }
      }
      if (ý[ isincs %mud.data) { %mud.data = $removecs(%mud.data,ý[) }
      if (ûV isincs %mud.data) { %mud.data = $removecs(%mud.data,ûV) }
      if ( isincs %mud.data) { %mud.data = $removecs(%mud.data,) }
      ; Removes characters not within the ASCII 32 to 126 and 161 to 191 character
      ; ranges without effecting the mIRC colour code or the ANSI control code 27
      if ($regex(%mud.data,[^\x3\x1B\x20-\x7E\xA0-\xBF])) { 
        %mud.data = $regsubex(%mud.data,/[^\x3\x1B\x20-\x7E\xA0-\xBF]/g,$null)
      }
    }

    %mud.data2 = $ansi2mirc(%mud.data)
    ;%mud.data2 = %mud.data
    if (!%mud.data2) { %mud.data2 = $chr(160) }
    if (*;3?m* iswmcs %mud.data2) { %mud.data2 = $regsubex(%mud.data2,((0|1)*;3([0-9])m),$null) }
    if (%mud.colour == 1) {
      if (** iswm %mud.data2) {
        %mud.data2 = $replace(%mud.data2,08,07,15,14,09,03,11,10,%mud.bn,%mud.bn2,%mud.by,%mud.by2,%mud.bm,%mud.bm2,%mud.bw,%mud.bw2)
      }
    }
    elseif (%mud.colour == 15) {
      if (** iswm %mud.data2) {
        %mud.data2 = $replace(%mud.data2,%mud.bn,%mud.bn2,%mud.bw,%mud.bw2,%mud.bm,%mud.bm2,02,12)
      }
    }
    elseif (!%mud.colour) {
      if (%mud.customcolour == clearview) {
        if (** iswm %mud.data2) {
          %mud.data2 = $replace(%mud.data2,13,06,02,12,09,03,08,07,02,12,11,10,13,06,%mud.bm,%mud.bm2)
        }
      }
      elseif (%mud.customcolour == strip) {
        %mud.data2 = $strip($replace(%mud.data2,$chr(32),$chr(160)))
        %mud.data2 = $replace(%mud.data2,$chr(160),$chr(32))
        if (!%mud.data2) { %mud.data2 = $chr(160) }
      }
    }
    var %mud.friend = $strip(%mud.data2)
    if (says isincs %mud.friend || states isincs %mud.friend || asks isincs %mud.friend || chats isincs %mud.friend || questions isincs %mud.friend || whispers isincs %mud.friend || tells isincs %mud.friend || grats isincs %mud.friend || walks isincs %mud.friend) {
      %mud.friend = $gettok(%mud.friend,1,32)
      if ($len(%mud.friend) > 3) {
        if (%mud.friend != some && %mud.friend != that && %mud.friend != from && %mud.friend isalnum) {
          aline -ln %mud.window %mud.friend
        }
      }
    }
    if (%mud.data2 != $chr(160)) { %mud.data2 = $chr(160) $+ %mud.data2 }
    if ((!%mud.spacedll) || (%mud.spacing)) {
      if (!%mud.spaceoff) { %mud.data2 = $replace(%mud.data2,$chr(32),$chr(160)) }
      echo %mud.colour -mi1 %mud.window %mud.data2
    }
    else {
      $dll($qt($scriptdirspaces.dll), echo, %mud.colour -mi1 %mud.window %mud.data2)
    }
    if (%mud.logging) {
      var %mud.logdata = $strip($replace(%mud.data2,$chr(32),$chr(160)))
      write %mud.logpath $logstamp %mud.logdata
    }
    unset %mud.data %mud.data2
    goto mud.nextread
  }
}

;==================
; Input Processing
;==================
on *:INPUT:@MUDclient*:{
  var %mud.socket = $remove($target,@)
  var %mud.window = $target
  var %mud.logpath = $qt(%mud.logpath2 $+ %mud.window $+ .log)
  if ($1) { set %mud.enter 1 }
  if ($left($1-,1) == /) {
    if $1 == /lock {
      if (!%mud.saymode) {
        if (!$2) {
          var %mud.jset $?="What command do you want to lock?"
          if (%mud.jset) { set %mud.saymode %mud.jset }
          if (!%mud.jset) { halt }
        }
        elseif ($2) { %mud.saymode = $2 }
        else { halt }
        echo -m %mud.window 7COMMAND LOCKING ON
        set %mud.saydot on
        halt
      }
      else {
        echo -m %mud.window 7COMMAND LOCKING OFF
        unset %mud.saymode
        set %mud.saydot off
        halt
      }
    }
    if $1 == /numwalk {
      if (!%mud.numwalk) {
        echo -m %mud.window 7NUMPAD WALKING ON
        set %mud.numwalk 1
        set %mud.numdot on
        halt
      }
      else {
        echo -m %mud.window 7NUMPAD WALKING OFF
        unset %mud.numwalk
        set %mud.numdot off
        halt
      }
    }
    if ($len($1) <= 2) {
      if ($sock(%mud.socket).status == active) {
        sockwrite -nt %mud.socket $1-
      }
    }
    else { return }
  }
  if ($1 == greet || $1 == tell || $1 == whisper || $1 == follow) {
    if (($2) && ($len($2) > 3)) {
      aline -ln $2
    }
  }
  if (!$sock(%mud.socket)) {
    echo -m %mud.window 4Not Connected
    halt
  }
  else {
    if (%mud.saymode) {
      if ($sock(%mud.socket).status == active) { sockwrite -nt %mud.socket %mud.saymode $1- }
    }
    else {
      if ($sock(%mud.socket).status == active) { sockwrite -nt %mud.socket $1- }
    }
  }
  if ((%mud.name) && (!%mud.noecho)) {
    echo %mud.colour -mi1 %mud.window 4[ $+ %mud.name $+ 4] $1-
    if (%mud.logging) { write %mud.logpath $logstamp $chr(91) $+ %mud.name $+ $chr(93) $1- }
  }
  elseif (!%mud.noecho) {
    echo %mud.colour -mi1 %mud.window 4[ $+ $nick $+ 4] $1-
    if (%mud.logging) { write %mud.logpath $logstamp $chr(91) $+ $nick $+ $chr(93) $1- }
  }
  if (%mud.keeptexton) {
    set %mud.keeptext $1-
    editbox -a $chr(0)
    editbox -a %mud.keeptext
  }
  halt
}

;==========================
; Numpad & Enter Functions
;==========================
on *:KEYUP:@MUDclient*:13,19,96,97,98,99,100,101,102,103,104,105,106,107,109,110,111:{
  var %mud.socket = $remove($target,@)
  if (!$sock(%mud.socket)) { set %mud.enter 1 }
  if ($keyval == 13) {
    if (!%mud.enter) {
      if ($sock(%mud.socket).status == active) {
        sockwrite -nt %mud.socket %mud.return
      }
    }
    else { unset %mud.enter }
  }
  if ($keyval == 19) {
    ;Pause
    if (!%mud.numwalk) {
      echo -m %mud.window 7NUMPAD WALKING ON
      set %mud.numwalk 1
      set %mud.numdot on
      halt
    }
    else {
      echo -m %mud.window 7NUMPAD WALKING OFF
      unset %mud.numwalk
      set %mud.numdot off
      halt
    }
    halt
  }
  if (!%mud.numwalk) { halt }
  if ((!$sock(%mud.socket)) && ($keyval != 13)) {
    echo -am 4Not Connected
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  if ($keyval == 111) {
    ;Numpad /
    sockwrite -nt %mud.socket open door
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  if ($keyval == 106) {
    ;Numpad *
    sockwrite -nt %mud.socket close door
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  if ($keyval == 109) {
    ;Numpad -
    sockwrite -nt %mud.socket up
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  if ($keyval == 107) {
    ;Numpad +
    sockwrite -nt %mud.socket down
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  if ($keyval == 104) {
    ;Numpad 8
    sockwrite -nt %mud.socket north
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  if ($keyval == 100) {
    ;Numpad 4
    sockwrite -nt %mud.socket west
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  if ($keyval == 102) {
    ;Numpad 6
    sockwrite -nt %mud.socket east
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  if ($keyval == 98) {
    ;Numpad 2
    sockwrite -nt %mud.socket south
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  if ($keyval == 103) {
    ;Numpad 7
    sockwrite -nt %mud.socket northwest
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  if ($keyval == 105) {
    ;Numpad 9
    sockwrite -nt %mud.socket northeast
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  if ($keyval == 97) {
    ;Numpad 1
    sockwrite -nt %mud.socket southwest
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  if ($keyval == 99) {
    ;Numpad 3
    sockwrite -nt %mud.socket southeast
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  if ($keyval == 101) {
    ;Numpad 5
    sockwrite -nt %mud.socket look
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  if ($keyval == 96) {
    ;Numpad 0
    sockwrite -nt %mud.socket inventory
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  if ($keyval == 110) {
    ;Numpad .
    sockwrite -nt %mud.socket stat
    editbox -a $chr(0)
    if ((%mud.keeptexton) && (%mud.keeptext)) { editbox -a %mud.keeptext }
    halt
  }
  halt
}

;================
;Closing Routines
;================
on *:SOCKCLOSE:MUDclient*:{
  var %mud.window = @ $+ $sockname
  if ($window(%mud.window)) { echo -m %mud.window 4Connection to $gettok(%mud.window,2,58) Lost. }
  if (%mud.logging) {
    var %mud.logpath = $qt(%mud.logpath2 $+ %mud.window $+ .log)
    write %mud.logpath $logstamp Connection to $gettok(%mud.window,2,58) Lost
    write %mud.logpath Session Closed: $fulldate
  }
}

alias -l closemud {
  if ($1 == DCALL) {
    var %mud.sockamount = $sock(MUDclient*,0)
    while (%mud.sockamount) {
      var %mud.socket = $sock(MUDclient*,1)
      var %mud.window = @ $+ %mud.socket
      if ($sock(%mud.socket).status == active) {
        sockwrite -nt %mud.socket %mud.quit
        sockclose %mud.socket
      }
      if ($window(@MUDclient*,0)) { 
        echo -m %mud.window 4Connection to $gettok(%mud.window,2,58) Closed.
      }
      if (%mud.logging) {
        var %mud.logpath = $qt(%mud.logpath2 $+ %mud.window $+ .log)
        write %mud.logpath $logstamp Connection to $gettok(%mud.window,2,58) Closed
        write %mud.logpath Session Closed: $fulldate
      }
      dec %mud.sockamount
    }
  }
  else {
    var %mud.socket = $remove($1,@)
    var %mud.window = $1
    if ($sock(%mud.socket).status == active) {
      sockwrite -nt %mud.socket %mud.quit
      sockclose %mud.socket
    }
    if ($window(%mud.window)) { echo -m %mud.window 4Connection to $gettok(%mud.window,2,58) Closed. }
    if (%mud.logging) {
      var %mud.logpath = $qt(%mud.logpath2 $+ %mud.window $+ .log)
      write %mud.logpath $logstamp Connection to $gettok(%mud.window,2,58) Closed
      write %mud.logpath Session Closed: $fulldate
    }
  }
}

on *:CLOSE:@MUDclient*:{
  var %mud.socket = $remove($active,@)
  var %mud.window = $active
  if (%mud.winreopen) { unset %mud.winreopen | halt }
  if ($sock(%mud.socket).status == active) {
    sockwrite -nt %mud.socket %mud.quit
    sockclose %mud.socket
  }
  if (%mud.logging) {
    var %mud.logpath = $qt(%mud.logpath2 $+ %mud.window $+ .log)
    write %mud.logpath $logstamp Connection to $gettok(%mud.window,2,58) Closed
    write %mud.logpath Session Closed: $fulldate
  }
}

on *:EXIT:{
  if ($sock(MUDclient*)) {
    sockwrite -nt MUDclient* %mud.quit
    sockclose MUDclient*
  }
}