API: Funzioni di strumento

Sono disponibili funzioni di strumento per assistervi nell'utilizzo dello spazio di gioco Roll20 in modo coerente. È possibile richiamare una funzione di strumento da qualsiasi punto degli script (ad esempio, all'interno di qualsiasi callback di evento).


Underscore.js

È possibile accedere alla libreria Underscore.js (tramite l'oggetto globale_) per semplificare il lavoro. Underscore offre funzioni di supporto per operazioni come_.each(per iterare attraverso un array di oggetti). Si prega di consultare la documentazione di Underscore per ulteriori dettagli.


Registrazione

log(messaggio)

È possibile utilizzare questa funzione per registrare l'output nella console Mod (API) nella pagina Script Editor. Utile per eseguire il debug degli script e comprendere meglio cosa accade all'interno della sandbox della mod (API).

on("change:graphic", function(obj) {    
  log("Rilevata modifica per l'ID oggetto: " + obj.id);
});

Ordine degli oggetti

toFront(obj)etoBack(obj)

Queste due funzioni consentono di spostare un oggetto sul tavolo di gioco in primo piano (o sullo sfondo) del livello in cui si trova attualmente. Si prega di notare che è necessario passare un oggetto effettivo, come quello ricevuto in una callback di evento o chiamandogetObjofindObjs.


Numeri casuali

numero casuale intero (massimo)

Si prega di utilizzare questa funzione per i dadi. Questa funzione tiene conto di bias del modulo che garantisce che i numeri casuali risultanti siano distribuiti uniformemente tra 1 e MAX.

Restituisce un numero intero casuale, con il valore minimo pari a 1 e il valore massimo pari amax. Si tratta della stessa funzionalità utilizzata da Roll20 per i suoi lanci di dadi, e questi numeri sono stati statisticamente e rigorosamente dimostrati come casuali.

math.random()

È possibile utilizzare Math.random() normalmente negli script Mod (API), con la certezza che i risultati saranno casuali, poiché il Math.random() "predefinito" in Javascript è stato sostituito con il PRNG crittograficamente sicuro che alimenta Roll20. Pertanto, gli script esistenti che utilizzano Math.random() possono essere impiegati con la certezza che i risultati sono realmente il più vicini possibile al caso che si possa ottenere su un computer.

Si prega di non utilizzare Math.random() se si desidera una distribuzione uniforme dei numeri in un intervallo. Sebbene Math.random() fornisca un numero casuale di buona qualità, Roll20 non è in grado di trasformare tale numero casuale in un intervallo con distribuzione uniforme (come un lancio di dadi) in modo semplice come la moltiplicazione con un modulo o una chiamata floor. In tali casi, si prega di utilizzarerandomInteger(max).


Il giocatore è il GM

playerIsGM(id giocatore)

La funzione Player Is GM restituisce una risposta booleana che indica se un giocatore nel gioco è un GM o meno. La funzione restituirà sempre la risposta corretta in base al momento corrente, quindi anche se un GM decide di rientrare come giocatore o un giocatore viene promosso a GM durante il gioco, playerIsGM() risponderà di conseguenza senza necessità di cancellare la cache o riavviare la sandbox Mod (API).


Personaggio

impostaTokenPredefinitoPerPersonaggio( personaggio, token )

Imposta il segnalino di default per l'oggetto personaggio fornito in base ai dettagli dell'oggetto segnalino fornito. Entrambi gli oggetti devono già esistere. Questo sovrascriverà qualsiasi segnalino di default attualmente associato al personaggio.


Effetti speciali (FX)

spawnFx(x, y, tipo, pageid)

Genera un effetto di breve durata nella posizione x,y del tipo. Se si omette l'ID della pagina o si passa "undefined", verrà utilizzata per impostazione predefinita la pagina in cui si trovano attualmente i giocatori ("playerpageid" nell'oggetto Campagna).

Per gli effetti integrati, il tipo deve essere una stringa e corrispondere a uno dei seguenti:colore del raggio,colore della bomba,colore del respiro,colore del ribollimento,coloredella bruciatura,colore dell'esplosione,colore dello scoppio, colore del bagliore,colore del missile,colore della nova,colore dello schizzo.

Dove "colore" nell'esempio sopra riportato può essere uno dei seguenti:acido,sangue,fascino,morte,fuoco,gelo,sacro,magia,melma,fumo,acqua.

Per gli effetti personalizzati, il tipo dovrebbe essere l'ID dell'oggetto custfx per l'effetto personalizzato.

spawnFxBetweenPoints(punto1, punto2, tipo, idpagina)

