m-MUD — File Browser

m-MUDv0.0.2 / m-MUDv0.0.2 / mmud.mrc

mmud.mrc — 18.02 KB — Download this file

;;;;; EDIT TIS IS SPACING IS OFF. IT'S EITHER GOING TO BE 255 or 160
alias space_character { return 160 }

alias stchr { return $chr($space_character) }

dialog mmud_connect {
  title "m-MUD v0.0.2"
  size -1 -1 196 63
  option dbu
  list 1, 0 0 195 32, sort size
  text "Server", 2, 2 34 101 8
  text "Port", 3, 119 34 74 8
  button "Connect", 4, 154 50 37 12
  button "Add", 5, 4 50 28 12
  button "Delete", 6, 36 50 28 12
  button "Properties", 7, 68 50 28 12
  button "Extras", 8, 100 50 28 12
}

dialog mmud_prop {
  title "m-MUD Server Properties: "
  size -1 -1 135 152
  option dbu
  text "Editing Properties for [server]", 1, 0 2 173 8
  box "MUD Window", 2, 0 10 135 50
  edit "", 4, 30 18 50 10, autohs
  text "Font Name:", 3, 2 19 28 8, right
  text "Font Size:", 5, 2 29 28 8, right
  edit "", 6, 30 28 50 10, autohs
  edit "", 7, 30 37 50 10, autohs
  text "Height:", 8, 2 38 28 8, right
  text "Width:", 9, 2 48 28 8, right
  edit "", 10, 30 47 50 10, autohs
  edit "", 11, 110 18 20 10, autohs
  text "X:", 12, 84 19 25 8, right
  edit "", 13, 110 28 20 10, autohs
  text "Y:", 14, 84 29 25 8, right
  box "Other", 15, 0 60 135 52
  check "Logging", 16, 2 68 50 10
  check "Echo text Sent to MUD", 17, 2 78 95 10
  check "Enable Command Stacking", 18, 2 88 95 10
  text "Stack Char:", 19, 2 100 30 8
  edit "", 20, 32 98 50 10, limit 1
  box "Address / Port", 21, 0 113 135 23
  text "Address:", 22, 3 123 25 8
  edit "", 23, 26 122 52 10, autohs
  text "Port:", 24, 79 123 15 8
  edit "", 25, 94 122 27 10, autohs
  button "Save", 26, 0 138 37 12
  button "Exit", 27, 98 138 37 12
  check "Strip Colors", 28, 80 68 50 10
  text "Text Label", 29, 1 163 25 8
}



