API: Documentazione delle funzioni

Roll20 offre una serie di funzioni che non fanno parte del JavaScript di base o di altre librerie.


Variabili globali

Variabile Descrizione
_ Questo è l'oggetto namespace per Underscore.js .
stato/Provincia Le proprietà dell'oggetto di stato rimarranno invariate tra una sessione di gioco e l'altra.

_ (Trattino basso)

Questo è l'oggetto namespace per Underscore.js . Underscore offre numerose funzioni per la manipolazione delle raccolte.


stato/Provincia

Le proprietà dell'oggetto di stato rimarranno invariate tra una sessione di gioco e l'altra. Lo stesso oggetto di stato è condiviso anche tra tutti gli script Mod (API) di una campagna, pertanto si raccomanda vivamente, quando si scrivono valori nello stato, di ridurre al minimo l'impronta per evitare conflitti di nomi. Nota: lo stato viene serializzato con JSON, pertanto non è possibile memorizzare funzioni o oggetti con riferimenti ciclici.


Funzioni globali

Tipo di ritorno Funzione Descrizione
Oggetto Roll20 Campagna Ottiene l'oggetto singleton Campaign Roll20.
Oggetto Roll20 creaOggetto Crea un nuovo oggetto Roll20.
Matrice di oggetti Roll20 filtraObj Ottiene tutti gli oggetti Roll20 che superano un test predicato.
Matrice di oggetti Roll20 trovaOggetti Ottiene tutti gli oggetti Roll20 con proprietà che corrispondono a un determinato insieme di attributi.
Matrice di oggetti Roll20 recuperaTuttiGliOggetti Ottiene tutti gli oggetti Roll20 nella campagna.
varia getAttrByName Ottiene il valore corrente o massimo di un oggetto attributo Roll20.
Oggetto Roll20 getObj Ottiene un oggetto Roll20 specifico.
  u Registra un messaggio nella console Mod (API).
  il Registra un gestore di eventi.
  onSheetWorkerCompleted Registra un gestore di eventi una tantum da eseguire dopo uno stack completo di script di sviluppatori di schede .
Booleano giocatoreÈGM Verifica se un giocatore dispone attualmente dei privilegi GM.
  playJukeboxPlaylist Iniziare a riprodurre una playlist dal jukebox.
Numero numero intero casuale Genera un valore intero casuale.
  inviaChat Invia un messaggio di chat.
  inviaPing Invia un ping simile a quello che si ottiene tenendo premuto il pulsante sinistro del mouse.
  spawnFx Genera un emettitore di particelle.
  generazione di effetti tra punti Genera un emettitore di particelle che si sposta da un punto all'altro.
  spawnFxWithDefinition Genera un emettitore di particelle che non è rappresentato da un oggetto FX Roll20.
  Interrompere la riproduzione della playlist del jukebox Interrompe tutte le playlist attualmente in riproduzione sul jukebox.
  Indietro Sposta un oggetto grafico Roll20 sotto tutti gli altri oggetti grafici presenti sullo stesso livello del tavolo.
  al fronte Sposta un oggetto grafico Roll20 sopra tutti gli altri oggetti grafici presenti sullo stesso livello del tavolo di gioco.

Campagna

Parametri

Nessun parametro

Resi

L'oggetto Roll20 della campagna singleton.

Esempi

var currentPageID = Campaign().get('playerpageid'),
    currentPage = getObj('pagina', currentPageID);

creaOggetto

Parametri

TIPO(Stringa) Il tipo di oggetto Roll20 da creare. È possibile creare solo "grafica", "testo", "percorso", "carattere", "abilità", "attributo", "dispensa", "tabella a scorrimento", "voce di tabella" e "macro". ATTRIBUTI (Oggetto) I valori iniziali da utilizzare per le proprietà dell'oggetto Roll20.

Resi

L'oggetto Roll20 che è stato creato.

Esempi

