Official Nodeka Board  

Go Back   Official Nodeka Board > Nodeka > Scripting > Other

Reply
 
Thread Tools Display Modes
  #1  
Old 05-30-2008, 01:24 AM
Sivamet Sivamet is offline
Wanderer
 
Join Date: May 2008
Posts: 6
Default 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.
Reply With Quote
  #2  
Old 06-01-2008, 01:17 PM
khelben khelben is offline
Wanderer
 
Join Date: May 2008
Posts: 1
Default 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
Reply With Quote
  #3  
Old 06-01-2008, 10:34 PM
Sivamet Sivamet is offline
Wanderer
 
Join Date: May 2008
Posts: 6
Default

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.
Reply With Quote
  #4  
Old 06-19-2008, 04:36 PM
Sivamet Sivamet is offline
Wanderer
 
Join Date: May 2008
Posts: 6
Default

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

Last edited by Sivamet; 06-20-2008 at 01:36 PM.
Reply With Quote
  #5  
Old 06-20-2008, 12:44 PM
Serenity's Avatar
Serenity Serenity is offline
Administrator
 
Join Date: Jan 2008
Location: In your mind.
Posts: 133
Default

Quote:
Originally Posted by Sivamet View Post

EDIT: Appearantly the forum software doesn't like tabs, so my code looks crappy.
Maybe you should have used the CODE function

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 );
__________________
What is now proved, was once imagined!
Reply With Quote
  #6  
Old 06-20-2008, 01:31 PM
Sivamet Sivamet is offline
Wanderer
 
Join Date: May 2008
Posts: 6
Default

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
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 12:19 AM.


Design By: Miner Skinz.com
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, vBulletin Solutions, Inc.