evalMacro

From RPTools Wiki
(Redirected from macros:Functions:evalMacro)
Jump to navigation Jump to search

evalMacro() Function

 Note: This function can only be used in a Trusted Macro

Introduced in version 1.3b49
Evaluates and "executes" the macro in a string and returns the result. The string contains the same type of macro commands that you would put in a token macro with the exception that it can not contain slash commands.

The evalMacro() function executes the macro in the same variable scope (i.e. the executed macro can read and alter variables from the current macro), where as execMacro() creates a new variable scope (i.e. the executed macro can neither read nor alter variables from the current macro).

If you are performing rolls in the macro that create tool tips or use [e: ] then you will have to use either { } or [r: ] to display the output, otherwise you will get incorrect formatting.

The advantage of this function over eval() is that with eval() you can only give a string as a parameter that can be evaluated (e.g. "3+5"), while with evalMacro() you can give anything as a parameter, but only the parts between [brackets] will be evaluated, e.g. "Your resulting roll is [r: 1d10]".

Usage

evalMacro(macroString)
execMacro(macroString)

Parameter

  • macroString - The string containing the macro script that is evaluated/executed.

Examples

[h: setNotes(evalMacro('[r,macro("CreateNotes@Lib:Notes"): ""]'))]

Sets the Notes of a Token to the output of the CreateNotes macro located on the Lib:Notes Library Token.


[r: evalMacro("[h: TestVar1 = 5][h: TestVar2 = 10][TestVar1+TestVar2]")]

Returns 15


[h: TestVar3 = 10]
[h: TestVar4 = 20]
[r: evalMacro("[TestVar3+TestVar4]")]

Returns 30


[h: TestVar3 = 15]
[h: TestVar4 = 30]
[h: evalMacro("[TestVar5 = TestVar3+TestVar4]")]
[TestVar5]

Returns 45


[h: TestVar6 = 20]
[h: TestVar7 = 40]
[r: execMacro("[TestVar6+TestVar7]")]

Prompts for the values of TestVar6 and TestVar7, then it returns the sum of those two values.


[h: TestVar8 = 50]
[h: TestVar9 = 100]
[h: TestVar10 = 0]
[h: execMacro("[TestVar10 = TestVar8+TestVar9]")]
[TestVar10]

Returns 0


[r: evalMacro("[h:roll=1d20]You roll [r:roll] and you [r:if(roll<10, 'hit', 'miss')] your target.")]
Returns You roll 3 and you hit your target.

See Also