Notice: Any messages purporting to come from this site telling you that your password has expired, or that you need to verify your details, confirm your email, resolve issues, making threats, or asking for money, are
spam. We do not email users with any such messages. If you have lost your password you can obtain a new one by using the
password reset link.
Due to spam on this forum, all posts now need moderator approval.
Entire forum
➜ MUSHclient
➜ General
➜ Make alias
It is now over 60 days since the last post. This thread is closed.
Refresh page
Pages: 1 2
Posted by
| Halig
Portugal (123 posts) Bio
|
Date
| Wed 04 Feb 2015 02:39 PM (UTC) |
Message
| Hi to all. I have a question, i've been killing my mind to try to figure this out, and i can't.
I have an alias, like this:
-stringo -(.*) -(.*) -(.*) -(.*)
What it does is the following:
var item;
var newitem;
var short;
var long;
item = "%1";
newitem = "%2";
short = "%3";
long = "%4";
world.send("string obj " + item + " name " + newitem);
world.send("string obj " + newitem + " short " + short);
world.send("string obj " + newitem + " long " + long);
My problem is that if the name (newitem) has 2 or more words, the code gives an error.
Example: The newitem will have the name mighty hammer gods.
When it does the short description on it, it gets the full name, mighty hammer gods, and not only one of the names. What i need is a line of code, that if it has one keyword, it uses that keyword, if it has 2 keywords, it sets the name to those 2 keywords, but when doing the short or the long, it uses only one of those keywords. And so on, if it has 3 the same thing.
What am i doing wrong?
Thank you. | Top |
|
Posted by
| Nick Gammon
Australia (23,140 posts) Bio
Forum Administrator |
Date
| Reply #1 on Wed 04 Feb 2015 08:02 PM (UTC) |
Message
| It would help to post the exact alias, and the exact text that causes it to fail.
 |