Quando si crea un oggetto Roll20 che ha un oggetto padre (ad esempio, quando si crea un oggetto Roll20 attributo, che è un figlio di un oggetto Roll20 personaggio), è necessario fornire l'ID del padre negliattributi.

on('add:personaggio', function(obj) {
    createObj('attributo', {
        name: 'Strength',
        current: 0,
        max: 30,
        characterid: obj.id
    });
});

Quando si crea un oggetto Roll20 percorso, è necessario fornire un valore per la proprietà di sola lettura_path. Si tratta di un'eccezione alla regola che impedisce di impostare il valore delle proprietà di sola lettura durante la creazione di oggetti Roll20.

createObj('path', {
    left: 7000,
    top: 140,
    width: 140,
    height: 140,
    livello: 'oggetti',
    percorso: JSON.stringify([['M', 0, 0], ['L', 70, 0], ['L', 0, 70], ['L', 0, 0]])
});

Quando si crea un oggetto Roll20 da distribuire, non è possibile impostare il testo o le note del GM al momento della creazione.

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',
    gmnotes: 'GM Notes can only be set after the handout is created'
});

filtraObj

Parametri

CALLBACK (Funzione) Una funzione predicato per verificare tutti gli oggetti Roll20. La funzione di callback riceve un oggetto Roll20 come parametro e dovrebbe restituire true (per gli oggetti Roll20 che saranno inclusi nel valore restituito da filterObjs) o false (per tutti gli altri oggetti Roll20).

Resi

Una serie di oggetti Roll20 che hanno superato il test del predicato.

Esempi

var tokenName = getMyTokenName(),
    duplicateTokens = filterObjs(function(obj) {
        if (obj.get('type') !== 'graphic' || obj.get('subtype') !== 'token' || obj.get('name') === tokenName) return false;
        return obj.get('name').indexOf(tokenName) === 0 && /\d+$/.text(obj.get('name'));
});

trovaOggetti

Parametri

ATTRIBUTI (Oggetto) Una raccolta di coppie chiave:valore da abbinare agli oggetti Roll20 nella campagna. OPZIONI (Oggetto, opzionale) Se options.caseInsensitive è vero, i confronti tra stringhe degli oggetti Roll20 e gli attributi non terranno conto delle maiuscole/minuscole.

Resi

Una serie di oggetti Roll20 con proprietà che corrispondonoagli attributi.

Esempi

var npcs = findObjs({ type: 'character', controlledby: '' });

recuperaTuttiGliOggetti

Parametri

Nessun parametro

Resi

Una serie di tutti gli oggetti Roll20 presenti nella campagna.

Esempi

var tutto = getAllObjs();

getAttrByName

Parametri

CHARACTER_ID(Stringa) L'ID dell'oggetto Roll20 del personaggio che è il genitore dell'oggetto Roll20 dell'attributo di cui si desidera il valore. ATTRIBUTE_NAME(Stringa) Il nome dell'oggetto Roll20 dell'attributo di cui si desidera ottenere il valore. VALUE_TYPE(Stringa, opzionale) "current" o "max" (il valore predefinito è "current" se omesso).

Resi

La proprietàcurrentomaxdell'attributo appropriato. Se la proprietà desiderata non è impostata, verrà utilizzato il valore predefinito specificato nella scheda dei personaggi (se esiste un valore predefinito).

Esempi

var personaggio = getMyPersonaggio(),
    forza = getAttrByName(personaggio.id, 'forza'),
    forza_max = getAttrByName(personaggio.id, 'forza', 'max');

getObj

Parametri

TIPO (Stringa) Il tipo di oggetto Roll20 da ottenere. ID (Stringa) L'ID univoco dell'oggetto Roll20 da ottenere.

Resi

L'oggetto Roll20 specificato.

Esempi

on('chat:message', function(msg) {
    var sendingPlayer = getObj('player', msg.playerid);
});

