PDA

View Full Version : Auto Join Script


Bellum
09-22-2009, 02:30 AM
Trying to make a list of players that I will always auto join weather it is player combat or just regular npc combat.

Problem I'm having is it creates the array it adds players names to the array, but once I rescue them it takes them out of the array. I'm not the best at java so I'm looking for a little assist.

Thanks In advance.

#var autojoin 0
#script {var join_group = new Array()}

#alias {joinon} {#var autojoin 1}
#alias {joinoff} {#var autojoin 0}

#action {( %0 ) %1 is here, fighting %2.} {join_variable;#var {join_target} {$$1};#if {$join_target = $join_group} {join $join_group}}
#action {You join %0 in battle!} {addJoin $0}

#alias {addJoin} {#script join_group.push("$1")}
#alias {join_variable} {#script umc.setVar("join_group", join_group.pop())}
#alias {showJoin} {#script {umc.capture (join_group)}}



#nop -AUTO JOINS-

addJoin Meier
addJoin Apocolypse
addJoin Cashville

Bellum
09-22-2009, 04:06 AM
Okay, I got it to work, if the player has no other augments in their name. If there is anything else in their name this won't work.


#var autojoin 0
#script {var join_group = new Array()}

#alias {joinon} {#var autojoin 1}
#alias {joinoff} {#var autojoin 0}

#action {( %0 ) %1 is here, fighting %2.} {join_variable;#var {join_target} {$$1};#if {$join_group contains $join_target} {join $join_target}}


#alias {addJoin} {#script join_group.push("$1")}
#alias {join_variable} {#script umc.setVar("join_group", join_group)}
#alias {showJoin} {#script {umc.capture (join_group)}}



#nop -AUTO JOINS-

addJoin Meier
addJoin Apocolypse
addJoin Cashville

Odinn
09-22-2009, 11:49 AM
Try stripping out everything but the name, after all the name is in White while the rest is cyan.

Bellum
09-22-2009, 03:45 PM
Try stripping out everything but the name, after all the name is in White while the rest is cyan.

Have the script act off the name only? I don't understand what you want me to do with just the name.

I have been told 3 times to base it off the color of the name. I do not know how to do that.

