onCampaignLoad: Difference between revisions

From RPTools Wiki
Jump to navigation Jump to search
m (Typographical tweaks)
(Added warning about the use of certain functions within onCampaignLoad plus example code for making deferred function calls.)
Line 10: Line 10:


===Limitations===
===Limitations===
Do not make changes in the onCampaignLoad() macro to the library token it resides on. Its not supported by the MapTool handles stuff and nasty stuff could happen. (Actually a duplicate lib token can/will appear and this will/can break stuff)
* Do not make changes within the onCampaignLoad() macro to the library token it resides upon. This is not supported by MapTool. A duplicate lib token can/will appear and this will/can break stuff.
* Some macro functions may not work as expected if run in onCampaignLoad without deferring their execution by using the defer option of [[execLink|execLink()]].
** [[goto|goto()]], [[setZoom|setZoom()]] and similar function calls should be placed in a separate macro to be called via [[execLink|execLink()]]
 
===Example of Deferred Function Calls===
Inside onCampaignLoad() macro place code like this:
<source lang="mtmacro" line>
[h: link = macroLinkText("deferredCalls@"+getMacroLocation())]
[h: execLink(link,1)]
</source>
 
And in the deferredCalls() macro place the functions to be deferred.
<source lang="mtmacro" line>
[h: goto("2")]
[h: setZoom(2)]
</source>


[[Category:Special Macro]][[Category:Event]]
[[Category:Special Macro]][[Category:Event]]

Revision as of 15:23, 31 March 2018

onCampaignLoad Macro

• Introduced in version 1.3b51

A special macro that can be created on library tokens to have macro code automatically execute when a campaign is loaded. A campaign is considered to have been loaded if it is opened via the File menu, or upon connecting to a server running that campaign. All output from onCampaignLoad() is discarded, when it is executed automatically. This special macro is ideally suited for loading your defined functions via defineFunction().

When onCampaignLoad() is executed automatically, it is considered a Trusted Macro. If you wish to use trusted functions within onCampaignLoad() and execute it manually (e.g. while developing macros), you will have to make sure that it follows all of the rules of Trusted Macros.

How to Create an onCampaignLoad Macro

You can create an onCampaignLoad() macro on any library token; simply create a macro that is specifically named onCampaignLoad.

Limitations

  • Do not make changes within the onCampaignLoad() macro to the library token it resides upon. This is not supported by MapTool. A duplicate lib token can/will appear and this will/can break stuff.
  • Some macro functions may not work as expected if run in onCampaignLoad without deferring their execution by using the defer option of execLink().

Example of Deferred Function Calls

Inside onCampaignLoad() macro place code like this:

[h: link = macroLinkText("deferredCalls@"+getMacroLocation())]
[h: execLink(link,1)]

And in the deferredCalls() macro place the functions to be deferred.

[h: goto("2")]
[h: setZoom(2)]