execFunction: Difference between revisions

From RPTools Wiki
Jump to navigation Jump to search
No edit summary
m (Text replacement - "<source" to "<syntaxhighlight")
 
(8 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Experimental}}
{{MacroFunction
{{MacroFunction
|name=execFunction
|name=execFunction
Line 5: Line 4:
|trusted=true
|trusted=true
|description=
|description=
Executes a built-in macro function or user-defined function (UDF) on one or more clients. No output from the executed function will be presented on the targets. {{func|execFunction}} allows you to defer the running of the function until after the currently running macro has ended. If you defer a series of {{func|execFunc}} calls, they will be queued in order and executed after the currently running macro.
Executes a built-in macro function or user-defined function (UDF) on one or more clients. No output from the executed function will be presented on the targets. {{func|execFunction}} allows you to defer the running of the function until after the currently running macro has ended. If you defer a series of {{func|execFunction}} calls, they will be queued in order and executed after the currently running macro.
 
|usage=
|usage=


<source lang="mtmacro" line>
<syntaxhighlight lang="mtmacro" line>
execFunction(functionName, arguments)
execFunction(functionName, arguments)
execFunction(functionName, arguments, defer)
execFunction(functionName, arguments, defer)
execFunction(functionName, arguments, defer, targets)
execFunction(functionName, arguments, defer, targets)
execFunction(functionName, arguments, defer, targets, delim)
execFunction(functionName, arguments, defer, targets, delim)
</source>
</syntaxhighlight>
'''Parameters'''
'''Parameters'''
{{param|functionName|The function to "execute".}}
{{param|functionName|The function to "execute".}}
Line 25: Line 23:
To run a song on every client, the GM can use
To run a song on every client, the GM can use


<source lang="mtmacro" line>
<syntaxhighlight lang="mtmacro" line>
[h: song = "https://ia800300.us.archive.org/29/items/Muzyka-CC/Aleksand_Sjakin_-_Flight_in_space.mp3"]
[h: song = "https://ia800300.us.archive.org/29/items/Muzyka-CC/Aleksand_Sjakin_-_Flight_in_space.mp3"]
[h: execFunction("playStream", json.append("[]", song, 1, 0.8), 0, "all")]
[h: execFunction("playStream", json.append("[]", song, 1, 0.8), 0, "all")]
</source>
</syntaxhighlight>


|also=
|also=
Line 34: Line 32:


}}
}}
===Notes===
Deferred functions/links which are queued within a deferred macro do not run directly after the queuing macro, but instead is added to the end of the stack of all the deferred functions and links. This means you cannot 'nest' deferrals or insert deferrals in the middle of the stack of deferred macros. For discussion of this functionality and possible workarounds you can [https://github.com/RPTools/maptool/issues/2633 read more on GitHub].
[[Category:Miscellaneous Function]]
[[Category:Miscellaneous Function]]

Latest revision as of 23:59, 14 March 2023

execFunction() Function

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

Introduced in version 1.5.7
Executes a built-in macro function or user-defined function (UDF) on one or more clients. No output from the executed function will be presented on the targets. execFunction() allows you to defer the running of the function until after the currently running macro has ended. If you defer a series of execFunction() calls, they will be queued in order and executed after the currently running macro.

Usage

execFunction(functionName, arguments)
execFunction(functionName, arguments, defer)
execFunction(functionName, arguments, defer, targets)
execFunction(functionName, arguments, defer, targets, delim)

Parameters

  • functionName - The function to "execute".
  • arguments - A JSON array of arguments for the function.
  • defer - Executes the function after the current macro has completed if non zero, defaults to zero.
  • targets - are the user names (so not token names) but the names of the users that are logged in. The options "gm", "gm-self", "self", "not-self", "not-gm", "not-gm-self", "none", and "all" are also valid parameters to give. E.g.: "tim, tom, tarra". Defaults to self (so if no parameter is given the function is executed locally only).
  • delim - The delimiter used to separate the values in the String List that is given, defaults to ",". If "json" is specified, a JSON array is expected instead of a String List.

Example

To run a song on every client, the GM can use
[h: song = "https://ia800300.us.archive.org/29/items/Muzyka-CC/Aleksand_Sjakin_-_Flight_in_space.mp3"]
[h: execFunction("playStream", json.append("[]", song, 1, 0.8), 0, "all")]

See Also

Notes

Deferred functions/links which are queued within a deferred macro do not run directly after the queuing macro, but instead is added to the end of the stack of all the deferred functions and links. This means you cannot 'nest' deferrals or insert deferrals in the middle of the stack of deferred macros. For discussion of this functionality and possible workarounds you can read more on GitHub.