Script di mod: Eventi

Esistono diversi tipi di eventi a cui è possibile rispondere utilizzando on(evento, callback). Esistono cinque tipi di eventi: ready, change, add, destroy e chat. Ad eccezione di “ready”, il nome include un tipo di oggetto (o un messaggio nel caso della chat), mentre “change” può includere una proprietà. Ogni evento viene attivato una volta per ogni oggetto che subisce una modifica. Se più di una proprietà dell’oggetto viene modificata contemporaneamente, viene attivato un solo evento “globale” (ad esempio change:graphic), oltre agli eventuali eventi specifici delle proprietà che avete associato.

Parametri di callback

Quando si ascolta un evento, si crea una funzione denominata “callback” che viene eseguita ogni volta che l’evento si verifica. La funzione di callback riceve dei parametri che indicano quali modifiche sono state apportate, in modo che possiate decidere come procedere.

Evento Argomenti
pronto nessuna
modifica obj (oggetto Roll20 dopo la modifica), prev (oggetto semplice con le proprietà precedenti)
aggiungi obj (il nuovo oggetto)
distruggere obj (l'oggetto rimosso; non si deve dare per scontato che esista ancora nella campagna)
chat msg — si veda " Script per moderatori: Chat"

obj

L'oggetto che è stato modificato. Qualsiasi modifica apportata a questo oggetto verrà salvata anche nel gioco. Pertanto, se desidera spostare un oggetto grafico verso sinistra, dovrà modificare la proprietà "left" di " obj " utilizzando il comando "set".

  • obj.get("property") restituisce il valore corrente della proprietà.
  • obj.set("property", "newvalue") imposta un nuovo valore per la proprietà. Se desidera modificare più proprietà contemporaneamente, può passare un oggetto: obj.set({left: 10, top: 20}).

precedente

Si tratta di un oggetto contenente le proprietà dell’oggetto “obj” così come erano prima che venissero apportate modifiche a seguito di questo evento. Utile per determinare “di quanto” è cambiata una proprietà.

NOTA: "prev " non è un oggetto Roll20. È possibile accedere alle proprietà utilizzando la notazione tra parentesi quadre o quella con il punto: prev["bar1_value"] oppure prev._id. Non è possibile richiamare i metodi get e set su tale chiave, né omettere il trattino basso nelle chiavi di sola lettura (prev.id non è prev._id).

Per quanto riguarda i personaggi e i materiali di gioco, i campi “bio”, “notes” e “gmnotes” in “prev” sono identificatori interni, non il testo. Anche il personaggio _defaulttoken è un blob. La variabile " gmnotes " di Graphic è una stringa normale. Se ne avete bisogno, memorizzate voi stessi nella cache i valori precedenti dei blob.

Ordine degli eventi

Gli eventi vengono attivati in modo sincrono (ogni funzione non verrà avviata finché quella precedente non sarà terminata) in ordine, dalla prima alla ultima associazione, nonché dalla proprietà specifica all’oggetto generale. Considerando quanto segue:

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

Se la proprietà "left" dell'oggetto dovesse cambiare, l'ordine sarebbe: funzione3, poi funzione1, poi funzione2.

Se nella Sua campagna sono presenti più script, questi vengono caricati nello stesso ordine in cui compaiono nella pagina delle impostazioni "Mod Scripts", da sinistra a destra.

Nota: il metodo set() di uno script non genera un evento di modifica per quella proprietà. Se un giocatore sposta un segnalino, viene visualizzato change:graphic. Se uno script modifica successivamente il valore di “left” con la funzione set(), tale modifica non attiva l’evento “change:graphic”. La creazione di un elemento grafico a partire da uno script attiva l'evento change:graphic. La funzione sendChat() invia chat:message, compresi i messaggi che iniziano con !. Le proprietà "status_*" virtuali non generano eventi propri; si raccomanda di monitorare l'evento " change:graphic:statusmarkers".

pronti

Questo evento viene attivato una volta ogni volta che la sandbox viene avviata, dopo che i dati della campagna sono stati caricati. Cercate gli oggetti già esistenti solo una volta che siete pronti. Se si imposta un binding per gli eventi “add” (come ad esempio “add:graphic”) prima che venga attivato l’evento “ready”, si riceveranno anche gli eventi “add” relativi agli oggetti che erano già presenti nella campagna. Gli script vengono caricati nell’ordine indicato nelle impostazioni di Mod Scripts, da sinistra a destra; gli handler “ready” vengono eseguiti nell’ordine in cui sono stati associati.

Parametri di callback: nessuno

on("ready", function() {
  var tokenThatAlreadyExisted = getObj("graphic", "-ABc123");
});

Eventi in chat

chat:messaggio

Viene attivato ogni volta che viene ricevuto un nuovo messaggio di chat, compresi i messaggi inviati tramite sendChat(). La funzione di callback riceve un oggetto `msg`. I tipi di messaggio includono: generale, rollresult, gmrollresult, secretrollresult (/sr), supersecretrollresult (/ssr), emote, sussurro, descrizione, diretto e API. Messaggi che iniziano con ! hanno il tipo === "api" e non vengono visualizzati nella chat.

Parametri di callback: msg

Si veda la sezione " Mod Scripts: Chat " per l'elenco completo delle proprietà dei messaggi e la gestione dei risultati dei tiri di dado.

Eventi della campagna

L'oggetto "campagna" supporta i parametri change:campaign e change:campaign:PROPERTY per qualsiasi proprietà della campagna. Di seguito sono elencati quelli a cui la maggior parte degli script presta attenzione:

modifica:campagna:idpagina giocatore

Attivato ogni volta che cambia la pagina su cui si trovano attualmente i giocatori.

modifica:campagna:ordine di turno

Attivato ogni volta che cambia l'ordine di turno della campagna.

modifica:campagna:pagina dell'iniziativa

Attivato ogni volta che l'ordine di turno viene nascosto o mostrato per una pagina. Questo potrebbe non corrispondere all'ID della pagina attualmente attiva. Se questo parametro è impostato su "false " (anche nel caso in cui uno script di mod lo imposti su "false"), l'ordine di turno verrà chiuso per tutti i GM e i giocatori. Impostando un ID pagina valido, la pagina sarà accessibile a tutti i GM/giocatori.

Eventi oggetto

Ogni tipo di oggetto supporta:

  • aggiungere: TIPO
  • modifica: TIPO
  • modifica:TIPO:PROPRIETÀ
  • distruggere:TIPO

È inoltre possibile associare l'operazione a un ID oggetto specifico: change:TYPE:ID, change:TYPE:ID:PROPERTY e destroy:TYPE:ID.

Si vedano gli script di modifica: “Oggetti” per le proprietà di ciascun tipo.

modifica:grafica

Viene attivato ogni volta che un oggetto grafico (praticamente qualsiasi oggetto presente sul tavolo di gioco, inclusi segnalini, mappe e carte) subisce una modifica.

Nota: gli oggetti grafici creati tramite script attiveranno questo evento al momento della creazione.

Parametri della funzione di callback: obj, prev

on("change:graphic", function(obj, prev) {
  //Eseguire qui un'operazione con "obj". "prev" è un elenco di valori precedenti.
  Si prega di notare che "obj" e "prev" sono tipi diversi di oggetti.
  Per interagire con obj, è necessario utilizzare obj.get("name");
  Per interagire con prev, è possibile utilizzare prev["name"];
});

modifica:grafica:(proprietà)

È inoltre possibile associare un evento a ciascuna proprietà specifica dell'oggetto. Pertanto, se disponete di uno script che desiderate eseguire solo quando cambia la rotazione, dovreste procedere come segue:

on("change:graphic:rotation", function(obj, prev) {
  //Impostare sempre la rotazione su 0, in modo che nessuno possa ruotare gli oggetti.
  obj.set("rotazione", 0);
});

aggiungere:grafico

Si attiva ogni volta che un oggetto grafico viene aggiunto al tavolo di gioco per la prima volta. Verrà chiamato anche per gli oggetti esistenti all’avvio del tavolo di gioco, qualora si associ questo evento al di fuori dell’evento “ready ”.

Parametri della funzione di callback: obj

var started = false;
on("add:graphic", function(obj) {
  if (!started) return;
  // Solo gli elementi grafici aggiunti dopo il completamento della caricamento.
});
on("ready", function() {
  started = true;
});

distruggere:grafico

Viene attivato ogni volta che un oggetto grafico viene rimosso dal tavolo di gioco.

Parametri della funzione di callback: obj

Sottotipi grafici

Anche gli elementi grafici generano eventi utilizzando il proprio _subtype. Le mappe utilizzano il sottotipo “segnalino ”.

Sottotipo Eventi Note
segnalino aggiungere:segnalino
modifica:segnalino
modifica:token:PROPRIETÀ
eliminare:segnalino
Segnalini e grafica delle mappe.
scheda aggiungi:scheda
modifica:scheda
modifica:scheda:PROPRIETÀ
elimina:scheda
Una carta posata sul tavolo di gioco (un'immagine). Si veda la nota riportata di seguito.
dicetoken aggiungere:dicetoken
modifica:dicetoken
modifica:dicetoken:PROPRIETÀ
eliminare:dicetoken
I segnalini di dado sul tavolo di gioco.

La scheda è sia un tipo di oggetto Roll20 sia un sottotipo grafico; pertanto, i gestori per l'evento "change:card " e per eventi simili devono distinguere il tipo di oggetto (ad esempio tramite obj.get("_type")) per assicurarsi che vengano attivati per il tipo di oggetto corretto.

Tutti i tipi di oggetto

Ciascuno dei tipi riportati di seguito supporta i comandi add:TYPE, change:TYPE, change:TYPE:PROPERTY e destroy:TYPE.

Tipo Esempi di eventi Note
abilità aggiungere:abilità
capacità di modifica
capacità di distruzione
attributo aggiungere:attributo
modifica:attributo
elimina:attributo
campagna modifica:campagna
modifica:campagna:id-pagina-giocatore
Esiste un unico oggetto di campagna; gli script in genere rilevano le modifiche, non le operazioni diaggiunta o eliminazione.
scheda aggiungi:scheda
modifica:scheda
eliminare: carta
Oggetto "carta del mazzo". Si tratta inoltre di un sottotipo grafico — si prega di chiarire il significato di _type.
personaggio aggiungere:personaggio
modifica:personaggio
distruggere:personaggio
custfx aggiungere:custfx
modifica:custfx
eliminare:custfx
Effetti personalizzati.
ponte aggiungere:mazzo
modifica:mazzo
distruggere:mazzo
porta aggiungere:porta
modificare:porta
distruggere:porta
Ultima versione del motore VTT.
grafica aggiungi:immagine
modifica:grafica
eliminare:grafica
Inoltre, genera eventi di sottotipo (segnalino, carta, dado-segnalino).
mano aggiungere:mano
modificare:mano
eliminare:mano
materiale di gioco aggiungere: materiale di gioco
modificare:materiale di gioco
eliminare: materiale di gioco
brano del jukebox aggiungi:brano-jukebox
modifica:brano-jukebox
eliminare: jukeboxtrack
macro aggiungi:macro
modifica:macro
eliminare:macro
pagina aggiungi:pagina
modifica:pagina
elimina:pagina
Le modifiche alla gerarchia attivano anche gli eventi change:page:_placement e change:page:_path.
pageFolder aggiungi:pageFolder
modifica:pageFolder
elimina:paginaCartella
Solo per Mod Script sandbox v1.5.
path: aggiungere:percorso
modifica:percorso
elimina:percorso
Disegni classici da tavolo di gioco.
pathv2 aggiungere:pathv2
modifica:percorsov2
elimina:pathv2
Ultima versione del motore VTT.
spilla aggiungere:pin
modifica:pin
eliminare:pin
Ultima versione del motore VTT.
giocatore/trice aggiungi:giocatore
modifica:giocatore
eliminare:giocatore
tavolo pieghevole aggiungere:tabella-a-scorrimento
modifica:tabella a scorrimento
eliminare:rollabletable
elemento della tabella aggiungi:voceTabella
modifica:voceTabella
eliminare:voceTabella
testo aggiungere:testo
modifica:testo
eliminare:testo
finestra aggiungi:finestra
modifica:finestra
eliminare:finestra
Ultima versione del motore VTT.

Solo per Mod Script sandbox v1.5. Gli oggetti `pageFolder` dispongono di eventi `add:pageFolder`, `change:pageFolder`, `destroy:pageFolder` e di eventi relativi alle proprietà, quali ` change:pageFolder:name`. Le pagine generano inoltre gli eventi `change:page:_placement ` e `change:page:_path ` quando la gerarchia del menu della pagina subisce modifiche.

Jumpgate / Gli ultimi tipi di oggetti del motore VTT (pathv2, pin, window, door) sono funzionalità del motore VTT, non della versione sandbox. Un gioco in versione 1.0 basato sull'ultimo motore VTT presenta ancora tali tipi di oggetti e i relativi eventi.

Questo articolo ti è stato utile?
Utenti che ritengono sia utile: 12 su 16