Difference between revisions of "Mod:Use Guide"
From Roll20 Wiki
m |
|||
Line 1: | Line 1: | ||
+ | {{apibox}} | ||
+ | |||
==The Script Editor== | ==The Script Editor== | ||
To edit your campaign scripts, go to the My Settings tab on the right sidebar, and scroll all the way down to the bottom. There you'll find a button titled "Manage API Scripts". Clicking that button will open up a dialog box with a script editor. You can create multiple scripts for your campaign, but they will all run in the same "environment", meaning that you shouldn't have multiple scripts trying to overwrite the same values or you could get unintended results. | To edit your campaign scripts, go to the My Settings tab on the right sidebar, and scroll all the way down to the bottom. There you'll find a button titled "Manage API Scripts". Clicking that button will open up a dialog box with a script editor. You can create multiple scripts for your campaign, but they will all run in the same "environment", meaning that you shouldn't have multiple scripts trying to overwrite the same values or you could get unintended results. |
Revision as of 22:17, 22 April 2013
Roll20 Mod
Use Mods
- Use & Install
- Mod:Script Index & Suggestions
- Short Community Scripts
- Meta Scripts
- User Documentation
- Mod Scripts(Forum)
- Mod Update 2024🆕
- Macro Guide
Mod Development
Reference
- Objects
- Events
- Chat Events & Functions
- Utility Functions
- Function
- Roll20 object
- Token Markers
- Sandbox Model
- Debugging
Cookbook
The Script Editor
To edit your campaign scripts, go to the My Settings tab on the right sidebar, and scroll all the way down to the bottom. There you'll find a button titled "Manage API Scripts". Clicking that button will open up a dialog box with a script editor. You can create multiple scripts for your campaign, but they will all run in the same "environment", meaning that you shouldn't have multiple scripts trying to overwrite the same values or you could get unintended results.
Reactive Scripts: Listen to Events, Modify Objects
The first (and most simple type) of API usage is to react to changes on the tabletop, and then respond by making additional changes to the changed objects. This type of script is composed of a number of functions which listen to events that happen during the game. Then it will modify objects that are passed during those events, which will change what happens on the tabletop.
The most basic script which would simply move any piece which moved an additional 5 feet (assuming default page settings) would be:
on("change:graphic", function(obj) { obj.set({ left: obj.get("left") + 70 < 0 }); }
As you can see, we created a simple function using on which will be executed anytime the change:graphic
event is heard. The function is passed the graphic object obj
. To make a change, we just modify obj
using the set
function -- whatever properties we change will be detected and changed on the tabletop.
Important Note: You must use set
and get
to set and get current values on objects or your changes will not be saved. (See below for a listing of object types and their properties, as well as a listing of all events and what arguments each event is passed.)
A Note on Utility Functions
Of course, the previous example isn't incredibly helpful because it always adds 70 pixels to the location of the token. But what if the user has changed their scale so that 5ft is 140 pixels? The Roll20 API provides several handy utility functions to help with this (and other) common scenarios. Let's modify our previous example to use the distanceToPixelsfunction
, which will tell us how many pixels "five feet" (or inches, or meters, or whatever other distance type has been set) on the tabletop is.
on("change:graphic", function(obj) { obj.set({ left: obj.get("left") + distanceToPixels(5); }); }
Now if the current page is setup to use the default grid sizing, distanceToPixels(5);
will still return 70 pixels, but if the page is setup to have a scale twice the size of normal, it would return 140.
It's always a good idea to use utility functions whenever they're available to help keep your script from breaking if the settings of a page or a token change.