on *:DIALOG:mmud_*:*:* {
  if ($dname == mmud_connect) {
    if ($did == 0 && $devent == init) {
      var %i = 1, %c = 0
      did -r $dname 1
      while (%i <= $findfile($scriptdir $+ servers\,*.ini,0,0)) {
        var %p = $findfile($scriptdir $+ servers\,*.ini,%i,0)
        var %name = $nopath($remove(%p,.ini)), %host = $readini(%p,connection,address), %port = $readini(%p,connection,port)
        var %c = 1
        did -a $dname 1 %name
        inc %i
      }
      did -b $dname 8
    }
    if ($devent == sclick) {
      if ($did == 1) {
        if ($did(1).seltext != $null) {
          var %file = $scriptdir $+ servers\ $+ $did(1).seltext $+ .ini
          var %host = $readini(%file,connection,address), %port = $readini(%file,connection,port)

          did -ra $dname 2 %host
          did -ra $dname 3 %port
        }
      }
      if ($did == 5) {
        VAR %name = $input(Please enter a name to call this server., eogq, m-MUD New Server, New Mud Server)
        if (%name != $null) {
          var %host = $input(Please enter an address to connect to the MUD., eogq, m-MUD New Server, mud.nmudserv.org)
          if (%host != $null) {
            var %port = $input(Please enter an address to connect to the MUD., eogq, m-MUD New Server, 23)
            if (%port != $null) {
              if (%port !isnum 0-) {
                var %a = $input(Your port number is not valid. It has been changed to 23 $+ $chr(44) the default port., ogw, m-MUD New Server)
                var %port = 23
              }

              var %name = $gettok(%name,1,32)
              if ($isfile($scriptdir $+ servers\ $+ %name $+ .ini) == $true) {
                var %a = $input(Sorry. You already have a server with this name, ogw, m-MUD New Server)
                if (%a) { return }
              }
              else {
                var %file = $+($scriptdir,servers\,%name,.ini)
                writeini $+(",%file,") connection address %host
                writeini $+(",%file,") connection port %port
                writeini $+(",%file,") window font Courier New
                writeini $+(",%file,") window x 0
                writeini $+(",%file,") window y 0
                writeini $+(",%file,") window width 640
                writeini $+(",%file,") window height 480
                writeini $+(",%file,") window fontsize 12

                writeini $+(",%file,") options echo 1
                writeini $+(",%file,") options logging 0
                writeini $+(",%file,") options cmdstack 1
                writeini $+(",%file,") options cmdchar ;
                writeini $+(",%file,") options strip 0 

                writeini $+(",%file,") aliases enabled 1


                var %a = $input(Server Added!, ogi, m-MUD New Server)
                var %i = 1, %c = 0
                did -r $dname 1
                while (%i <= $findfile($scriptdir $+ servers\,*.ini,0,0)) {
                  var %p = $findfile($scriptdir $+ servers\,*.ini,%i,0)
                  var %name = $nopath($remove(%p,.ini)), %host = $readini(%p,connection,address), %port = $readini(%p,connection,port)
                  var %c = 1
                  did -a $dname 1 %name
                  inc %i
                }
                if (%a) { return }
              }
            }
          }
        }
      }
      if ($did == 6) {
        if ($did(1).seltext != $null) {
          var %a = $input(Are you sure you want to delete $chr(34) $+ $did(1).seltext $+ $chr(34) $+ ?, ygq, m-MUD Server Delete)
          if (%a == $true) {
            if (%m-mud.curserver) {
              mMudDisconnect $+ 
            }  
            if ($isfile($+( $scriptdir ,servers\,$did(1).seltext,.ini)) == $true) { .remove $+(",$scriptdir,servers\,$did(1).seltext,.ini,") } 
            if ($isfile($+( $scriptdir ,servers\,$did(1).seltext,.trg)) == $true) { .remove $+(",$scriptdir,servers\,$did(1).seltext,.trg,") } 
            var %a = $input(Server Removed, ogi, m-MUD Server Delete)

            var %i = 1, %c = 0
            did -r $dname 1            
            while (%i <= $findfile($scriptdir $+ servers\,*.ini,0,0)) {
              var %p = $findfile($scriptdir $+ servers\,*.ini,%i,0)
              var %name = $nopath($remove(%p,.ini)), %host = $readini(%p,connection,address), %port = $readini(%p,connection,port)
              var %c = 1
              did -a $dname 1 %name
              inc %i
            }

            if (%a) { return }
          }
        }
      }
      if ($did == 4) { mMudConnect $did(1).seltext } 
      if ($did == 7) {
        dialog $iif($dialog(mmud_prop),-v,-m) mmud_prop mmud_prop
      }
      if ($did == 8) { 
        dialog $iif($dialog(mmud_prop),-v,-m) mmud_extras mmud_extras
      }
    }
    if ($devent == close) {
      if ($dialog(mmud_prop)) {
        var %a = $input(Do you want to change settings to the current server?, ygi, m-MUD Server Properties)
        if (%a == $true) {
          saveServProps
          dialog -x $dname $dname
        }

        else {
          dialog -x $dname $dname
        }
      }
    }
  }
  if ($dname == mmud_prop) {
    if ($devent == init && $did == 0) {
      if (%m-mud.x != $null) { var %ax = 1 } 

      if (!$dialog(mmud_connect) || $did(mmud_connect,1).seltext == $null && %ax != 1) {
        var %a = $input(Error: Could not edit properties $+ $crlf $+  No server selected or connection window is not opened., ogw, m-MUD Server Properties)
        dialog -x $dname $dname 
      }
      else {
        var %sel = $iif(%m-mud.x,%m-mud.x,$did(mmud_connect,1).seltext)
        unset %m-mud.x

        var %file = $scriptdir $+ servers\ $+ %sel $+ .ini
        var %name = $readini(%file,connection,address), %port = $readini(%file,connection,port)
        did -ra $dname 1 Editing Properties for %name ( $+ %port $+ ) $+([,$nopath($remove(%file,.ini)),])
        did -ra $dname 29 $nopath($remove(%file,.ini))
        did -ra $dname 23 %name
        did -ra $dname 25 %port
        did -ra $dname 4 $readini(%file,window,font)
        did -ra $dname 6 $readini(%file,window,fontsize)
        did -ra $dname 7 $readini(%file,window,height)
        did -ra $dname 10 $readini(%file,window,width)
        did -ra $dname 11 $readini(%file,window,x)
        did -ra $dname 13 $readini(%file,window,y)
        did -b $dname 16 
        if ($readini(%file,options,logging)) { did -c $dname 16 }
        if ($readini(%file,options,echo)) { did -c $dname 17 }
        if ($readini(%file,options,cmdstack)) { did -c $dname 18 }
        if ($readini(%file,options,strip)) { did -c $dname 28 }
        did -ra $dname 20 $readini(%file,options,cmdchar)
      }
    }
    if ($devent == sclick && $did == 26) {
      saveServProps
    }
    if ($devent == sclick && $did == 27) { dialog -x $dname $dname } 
  }
}


