Official Nodeka Board

Official Nodeka Board (http://www.nodeka411.net/forum/index.php)
-   Other (http://www.nodeka411.net/forum/forumdisplay.php?f=12)
-   -   MUSHclient (http://www.nodeka411.net/forum/showthread.php?t=63)

Sivamet 05-30-2008 01:24 AM

MUSHclient
 
I was wondering if anyone else besides me used MUSHclient. Right now I'm developing a Bot Engine using LUA script to load custom scripts, and run them. I've also added some status boxes and whatnot to help me keep track of important stats. In the process of writing a spell tracker, to display what spells I have active, and the time active. It will tick down, and show me dynamically how long I have left on spells without having to check "affects". Everything is in its Alpha stages thus far, but was wondering if anyone else has had any success using MUSHclient as well.

khelben 06-01-2008 01:17 PM

I do
 
I, for one, use MUSHclient and have since I first discovered it. I think it's
tops as far as clients go, but I haven't used it since starting at
Nodeka because of nembot. However, I think that you making a script
loader for it is absolutely fantastic and would be crazily appreciated
by many if you were to share it. Keep up the good work!

Khelben, the Last Frost Giant

Sivamet 06-01-2008 10:34 PM

Right now it's still in Pre-Alpha stages. I use it, along with a huge assortment of triggers, and it works quite well. The way it works is I have a Folder with .area files in it. To start one you type: script set (filename). This will set the script. To begin running the script (incase you need to do any last minute spellups) just type: script start. Script files are made manually, for now. I've the routine setup to save them, but I just write them manually. I use an Alias on my keypad to record movement to MUSH's notepad, then just copy the movements to my scipt file. An example, here's part of my Bayeshi file.

Code:

Name: Bayeshi
Kill: A large grey wolf seems to be hunting.
KillWord: wolf
KillType: rage
Kill: Something rustles in the branches above you.
KillWord: cat
KillType: rage
Kill: Looking deadly by sheer physique, [ number ] cats seem abnormally large.
KillWord: cat
KillType: rage
Kill: A pack of [ number ] wolves look upon you with hungry eyes.
KillWord: wolf
KillType: rage
Kill: A Bayeshi man rushes by.
KillWord: man
KillType: rage
Kill: A Bayeshi woman is here doing chores.
KillWord: woman
KillType: rage
Kill: Small in physical stature, a company of women, [ number ] in size, work together.
KillWord: woman
KillType: rage
Kill: Rushing to their next job these [ number ] men brush past you.
KillWord: man
KillType: rage
Move: West
Move: North
Move: West
Move: South
Move: West
Move: West
Move: West
Move: West
Move: North
Move: East
Move: East
Move: East
Move: East
Move: East
Move: North
Move: West
Move: West
Move: West
Move: West
Move: West
Move: North
Move: East
Move: East
Move: East
Move: East
Move: East
Move: North
Move: West
Move: West
Move: West
Move: West
Move: West
Move: North

Anyway, it's a system in progress. If you know a good bit about MUSH and how to setup triggers on it, let me know and I'll show you how I set the coding up, along with my triggers, so you can help test it.

Sivamet 06-19-2008 04:36 PM

I wrote an auto-rescue for MUSHclient incase anyone was looking for one, or whatever. Also posting it just to show off the capibilities of MUSH. There's a trigger, an alias, and a script file. The script is in LUA. To use you'll need 2 functions that I wrote to split strings apart. If you're intersted in using, just reply here or whatnot and I'll post those functions too.

Code:

<aliases>
  <alias
  match="autorescue *"
  enabled="y"
  send_to="12"
  sequence="100"
  >
  <send>aRescue_Command("%1")</send>
  </alias>
</aliases>

Code:

<triggers>
  <trigger
  enabled="y"
  match="*attacks on *:*"
  send_to="12"
  sequence="300"
  >
  <send>Do_Rescue("%2");</send>
  </trigger>
</triggers>

And now the script (it's in Red):

Code:

function aRescue_Command(command)
        local cTable = {"List", "Add", "Commands", "Remove", "Report"};
        local cBuf, cExe = "";
        cBuf = strip_first(command);
        cExe = pull_first(command);
        if( cExe == "" or nil) then cExe = command; end
        if( cBuf == cExe ) then cBuf = nil; end

        if( cExe == "commands" ) then
                Note("Current Commands:");
                Note("-----------------");
                for i = 1, table.getn(cTable), 1 do
                        Note(cTable[i]);
                end
                Note("-----------------");
                return;
        end

        if( cExe == "add") then
                if(cBuf == "" or cBuf == nil) then
                        ColourNote("red", "", "Add who to Auto-Rescue?");
                        return;
                end

                local cRes = GetVariable("AutoRescue");
                if(cRes == nil) then
                        SetVariable("AutoRescue", "");                       
                        cRes = GetVariable("AutoRescue");
                        SetVariable("AutoRescue", cRes .. "" .. cBuf);
                        Note("Added " .. cBuf .. " to Auto-Rescue");
                        return;
                end
                if( string.find(cRes, cBuf) ) then
                        ColourNote("red", "", cBuf .. " is already being rescued!");
                        return;
                end

                SetVariable("AutoRescue", cRes .. " " .. cBuf);
                Note("Added " .. cBuf .. " to Auto-Rescue");
        end

        if( cExe == "remove") then
                if(cBuf == "" or cBuf == nil) then
                        ColourNote("red", "", "Remove who from Auto-Rescue?");
                        return;
                end
               
                local cRes = GetVariable("AutoRescue");
                if( cRes == nil) then
                        ColourNote("red", "", "You aren't rescuing anyone!");
                        return;
                end
                if( string.find(cRes, cBuf)) then
                        cRes = string.gsub(cRes, cBuf, "");
                        SetVariable("AutoRescue", cRes);
                        Note(cBuf .. " removed from Auto-Rescue.");
                        return;
                else
                        Note(cBuf .. " is not on Auto-Rescue.");
                        return;
                end
        end

        if( cExe == "list") then
                local cRes = GetVariable("AutoRescue");
                if( cRes == nil) then
                        ColourNote("red", "", "You aren't rescuing anyone!");
                        return;
                end
                Note("Currently Rescuing: " .. cRes);
                return;
        end

        if( cExe == "report") then
                local cRes = GetVariable("AutoRescue");
                if( cRes == nil) then
                        ColourNote("red", "", "You aren't rescuing anyone!");
                        return;
                end

                Send("gt Currently Rescuing: " .. cRes);
                return;

        else
                Note("No such arugment supported. To see a list of supported arguments, use the \"commands\" argument.");
        end
end

function Do_Rescue(player)
        local cRes = GetVariable("AutoRescue");
        if( cRes == nil) then       
                return;
        end
        if(string.find(cRes, player)) then
                Send ("rescue " .. player);
                return;
        end
end


Serenity 06-20-2008 12:44 PM

Quote:

Originally Posted by Sivamet (Post 318)

EDIT: Appearantly the forum software doesn't like tabs, so my code looks crappy.

Maybe you should have used the CODE function :rolleyes:

Code:


var kos_list = new Array();
var kos_att = "kill";
function kos_input( event ) {
 switch( event ) {
  default:
  split = event.split( " " );
  switch (split[ 0 ]) {
    case "/kosadd":
    kos_list.push( split[ 1 ] );
    jmc.output( split[ 1 ] + " has been added to your KOS list." );
    return 1;
    break;
 
    case "/kosrem":
    var found = false;
    for (var x = 0; x < kos_list.length;x++ ) {
    if (kos_list[ x ] == split[ 1 ]) {
      kos_list[ x ] = null;
      found = true;
    }
    }
    if (found) {
    jmc.output( split[ 1 ] + " has been removed from your KOS list." );
    kos_optimize();
    } else {
    jmc.output( split[ 1 ] + " was not found on your KOS list." );
    }
    return 1;
    break;
 
    case "/kosatt":
    kos_att = '';
    for (var x = 1;x < split.length; x++) {
    kos_att = kos_att + split[ x ] + " ";
    }
    jmc.output("Your attack has been set to " + kos_att);
    return 1;
    break;
 
    case "/kosres":
    kos_list = new Array();
    jmc.output( "You KOS list has been reset." );
    return 1;
    break;
 
    case "/kos":
    var msg = "[KOS List: (Action: " + kos_att + ")(Members: ";
    var comma = 0;
    for (var x = 0; x < kos_list.length;x++ ) {
    if (kos_list[ x ] != null) {
      if (comma) {
      msg = msg + ", " + kos_list[ x ];
      } else {
      msg = msg + kos_list[ x ];
      comma = 1;
      }
    }
    }
    msg = msg + ")]";
    jmc.parse( split[ 1 ] + " " + msg );
    return 1;
    break;
 
    case "/?":
      jmc.showme( "" );
      jmc.showme( "KOS help" );
      jmc.showme( "---------------------------------------");
      jmc.showme( "/kos <channel>        - displays your list of kos in channel");
      jmc.showme( "/kosadd <player name> - adds a player to your KOS list");
      jmc.showme( "/kosrem <player name> - removes a player to your KOS list");
      jmc.showme( "/kosres              - removes all players from your KOS list");
      jmc.showme( "/kosatt <skill/spell> - changes your default attack");
      jmc.showme( "---------------------------------------");
      jmc.showme( "END OF KOS HELP" );
    return 1;
    break;
  }
  return 0;
  break;
 }
}
function kos_optimize() {
 var temp = kos_list;
 y = 0;
 kos_list = new Array();
 for (var x = 0; x < temp.length; x++) {
  if (temp[ x ] != null) {
  kos_list[ y ] = temp[ x ];
  y++;
  }
 }
}
function kos_incoming( event ) {
 var line = remascii( event );
 var player = null;
 var regex = new RegExp( /(.*) (is standing here.|is resting here.|has arrived.|appears with a flashing light.)/ );
 for (var x = 0; x < kos_list.length; x++ ) {
  if ((player = regex.exec( line )) != null) {
  if (player[ 1 ].search( kos_list[ x ] ) != -1)
    jmc.parse( kos_att + " " + kos_list[ x ]);
  }
 }
 return event;
}
register_handler( "Incoming", kos_incoming );
register_handler( "Input", kos_input );


Sivamet 06-20-2008 01:31 PM

Show off hehe. Didn't think about that. Shows how often I use forums 0.o.. Was just pleased it came out as beautiful as it did. =D


All times are GMT. The time now is 04:44 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.