registro

Parametri

MESSAGGIO (varia) Il messaggio da inviare alla console Mod (API). Il parametro del messaggio verrà convertito in una stringa con JSON.stringify.

Resi

(Nullo)

Esempi

on('chat:message', function(msg) {
    log('Messaggio ricevuto da:');
    log(getObj('player', msg.playerid));
});
Messaggio ricevuto da:
{"_d20userid":"123456","_displayname":"John Doe","speakingas":"","_online":true,"color":"#885b68","_macrobar":"-J16Z-dRU5tleKiKOg0X|-K3F_4q_b1p-Vdiwgn1t","showmacrobar":true,"_id":"-J16Z-dRU5tleKiKOc0X","_type":"player","_lastpage":""}

il

Parametri

EVENT(String) Esistono cinque tipi di eventi: readychangeadddestroychat. Ad eccezione di ready, tutti i tipi di evento devono essere associati a un tipo di oggetto. Per la chat, si tratta sempre di messaggi. Per tutto il resto, questa è la proprietà di tipo di un oggetto Roll20. Oltre al tipo di oggetto, gli eventi di modifica possono anche specificare facoltativamente una proprietà dell'oggetto Roll20 specificato da monitorare. Le 2-3 parti dell'evento (tipo, oggetto e, facoltativamente, proprietà) sono separate da due punti. Pertanto, le stringhe di evento valide includono, ma non sono limitate a, "ready", "chat:message", "change:graphic", "change:campaign:playerpageid", "add:character" e "destroy:handout". CALLBACK(Funzione) La funzione che verrà richiamata quando si verifica l'evento specificato. I parametri trasmessi dipendono dal tipo di evento: gli eventi ready non hanno parametri di callback. Gli eventi change hanno un parametro obj, che è un riferimento all'oggetto Roll20 così come esiste dopo la modifica, e un parametro prev, che è un semplice oggetto JavaScript con proprietà corrispondenti all'oggetto Roll20 prima dell'evento di modifica.Gli eventi add hanno un parametro obj, che è un riferimento al nuovo oggetto Roll20. Gli eventi destroy hanno un parametro obj, che è un riferimento all'oggetto Roll20 non più esistente. Gli eventi chat hanno un parametro msg, che contiene i dettagli del messaggio inviato alla chat.

Resi

(Nullo)

Esempi

Gli eventi vengono attivati nell'ordine in cui sono stati registrati, dal più specifico al meno specifico. In questo esempio, una modifica alla proprietàsinistradi un oggetto grafico Roll20 comporterà la chiamatadella funzione3, seguita dallafunzione1e poidalla funzione2.

on('change:graphic', function1);
on('change:graphic', function2);
on('change:graphic:left', function3);

Gli eventi aggiuntitenteranno di attivarsi per gli oggetti Roll20 già presenti nella campagna all'avvio di una nuova sessione. Per evitare questo comportamento, è possibile attendere che l'eventoreadyvenga attivato prima di registrare l'eventoadd.

on('add:graphic', function(obj) {
    // All'avvio della sessione, questa funzione verrà richiamata per ogni elemento grafico della campagna
    // Questa funzione verrà richiamata anche ogni volta che viene creato un nuovo oggetto grafico Roll20
});

on('ready', function() {
    on('add:graphic', function(obj) {
        // Questa funzione verrà richiamata *solo* quando viene creato un nuovo oggetto grafico Roll20, non per quelli già esistenti
    });
});

Il parametropreper gli eventidi modificanon è un oggetto Roll20, ma un semplice oggetto JavaScript tradizionale. Pertanto, non è possibile utilizzare le funzionigetoset, né omettere i trattini bassi iniziali nelle proprietà di sola lettura.

