on("change:graphic:left", function(obj) {
//Welchen linken Wert hat das Objekt, wenn es hier reinkommt?
log(obj.get("left"));
obj.set("left", obj.get("left") + 70);
//Wie sieht's jetzt aus?
log(obj.get("left"));
//Du kannst auch ganze Objekte debuggen, um eine Liste ihrer aktuellen Attribute zu sehen
log(obj);
});
on("change:graphic:left", function(obj) {
//Welchen linken Wert hat das Objekt, wenn es hier reinkommt?
log(obj.get("left"));
obj.set("left", obj.get("left") + 70);
//Wie sieht's jetzt aus?
log(obj.get("left"));
//Du kannst auch ganze Objekte debuggen, um eine Liste ihrer aktuellen Attribute zu sehen
log(obj);
});
Die Ausgabe deiner Protokollbefehle findest du in der Mod (API) Konsole, die sich auf der Scripts Editor Seite für deine Kampagne befindet.
Fehlersperren
Die Roll20-API behebt kleine Fehler in deinem Skript automatisch, indem sie es bei Bedarf neu startet. Wenn die API jedoch einen schwerwiegenden Fehler erkennt, von dem sie sich nicht erholen kann, anstatt nur dein Skript immer wieder neu zu starten, nur um fortlaufend einen Fehler zu haben, wird sie einen „Fehler-Lock“ auf deine Kampagne setzen, der dazu führt, dass deine Mod (API) Skripte erst wieder laufen, wenn der Fehler behoben ist. Wenn deine Skripte durch einen Fehler gesperrt wurden, wird auf der Seite „Skripteditor“ eine Meldung wie diese angezeigt:
Mach dir keine Sorgen! Nimm einfach Änderungen an deinen Skripten vor, um das Problem zu lösen, und klick dann auf die Schaltfläche „Skript speichern“. Wenn du dies tust, wird die Fehlersperre „aufgehoben“ und die API versucht erneut, deine Skripte auszuführen. Wenn ein weiterer Fehler auftritt, wird die Fehlersperre wieder aktiviert. Du kannst diesen Vorgang so oft wie nötig wiederholen, um den Fehler zu beheben. Die API wird dich nie davon abhalten, deine Fehlersperren zu löschen, weil du zu oft fehlgeschlagen bist.
Häufige Fehler
Im Folgenden findest du einige weitere häufig auftretende Fehler:
myvar ist nicht definiert
on("ready", function() {
var myVar;
log(myvar);
});
Während in der Fehlermeldung „nicht definiert“ steht, ist tatsächlich passiert, dass die Variable nicht alsdeklariert ist. Eine der häufigsten Ursachen hierfür ist ein Tippfehler im Namen einer deiner Variablen, beispielsweise das Fehlen eines Großbuchstabens.
Die Eigenschaft „myProperty“ kann nicht gelesen werden oder die Methode „myMethod“ kann nicht aufgerufen werden.
on("ready", function() {
var myVar;
log(myVar.myProperty);
log(myVar.myMethod());
});
myVar ist nicht definiert, daher kann das Skript nicht herausfinden, wie es mit deinem Versuch umgehen soll, auf eine Eigenschaft von myVar zuzugreifen. Das liegt wahrscheinlich an einem der folgenden Gründe:
- Du hast versucht, ein Objekt zu finden, aber das Ergebnis war undefiniert. Führe eine Fehlerprüfung durch, um sicherzustellen, dass deine Variable definiert ist, bevor du auf ihre Eigenschaften zugreifst.
- Deine Variable wird bedingt definiert (mit einer Reihe von
if-Anweisungen oder etwas Ähnlichem) und keine deiner Bedingungen stimmte überein, sodass deine Variable dort deklariert, aber nie definiert wurde. Stelle sicher, dass du Bedingungen für alle Möglichkeiten hast, oder lege eine Standardoption fest oder führe eine Fehlerprüfung durch, um sicherzustellen, dass deine Variable definiert ist, bevor du auf ihre Eigenschaften zugreifst.
Unerwartetes Token
Entweder fehlt dir ein Zeichen oder du hast ein Zeichen zu viel. Dies kann darauf zurückzuführen sein, dass ein Komma zwischen einer Liste von Eigenschaften in einem Objekt oder Elementen in einem Array vergessen wurde oder dass am Ende eines komplizierten verschachtelten Methodenaufrufs eine zu viele oder zu wenige schließende Klammer steht.
Auf die meisten Eigenschaften in den Roll20-Objekten muss über die Methoden get() und set() zugegriffen werden. Wenn du get() verwendest, solltest du den führenden Unterstrich bei schreibgeschützten Eigenschaften weglassen.