on *:LOAD {
  linesep
  echo -a »» Welcome to m-MUD version 0.0.2 
  echo -a »»»»»»» Made by Aether Gray
  echo -a »»»»»»»»»»» Email: AetherGray@gmail.com

  if ($version < 6.03) {
    echo -a  You are unable to use m-MUD because you do not have mIRC 6.03 or higher.
    .unload -rs $+(",$script,")
    halt
  }


  if ($isdir($scriptdir $+ servers\) == $false) { mkdir $+(",$scriptdir,servers\,") }

  echo -a »» To start m-MUD type  $+ $color(info).dd $+ /mmud

  linesep
}

alias mMud {
  if (alias isin $1) { mMudAliases $2- }
  else { mMudConnect $2- }

}

; mMudAlias [add|del|list] [server name] [name] [command]
; If no parameters are given, then it opens up the dialog window.
; Example:
;         mMudAlias add Aetolia jjump JUMP; say HI!
;         mMudAlias del Aetolia jjump
;         mMudAlias list Aetolia

alias mMudAliases {
  var %a = $input("Aliases are not working in this version...", eogw, "m-MUD Aliases")
  if (%a) { halt }
  halt

  if (!$1) { dialog $iif($dialog(mmud_aliases),-v,-m) mmud_aliases mmud_aliases }
}

alias mMudConnect {
  if (!$1) { dialog $iif($dialog(mmud_connect),-v,-m) mmud_connect mmud_connect | halt }

  var %file = $scriptdir $+ servers\ $+ $1 $+ .ini
  if ($isFile(%file) == $false) {
    var %a = $input(Error: Server Not Found, ogw, m-MUD Error)
    if (%a) { return }
  }
  if ($sock(mMud).status == Active) {
    var %a = $input(Error: Could Not Connect. $+ $crlf $+ Do you want to disconnect from current location? , ygi, m-MUD Connection Error)
    if (%a == $true) {
      mMudDisconnect
    }
    else {
      return
    }
  }
  else {
    if ($window(@m-MUD)) { window -c @m-MUD }

    set %m-mud.curserver $readini(%file,connection,address)
    set %m-mud.curport $readini(%file,connection,port)
    set %m-mud.servfile %file
    window -emnk +bmnstx @m-MUD $gwin(%file)
    window -a @m-MUD

    echo @m-MUD »» Connecting to $nopath($remove(%file,.ini))
    echo @m-MUD »» Please wait...

    sockopen mmud %m-mud.curserver %m-mud.curport

  }
}

alias mMudDisconnect {
  if ($sock(mmud)) { sockclose mmud }
  if ($window(@m-MUD)) {
    showDisconnectMsg
  }
}

alias -l showDisconnectMsg {
  showmsg »» You are now disconnected from %m-mud.curserver
}



alias -l gwin {
  ; Returns WINDOW ATTRIB
  var %file = $+(",$1-,")
  return $readini(%file,window,x) $readini(%file,window,y) $readini(%file,window,width) $readini(%file,window,height) $&
    $readini(%file,window,font) $readini(%file,window,fontsize)
}