on('change:graphic', function(obj, prev) {
    var id1 = obj.id,         // tutti e tre sono equivalenti
        id2 = obj.get('id'),
        id3 = obj.get('_id'),

        id4 = prev.id,        // undefined
        id5 = prev.get('id'), // undefined non è una funzione
        id6 = prev._id;       // corretto

    // entrambi sono equivalenti
    obj.set('left', 70);
    obj.set({
        left: 70
    });

    prev.set('left', 70); // undefined non è una funzione
    prev.set({ // undefined non è una funzione
        left: 70
    });
    prev.left = 70; // corretto, anche se non cambierà nulla sul tavolo
});

Per i campi asincroni degli oggetti Roll20 relativi ai personaggi e aimateriali di gioco, il parametroprevnon conterrà i dati richiesti. (Verrà invece utilizzato un identificatore numerico dal sistema.) Se è necessario accedere al valore precedente di uno di questi campi, sarà necessario tenerne traccia autonomamente:

on('ready', function() {
    if (!state.example) state.example = { bioCache: {} };
});

on('change:personaggio:bio', function(obj, prev) {
    obj.get('bio', function(text) {
        state.example.bioCache[obj.id] = text;

        // eseguire operazioni...

        if (shouldRevertBio()) {
            obj.set('bio', state.example.bioCache[obj.id]);
        }
    });
});

onSheetWorkerCompleted

Parametri

CALLBACK(Funzione) La funzione che verrà richiamata al completamento dell'attuale "stack" di script di sviluppatori di schede.

Resi

(Nullo)

Esempi

Questa funzione deve essere richiamata prima di setWithWorker. La funzionedi callbackverrà richiamata una sola volta.

var myCharacter = ...,
    mySourceAttr = findObjs({ type: 'attribute', characterid: myCharacter.id, name: 'mySourceAttribute' })[0];

onSheetWorkerCompleted(function() {
    var calculatedAttr = findObjs({ type: 'attribute', characterid: myCharacter.id, name: 'myCalculatedAttribute' })[0];
    // eseguire un'operazione con calculatedAttr.get('current');
});
mySourceAttr.setWithWorker({ current: 5 });

 


giocatoreÈGM

Parametri

PLAYER_ID(Stringa) L'ID dell'oggetto Roll20 del giocatore da controllare.

Resi

verose il giocatore dispone attualmente dei permessi GM, altrimentifalso.

Esempi

Questa funzione è particolarmente utile per limitare i comandi Mod (API) all'uso da parte dei GM.

