Roll20 stellt eine Reihe von Funktionen zur Verfügung, die nicht Teil des Kern-JavaScripts oder einer anderen Bibliothek sind.
Spiele können Mod-Skript-Sandkasten v1.0 (Campaign().sandboxVersion === "1.0") oder v1.5 ("1.5") ausführen. Funktionen, die mit Nur für Mod-Skript-Sandkasten v1.5. gekennzeichnet sind funktionieren nicht mit v1.0.
Globale Variablen
| Variable | Beschreibung |
|---|---|
_ |
Dies ist das Namespace-Objekt für die Underscore.js-Bibliothek. |
state |
Die Eigenschaften des State-Objekts bleiben zwischen Spielsitzungen bestehen. |
_ (Unterstrich)
Dies ist das Namespace-Objekt für die Underscore.js-Bibliothek. Underscore verfügt über viele Funktionen zur Sammlungsmanipulation.
state
Die Eigenschaften des State-Objekts bleiben zwischen Spielsitzungen bestehen. Das gleiche Statusobjekt wird außerdem von allen Mod-Skripten einer Kampagne gemeinsam genutzt. Es wird daher dringend empfohlen, beim Schreiben von Werten in den Status den Speicherbedarf so gering wie möglich zu halten, um Namenskonflikte zu vermeiden. Hinweis: Der State wird mit JSON serialisiert, also kannst du keine Funktionen oder Objekte mit zyklischen Referenzen speichern.
Globale Funktionen
| Typ der Rückgabe | Funktion | Beschreibung |
|---|---|---|
Roll20-Objekt |
Kampagne |
Ruft das Singleton-Campaign-Roll20-Objekt ab. |
Roll20-Objekt |
createObj |
Erstellt ein neues Roll20-Objekt. |
Array von Roll20-Objekten |
filterObjs |
Ruft alle Roll20-Objekte ab, die ein Prädikatstest bestehen. |
Array von Roll20-Objekten |
findObjs |
Ruft alle Roll20-Objekte mit Eigenschaften ab, die einem bestimmten Satz von Attributen entsprechen. |
Array von Roll20-Objekten |
getAllObjs |
Ruft alle Roll20-Objekte in der Kampagne ab. |
variiert |
getAttrByName |
Ruft den aktuellen oder maximalen Wert eines Attribut-Roll20-Objekts ab. |
variiert |
getComputed |
Nur Mod-Skript-Sandkasten v1.5. Ruft eine berechnete Beacon-Eigenschaft ab. |
variiert |
getSheetDefaultValue |
Ruft den Standardwert eines Charakterbogens für einen Attributnamen ab. |
variiert |
getSheetItem |
Ruft ein Bogenelement ab (Attribut; ab Version 1.5 auch Beacon / user.*). |
Roll20-Objekt |
getObj |
Ruft ein bestimmtes Roll20-Objekt ab. |
log |
Protokolliert eine Meldung in der Mod-Ausgabekonsole. | |
an |
Registriert einen Ereignishandler. | |
onSheetWorkerCompleted |
Registriert einen einmaligen Ereignishandler, der ausgeführt wird, nachdem ein vollständiger Stapel von Charakterbogen-Entwickler-Skripten abgeschlossen ist. | |
performAction |
Nur Mod-Skript-Sandkasten v1.5. Führt eine Beacon-Bogenaktion aus. | |
Boolescher Wert |
SpielerIstSL |
Überprüft, ob ein Spieler derzeit über GM-Rechte verfügt. |
PlayJukeboxPlaylist |
Beginne mit der Wiedergabe einer Musikbox-Wiedergabeliste. | |
Nummer |
randomInteger |
Erzeugt einen zufälligen ganzzahligen Wert. |
sendChat |
Sendet eine Chat-Nachricht. | |
sendPing |
Sendet einen Ping, so als würdest du die linke Maustaste gedrückt halten. | |
setAttrs |
Legt ein oder mehrere Attribute für einen Charakter fest. | |
setComputed |
Nur Mod-Skript-Sandkasten v1.5. Legt eine beschreibbare berechnete Beacon-Eigenschaft fest. | |
setSheetItem |
Legt ein Bogenelement fest (Attribut; ab Version 1.5 auch Beacon / user.*). |
|
spawnFx |
Erzeugt einen Partikelemitter. | |
spawnFxBetweenPoints |
Erzeugt einen Partikelemitter, der sich von einem Punkt zum anderen bewegt. | |
spawnFxWithDefinition |
Erzeugt einen Partikelemitter, der nicht durch ein FX Roll20-Objekt dargestellt wird. | |
stopJukeboxPlaylist |
Stoppt alle aktuell abgespielten Musikbox-Wiedergabelisten. | |
toAbove |
Nur Mod-Skript-Sandkasten v1.5. Platziert ein Objekt direkt über einem anderen auf derselben Ebene. | |
toBack |
Verschiebt eine Grafik, einen Text, einen Pfad oder ein pathv2-Objekt unter die anderen Objekte auf seiner Ebene. | |
toBelow |
Nur Mod-Skript-Sandkasten v1.5. Platziert ein Objekt direkt unter einem anderen auf derselben Ebene. | |
nach vorne |
Verschiebt eine Grafik, einen Text, einen Pfad oder ein pathv2-Objekt über die anderen Objekte auf seiner Ebene. Übergebe das Objekt, nicht eine ID. | |
Kartenhelfer |
shuffleDeck, cardInfo, recallCards, dealCardsToTurn, drawCard, pickUpCard, takeCardFromPlayer, playCardToTable, giveCardToPlayer – siehe Objekte: Kartenspiel. |
Kampagne
Parameter
Keine Parameter
Gibt zurück
Das Roll20-Objekt der Singleton-Kampagne.
Beispiele
var currentPageID = Campaign().get('playerpageid'),
currentPage = getObj('page', currentPageID);
Campaign().sandboxVersion ist "1.0" oder "1.5". Campaign().nodeVersion ist die Zeichenfolge für die Node.js-Version. Nur Mod-Skript-Sandkasten v1.5. sheetName, computedSummary und actionSummary. Siehe Objekte: Kampagne.
createObj
Parameter
TYPE (Zeichenkette) Der Typ des Roll20-Objekts, das erstellt werden soll. Du kannst 'graphic', 'text', 'path', 'pathv2', 'character', 'ability', 'attribute', 'handout', 'rollabletable', 'tableitem', 'macro', 'card', 'deck', 'custfx', 'window', 'door' und 'pin' erstellen. Nur Mod-Skript-Sandkasten v1.5. 'pageFolder'.
ATTRIBUTES (Objekt) Die Anfangswerte, die für die Eigenschaften des Roll20-Objekts verwendet werden sollen.
Kehrt zurück
Das erstellte Roll20-Objekt.
Beispiele
Wenn du ein Roll20-Objekt erstellst, das ein übergeordnetes Objekt hat (z. B. ein Roll20-Attributobjekt, das ein untergeordnetes Objekt eines Roll20-Charakterobjekts ist), musst du die ID des übergeordneten Objekts in attributes angeben.
on('ready', function() {
on('add:character', function(obj) {
createObj('attribute', {
name: 'Strength',
current: 0,
max: 30,
characterid: obj.id
});
});
});
Wenn du einen Pfad erstellst, gib path (gespeichert als _path) und pageid an. path ohne Unterstrich ist der Name zum Zeitpunkt der Erstellung. Danach ist es schreibgeschützt.
createObj('path', {
pageid: Campaign().get('playerpageid'),
left: 7000,
top: 140,
width: 140,
height: 140,
layer: 'objects',
path: JSON.stringify([['M', 0, 0], ['L', 70, 0], ['L', 0, 70], ['L', 0, 0]])
});
Wenn du ein Roll20-Objekt für eine Notiz erstellst, kannst du den Text oder gmnotes zum Zeitpunkt der Erstellung nicht festlegen.
var handout = createObj('handout', {
name: 'A Letter Addressed to You',
inplayerjournals: 'all',
archived: false
});
handout.set('notes', 'Notes can only be set after the handout is created.');
handout.set('gmnotes', 'Set gmnotes in a separate call from notes.');
filterObjs
Parameter
CALLBACK (Funktion) Eine Prädikatfunktion, mit der alle Roll20-Objekte geprüft werden. Die Callback-Funktion erhält ein Roll20-Objekt als Parameter und sollte entweder true (für Roll20-Objekte, die im Rückgabewert von filterObjs enthalten sind) oder false (für alle anderen Roll20-Objekte) zurückgeben.
Gibt zurück
Ein Array von Roll20-Objekten, die den Prädikatstest bestanden haben.
findObjs
Parameter
ATTRIBUTES (Objekt) Eine Sammlung von Schlüssel-Wert-Paaren, die mit Roll20-Objekten in der Kampagne abgeglichen werden.
OPTIONS (Objekt, optional)
-
caseInsensitive– Wenn „true“, werden bei Zeichenfolgenvergleichen Groß- und Kleinschreibung nicht berücksichtigt. -
startsWith– wenntrue, stimmen Zeichenfolgenwerte als Präfix überein. -
tagMatch– beim Abgleichen vontags:'all'(Standard; das Objekt hat jedes aufgeführte Stichwort),'any'(mindestens eines),'only'(genau die aufgeführte Menge).
Gibt zurück
Ein Array von Roll20-Objekten mit Eigenschaften, die mit attributes übereinstimmen. Bei Schlüsseln kann der führende Unterstrich weggelassen werden: type und _type stimmen beide überein.
Beispiele
var npcs = findObjs({ type: 'character', controlledby: '' });
var knights = findObjs({ type: 'character', name: 'Sir' }, { startsWith: true });
getAllObjs
Parameter
Keine Parameter
Gibt zurück
Ein Array aller Roll20-Objekte in der Kampagne.
getAttrByName
Parameter
CHARACTER_ID (Zeichenkette) Die ID des Charakters. ATTRIBUTE_NAME (Zeichenkette) Der Name des Attributs. VALUE_TYPE (Zeichenkette, optional) "current" oder "max" (standardmäßig "current").
Gibt zurück
Die Eigenschaft current oder max. Wenn nichts festgelegt ist, wird der Standardwert des Charakterbogens verwendet (sofern vorhanden).
getComputed
Nur Mod-Skript-Sandkasten v1.5. (In Version 1.0 ist dieser Name ein No-Op-Stub.)
Parameter
Ein Objekt: { characterId, property, args?, playerId? }.
Wenn du einen Beacon-Charakterbogen verwendest, wird der Wert einer berechneten Eigenschaft abgerufen. Liste die Namen mit Campaign().computedSummary auf. playerId ist optional; einige Beacon-Funktionen (zum Beispiel Wurfabfragen) benötigen sie jedoch.
getSheetDefaultValue
Parameter
ATTRIBUTE_NAME (Zeichenkette), VALUE_TYPE (Zeichenkette, optional) "current" oder "max".
Das angegebene Roll20-Objekt.
Der Standardwert des Bogens für dieses Feld, nicht der aktuelle Charakterwert.
getSheetItem
Parameter
getSheetItem(characterId, property, valtype?, options?) — asynchron (Promise).
In Version 1.0 umschließt dies getAttrByName. Nur Mod-Skript-Sandkasten v1.5. Auf Beacon-Bögen liest es außerdem berechnete Eigenschaften und benutzerdefinierte Attribute namens user.*.
getObj
Parameter
TYPE (Zeichenkette), ID (Zeichenkette)
Gibt zurück
Das angegebene Roll20-Objekt.
on('chat:message', function(msg) {
var sendingPlayer = getObj('player', msg.playerid);
});
log
Parameter
MELDUNG (variiert) Wird in die Mod-Ausgabekonsole geschrieben. Mit JSON.stringify umgewandelt.
Nur Mod-Skript-Sandkasten v1.5. Fehlermeldungen enthalten oft ein Kontextobjekt wie beispielsweise [Roll20-Charakter -id].
an
Parameter
EVENT (Zeichenkette) Es gibt fünf Arten von Ereignissen: ready, change, add, destroy, chat. Mit Ausnahme von ready musst du das Ereignis mit einem Objekttyp verknüpfen. Für chat ist dieser Typ immer message. Änderungsereignisse können auch eine Eigenschaft, eine Objekt-ID oder beides benennen: change:graphic:left, change:graphic:ID, change:graphic:ID:left. Grafiken lösen außerdem Untertyp-Ereignisse wie change:token und change:dicetoken aus. Siehe Ereignisse.
CALLBACK (Funktion) ready-Ereignisse haben keine Callback-Parameter. change-Ereignisse haben einen obj-Parameter (das Roll20-Objekt nach der Änderung) und einen prev-Parameter (ein einfaches JavaScript-Objekt mit Eigenschaften vor der Änderung). add-Ereignisse haben einen obj-Parameter (das neue Objekt). destroy-Ereignisse haben einen obj-Parameter (das nicht mehr existierende Objekt). chat-Ereignisse haben einen msg-Parameter (Details zur Nachricht).
Gibt zurück
(Void)
Ereignisse werden in der Reihenfolge ausgelöst, in der sie registriert wurden, und zwar von der höchsten zur unspezifischsten. In diesem Beispiel führt eine Änderung der Eigenschaft left eines grafischen Roll20-Objekts dazu, dass function3 aufgerufen wird, gefolgt von function1 und dann function2.
on('change:graphic', function1);
on('change:graphic', function2);
on('change:graphic:left', function3);
add-Ereignisse versuchen, für Roll20-Objekte ausgelöst zu werden, die sich bereits in der Kampagne befinden, wenn eine neue Sitzung beginnt. Um dieses Verhalten zu verhindern, kannst du mit der Registrierung deines add-Ereignisses warten, bis das ready-Ereignis ausgelöst wird.
on('add:graphic', function(obj) {
// Zu Beginn der Sitzung wird diese Funktion für jede Grafik in der Kampagne aufgerufen
});
on('ready', function() {
on('add:graphic', function(obj) {
// Diese Funktion wird *nur* aufgerufen, wenn ein neues Roll20-Objekt für eine Grafik erstellt wird
});
});
Der prev-Parameter für change-Events ist kein Roll20-Objekt. Du kannst get oder set nicht verwenden, und du kannst die führenden Unterstriche bei schreibgeschützten Eigenschaften nicht weglassen. Verwende prev._id, nicht prev.id.
Bei Blob-Feldern von Charakteren und Notizen (bio, notes, gmnotes) sowie bei _defaulttoken des Charakters ist prev nicht der Text. Grafik-gmnotes ist eine gewöhnliche Zeichenfolge. Speichere frühere Blob-Werte selbst im Cache, falls du sie brauchst.
onSheetWorkerCompleted
Parameter
CALLBACK (Funktion) Wird aufgerufen, wenn der aktuelle Stapel von Sheet Worker-Skripten abgeschlossen ist. Soll vor setWithWorker aufgerufen werden. Wird nur einmal ausgeführt. Der Callback kann { workersExecuted: boolean } erhalten.
performAction
Nur für Mod-Skript-Sandkasten v1.5. (In Version 1.0 ist dieser Name ein No-Op-Stub.)
Parameter
{ characterId, action, args?, playerId? }
Führt eine Beacon-Bogenaktion aus. Liste die Namen mit Campaign().actionSummary auf. playerId ist optional; einige Beacon-Funktionen benötigen sie jedoch. Wenn der Name keine Beacon-Aktion ist, greift v1.5 möglicherweise über sendChat auf eine Charakter-Fähigkeit mit diesem Namen zurück.
SpielerIstGM
Parameter
PLAYER_ID (Zeichenkette)
Kehrt zurück
true, wenn der Spieler derzeit über SL-Berechtigungen verfügt.
Besonders nützlich, um Mod-Skript-Befehle auf die Verwendung durch den SL zu beschränken. Behalte msg.type !== 'api' so bei, wie es geschrieben steht – das ist der Typ der Befehlsnachricht.
PlayJukeboxPlaylist
Parameter
PLAYLIST_ID (Zeichenkette) Die ID der Wiedergabeliste, deren Wiedergabe gestartet werden soll.
randomInteger
Parameter
MAX (Zahl) Maximalwert inklusive.
Kehrt zurück
Eine zufällige ganze Zahl zwischen 1 und max. Verwende das lieber als Math.random(), wenn du würfelähnliche Wertebereiche brauchst.
sendChat Asynchron
Parameter
SPEAKINGAS (Zeichenkette) Ein Name oder player|player_id / character|character_id. MESSAGE (Zeichenkette). CALLBACK (Funktion, optional) – Die Ergebnisse werden an den Callback übergeben, anstatt im Chat angezeigt zu werden. OPTIONEN (Objekt, optional) noarchive, use3d.
Siehe Mod-Skripte: Chat für Befehlsknöpfe ([label](!command)).
sendPing
Parameter
LEFT, TOP, PAGE_ID, PLAYER_ID (optional), MOVEALL (optional), VISIBLETO (optional). Wenn player_id weggelassen wird, ist der Ping gelb. Wenn moveAll true ist, werden die Ansichten auf den Ping zentriert. visibleTo kann eine Spieler-ID, ein Array von IDs oder eine durch Kommas getrennte Zeichenkette sein.
setAttrs
Parameter
CHARACTER_ID (Zeichenkette), ATTRIBUTE_OBJ (Objekt vom Typ „Name → Wert“). Namen, die auf _max enden, legen den Maximalwert fest. Wiederholende $n-Namen werden unterstützt. options.silent verwendet set anstelle von setWithWorker.
setComputed
Nur für Mod-Skript-Sandkasten v1.5.
{ characterId, property, args?, playerId? } — legt eine beschreibbare, berechnete Beacon-Eigenschaft fest. Siehe Campaign().computedSummary.
setSheetItem
setSheetItem(characterId, property, value, valtype?, options?) — asynchron. In Version 1.0 werden Attribute festgelegt. Nur für Mod-Skript-Sandkasten v1.5. Außerdem berechnete Beacon-Eigenschaften und benutzerdefinierte user.*-Attribute. Zu den Optionen gehören createAttr, withWorker und allowThrow.
spawnFx
Parameter
LEFT (Zahl) Die x-Koordinate, an der der Partikelemitter platziert werden soll. TOP (Zahl) Die y-Koordinate. TYPE (Zeichenkette) Für integrierte Effekte: "type-color", wobei type einer der folgenden Werte ist: bomb, bubbling, burn, burst, explode, glow, missile oder nova und color einer der folgenden Werte ist: acid, blood, charm, death, fire, frost, holy, magic, slime, smoke oder water. Für benutzerdefinierte Effekte die ID eines custfx-Objekts. Hinweis: beam, breath und splatter können nicht mit spawnFx verwendet werden – siehe spawnFxBetweenPoints. PAGE_ID (Zeichenkette, optional) ist standardmäßig auf Campaign().get('playerpageid') gesetzt.
spawnFx(1400, 1400, 'bubbling-acid');
spawnFxBetweenPoints
Parameter
START (Objekt) { x, y }. END (Objekt) { x, y }. TYPE (Zeichenkette) wie bei spawnFx, plus beam, breath und splatter. PAGE_ID (Zeichenkette, optional).
spawnFxBetweenPoints({ x: 1400, y: 1400 }, { x: 2100, y: 2100 }, 'beam-acid');
Nur für Mod-Skript-Sandkasten v1.5. Effekte vom Typ beam zeigen direkt auf den Endpunkt (ein Fehler bei der Winkelberechnung wurde behoben).
spawnFxWithDefinition
Parameter
LEFT, TOP, DEFINITION (Objekt, das den Emitter beschreibt), PAGE_ID (optional). Die Eigenschaftsnamen findest du unter „Custom FX“ im Artikel „Objects“.
spawnFxWithDefinition(1400, 1400, {
maxParticles: 200,
size: 15,
sizeRandom: 3,
lifeSpan: 20,
lifeSpanRandom: 5,
speed: 7,
speedRandom: 2,
gravity: { x: 0.01, y: 0.65 },
angle: 270,
angleRandom: 35,
emissionRate: 1,
startColour: [0, 35, 10, 1],
startColourRandom: [0, 10, 10, 0.25],
endColour: [0, 75, 30, 0],
endColourRandom: [0, 20, 20, 0]
});
stopJukeboxPlaylist
Stoppt alle aktuell abgespielten Musikbox-Wiedergabelisten.
stopJukeboxPlaylist();
Kartenhelfer
In beiden Sandkasten-Versionen verfügbar. Alle Details findest du unter Mod-Skripte: Objects (Deck).
shuffleDeck(deckid, discard, newOrder)cardInfo(settings)recallCards(deckid, type)dealCardsToTurn(deckid)drawCard(deckid, cardid)pickUpCard(cardid, fromDiscard)takeCardFromPlayer(playerid, options)playCardToTable(cardid, settings)giveCardToPlayer(cardid, playerid)
setDefaultTokenForCharacter
CHARACTER (Charakterobjekt), TOKEN (Grafikobjekt). Beides muss bereits vorhanden sein. Schreibt den _defaulttoken-Blob des Charakters aus dem Spielmarker. So setzt du dieses Feld; mit set() geht das nicht.
toAbove
Nur für Mod-Skript-Sandkasten v1.5.
Parameter
OBJ (graphic, text, path oder pathv2), TARGET (Objekt oder ID).
Platziert obj direkt über target auf derselben Ebene.
toBack / toFront
OBJ muss ein graphic-, text-, path- oder pathv2-Objekt sein. Übergebe das Objekt, nicht eine ID. In Version 1.5 sind diese deutlich schneller, und diese Typen verfügen außerdem über die Instanzmethoden toFront() / toBack().
toBelow
Nur für Mod-Skript-Sandkasten v1.5.
Platziert obj direkt unter target (Objekt oder ID) auf derselben Ebene.