alias mmud_alias {
  var %file = %m-mud.servfile
  if ($isid) {
    if ($prop == is) {
      if ($readini(%file,aliases,$1) != $null) { return $true }
      else { return $false }
    }
    else {

      if ($1 != $null) {
        if ($readini(%file,connection,address) == $null) { return $null }
        else {
          if ($readini(%file,aliases,$1) != $null) { return $readini(%file,aliases,$1) }
          else { return $null }
        }
      }
    }
  }
}


alias -l mud.parser {
  var %file = %m-mud.servfile
  if ($1 == -r) { var %parse = $3-, %n = $2 }
  else { var %parse = $1-, %n = 1 }
  ; Check for \[stackchar] so that it can be set to chr(26) to avoid stacking.
  if (\ $+ $readini(%file,options,cmdchar) isin %parse) { var %parse = $replace(%parse,\ $+ $readini(%file,options,cmdchar),$chr(26)) }
  if ($readini(%file,options,cmdchar) isin %parse) { var %parse = $replace(%parse,$readini(%file,options,cmdchar),$chr(23)) }
  var %parse = $replace(%parse,$chr(26),$readini(%file,options,cmdchar))

  while (%n <= $numtok(%parse,23)) {
    var %x = $remove($gettok(%parse,%n,23),$chr(23))
    var %1 = $gettok(%x,1,32), %cat = $right(%1,-1)

    ; #wait command
    if (%1 == #wait) {
      inc %n
      if ($gettok(%x,2,32) !isnum || $gettok(%x,2,32) < 1) { continue }
      .timerpause $+ $ticks 1 $gettok(%x,2,32) mud.parser -r %n %parse
      break
    }
    elseif ($left(%1,2) == #d) { 
      mmuddisconnect
    }
    ; Regular Command Parsing? Forgot the use of this.
    elseif ($left(%1,2) == #!) {
      // $+ $right($gettok(%x,1-,32),-2)
    }
    ; Custom Aliases
    elseif ($mmud_alias(%1).is && $readini(%file,aliases,enabled) == 1) {
      .timerparseagain $+ $ticks -m 1 50 mud.parser -r %n $mmud_alias(%1)
      halt
    }
    else {

      ; var %x = $var.parse(%x)
    mudsend %x | if ($readini(%file,options,echo)) { echo @m-MUD -> %x } }
    inc %n
  }
}
; Sends text to the active mud window
; Usage: See Code
alias mudsend {
  if (!$isid) {
    if ($sock(mmud)) { sockwrite -tn mmud $1- }
    else { echo -a Could not send text. Not connected to a server. }
  }
}

alias SaveServProps {
  var %file = $+($scriptdir,servers\,$did($dname,29).text,.ini)
  if ($dialog(mmud_prop)) {
    if ($did($dname,23).text == $null) { var %a = $input(Invalid Server., ogw, m-MUD Server Properties) | goto e1 }
    else { writeini $+(",%file,") connection address $did($dname,23).text }
    if ($did($dname,25).text !isnum 0-) { var %a = $input(Invalid Port., ogw, m-MUD Server Properties) | goto e1 }
    else { writeini $+(",%file,") connection port $did($dname,25).text }
    if ($did($dname,4).text == $null) { var %a = $input(Invalid Font Name., ogw, m-MUD Server Properties) | goto e1 }
    else { writeini $+(",%file,") window font $did($dname,4).text }
    if ($did($dname,6).text !isnum 1-) { var %a = $input(Invalid Font Size., ogw, m-MUD Server Properties) | goto e1 }
    else { writeini $+(",%file,") window fontsize $did($dname,6).text }
    if ($did($dname,7).text !isnum 1-) { var %a = $input(Invalid Window Height., ogw, m-MUD Server Properties) | goto e1 }
    else { writeini $+(",%file,") window height $did($dname,7).text }
    if ($did($dname,10).text !isnum 1-) { var %a = $input(Invalid Window Width, ogw, m-MUD Server Properties) | goto e1 }
    else { writeini $+(",%file,") window width $did($dname,10).text }
    if ($did($dname,11).text !isnum) { var %a = $input(Invalid Window X Postion, ogw, m-MUD Server Properties) | goto e1 }
    else { writeini $+(",%file,") window x $did($dname,11).text }
    if ($did($dname,13).text !isnum) { var %a = $input(Invalid Window Y Position., ogw, m-MUD Server Properties) | goto e1 }
    else { writeini $+(",%file,") window y $did($dname,13).text }
    if ($did($dname,20).text == $null) { var %a = $input(Invalid Command Stacking Char., ogw, m-MUD Server Properties) | goto e1 }
    else { writeini $+(",%file,") options cmdchar $did($dname,20).text }
    writeini $+(",%file,") options logging $did($dname,16).state
    writeini $+(",%file,") options echo $did($dname,17).state
    writeini $+(",%file,") options cmdstack $did($dname,18).state
    writeini $+(",%file,") options strip $did($dname,28).state
    var %a = $input(Settings Saved., ogw, m-MUD Server Properties) 
    return
    :e1
    return
  }
}