on('chat:message', function(msg) {
    if (msg.type !== 'api') return;

    if (msg.content.indexOf('!playercommand') === 0) {
        // ...
    } altrimenti se (msg.content.indexOf('!gmcommand') === 0) {
        se (!playerIsGM(msg.playerid)) restituisci;
        // ...
    
);

playJukeboxPlaylist

Parametri

PLAYLIST_ID(Stringa) L'ID della playlist da riprodurre.

Resi

(Nullo)

Esempi

var playlists = JSON.parse(Campaign().get('jukeboxfolder')),
    myPlaylist = _.find(playlists, (folder) => _.isObject(folder) && folder.n === myPlaylistName);
playJukeboxPlaylist(myPlaylist.id);

numero intero casuale

Parametri

MAX(Numero) Il numero massimo da restituire, compreso.

Resi

Un numero intero casuale compreso tra 1 (incluso) emax(incluso). Questa funzione presenta una distribuzione migliore rispetto aMath.random() ed è consigliabile utilizzarla al suo posto. Questa funzione non utilizza il Quantum Roll utilizzata dal motore dei dadi, ma impiega lo stesso algoritmo pseudocasuale a cui ricorre il motore dei dadi quando Quantum Roll non è disponibile.

Esempi

Poiché questa funzione restituisce un numero intero compreso tra 1 emax, è ideale per generare rapidamente il risultato di un lancio di dadi se non è necessaria la piena potenza del motore di lancio di dadi di Roll20. ..

var d20Result = randomInteger(20); // approssimativamente equivalente al lancio di un dado a 20 facce

sendChat Asincrono

Parametri

SPEAKINGAS(Stringa) Il nome da allegare al messaggio inviato. Se parlando come è nel formato player|player_id o personaggio|character_id, il messaggio verrà inviato come quel giocatore o personaggio. In caso contrario, il messaggio utilizzerà il nome specificato come se un GM avesse utilizzato il comando /as. MESSAGGIO (Stringa) Il messaggio da inviare alla chat. CALLBACK (Funzione, opzionale) Se viene specificato callback, il risultato del messaggio di chat verrà trasmesso a esso invece di apparire nella chat. Il parametro del metodo di callback è un array di oggetti messaggio. OPTIONS (Oggetto, opzionale) Se options.noarchive è vero, il messaggio non verrà aggiunto all'archivio della chat. Se options.use3d è impostato su true, i lanci di dadi nel messaggio utilizzeranno la funzione dei dadi 3D. Le opzioni non sono applicabili se è specificato il callback.

Resi

(Nullo)

Esempi

sendChat('Esempio', 'Questo è un semplice esempio.');

È possibile scrivere facilmente del codice per inviare un messaggio come lo stesso giocatore o personaggio che ha attivato un eventochat:message.

on('chat:message', function(msg) {
    var personaggio = findObjs({ type: 'character', name: msg.who })[0],
        player = getObj('player', msg.playerid),
        message = 'ha detto qualcosa';

    if (personaggio) sendChat('personaggio|'+personaggio.id, personaggio.get('nome')+messaggio);
    else sendChat('giocatore|'+giocatore.id, giocatore.get('nome visualizzato')+messaggio);
});

Il parametrocallbackè utile se si desidera sfruttare il motore di dadi di Roll20. motore dei dadi. Non è necessario specificare un valorespeakingAsquando si utilizza ilcallback, poiché il messaggio non apparirà comunque nella chat.

sendChat('', '/r 2d20k1+'+strengthMod, function(ops) {
    var msg = ops[0];
    // ...
});

options.noarchiveè progettato principalmente per inviare ai giocatori menu creati da pulsanti di comando API senza intasare la cronologia della chat.

sendChat('Sistema', '[Cancella modifiche](!clear)\n[Aggiungi riquadro](!add)\n[Visualizza esempio](!view)\n[Salva layout](!save)', null, { noarchive: true });

inviaPing

Parametri

LEFT(Numero) La coordinata x in cui posizionare il ping. TOP(Numero) La coordinata y in cui posizionare il ping. PAGE_ID(Stringa) L'ID dell'oggetto Roll20 della pagina su cui posizionare il ping. PLAYER_ID(Stringa, facoltativo) Il ping utilizzerà il colore del giocatore specificato. Se player_id viene omesso, il ping sarà di colore giallo. MOVEALL (Boolean, opzionale) Se moveAll è vero, tutti i giocatori nella pagina appropriata avranno la visualizzazione centrata sul ping.

Nota:al momento, solo i GM avranno le loro visualizzazioni centrate semoveAllèvero. Questo comportamento è documentato qui

Resi

(Nullo)

Esempi

on('chat:message', function(msg) {
    var obj;
    if (msg.type === 'api' && msg.content.indexOf('!ping') === 0) {
        if (!msg.selected) return;
        obj = getObj(msg.selected[0]._type, msg.selected[0]._id);
        sendPing(obj.get('left'), obj.get('top'), obj.get('pageid'), msg.playerid, true); // centra tutti sul segnalino selezionato
    }
});

spawnFx

Parametri

LEFT(Numero) La coordinata x per posizionare l'emettitore di particelle. TOP(Numero) La coordinata y per posizionare l'emettitore di particelle. TYPE(Stringa) Il tipo di emettitore di particelle da posizionare. Per gli effetti incorporati, dovrebbe essere "tipo-colore", dove il tipo è uno tra bomba, bolle, bruciatura, scoppio, esplosione, bagliore, missile o nova e il colore è uno tra acido, sangue, incantesimo, morte, fuoco, gelo, sacro, magia, melma, fumo o acqua. o acqua. Per gli effetti personalizzati, questo dovrebbe essere l'ID dell'oggetto FX Roll20. Nota: i tipi beam, breath e splatter non possono essere utilizzati con spawnFx. Si prega di consultare spawnFxBetweenPoints. PAGE_ID(Stringa, facoltativo) L'ID dell'oggetto Roll20 della pagina su cui posizionare l'emettitore di particelle. Se omesso, verrà utilizzato invece Campaign().get('playerpageid').

Resi

(Nullo)

Esempi

spawnFx(1400, 1400, 'acido ribollente');

generazione di effetti tra punti

Parametri

START(Oggetto) Il punto di partenza per l'emettitore di particelle. Il punto deve essere nel formato { x: numero, y: numero }.END(Oggetto) Il punto finale per l'emettitore di particelle. Il punto deve essere nel formato { x: numero, y: numero }.TIPO(Stringa) Il tipo di emettitore di particelle da posizionare. Per gli effetti integrati, dovrebbe essere "tipo-colore", dove il tipo è uno tra raggio, bomba, alito, bolla, bruciatura, scoppio, esplosione, bagliore, missile, nova, o schizzo e il colore è uno tra acido, sangue, incantesimo, morte, fuoco, gelo, sacro, magia, melma, fumo o acqua. Per gli effetti personalizzati, questo dovrebbe essere l'ID dell'oggetto FX Roll20. PAGE_ID(String, opzionale) L'ID dell'oggetto Roll20 della pagina su cui posizionare l'emettitore di particelle. Se omesso, verrà utilizzato invece Campaign().get('playerpageid').

Resi

(Nullo)

Esempi

spawnFxBetweenPoints({ x: 1400, y: 1400 }, { x: 2100, y: 2100 }, 'beam-acid');

spawnFxWithDefinition

Parametri

LEFT(Numero) La coordinata x per posizionare l'emettitore di particelle.TOP(Numero) La coordinata y per posizionare l'emettitore di particelle.DEFINITION(Oggetto) Le caratteristiche dell'emettitore di particelle da posizionare. Si prega di consultare Custom FX per un elenco delle proprietà disponibili e delle proprietà dei tipi e dei colori predefiniti dell'emettitore di particelle. Si prega di consultare la Libreria FX per alcuni effetti personalizzati ideati dagli utenti di Roll20. PAGE_ID(Stringa, opzionale) L'ID dell'oggetto Roll20 della pagina su cui posizionare l'emettitore di particelle. Se omesso, verrà utilizzato invece Campaign().get('playerpageid').

Resi

(Nullo)

Esempi

// Questi due sono equivalenti
spawnFx(1400, 1400, 'bubbling-acid');
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]
});

Interrompere la riproduzione della playlist del jukebox

Parametri

Nessun parametro

Resi

(Nullo)

Esempi

interrompereJukeboxPlaylist();

Indietro

Parametri

OBJ(Oggetto Roll20) L'oggetto Roll20 da inviare sullo sfondo del proprio livello.

Resi

(Nullo)

Esempi

on('chat:message', function(msg) {
    if (msg.type === 'api' && msg.content === '!toback' && msg.selected) {
        _.each(msg.selected, (s) => {
            toBack(getObj(s._type, s._id));
        });
    }
});

al fronte

Parametri

OBJ(Oggetto Roll20) L'oggetto Roll20 da portare in primo piano nel proprio livello.

Resi

(Nullo)

Esempi

on('ready', function() {
    on('add:graphic', function(obj) {
        toFront(obj);
    });
});
 
Questo articolo ti è stato utile?
Utenti che ritengono sia utile: 7 su 13