Gammon Forum
Entire forum
MUSHclient
General
trying my hand at building a trigger in C
trying my hand at building a trigger in C
|
It is now over 60 days since the last post. This thread is closed.
  Refresh page
Posted by
| Dragonlord
(24 posts) bio
|
Date
| Sat 02 Apr 2016 06:19 PM (UTC) Amended on Sun 03 Apr 2016 10:10 AM (UTC) by Nick Gammon
|
Message
| I am trying my hand at C programming, because it has a Switch - Case statements but seem to run into an issue here. what I am trying to do is take reagents: G_Reagent = {reagent-water, reagent-fire, reagent-air, reagent-earth, gem, reagent-ethereal} and it have so when my bag is full with one of the reagents but not the other type it will ignore trying to fill that container. I hope that I am making sense.
<triggers>
<trigger
enabled="y"
group="(reagents)"
ignore_case="y"
keep_evaluating="y"
match="Your Vandemaar's Reagent Bag glows white as it accumulates possessions from the ether."
regexp="y"
send_to="12"
sequence="100"
>
<send>Send ("open itemg")
Send ("get all itemg")
Send ("close itemg")
switch(G_Reagent) {
case "reagent-air"
Send ("put all\.", G_Reagent, " airreagents");
Break;
case "reagent-earth"
Send ("put all\.", G_Reagent, " earthreagents");
Break;
case "reagent-water"
Send ("put all\.", G_Reagent, " waterreagents");
Break;
case "reagent-fire"
Send ("put all\.", G_Reagent, " firereagents");
Break;
case "gem"
Send ("put all\.", G_Reagent, " gemreagents");
Break;
case "reagent-ethereal"
Send ("put all\.", G_Reagent, " etherealreagents");
Break;
}</send>
</trigger>
</triggers>
| top |
|
Posted by
| Fiendish
USA (2,514 posts) bio
Global Moderator |
Date
| Reply #1 on Sat 02 Apr 2016 06:40 PM (UTC) |
Message
| April 1 was yesterday. |
https://github.com/fiendish/aardwolfclientpackage | top |
|
Posted by
| Dragonlord
(24 posts) bio
|
Date
| Reply #2 on Sat 02 Apr 2016 07:00 PM (UTC) |
Message
| I am asking a serious question | top |
|
Posted by
| Fiendish
USA (2,514 posts) bio
Global Moderator |
Date
| Reply #3 on Sat 02 Apr 2016 07:06 PM (UTC) |
Message
|
Dragonlord said:
I am asking a serious question
Oh. Ok, then the answer is that you can't make triggers with C because C is not one of the languages that MUSHclient understands.
Also, there's nothing special about switch/case that you can't just as easily do with if/elseif/else. |
https://github.com/fiendish/aardwolfclientpackage | top |
|
Posted by
| Nick Gammon
Australia (22,975 posts) bio
Forum Administrator |
Date
| Reply #4 on Sun 03 Apr 2016 10:11 AM (UTC) |
Message
| It would be very simple in Lua to make a lookup table that converts (say) "reagent-air" into "airreagents" - and ditto for all the others you have there. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | top |
|
Posted by
| Nick Gammon
Australia (22,975 posts) bio
Forum Administrator |
Date
| Reply #5 on Sun 03 Apr 2016 10:15 AM (UTC) |
Message
| Or even do it with a regular expression:
G_Reagent = "reagent-air" -- testing
whichReagent = string.match (G_Reagent, "^reagent%-(%a+)$")
if whichReagent then
Send ("put all\.", G_Reagent, " " .. whichReagent .. "reagents")
end -- if
|
- Nick Gammon
www.gammon.com.au, www.mushclient.com | top |
|
Posted by
| Dragonlord
(24 posts) bio
|
Date
| Reply #6 on Sun 03 Apr 2016 09:52 PM (UTC) |
Message
| thank you it worked to a point. I ran into an issue with - reagent-water|reagent-fire|reagent-air|reagent-earth|gem|reagent-ethereal - so I tried to add utils.split (G_Reagent, "|" into the line to help with splitting and ran into an error
Run-time error
World: Materia Magica GMCP
Immediate execution
[string "Alias: G_Reagent_items"]:7: bad argument #3 to 'split' (number expected, got string)
stack traceback:
[C]: in function 'split'
[string "Alias: G_Reagent_items"]:7: in main chunk
Any ideal on what I did wrong?
<aliases>
<alias
name="G_Reagent_items"
match="G_Reagent_items"
enabled="y"
group="G_Reagent_items"
send_to="12"
ignore_case="y"
sequence="100"
>
<send>G_Reagent = "reagent-water|reagent-fire|reagent-air|reagent-earth|gem|reagent-ethereal"
Send ("open itemg")
Send ("get all\.", G_Reagent, " itemg")
Send ("close itemg")
whichReagent = string.match (utils.split (G_Reagent, "|", "^reagent%-(%a+)$"))
if whichReagent then
Send ("put all\.", G_Reagent, " " .. whichReagent .. "airreagents")
elseif whichReagent then
Send ("put all\.", G_Reagent, " " .. whichReagent .. "earthreagents")
elseif whichReagent then
Send ("put all\.", G_Reagent, " " .. whichReagent .. "waterreagents")
elseif whichReagent then
Send ("put all\.", G_Reagent, " " .. whichReagent .. "firereagents")
elseif whichReagent then
Send ("put all\.", G_Reagent, " " .. whichReagent .. "gemreagents")
elseif whichReagent then
Send ("put all\.", G_Reagent, " " .. whichReagent .. "etherealreagents")
else
Send ("drop all\.", G_Reagent)
end -- if</send>
</alias>
</aliases> | top |
|
Posted by
| Nick Gammon
Australia (22,975 posts) bio
Forum Administrator |
Date
| Reply #7 on Mon 04 Apr 2016 05:28 AM (UTC) |
Message
|
whichReagent = string.match (utils.split (G_Reagent, "|", "^reagent%-(%a+)$"))
Your brackets are in the wrong place there. utils.split takes two arguments, not three. |
- Nick Gammon
www.gammon.com.au, www.mushclient.com | top |
|
Posted by
| Fiendish
USA (2,514 posts) bio
Global Moderator |
Date
| Reply #8 on Mon 04 Apr 2016 10:49 AM (UTC) Amended on Mon 04 Apr 2016 10:50 AM (UTC) by Fiendish
|
Message
| Back this thread up a little bit. Whatever you are trying to do, I have a very hard time seeing how your code (broken or otherwise) will accomplish it. Can you please explain what you're trying to do again step by step? |
https://github.com/fiendish/aardwolfclientpackage | 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.
17,731 views.
It is now over 60 days since the last post. This thread is closed.
  Refresh page
top
Quick links:
MUSHclient.
MUSHclient help.
Forum shortcuts.
Posting templates.
Lua modules.
Lua documentation.
Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.