L'editor di script
Per modificare gli script del Suo gioco, faccia clic sul link " Mod Scripts " nella pagina dei dettagli della partita relativa al Suo gioco (lo stesso punto in cui si trovano opzioni quali " Storico della chat " e " Copia/Estendi gioco "). Le verranno presentate diverse funzionalità:
- Una serie di schede nella parte superiore. Il Suo gioco può contenere più script per facilitarne l'organizzazione. Si noti che tutti gli script continueranno a essere eseguiti nello stesso contesto; ciò significa che non si dovrebbero avere più script che tentano di sovrascrivere gli stessi valori contemporaneamente, poiché ciò potrebbe causare risultati indesiderati.
- Un editor di codice per script. Potete utilizzare questo editor oppure modificare i vostri script in un editor esterno di vostra scelta e poi incollarli qui.
- Una console di uscita Mod situata nella parte inferiore (vedi sotto).
Ogni volta che clicca sul pulsante “Salva script”, la sandbox del Suo gioco verrà riavviata (con la conseguente perdita di tutti i dati presenti in memoria che non siano stati salvati nell’oggetto “state” o negli oggetti Roll20). Ciò vale anche nel caso in cui si aggiunga un nuovo script, se ne elimini uno o si attivi/disattivi uno script.
La console di uscita Mod
La console di output di Mod rappresenta la “finestra” sui vostri script. Poiché gli script dei mod vengono eseguiti in un ambiente sandbox, non è possibile accedervi direttamente mentre sono in esecuzione per visualizzare informazioni sui risultati o sugli errori dello script. La console di output di Mod visualizza queste informazioni al di fuori dell'ambiente sandbox, in modo da poterle consultare mentre si modificano gli script. Qui verranno visualizzati tutti i comandi log(), nonché eventuali errori riscontrati durante l'esecuzione dei Suoi script. Per ulteriori informazioni, si prega di consultare l'articolo sul debug degli script.
Solo per Mod Script sandbox v1.5. Ove possibile, i messaggi di errore includono un oggetto di contesto che consente di verificare quale oggetto Roll20 sia stato coinvolto (tipo e ID).
Script reattivi: ascolto degli eventi, modifica degli oggetti
Il primo (e più semplice) tipo di utilizzo degli script di mod consiste nel rilevare i cambiamenti che avvengono sul tavolo di gioco e quindi reagire fornendo funzionalità aggiuntive agli oggetti interessati da tali cambiamenti. Questo tipo di script è composto da una serie di funzioni che monitorano gli eventi che si verificano durante il gioco. Successivamente, modificherà gli oggetti che vengono trasmessi durante tali eventi, alterando ciò che accade sul tavolo di gioco.
on("change:graphic", function(obj) {
obj.set({
left: obj.get("left") + 70
});
});
Come potete vedere, abbiamo creato una semplice funzione “on” che verrà eseguita ogni volta che viene rilevato l’evento “change:graphic ”. Alla funzione viene passato l'oggetto grafico, obj. Per apportare una modifica, è sufficiente modificare obj utilizzando la funzione set: qualsiasi proprietà venga modificata verrà rilevata e aggiornata sul tavolo di gioco.
È necessario utilizzare impostare e get per impostare e recuperare i valori correnti degli oggetti; in caso contrario, le modifiche non verranno salvate. (Si veda la sezione riferimento agli per un elenco dei tipi di oggetti e delle loro proprietà, nonché per un elenco di tutti gli eventi e degli argomenti passati a ciascun evento.)
Script proattivi: eseguire operazioni senza l'intervento dell'utente
Oltre a reagire agli eventi generati dagli utenti, con gli script Mod è possibile eseguire automaticamente anche operazioni che non sono legate a un evento specifico da parte dei giocatori. Ad esempio, immaginiamo un segnalino che si sposta avanti e indietro sulla mappa.
Nota: sebbene questo tipo di script non dipenda dall’interazione dell’utente, gli script di mod per la Sua partita verranno comunque eseguiti solo quando almeno una persona è connessa alla Sua partita.
on("ready", function() {
//Attendere che venga generato l'evento "ready" per avere la certezza che il gioco sia stato caricato completamente.
//Ottenere un riferimento al nostro token di pattugliamento.
var patroltoken = findObjs({_type: "graphic", name: "Guard A"})[0]; //Siamo consapevoli che nel gioco è presente un segnalino denominato "Guard A".
var direction = -1*70; //Avanzare di 70 pixel verso sinistra.
var stepstaken = 0; //Quanti passi abbiamo compiuto nella direzione attuale?
setInterval(function() {
if (stepstaken > 3) {
//Cambiare direzione!
direzione = direzione * -1; //"inverterà" la direzione in cui ci stiamo muovendo
passiEffettuati = 0; //azzeramento dei passi.
}
patroltoken.set("left", patroltoken.get("left") + direction); //avanti!
stepstaken++;
}, 5000); //eseguire un'azione ogni 5 secondi
});
Trattato sulle funzioni asincrone
Alcuni valori non sono immediatamente disponibili. I campi relativi ai personaggi e ai materiali di gioco, quali bio, notes, gmnotes e _defaulttoken del personaggio, richiedono una funzione di callback per il metodo get():
character.get("bio", function(bio) {
log(bio);
});
sendChat può accettare una callback facoltativa, in modo che i risultati del lancio di dadi vengano restituiti al vostro script anziché essere pubblicati nella chat. L'evento "onSheetWorkerCompleted " viene eseguito al termine dell'elaborazione della pila corrente di sviluppatori di schede.
Solo per Mod Script sandbox v1.5. Il metodo `character.createToken ` è asincrono poiché deve recuperare ` _defaulttoken ` in modo asincrono. L'oggetto grafico creato viene passato a una funzione di callback, non restituito.
Si tenga presente che gli eventi " prev on change " non contengono il testo di tali campi asincroni. Se avete bisogno del valore precedente del blob, lo memorizzate voi stessi nella cache.