alias showMsg {
  if (!$1) { halt }
  if ($window(@m-MUD)) { echo @m-MUD $1- }
  else { echo -a $1- }
}


on *:sockopen:mmud: {
  if ($sockerr > 0) { showMsg An error has occured. m-MUD was unable to connect. | sockclose $sockname | halt  }
  showMsg   
  showmsg  
  showMsg  Now connected to %m-mud.curserver on port %m-mud.curport
  showmsg »» Double-Click on the window to show stats.
  titlebar @m-MUD - Connected to %m-mud.curserver
}
on *:sockread:mmud: {
  var %file = %m-mud.servfile
  if ($sockerr > 0) { return }
  :initdone
  var %s
  sockread -f %s
  var %buffer = $ansi2mirc($remove($replace(%s,$chr(32),$chr($space_character)),$chr(13)))
  if ($readini(%file,options,strip)) { var %buffer = $strip(%buffer) } 
  if ($sockbr == 0) { return }

  showMsg %buffer

  goto initdone
}

on *:sockclose:mmud: {
  mMudDisconnect
}
on *:KEYDOWN:@m-MUD:* {
  if ($editbox($active) == $null && $keyval == 13) {
    mudsend $crlf
  }

}

on *:INPUT:@m-MUD: {
  if ($left($1,1) != /) { 
    if ($ctrlenter == $true) { mudsend $1- } | else { mud.parser $1- }
  }
}

on *:CLOSE:@m-MUD: { 
  mMudDisconnect
  unset %m-mud.curserver
  unset %m-mud.curport %m-mud.servfile
}

on *:UNLOAD: { 
  echo -a Thank you for using m-MUD v0.0.2 
  mmuddisconnect 
  unset %m-mud.*
}

menu @m-MUD { 
  $style(2) $+ m-MUD - $nopath($remove(%m-mud.servfile,.ini)):return
  - 
  $iif(%m-mud.servfile,$style(0),$style(2)) $+  $iif($sock(mmud),Disconnect from,Connect to) server : {
    if (!$sock(mmud)) { 
      mmudconnect $nopath($remove(%m-mud.servfile,.ini))
    }
    else { mmuddisconnect }
  } 
  $iif(%m-mud.servfile,$style(0),$style(2)) $+ Properties for $nopath($remove(%m-mud.servfile,.ini))
  .Properties: { 
    set %m-mud.x $nopath($remove(%m-mud.servfile,.ini))
    $iff($dialog(mmud_prop),dialog -x mmud_prop ) | dialog -m mmud_prop mmud_prop
  }
  .-
  . $+ $iif($readini(%m-mud.servfile,options,echo),$style(1),$style(0)) $+ Echo Text Sent to MUD: writeini $+(",%m-mud.servfile,") options echo $iif($readini(%m-mud.servfile,options,echo),0,1)
  ;. $+ $iif($readini(%m-mud.servfile,options,logging),$style(2),$style(2)) $+ Logging: writeini $+(",%m-mud.servfile,") options logging $iif($readini(%m-mud.servfile,options,logging),0,1)
  . $+ $iif($readini(%m-mud.servfile,options,strip),$style(1),$style(0)) $+ Strip Colors: writeini $+(",%m-mud.servfile,") options strip $iif($readini(%m-mud.servfile,options,strip),0,1)
  . $+ $iif($readini(%m-mud.servfile,options,cmdstack),$style(1),$style(0)) $+ Command Stacking: writeini $+(",%m-mud.servfile,") options cmdstack $iif($readini(%m-mud.servfile,options,cmdstack),0,1)

  - 
}

menu status,menubar { 
  m-MUD: mmud 
}