grimm
09-23-2009, 12:30 AM
whoa someone stuff a cork in torments mouth. emo kid alert
________
Iolite vaporizer (http://vaporizer.org/)

Rar
09-23-2009, 09:08 AM
They're talking about writing a response (in JScript, rather than just UMC/JMC) based on the full string including the ANSI escape sequences.

When you write an action, you're working with the plain text, but the actual text data sent to your client includes escape sequences which change the text color. There's a list at http://ascii-table.com/ansi-escape-sequences.php

Serenity
09-23-2009, 06:24 PM
Rar is there wa way to see the exact line with escapes in your client?

Rar
09-24-2009, 06:14 AM
Rar is there wa way to see the exact line with escapes in your client?

Sure, just cook the output and spit it back out. For example, way back when I was building my list of full strings with escape sequences, I had an #alias that was something like:

#alias {capture}{#action {%0$$0%1}{#scr showString(%0$$0%1);#unaction {%0$$0%1}}

So if I were looking for the full ANSI string for say, Caller clan chat, I could type "capture Caller:". The next time a string with "Caller:" appeared, it would send that line to the showString function.

In the showString function, I would take the string passed to it, then do a simple search and replace of ASCII #27, which is the character used to initiate an escape sequence, to something readable (e.g. "<ESC>"). Then the function would spit that string back out for viewing. Since the escape char #27 was no longer present, the string would show with the code laid out - the color codes and such are treated as plain text since there's no esc char.

(There are other concerns that pop up in practical usage - for example, you'll need to do more replaces if semicolons are your client command delimiter, since many codes are of the form <ESC>#;##m. The above is the main gist of the solution, though.)

Serenity
09-24-2009, 01:56 PM
Thanks that should at least help him get the colour info to work with and might give me a few ideas too.

dreslin
09-25-2009, 05:01 AM
I know nothing about coding this stuff or anything. I know bellum uses nembot as do many of you guys. Is it possible ( or easier ) to make it into a 'profile script' of sorts via nembot versus straight jmc or umc?

Bellum
09-25-2009, 10:52 PM
Sure, just cook the output and spit it back out. For example, way back when I was building my list of full strings with escape sequences, I had an #alias that was something like:

#alias {capture}{#action {%0$$0%1}{#scr showString(%0$$0%1);#unaction {%0$$0%1}}

So if I were looking for the full ANSI string for say, Caller clan chat, I could type "capture Caller:". The next time a string with "Caller:" appeared, it would send that line to the showString function.

In the showString function, I would take the string passed to it, then do a simple search and replace of ASCII #27, which is the character used to initiate an escape sequence, to something readable (e.g. "<ESC>"). Then the function would spit that string back out for viewing. Since the escape char #27 was no longer present, the string would show with the code laid out - the color codes and such are treated as plain text since there's no esc char.

(There are other concerns that pop up in practical usage - for example, you'll need to do more replaces if semicolons are your client command delimiter, since many codes are of the form <ESC>#;##m. The above is the main gist of the solution, though.)

Thanks for the help Rar =)

I really don't get what you're saying. I think you're trying to make it capture the string before the colour code gets turned on. I could be WAY off tho. This is a little bit over my head tho. I will keep messing around with it to try and get it up and running. Thanks everyone for your help.

Rar
09-26-2009, 03:37 AM
Thanks for the help Rar =)

I really don't get what you're saying. I think you're trying to make it capture the string before the colour code gets turned on. I could be WAY off tho. This is a little bit over my head tho. I will keep messing around with it to try and get it up and running. Thanks everyone for your help.

When you see a colorless (grey) string, such as:

Saving Rar.

...then the actual string being sent to your client looks just like that, no funky ANSI sequences. (Not necessarily true, but will suffice for understanding this discussion.) However, when you see a string with any color in it :

## Untamedfurby was just defeated in battle by Nymbus!

...then the string being sent to your client has extra stuff in it. Each time the color changes in the string, it's because there's an ANSI sequence in it. The actual string your client receives looks more like:

^[31m## ^[37mUntamedfurby was just defeated in battle by Nymbus!

...where I'm using ^ to represent the esc char (ASCII #27). You don't see any of that funky stuff because whenever your client sees an escape sequence, it automatically converts it into a color change (and hides all that funky stuff). The ^[31m means "change to bright red", and the ^[37m means "change to grey".

When you use stuff like #action, it works off of the cooked text (with the escape sequences removed), so it ignores color (otherwise #actions would be tough to write on the fly!) However, if you use the actual scripting capability of your client (e.g. JScript/Perlscript), the incoming strings have all the escape sequences still attached. (I think with JMC in JScript, you access the incoming string with "$jmc->Event", which should be done in a method which you hook onto the incoming text handler. For example, if you named your input handling method "OnIncomingText", you would hook it with "$jmc->RegisterHandler("Incoming","OnIncomingText()". ) Look at your client's documentation for specifics on how to do all this.

Because the escape sequences are still intact, you can do perfect matches based on not just the text, but the color of the text as well.

Above, Serenity asked how to view the actual, uncooked string in your client. The method I described does so by changing the ASCII #27 escape to something else and then displaying the string. (If you left the #27 as is, then your client would just translate it into colors and you wouldn't see any of the escape sequence text you're looking for.)

Ahriman
09-29-2009, 09:57 PM
I understand the majority of what you're saying, Rar. I know there's just one key piece that I'm missing... and that is this: which character(s), exactly, represent ASCII #27? Would you type ESC? Or would you type its hex value, 1B? Is it universal? Thanks for taking the time to explain this stuff.
________
Web Shows (http://livesexwebshows.com/)

Rar
10-02-2009, 02:24 PM
I understand the majority of what you're saying, Rar. I know there's just one key piece that I'm missing... and that is this: which character(s), exactly, represent ASCII #27? Would you type ESC? Or would you type its hex value, 1B? Is it universal? Thanks for taking the time to explain this stuff.

Its printable ASCII representation is a little arrow pointing left. I don't think you can actually "type" it on your client, however. In Perl/etc., you would just assign a variable to chr(27) (or your language's equivalent).

$ESC = chr(27);
$text =~ s/$ESC/%%/g; // replaces #27 with %%

Ahriman
10-02-2009, 08:17 PM
Ahh, gotcha. It's like the Voldemort of ASCII characters: That Which Shall Not Be Typed.
________
LIVE SEX (http://livesexwebshows.com/)

Bellum
01-27-2010, 06:12 AM
I know this thread has been dead for a while but I came back to try this again and I got it work.


#alias {grab} {#action {$$0} {#script umc.getEvent();#script umc.setVar("raw", umc.getEvent());#unaction {$$0}}


it will variable the string you need to the varaiable raw without the esc char, you will have to add the char in your self like Rar has mentioned.

Thanks for everyones help on this.