API: Dienstprogrammfunktionen

Es stehen Hilfsfunktionen zur Verfügung, die Ihnen dabei helfen, konsistent mit dem Roll20-Spielraum zu arbeiten. Sie können eine Dienstprogrammfunktion von überall in Ihren Skripts aufrufen (z. B. innerhalb eines Event-Callbacks).


Underscore.js

Zur Vereinfachung haben Sie Zugriff auf die Underscore.js-Bibliothek (über das globale Objekt_). Underscore bietet Hilfsfunktionen für Dinge wie_.each(um ein Array von Objekten zu durchlaufen). Weitere Informationen finden Sie in derUnderscore-Dokumentation.


Protokollierung

Protokoll (Nachricht)

Du kannst diese Funktion verwenden, um Ausgaben in die Mod (API) Konsole auf der Script Editor Seite zu protokollieren. Nützlich zum Debuggen deiner Skripte und um ein besseres Verständnis dafür zu bekommen, was im Mod (API) Sandbox passiert.

on("change:graphic", function(obj) {    
  log("Änderung für Objekt-ID gehört: " + obj.id);
});

Objektbestellung

toFront(obj)undtoBack(obj)

Diese beiden Funktionen verschieben ein Objekt auf der Tischplatte an die Vorderseite (oder Rückseite) der Ebene, auf der es sich gerade befindet. Beachten Sie, dass Sie ein tatsächliches Objekt übergeben müssen, z. B. eines, das Sie in einem Ereignisrückruf oder durch Aufruf vongetObjoderfindObjserhalten.


Zufällige Zahlen

randomInteger(max)

Verwenden Sie diese Funktion für Würfel!Diese Funktion berücksichtigtModulo Bias, was sicherstellt, dass die resultierenden Zufallszahlen auch gleichmäßig zwischen 1 und MAX verteilt sind.

Gibt eine zufällige Ganzzahl zurück, wobei der niedrigste Wert 1 und der höchste Wertmaxist. Dies ist die gleiche Funktionalität, die Roll20 für seine Würfelwürfe nutzt, und es wurde statistisch und rigoros nachgewiesen, dass diese Zahlen zufällig sind.

Math.random()

Du kannst Math.random() wie gewohnt in deinen Mod (API) Skripten aufrufen und darauf vertrauen, dass die Ergebnisse zufällig sind, weil das „Standard“ Math.random() in Javascript durch den kryptographisch sicheren PRNG ersetzt wurde, der Roll20 steuert. Daher können vorhandene Skripte, die Math.random() verwenden, mit der Gewissheit verwendet werden, dass die Ergebnisse tatsächlich so zufällig sind, wie es auf einem Computer möglich ist.

Verwenden Sie Math.random() nicht, wenn eine gleichmäßige Verteilung der Zahlen in einem Bereich gewünscht ist. Während Math.random() Ihnen eine ebenso gute Zufallszahl wie Roll20 liefert, ist die Mathematik, die diese Zufallszahl in einen Bereich mit gleichmäßiger Verteilung umwandelt (wie ein Würfelwurf), nicht so einfach wie die Multiplikation mit einem Modulo oder einem Floor Forderung. Verwenden Sie für diese FällerandomInteger(max).


Spieler ist GM

playerIsGM(playerid)

Die Funktion „Spieler ist GM“ gibt eine boolesche Antwort darauf zurück, ob ein Spieler im Spiel ein GM ist oder nicht. Die Funktion gibt immer die richtige Antwort abhängig vom aktuellen Moment zurück, also auch wenn ein SL beschließt, sich als Spieler erneut anzuschließen oder ein Spieler während des Spiels zum SL befördert wird, wird playerIsGM() entsprechend reagieren, ohne dass ein Cache geleert oder die Mod (API) Sandbox neu gestartet werden muss.


PC sheet

setDefaultTokenForCharacter( Zeichen, Token )

Setzt das Standard-Token für das bereitgestellte Zeichenobjekt auf die Details des bereitgestellten Token-Objekts. Beide Objekte müssen bereits vorhanden sein. Dadurch werden alle derzeit mit dem Charakter verknüpften Standard-Token überschrieben.


Spezialeffekte (FX)

spawnFx(x, y, Typ, Seiten-ID)

Erzeugt einen kurzen Effekt an der Position x,y des Typs. Wenn Sie die Seiten-ID weglassen oder „undefiniert“ übergeben, wird standardmäßig die Seite verwendet, auf der sich die Spieler gerade befinden („playerpageid“ im Kampagnenobjekt).

Für integrierte Effekte sollte der Typ eine Zeichenfolge sein und einer der folgenden Werte sein:beam-color,bomb-color,Breath-color,bubbling-color,burn-color,Burst- Farbe,Explosionsfarbe,Leuchtfarbe,Raketenfarbe,Nova-Farbe,Splatter-Farbe

Wobei „Farbe“ oben eines von:Säure,Blut,Zauber,Tod,Feuer,Frost,heilig,Magie,Schleim,Rauchist ,Wasser

Bei benutzerdefinierten Effekten sollte der Typ die ID des custfx-Objekts für den benutzerdefinierten Effekt sein.

spawnFxBetweenPoints(point1, point2, type, pageid)

