if: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 10: | Line 10: | ||
This function doesn't have the parentheses limit that the roll option has: | This function doesn't have the parentheses limit that the roll option has: | ||
< | <syntaxhighlight lang="mtmacro"> | ||
[if(((1))): 1;0] <!-- in this case if() roll option fails --> | [if(((1))): 1;0] <!-- in this case if() roll option fails --> | ||
[if(((1)),1,0)] <!-- in this case if() function works --> | [if(((1)),1,0)] <!-- in this case if() function works --> | ||
</ | </syntaxhighlight> | ||
|usage= | |usage= | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
if(condition, trueExpr, falseExpr) | if(condition, trueExpr, falseExpr) | ||
</ | </syntaxhighlight> | ||
'''Parameters''' | '''Parameters''' | ||
* {{code|condition}} - What is tested to determine is the {{code|trueExpr}} or {{code|falseExpr}} will be executed. This follows the standard rules for ''conditions'' that can be found in the [[Macros:Branching and Looping|Branching and Looping]] article. | * {{code|condition}} - What is tested to determine is the {{code|trueExpr}} or {{code|falseExpr}} will be executed. This follows the standard rules for ''conditions'' that can be found in the [[Macros:Branching and Looping|Branching and Looping]] article. | ||
Line 26: | Line 26: | ||
|examples= | |examples= | ||
'''Example 1:''' | '''Example 1:''' | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
[h: a = 10] [h: b = 20] | [h: a = 10] [h: b = 20] | ||
[r: if(a > b, "A is larger than B", "A is not larger than B")] | [r: if(a > b, "A is larger than B", "A is not larger than B")] | ||
</ | </syntaxhighlight> | ||
:'''Returns:''' {{code|A is not larger than B}} | :'''Returns:''' {{code|A is not larger than B}} | ||
'''Example 2:''' | '''Example 2:''' | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
[h: number = 1] | [h: number = 1] | ||
[r: if(number >= 1, 20, "")] | [r: if(number >= 1, 20, "")] | ||
</ | </syntaxhighlight> | ||
:'''Returns:''' A ''blank string'', please note that a ''blank string'' is not an ''empty variable'' if you were to assign the ''output'' of this function. | :'''Returns:''' A ''blank string'', please note that a ''blank string'' is not an ''empty variable'' if you were to assign the ''output'' of this function. | ||
'''Example 3:''' | '''Example 3:''' | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
[h: variable = "Foobar"] | [h: variable = "Foobar"] | ||
[r: if(variable == "Text", 1, 0)] | [r: if(variable == "Text", 1, 0)] | ||
</ | </syntaxhighlight> | ||
:'''Returns:''' {{code|0}} | :'''Returns:''' {{code|0}} | ||
'''Example 4:''' | '''Example 4:''' | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
[h: variable = 20] | [h: variable = 20] | ||
[property = if(variable > 0 && variable < 20, 1, 0)] | [property = if(variable > 0 && variable < 20, 1, 0)] | ||
</ | </syntaxhighlight> | ||
:'''Returns:''' {{code|property}} set to {{code|0}} | :'''Returns:''' {{code|property}} set to {{code|0}} | ||
Line 60: | Line 60: | ||
Let's say you want to check if one of a player's tokens has Initiative, you could do it this like this: | Let's say you want to check if one of a player's tokens has Initiative, you could do it this like this: | ||
< | <syntaxhighlight lang="mtmacro" line> | ||
[h: tokensOfPlayer = getOwned(getPlayerName(), "json")] | [h: tokensOfPlayer = getOwned(getPlayerName(), "json")] | ||
[h: hasIni = 0] | [h: hasIni = 0] | ||
[h: iniToken = getInitiativeToken()] | [h: iniToken = getInitiativeToken()] | ||
[h, foreach(id, tokensOfPlayer): hasIni = if(id!=iniToken,hasIni,1)] | [h, foreach(id, tokensOfPlayer): hasIni = if(id!=iniToken,hasIni,1)] | ||
</ | </syntaxhighlight> | ||
|also= | |also= |
Revision as of 16:22, 15 March 2023
if() Function
• Introduced in version 1.3b38
Is used to check whether a certain code expression should be executed or not. If the condition to be evaluated with this function is
true
(1
), the first expression of code is the result, otherwise the second expression of code is the result.
Note that both expressions, the true and the false, are evaluated!
This means that updates, macro calling, etc. in both expressions will be executed regardless of the test result.
This function doesn't have the parentheses limit that the roll option has:
[if(((1))): 1;0] <!-- in this case if() roll option fails -->
[if(((1)),1,0)] <!-- in this case if() function works -->
Usage
if(condition, trueExpr, falseExpr)
Parameters
condition
- What is tested to determine is thetrueExpr
orfalseExpr
will be executed. This follows the standard rules for conditions that can be found in the Branching and Looping article.trueExpr
- A section of code that is returned ifcondition
istrue
(1
).falseExpr
- A section of code that is returned ifcondition
isfalse
(0
).
Examples
Example 1:
[h: a = 10] [h: b = 20]
[r: if(a > b, "A is larger than B", "A is not larger than B")]
- Returns:
A is not larger than B
Example 2:
[h: number = 1]
[r: if(number >= 1, 20, "")]
- Returns: A blank string, please note that a blank string is not an empty variable if you were to assign the output of this function.
Example 3:
[h: variable = "Foobar"]
[r: if(variable == "Text", 1, 0)]
- Returns:
0
Example 4:
[h: variable = 20]
[property = if(variable > 0 && variable < 20, 1, 0)]
- Returns:
property
set to0
Example 5: Usually its better to use the roll option version [if():]. Sometimes it's pretty handy to use the version documented here, since you can easily embed it in loops and expressions.
Let's say you want to check if one of a player's tokens has Initiative, you could do it this like this:
[h: tokensOfPlayer = getOwned(getPlayerName(), "json")]
[h: hasIni = 0]
[h: iniToken = getInitiativeToken()]
[h, foreach(id, tokensOfPlayer): hasIni = if(id!=iniToken,hasIni,1)]