Funziona allo stesso modo di spawnFx, ma invece di un singolo punto si specificano due punti, nel formato {x: 100, y: 100}. Ad esempio: spawnFxBetweenPoints({x: 100, y: 100}, {x: 400, y: 400}, "beam-acid"); L'effetto si "sposterà" tra i due punti per gli effetti che lo supportano (gli stessi che consentono l'azione sul lato client).

I seguenti tipi di effetti devono sempre utilizzare spawnFxBetweenPoints invece di spawnFx:beam-color,breath-color,splatter-color.

spawnFxWithDefinition(x, y, definizioneJSON, pageid)

Genera un effetto personalizzato ad hoc utilizzando il JSON per la definizione di alcuni effetti nella posizione x,y. Se si omette il pageid o si passa "undefined", verrà utilizzata per impostazione predefinita la pagina in cui si trovano attualmente i giocatori ("playerpageid" nell'oggetto Campagna).

definizione JSON è un oggetto javascript conforme alle specifiche JSON per Custom FX.


Playlist del jukebox

riproduciJukeboxPlaylist(idplaylist)

La funzione di riproduzione accetta l'ID cartella (ottenibile dalla proprietà "_jukeboxfolder" nell'oggetto Campagna) della playlist e avvia la riproduzione di tale playlist per tutti i partecipanti al gioco.

interrompiJukeboxPlaylist()

La funzione stop non richiede alcun argomento e interrompe qualsiasi playlist attualmente in riproduzione.


Vario

sendPing(sinistra, alto, pageid, (facoltativo) playerid, (facoltativo) moveAll, (facoltativo) visibleTo)

Invia un "ping" al tavolo di gioco (come se un giocatore tenesse premuto il pulsante del mouse). È necessario specificare le coordinate superiore/sinistra e l'ID della pagina da sottoporre a ping. È possibile specificare facoltativamente l'ID di un giocatore che ha eseguito il ping; se non lo si fa, verrà assunto "api" e il ping sarà giallo.

È possibile impostare l'opzione moveAll su "true" se si desidera spostare anche le visuali dei giocatori in quella posizione.

È possibile impostare gli ID dei giocatori in visibleTo per i giocatori che possono vedere o essere influenzati dal ping. Questo viene presentato come un ID giocatore singolo, un array o una stringa delimitata da virgole.

on("chat:message", function(msg) {
  // Inserire "!pingtest" nella chat per eseguire il test
  if(msg.type == "api" && msg.content.indexOf("!pingtest") !== -1) {
 
    // Per ottenere un giocatore specifico, utilizzare findObjs({_type: "player"})[i].id invece di null per il terzo parametro
    players = findObjs({_type: "player"});
    player1 = players[1].id;
    player2 = players[2].id;
 
    // Crea un array con tutti gli ID dei giocatori
    var allPlayerIDs = players.map(function(player) {
      return player['id'];
    });
 
    // Invia un ping a tutti gli utenti presenti in questa pagina nella stessa posizione.
    sendPing(300, 300, Campaign().get('playerpageid'), null, true);
    setTimeout(function() {
        // Invia un ping a tutti gli utenti presenti su questa pagina alla stessa posizione
        sendPing(1500, 500, Campaign().get('playerpageid'), msg.playerid, true, "");
    }, 1000);
    setTimeout(function() {
        // Invia un ping solo al giocatore specificato a questa posizione
        sendPing(1200, 500, Campaign().get('playerpageid'), null, true, player1);
    }, 2000);
    setTimeout(function() {
        // Invia un ping a un array di ID giocatore (giocatore 1 e 2) a questa posizione
        sendPing(900, 100, Campaign().get('playerpageid'), player2, true, [player1, player2]);
    }, 3000);
    setTimeout(function() {
        // Invia un ping a un elenco separato da virgole fornito come stringa a questa posizione
        sendPing(300, 300, Campaign().get('playerpageid'), player1, true, allPlayerIDs.join());
    }, 4000);
 
  }
})
 

Nota sulle distanze e le griglie in Roll20

In Roll20, un'unità misura sempre 70 pixel sullo schermo. L'unità è l'elemento fondamentale su cui si basano la distanza e la griglia. Per impostazione predefinita:

  • 1 unità = 5 piedi
  • 1 unità = 1 quadrato della griglia
  • Pertanto, 5 piedi = 1 unità = 1 quadrato

Tuttavia, il GM può modificare sia la dimensione della griglia, sia la scala della distanza. 1 unità corrisponde sempre a 70 pixel, ma il GM potrebbe modificare le impostazioni in modo che 1 unità corrisponda ora a 10 piedi (ovvero 70 pixel = 10 piedi), o che ogni spazio della griglia corrisponda a 2 unità (ovvero ogni spazio della griglia corrisponde ora a 140 pixel).

Questo articolo ti è stato utile?
Utenti che ritengono sia utile: 14 su 21