Funktioniert genauso wie spawnFx, aber statt eines einzelnen Punkts übergeben Sie zwei Punkte im Format {x: 100, y: 100}. Zum Beispiel: spawnFxBetweenPoints({x: 100, y: 100}, {x: 400, y: 400}, "beam-acid"); Der Effekt „wandert“ zwischen den beiden Punkten bei Effekten, die dies unterstützen (die gleichen, die eine Handlungsfähigkeit auf der Clientseite ermöglichen).

Die folgenden Effekttypen müssen immer spawnFxBetweenPoints anstelle von spawnFx verwenden:beam-color,Breath-color,Splatter-Color

spawnFxWithDefinition(x, y, definitionJSON, pageid)

Erzeugt einen benutzerdefinierten Ad-hoc-Effekt mithilfe von JSON für eine Effektdefinition an der Position x,y. Wenn Sie die Seiten-ID weglassen oder „undefiniert“ übergeben, wird standardmäßig die Seite verwendet, auf der sich die Spieler gerade befinden („playerpageid“ im Kampagnenobjekt).

definitionJSON ist ein Javascript-Objekt, das der JSON-Spezifikation fürCustom FXfolgt.


Jukebox-Playlists

playJukeboxPlaylist(playlistid)

Die Wiedergabefunktion übernimmt die Ordner-ID (erhalten Sie sie aus der Eigenschaft „_jukeboxfolder“ im Kampagnenobjekt) der Wiedergabeliste und beginnt mit der Wiedergabe dieser Wiedergabeliste für alle im Spiel.

stopJukeboxPlaylist()

Die Stop-Funktion erfordert keine Argumente und stoppt jede gerade abgespielte Playlist.


Verschiedenes

sendPing(left, top, pageid, (optional) playerid, (optional) moveAll, (optional) sichtbarTo)

Sendet einen „Ping“ an die Tischplatte (dasselbe, als ob ein Spieler seine Maustaste gedrückt hält). Sie müssen die oberen/linken Koordinaten und die Seiten-ID der Seite angeben, die angepingt werden soll. Sie können optional die ID eines Spielers angeben, der den Ping ausgeführt hat. Wenn Sie dies nicht tun, wird „API“ angenommen und der Ping wird gelb angezeigt.

Sie können „true“ für die Option „moveAll“ übergeben, wenn Sie die Ansichten der Spieler ebenfalls an diesen Ort verschieben möchten.

Sie können in „visibleTo“ die Spieler-IDs für die Spieler festlegen, die den Ping sehen oder von ihm bewegt werden können. Dies wird als einzelne Spieler-ID, als Array oder als durch Kommas getrennte Zeichenfolge dargestellt.

on("chat:message", function(msg) {
  // Geben Sie „!pingtest“ in den Chat ein, um den Test auszuführen
  if(msg.type == „api“ && msg.content.indexOf(“!pingtest ") !== -1) {
 
    // Um einen bestimmten Spieler zu erhalten, verwenden Sie findObjs({_type: "player"})[i].id anstelle von null für den 3. Parameter
    player = findObjs({_type: "player "});
    Spieler1 = Spieler[1].id;
    Spieler2 = Spieler[2].id;
 
    // Erstelle ein Array aller Spieler-IDs
    var allPlayerIDs =players.map(function(player) {
      return player['id '];
    });
 
    // Pingen Sie alle auf dieser Seite an denselben Ort.
    sendPing(300, 300, Campaign().get('playerpageid'), null, true);
    setTimeout(function() {
        // Alle auf dieser Seite an denselben Ort pingen
        sendPing(1500, 500, Campaign().get('playerpageid'), msg.playerid, true, "");
    }, 1000);
    setTimeout(function() {
        // Pinge nur den angegebenen Spieler an diesen Ort
        sendPing(1200, 500, Campaign().get('playerpageid'), null, true, player1);
    }, 2000);
    setTimeout(function() {
        // Ein Array von Spieler-IDs (Spieler 1 und 2) an diesen Ort pingen
        sendPing(900, 100, Campaign().get('playerpageid'), player2, true, [player1, Spieler2]);
    }, 3000);
    setTimeout(function() {
        // Eine durch Kommas getrennte Liste, die als String bereitgestellt wird, an diesen Ort senden
        sendPing(300, 300, Campaign().get('playerpageid'), player1, true, allPlayerIDs.join() );
    }, 4000);
 
  }
})
 

Ein Hinweis zu Abständen und Rastern in Roll20

In Roll20 beträgt eine „Einheit“ immer 70 Pixel auf dem Bildschirm. Die „Einheit“ ist der Baustein, auf dem die Distanz und das Raster aufgebaut sind. Standardmäßig:

  • 1 Einheit = 5 Fuß
  • 1 Einheit = 1 Planquadrat
  • Daher ist 5 Fuß = 1 Einheit = 1 Quadrat

Der GM kann jedoch sowohl die Größe des Gitters als auch den Maßstab der Entfernung ändern. 1 Einheit ist immer 70 Pixel, aber der GM könnte die Einstellungen so ändern, dass 1 Einheit jetzt 10 Fuß groß ist (d. h. 70 Pixel = 10 Fuß) oder dass jeder Rasterraum 2 Einheiten groß ist (was bedeutet, dass jeder Rasterraum jetzt 140 Pixel groß ist).

War dieser Beitrag hilfreich?
14 von 21 fanden dies hilfreich