For advice on how to copy aliases, timers or triggers from within MUSHclient, and paste them into a forum message, please see Copying XML.
|
However I am guessing you need to make the wildcards "non greedy" by adding a ?, like this:
-stringo -(.*?) -(.*?) -(.*?) -(.*?)
|
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Halig
Portugal (123 posts) Bio
|
Date
| Reply #2 on Wed 04 Feb 2015 08:53 PM (UTC) |
Message
| <aliases>
<alias
match="-stringo -(.*?) -(.*?) -(.*?) -(.*?)"
enabled="y"
expand_variables="y"
group="Restring"
regexp="y"
send_to="12"
keep_evaluating="y"
sequence="100"
>
<send>var item;
var newitem;
var short;
var long;
item = "%1";
newitem = "%2";
short = "%3";
long = "%4";
world.send("string obj " + item + " name " + newitem);
world.send("string obj " + newitem + " short " + short);
world.send("string obj " + newitem + " long " + long);</send>
</alias>
</aliases>
It is used for restring objects on the MUD. I don't know if all MUD's are alike.
The error is that on the second world.send, the newitem can only have one word, and not more then one word. If i name the item like i sayd before, the string saved on the var new item will be the all name, and i only need one, the first word for example. | Top |
|
Posted by
| Nick Gammon
Australia (23,140 posts) Bio
Forum Administrator |
Date
| Reply #3 on Thu 05 Feb 2015 05:24 AM (UTC) |
Message
| Can you please post an example of the MUD output that this should be matching on? Then I can test it. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Halig
Portugal (123 posts) Bio
|
Date
| Reply #4 on Thu 05 Feb 2015 07:07 AM (UTC) Amended on Thu 05 Feb 2015 07:08 AM (UTC) by Halig
|
Message
| N:Reorx Vnum:1205 Incog: Wizi:
-stingo -book -book pedro -book pedro -Here lies a book
Huh?
N:Reorx Vnum:1205 Incog: Wizi:
string obj book name book pedro
string obj [b]book pedro[/b] short book pedro
string obj [b]book pedro[/b] long Here lies a book.
N:Reorx Vnum:1205 Incog: Wizi: Syntax:
string char <name> <field> <string>
fields: name short long desc title spec racetext
string obj <name> <field> <string>
fields: name short long extended
N:Reorx Vnum:1205 Incog: Wizi: Syntax:
string char <name> <field> <string>
fields: name short long desc title spec racetext
string obj <name> <field> <string>
fields: name short long extended
N:Reorx Vnum:1205 Incog: Wizi:
This is the MUD output. The two last outputs are the error, that's why i can't do what it suposed to do.
Thank you Nick. | Top |
|
Posted by
| Nick Gammon
Australia (23,140 posts) Bio
Forum Administrator |
Date
| Reply #5 on Thu 05 Feb 2015 08:09 AM (UTC) |
Message
| Nothing in your last post has "stringo" in it.
match="-stringo -(.*?) -(.*?) -(.*?) -(.*?)"
|
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Halig
Portugal (123 posts) Bio
|
Date
| Reply #6 on Thu 05 Feb 2015 08:33 AM (UTC) |
Message
| Nick,
I have posted all the outputs. I don't know what to do more :(.
The commands on the MUD are as followed:
string obj (object) name (new name)
string obj (new name) short (short description)
string obj (new name) long (long description)
These are the commands that are inputed on the MUD, so you can change the name of the object. The () are there only to show that it is what you need to input.
So i need to make an alias to do those 3 commands, in Jscript or with something else. See the (new name) that's where my problem is. If you set the new name with one word, there is no problem, but if you put 2 words on the new name, the second command don't work cause the (new name) must be entered on only one word. If i do those 3 commands, separated, by hand, they work fine. | Top |
|
Posted by
| Meerclar
USA (733 posts) Bio
|
Date
| Reply #7 on Thu 05 Feb 2015 08:41 AM (UTC) Amended on Thu 05 Feb 2015 08:48 AM (UTC) by Meerclar
|
Message
| He's trying to match that to his input rather than mud output Nick. At least I'm pretty sure that's what I'm reading in his next to last post.
Halig, try putting your newitem output in quotes if it contains multiple words. What codebase is this for? Would be a good bit easier to help you with that info.
ex: string obj "(multi-word new name)" short (short description) |
Meerclar - Lord of Cats
Coder, Builder, and Tormenter of Mortals
Stormbringer: Rebirth
storm-bringer.org:4500
www.storm-bringer.org | Top |
|
Posted by
| Halig
Portugal (123 posts) Bio
|
Date
| Reply #8 on Thu 05 Feb 2015 09:12 AM (UTC) |
Message
| Hi Meerclar,
You are right. I'm trying to match my input, not the MUD's. Thank you for that.
The codebase is based on Merc 2.1, based on Rom2.4 copyright 1993 - 1994 Russ Taylor.
It worked on what you said, put the "".
But on the script it doesn't work. How do i make an alias that makes all the three commands? | Top |
|
Posted by
| Meerclar
USA (733 posts) Bio
|
Date
| Reply #9 on Thu 05 Feb 2015 09:44 AM (UTC) |
Message
| If the server doesn't complain about the " " enclosure, change your alias to put keywords in quotes so that it doesn't 'confuse' the server with multiple keywords. That's why it's failing the way you set it up initially - the server is looking for a single 'word' for keyword when you restring and it should treat "(stuff stuff stuffy stuff)" as a single 'word' and allow you to use the alias like you're trying to do. If it's still complaining with the " " enclosure, you're going to need to rework the alias to properly fit the expected input pattern which could get very tricky if you've got something that was built with a lot of keywords. |
Meerclar - Lord of Cats
Coder, Builder, and Tormenter of Mortals
Stormbringer: Rebirth
storm-bringer.org:4500
www.storm-bringer.org | Top |
|
Posted by
| Halig
Portugal (123 posts) Bio
|
Date
| Reply #10 on Thu 05 Feb 2015 10:20 AM (UTC) |
Message
| Thank you again.
The alias still getting messed up. Can you help me with the rewritten of that?
I'm really stuck, cause it works if you type one command at a time, but i want to automated that, make the three commands on one alias. | Top |
|
Posted by
| Meerclar
USA (733 posts) Bio
|
Date
| Reply #11 on Thu 05 Feb 2015 11:41 AM (UTC) Amended on Thu 05 Feb 2015 11:43 AM (UTC) by Meerclar
|
Message
| Be sure expand variables is checked or this is guaranteed to fail spectacularly.
<aliases>
<alias
match="-stringo -(.*?) -(.*?) -(.*?) -(.*?)"
enabled="y"
expand_variables="y"
group="Restring"
regexp="y"
send_to="12"
keep_evaluating="y"
sequence="100"
>
<send>var item;
var newitem;
var short;
var long;
item = "%1";
newitem = "%2";
short = "%3";
long = "%4";
world.execute(string obj @item name @newitem);
world.execute(string obj "@newitem" short @short);
world.execute(string obj "@newitem" long @long);</send>
</alias>
</aliases>
I'm pretty sure I got that right at least. Using execute rather than send should keep the expanding variables functioning properly within the quotes and if not, Nick should spot any mistakes I made fairly easily. This one's a little beyond what I normally do with aliasing and the command syntax for string is definitely complicating things. |
Meerclar - Lord of Cats
Coder, Builder, and Tormenter of Mortals
Stormbringer: Rebirth
storm-bringer.org:4500
www.storm-bringer.org | Top |
|
Posted by
| Halig
Portugal (123 posts) Bio
|
Date
| Reply #12 on Thu 05 Feb 2015 11:48 AM (UTC) |
Message
| variable name is not defined. I changed it to item, and then the newitem is not defined also.
I'm doing this in JScript. | Top |
|
Posted by
| Nick Gammon
Australia (23,140 posts) Bio
Forum Administrator |
Date
| Reply #13 on Thu 05 Feb 2015 07:52 PM (UTC) Amended on Thu 05 Feb 2015 07:54 PM (UTC) by Nick Gammon
|
Message
| I got better results with matching on:
^-stringo -(.*?) -(.*?) -(.*?) -(.*?)$
Example alias in Lua:
<aliases>
<alias
match="^-stringo -(.*?) -(.*?) -(.*?) -(.*?)$"
enabled="y"
expand_variables="y"
group="Restring"
regexp="y"
send_to="12"
keep_evaluating="y"
sequence="100"
>
<send>
item = "%1";
newitem = "%2";
short = "%3";
long = "%4";
-- debugging
print ("item", item)
print ("newitem", newitem )
print ("short", short)
print ("long", long)
-- Lua uses .. instead of + to concatenate strings
Send("string obj " .. item .. " name " .. newitem);
Send("string obj " .. newitem .. " short " .. short);
Send("string obj " .. newitem .. " long " .. long);
</send>
</alias>
</aliases>
Test:
-stringo -foo -bar -pedro -hello world
Output:
item foo
newitem bar
short pedro
long hello world
string obj foo name bar
string obj bar short pedro
string obj bar long hello world
|
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Halig
Portugal (123 posts) Bio
|
Date
| Reply #14 on Thu 05 Feb 2015 08:15 PM (UTC) |
Message
| Thank you Nick. But what if you insert:
-stringo -foo -bar of strenght -pedro -hello world
item foo
newitem bar of strenght
short pedro
long hello world
string obj foo name bar
string obj bar of strenght short pedro
string obj bar long hello world
The second line is where my problem resides. It can't be bar of strenght, but only bar. | Top |
|
The dates and times for posts above are shown in Universal Co-ordinated Time (UTC).
To show them in your local time you can join the forum, and then set the 'time correction' field in your profile to the number of hours difference between your location and UTC time.
71,548 views.
This is page 1, subject is 2 pages long: 1 2
It is now over 60 days since the last post. This thread is closed.
Refresh page
top