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
➜ Tips and tricks
➜ Alias setting variable to be called by trigger
Alias setting variable to be called by trigger
|
It is now over 60 days since the last post. This thread is closed.
Refresh page
Posted by
| Omegasage
(7 posts) Bio
|
Date
| Sat 21 Jan 2012 06:52 AM (UTC) |
Message
| Ok, a little complicated here, I got this to work fairly painlessly using Portal, but Portal doesn't support multiple windows so I switched. I've got it partially working, but have ran into a few issues.
First I started with an Alias:
track (?P<target>.*)
Command:
SetVariable ("target", "%<target>")
Execute ("sense @target")
Options:
Regular Expression
Expand Variables
Send to Script
After this I have a trigger follow it up:
^(.*)You concentrate and sense their ki (?P<there>.*) of here.
Output:
%<there>
sense @target
Options:
Keep Evaluating (tried this on and off makes no difference)
Regular Expression
Expand Variables
Send to World
A couple quirks:
I have to use the track command twice. When I use it it will send whatever the previous variable was before it writes the new one in.
Sometimes get "stuck" where if part of the direction to where the target is includes a room with exits w,n,e and you're coming from the east and the target is north, it'll sometimes hang up and keep going east then west past that room. If I let it sit there for a minute or so it eventually fixes itself, but it's quicker to kill it and move manually.
Third, most recent issue, if my status is on the same line as the trigger, it wont go off at all.
For Example:
[randomstats][randomstats][randomstats][randomstats]You concentrate and sense their ki west of here.
Nothing happens in this case.... | Top |
|
Posted by
| Chyort
USA (58 posts) Bio
|
Date
| Reply #1 on Sat 21 Jan 2012 07:42 AM (UTC) |
Message
|
Quote: Third, most recent issue, if my status is on the same line as the trigger, it wont go off at all.
For Example:
[randomstats][randomstats][randomstats][randomstats]You concentrate and sense their ki west of here.
your trigger is set to match on
^(.*)You concentrate and sense their ki (?P<there>.*) of here."
that ^ requires it be the start of a new line, thus when you have a prompt or anything else it wont fire. delete that ^ and it should work.
Past that, it is helpful to copy/paste your entire trigger. Not just tell us what the trigger/send/everything is manually.
How to do that is listed in the Faq, but a quick version is open your triggers. select the trigger(s) you want. then click the copy button in that window.
you can now paste something that will look like this.
<triggers>
<trigger
enabled="y"
ignore_case="y"
match="What do you seek"
regexp="y"
>
<send>say i seek the grail</send>
</trigger>
</triggers>
You can also copy this and click the paste button, also on the triggers page, to easily load triggers.
As far as your first complaint
Quote: I have to use the track command twice. When I use it it will send whatever the previous variable was before it writes the new one in.
here is one way i get around that
<aliases>
<alias
match="^dig[ ]+(.*?)$"
enabled="y"
group="All"
variable="Digdir"
regexp="y"
send_to="9"
ignore_case="y"
keep_evaluating="y"
sequence="100"
>
<send>%1</send>
</alias>
<alias
match="dig *"
enabled="y"
expand_variables="y"
group="All"
sequence="101"
>
<send>dig @digdir</send>
</alias>
</aliases>
The first alias, with a sequence of 100 sets the variable "Dirdir", and has keep evaluation checked so the 2nd alias with a sequence of 101 fires right after and sends dig @digdir with expand_variables checked, sending the variable you just set.
I am sure it is an ugly brute force approach, and that others can tell you how to do nicer... But it does work :P | Top |
|
Posted by
| Omegasage
(7 posts) Bio
|
Date
| Reply #2 on Sat 21 Jan 2012 08:39 AM (UTC) |
Message
| Your brute force approach to the alias works great. I never understood what Keep Evaluating did until going through these forums, this should make things a lot easier. However the trigger is still being funky. I'll repost both the way you suggested:
<aliases>
<alias
match="^track[ ]+(.*?)$"
enabled="y"
group="Tracking"
variable="target"
regexp="y"
send_to="9"
ignore_case="y"
keep_evaluating="y"
sequence="100"
>
<send>%1</send>
</alias>
</aliases>
<aliases>
<alias
match="track *"
enabled="y"
expand_variables="y"
group="Tracking"
sequence="101"
>
<send>sense @target</send>
</alias>
</aliases>
<triggers>
<trigger
enabled="y"
expand_variables="y"
group="Tracking"
keep_evaluating="y"
match="(.*)You concentrate and sense their ki (?P<there>.*) of here."
regexp="y"
sequence="100"
>
<send>%<there>
sense @target</send>
</trigger>
</triggers>
| Top |
|
Posted by
| Chyort
USA (58 posts) Bio
|
Date
| Reply #3 on Sat 21 Jan 2012 10:53 PM (UTC) |
Message
| I am not entirely sure what you are doing with your trigger.
I assume you are trying to name the variable in the regular expression. I seem to recall you can do that, but it is not something i use personally so i can't tell you how to fix it. :P
You might have some luck with this trigger though.
<triggers>
<trigger
enabled="y"
expand_variables="y"
group="Tracking"
keep_evaluating="y"
match="You concentrate and sense their ki (.*?) of here\.$"
regexp="y"
sequence="100"
>
<send>%1
sense @target</send>
</trigger>
</triggers>
Assuming i understand what your trying to match right... :P It should send the direction, then sense @target.
It doesn't require that it be at the start of the line, so if there is a prompt it should still work.
It only has the one very simple variable in the match, so all that is required is a simple %1 to use that variable.
And it does require that it be the end of the line, if it doesn't work try deleting the $ at the end of the line.
| Top |
|
Posted by
| Omegasage
(7 posts) Bio
|
Date
| Reply #4 on Fri 03 Feb 2012 09:57 AM (UTC) Amended on Fri 03 Feb 2012 10:23 AM (UTC) by Omegasage
|
Message
| Neither of those tricks seem to work. I don't know why, but whenever that prompt comes up as the start of the line, any line, it seems to negate any trigger I have set up. The prompt is simply my status bar. Normally the Prompt will use up its own line, but whenever commands are stacked, the message for a new line will at times continue out of said prompt. I don't do a lot of command stacking, but sometimes it comes up, like reapplying buffs, or using delayed attacks. This is really frustrating. and I don't think it's so much a problem with the code, but maybe I tweaked a setting somewhere I shouldn't have maybe...
Wow, I just figured it out, boy do I feel stupid.
I have a separate trigger set to the status bar, and I never set it to keep evaluating. I just set it to do that, and now everything is golden. I feel dumb. Thank you for your time and efforts. | Top |
|
Posted by
| Omegasage
(7 posts) Bio
|
Date
| Reply #5 on Tue 07 Feb 2012 07:51 AM (UTC) Amended on Tue 07 Feb 2012 08:16 AM (UTC) by Nick Gammon
|
Message
| Ok, even though I got it working again, I have ran into a different issue with it. It sends the command twice:
<triggers>
<trigger
enabled="y"
expand_variables="y"
group="Tracking"
keep_evaluating="y"
match="(.*)You concentrate and sense their ki (?P<there>.*) of here."
regexp="y"
sequence="100"
>
<send>%<there>
sense @target</send>
</trigger>
</triggers>
<triggers>
<trigger
enabled="y"
expand_variables="y"
group="Tracking"
keep_evaluating="y"
match="(.*)You think you sense their ki (?P<there>.*) of here."
regexp="y"
sequence="100"
>
<send>sense @target</send>
</trigger>
</triggers>
<aliases>
<alias
match="track *"
enabled="y"
expand_variables="y"
group="Tracking"
sequence="101"
>
<send>sense @target</send>
</alias>
</aliases>
<aliases>
<alias
match="^track[ ]+(.*?)$"
enabled="y"
group="Tracking"
variable="target"
regexp="y"
send_to="9"
ignore_case="y"
keep_evaluating="y"
sequence="100"
>
<send>%1</send>
</alias>
</aliases>
So if I put: "track minotaur", it will send:
sense minotaur
sense minotaur
Just like that, it really messes it up. Someone else in the MUD gave me a plugin that seems to work, but I can't tie it in to my other triggers and such. It uses commands I can't tie into my triggers, since i can't activate alias's directly.
[Moderator edit] Forum codes and [code] tags added. | Top |
|
Posted by
| Nick Gammon
Australia (23,140 posts) Bio
Forum Administrator |
Date
| Reply #6 on Tue 07 Feb 2012 08:26 AM (UTC) Amended on Tue 07 Feb 2012 08:27 AM (UTC) by Nick Gammon
|
Message
| Are you sure you don't have more than one such alias? When I tried your two aliases I only saw "sense minotaur" once.
Try turning on "Trace" from the Game menu to see what aliases are firing and when.
Anyway, you don't need two aliases matching on the same thing to do two things. That's what scripting is for. Try this instead of both of them:
<aliases>
<alias
match="track *"
enabled="y"
group="Tracking"
send_to="12"
sequence="101"
>
<send>
SetVariable ("target", "%1") -- set the variable
Send ("sense %1") -- sense the target
Note ("Now tracking: %1") -- confirm your action
</send>
</alias>
</aliases>
 |
For advice on how to copy the above, and paste it into MUSHclient, please see Pasting XML.
|
|
- Nick Gammon
www.gammon.com.au, www.mushclient.com | Top |
|
Posted by
| Omegasage
(7 posts) Bio
|
Date
| Reply #7 on Tue 07 Feb 2012 01:09 PM (UTC) |
Message
| That works wonderfully! Thank you!
Not sure why it was sending doubles of it before. I tried the tracing as you said, but it wasn't doing it anymore. In the course of messing with other stuff I must have inadvertently fixed it. Only other place where the alias existed at all was the plugin, but that was disabled. | 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.
28,565 views.
It is now over 60 days since the last post. This thread is closed.
Refresh page
top