Register forum user name Search FAQ

Gammon Forum

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 ➜ 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,541 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,541 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  (23,165 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  (23,165 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  (23,165 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,541 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.


24,147 views.

It is now over 60 days since the last post. This thread is closed.     Refresh page

Go to topic:           Search the forum


[Go to top] top

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.