Register to post in forums, or Log in to your existing account
 

Play RetroMUD
Post new topic  Reply to topic     Home » Forums » zMUD General Discussion
Kush
Newbie


Joined: 31 May 2016
Posts: 8
Location: Yorkshire, England

PostPosted: Tue May 31, 2016 9:36 pm   

Nested If's
 
I am having some problems using #if multiple times in a trigger to set variables . I have managed to make this work with multiple triggers for each @grouperX. This is super messy and seems very backwards. So now I am attempting the same but with just one trigger set.. Currently with little success!

So here's what I have tried:-

Pattern : ^There is a sudden white flash around %w
Value: #IF (%1=@grouper1) {#VAR group1strength 5} {#IF (%1=@grouper2) {#VAR group2strength 5} {#IF (%1=@grouper3) {#VAR group3strength 5}}}

Ive also tried this:-

Pattern : ^There is a sudden white flash around %w
Value : #IF (%1=@grouper1) {#VAR group1strength 5}
#IF (%1=@grouper2) {#VAR group2strength 5}

Ive tried structuring it differently and have had some positive results, but it only seems to affect the first @groupXstrength variable

I have little coding experience and have only been playing around with zmud for a few weeks now, any help would be greatly appreciated.

Kush
Reply with quote
Vijilante
SubAdmin


Joined: 18 Nov 2001
Posts: 5182

PostPosted: Tue May 31, 2016 9:41 pm   
 
It looks like you formatted and wrote your #IFs correctly, either format should work the first is more efficient. I would say the problem is that you forgot the parenthesis to capture a value in the pattern:
^There is a sudden white flash around (%w)
_________________
The only good questions are the ones we have never answered before.
Search the Forums
Reply with quote
Kush
Newbie


Joined: 31 May 2016
Posts: 8
Location: Yorkshire, England

PostPosted: Tue May 31, 2016 9:47 pm   
 
Omg it was that simple! I cannot believe it, 7hrs+ smashing stuff around in the value box. Never thinking it might be my capture pattern...
Thank you so much for the quick reply! So very happy this is working now :P

Kush
Reply with quote
Kush
Newbie


Joined: 31 May 2016
Posts: 8
Location: Yorkshire, England

PostPosted: Wed Jun 01, 2016 12:38 am   
 
It is working perfectly for my previous trigger:-

Pattern: ^There is a sudden white flash around (%w)
Value :
#ECHO Works
#IF (%1=@grouper1) {#VAR group1strength 0} {#IF (%1=@grouper2) {#VAR group2strength 0} {#IF (%1=@grouper3) {#VAR group3strength 0} {#IF (%1=@grouper4) {#VAR group4strength 0} {#IF (%1=@grouper5) {#VAR group5strength 0}}}}}


But, for my next trigger it is not working:-


Pattern:
The wobbling orange glow around (%w) * becomes flickering yellow

Value:

#ECHO Works
#IF (%1=@grouper1) {#VAR group1strength 1} {#IF (%1=@grouper2) {#VAR group2strength 1} {#IF (%1=@grouper3) {#VAR group3strength 1} {#IF (%1=@grouper4) {#VAR group4strength 1} {#IF (%1=@grouper5) {#VAR group5strength 1}}}}}

Returns:

[The wobbling orange glow around (%w) * becomes flickering yellow-> #ECHO Works
#IF (leyan=@grouper1) {#VAR group1strength 1} {#IF (leyan=@grouper2) {#VAR group2strength 1} {#IF (leyan=@grouper3) {#VAR group3strength 1} {#IF (leyan=@grouper4) {#VAR group4strength 1} {#IF (leyan=@grouper5) {#VAR group5strength 1}}}}}]
Works


Its capturing but isn't changing the values of @groupXstrength variables. I think I may be missing a trick in the capture again, but I have tried iteration after iteration to no avail again. Seems I am unable to grasp pattern matching firmly no matter how much I google. Any thoughts?

Kush
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4689
Location: Pensacola, FL, USA

PostPosted: Wed Jun 01, 2016 1:49 pm   
 
Aren't there more than just the two possible colors in the shield?

Are you sure the @grouperX variables are properly defined?

Your #IFs are testing "leyan" not %1
_________________
Discord: Shalimarwildcat
Reply with quote
Kush
Newbie


Joined: 31 May 2016
Posts: 8
Location: Yorkshire, England

PostPosted: Wed Jun 01, 2016 4:37 pm   
 
There are 6 levels of shield colour defined by a gauge button from min-level 0 to max-level 5 for each of the @grouperX variables

I have 12 different triggers to change to the different levels of shield, each of them has and identical #IF statement with the only value changing being the @groupXstrength variable

I assign the @grouperX with a #prompt for each using a push button and I am sure @grouperX variables are correct

%1 should equal Leyan in the capture
As should @grouper2 in the #IF


This one works and assigns the correct @groupstrength to the @grouperX:-
Pattern: There is a sudden white flash around Leyan von Toke
Trigger: ^There is a sudden white flash around (%w)
Value: #IF (%1=@grouper1) {#VAR group1strength 0} {#IF (%1=@grouper2) {#VAR group2strength 0} {#IF (%1=@grouper3) {#VAR group3strength 0} {#IF (%1=@grouper4) {#VAR group4strength 0} {#IF (%1=@grouper5) {#VAR group5strength 0}}}}}

This however triggers but does no assign any @groupXstrength variables:-
Pattern: The wobbling orange glow aroung Leyan von Toke becomes flickering yellow
Trigger: The wobbling orange glow around (%w) * becomes flickering yellow
Value: #IF (%1=@grouper1) {#VAR group1strength 1} {#IF (%1=@grouper2) {#VAR group2strength 1} {#IF (%1=@grouper3) {#VAR group3strength 1} {#IF (%1=@grouper4) {#VAR group4strength 1} {#IF (%1=@grouper5) {#VAR group5strength 1}}}}}
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4689
Location: Pensacola, FL, USA

PostPosted: Wed Jun 01, 2016 4:53 pm   
 
I assume that 'aroung' was a manual typing error?
Other then that, i don't see any issues.

The second pattern doesn't have the start of line anchor, but that shouldn't matter really.
Check for leading spaces?
_________________
Discord: Shalimarwildcat
Reply with quote
Kush
Newbie


Joined: 31 May 2016
Posts: 8
Location: Yorkshire, England

PostPosted: Wed Jun 01, 2016 5:08 pm   
 
Seems it was the capitalisation of @grouperX variable that stopped this working, it was not matching the captured text. Thank you very much for making me recheck, I will put a notice in the #Prompt 's to remind myself of this.

The only issue I have now is:-
Pattern :- The wobbling orange glow around (%w) * becomes flickering yellow

Trigger: - The wobbling orange glow around Leyan Von becomes flickering yellow ---- Captures and triggers properly
Trigger: - The wobbling orange glow around Leyan Von toke weed and stuff becomes flickering yellow ----- Captures and triggers properly
But.
Trigger: - The wobbling orange glow around Leyan becomes flickering yellow -- Does not trigger


Some players may have surnames and some may not, is * not the correct wildcard?

Apologies for my noob questions, the forums and you guys have been a massive help!
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4689
Location: Pensacola, FL, USA

PostPosted: Wed Jun 01, 2016 5:22 pm   
 
better would be to just use (*) and then pull the name out from that with %word(%1, 1)
_________________
Discord: Shalimarwildcat
Reply with quote
Kush
Newbie


Joined: 31 May 2016
Posts: 8
Location: Yorkshire, England

PostPosted: Wed Jun 01, 2016 5:34 pm   
 
Amazing! Thank you very much for your time, it really is appreciated. all are working as they should!


Thanks again
Kush
Reply with quote
Vijilante
SubAdmin


Joined: 18 Nov 2001
Posts: 5182

PostPosted: Wed Jun 01, 2016 5:45 pm   
 
Quote:
Some players may have surnames and some may not, is * not the correct wildcard?

Your current pattern would not match when a player has only a single name, because you have " * " after the capture, spelling that out if the forum makes it hard to see: [space][asterisk][space]. That means there must be 2 [space] characters between the name and "becomes flicker". Shalimar's suggestion of switching to * to capture all the words and then using %word to reduce to just the first one eliminates that problem.

At the same time you can deal with that issue of case sensitivity using either %upper or %lower on both sides.
Trigger: The wobbling orange glow around (*) becomes flickering yellow
Value:
FadeTarget=%lower(%word(%1,1))
#IF (@FadeTarget=@grouper1) {#VAR group1strength 1} {#IF (@FadeTarget=@grouper2) {#VAR group2strength 1} {#IF (@FadeTarget=@grouper3) {#VAR group3strength 1} {#IF (@FadeTarget=@grouper4) {#VAR group4strength 1} {#IF (@FadeTarget=@grouper5) {#VAR group5strength 1}}}}}

And in the buttons that do the #PROMPT you change it to use %prompt something like:
grouper1=%lower(%prompt("Enter name for party member 1."))

Or get really fancy and think about automating the capture of party member's names.
_________________
The only good questions are the ones we have never answered before.
Search the Forums
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4689
Location: Pensacola, FL, USA

PostPosted: Wed Jun 01, 2016 5:49 pm   
 
%proper will match the mud output Cool
or we could skip that altogether and use %match(%1, @grouperX) since that would ignore case
_________________
Discord: Shalimarwildcat
Reply with quote
Display posts from previous:   
Post new topic   Reply to topic     Home » Forums » zMUD General Discussion All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

© 2009 Zugg Software. Hosted by Wolfpaw.net