Dal momento che non ha accesso diretto all'ambiente in cui vengono eseguiti gli script, può affidarsi alle numerose chiamate alog
per capire cosa sta succedendo al suo programma. Ad esempio, se non sei sicuro del motivo per cui un token non si sta muovendo correttamente e vuoi ottenere una migliore comprensione dei valori in gioco, potresti fare così:
on("change:graphic:left", function(obj) { //Qual è il valore di sinistra dell'oggetto all'arrivo di questo? log(obj.get("left")); obj.set("left", obj.get("left") + 70); //Qual è ora? log(obj.get("left")); //Puoi anche eseguire il debug di interi oggetti per vedere un elenco dei loro attributi attuali log(obj); });
Troverai l'output dei comandi di log nella Console del Mod (API), che si trova sulla pagina dell'Editor degli Script per la tua Campagna.
Errori di blocco
L'API di Roll20 recupererà automaticamente da piccoli errori nel tuo script riavviando il tuo script se necessario. Tuttavia, se l'API rileva un errore grave da cui non può riprendersi, anziché riavviare continuamente lo script solo per avere un altro errore, metterà un "blocco degli errori" sulla tua Campagna che fa sì che i tuoi Script del Mod (API) non vengano eseguiti fino a quando l'errore non viene risolto. Se i tuoi script sono bloccati a causa di un errore, vedrai un messaggio come questo nella pagina dell'Editor di script:
Non preoccuparti! Apporta solo modifiche ai tuoi script per cercare di risolvere il problema, quindi clicca sul pulsante "Salva script". Quando lo fai, il blocco dell'errore verrà "eliminato" e l'API cercherà di eseguire nuovamente i tuoi script. Se si verifica un altro errore, il blocco dell'errore verrà riapplicato. Puoi ripetere questo processo tutte le volte necessarie per risolvere l'errore, l'API non ti impedirà mai di eliminare i blocchi di errore perché hai fallito troppe volte.
Errori comuni
Di seguito sono riportati alcuni errori più comuni:
myvar non è definito
on("ready", function() { var myVar; log (myvar); });
Anche se il messaggio di errore dice "non definito", ciò che è realmente accaduto è che la variabile non è dichiarata. Una delle cause più comuni di questo è un errore di battitura nel nome di una delle tue variabili, come una lettera maiuscola mancante.
Impossibile leggere la proprietà 'myProperty' o Impossibile chiamare il metodo 'myMethod'
on("ready", function() { var myVar; log (myVar.myProperty); log (myVar.myMethod ()); });
myVar
non è definito, quindi lo script non può capire come gestire il tentativo di accedere a una proprietà di myVar
. Ciò è probabilmente dovuto a uno dei motivi seguenti:
- Hai provato a trovare un oggetto, ma il risultato era indefinito. Effettuare una verifica degli errori per assicurarsi che la variabile sia definita prima di accedere alle sue proprietà.
- La tua variabile viene definita condizionalmente (con una serie di
se
o qualcosa di simile) e nessuna delle condizioni è stata soddisfatta, quindi la tua variabile è stata dichiarata ma non definita. Assicurati di avere delle condizioni per tutte le possibilità, o crea un'opzione predefinita o effettua una verifica degli errori per assicurarti che la tua variabile sia definita prima di accedere alle sue proprietà.
Token non previsto
Hai o mancato un carattere o hai un carattere di troppo. Ciò può essere causato dall'aver dimenticato una virgola tra un elenco di proprietà in un oggetto o elementi in un array, o dall'aver troppo o troppo poche parentesi chiuse alla fine di una chiamata di metodo nidificata complicata.
La maggior parte delle proprietà degli oggetti Roll20 devono essere accessibili attraverso i metodiget()
eset()
. Quando si utilizza il metodo get()
, bisogna omettere l'underscore iniziale sulle proprietà in sola lettura.