Macros for Dummies - A MapTool Macro-Tutorial (german)

Doc requests, organization, and submissions

Moderators: dorpond, trevor, Azhrei

Post Reply
Thargun
Giant
Posts: 188
Joined: Sun Sep 14, 2014 4:27 am

Macros for Dummies - A MapTool Macro-Tutorial (german)

Post by Thargun »

A really long and detailed Macro-Tutorial for beginners, no previous knowledge needed. Includes HTML, CSS and a complete mini-framework to practice. Since there are very few sources for german speaking people yet, this one is complete in german language. Have fun!

Used MapTool-Version: 1.3.b91

Makros für Dummies - Ein Tutorial zur MapTool Scriptsprache

Dich schreckt das riesige Inhaltsverzeichnis ab? Das muss es nicht! Lies dir doch einfach mal das Vorwort durch.

1 - Über dieses Tutorial

1.1 - Vorwort
1.2 - Voraussetzungen
1.3 - Aufbau
1.4 - Begriffserklärung
1.5 - Wichtige Links

2 - Makros, Makros und nochmal Makros

2.1 - Was ist ein Makro?
2.2 - Warum ein Makro schreiben?
2.3 - Makros & MapTool-Versionen
2.4 - Makros & Mote

3 - Ein paar Basics

3.1 - Wo werden Makros gespeichert?
3.2 - Ein neues Makro erstellen
3.3 - Der Makro-Editor
3.4 - Code und Text
3.5 - Roll Options
3.6 - Code und Text die Zweite
3.7 - Die Syntax: Ein Wesen der dritten Art
3.8 - Kommentare
3.9 - Trusted Makros

4 - Variablen: Die großen Unbekannten

4.1 - Was ist eine Variable?
4.2 - Der Name einer Variable
4.3 - Eine Variable erstellen
4.4 - Noch mehr Variablen
4.5 - Kann man Variablen löschen?
4.6 - Variablen sind lokal begrenzt
4.7 - Usereingaben in Variablen speichern
4.8 - Datentypen: Eine kleine Übersicht
4.9 - Spezial-Variablen

5 - Funktionen und wie sie funktionieren

5.1 - Der Rückgabewert
5.2 - Parameter
5.3 - Die kleine Mathe-Ecke
5.4 - Verschachtelte Funktionen
5.5 - strformat(): Praktischer geht es nicht

6 - Datentypen im Detail

6.1 - Zahlen & Strings
6.2 - String Listen
6.3 - String Property Listen
6.4 - JSON Arrays
6.5 - JSON Objects

7 - Token Properties

7.1 - Was sind Token-Properties?
7.2 - Properties erstellen
7.3 - Standardwerte für Properties
7.4 - Ein integrierter Charakterbogen
7.5 - Der "Current Token"
7.6 - Properties abrufen
7.7 - Properties editieren
7.8 - Auf beliebige Tokens zugreifen
7.9 - Properties per Funktion erstellen
7.10 - Token Types
7.11 - Properties in Library Tokens
7.12 - Mögliche Werte für Properties
7.13 - Token-Funktionen

8 - Codeverzweigungen

8.1 - IF als Funktion: Wenn...dann...sonst...
8.2 - Operatoren
8.3 - IF als Roll Option
8.4 - SWITCH: Die Qual der Wahl
8.5 - CODE-Blöcke ohne Befehle
8.6 - Verschachtelte Codeverzweigungen

9 - Usereingaben mit input()

9.1 - Grundlagen
9.2 - Sub-Parameter
9.3 - Input Typen
9.4 - Spezielle Input Typen
9.5 - Noch mehr input()
9.6 - Usereingaben überprüfen

10 - Bastelstunde I: Ein universelles Würfelmakro

10.1 - Das Makro
10.2 - Die Erklärung

11 - Codeschleifen

11.1 - COUNT: Runden drehen wie im Karussell
11.2 - WHILE: Den Ball am Laufen halten
11.3 - FOR: Schritt für Schritt
11.4 - FOREACH: Einer für Alle
11.5 - Trennzeichen bei Codeschleifen
11.6 - Wie wichtig sind Codeschleifen?

12 - Fenster: Das Tor zur Welt

12.1 - Fensterarten: Unterschiede & Gemeinsamkeiten
12.2 - Dialoge
12.3 - Frames

13 - HTML

13.1 - HTML Grundlagen
13.2 - Zeichen maskieren
13.3 - Tabellen
13.4 - DIV Container
13.5 - Bilder & Grafiken
13.6 - HTML und der Parser

14 - CSS

14.1 - CSS Grundlagen
14.2 - Farben: Jetzt wird's bunt
14.3 - Übungsvorbereitungen
14.4 - Text formatieren
14.4.1 - Schriftformatierungen
14.4.2 - Textformatierungen
14.4.3 - Textausrichtung
14.5 - Boxen formatieren
14.5.1 - Größenangaben
14.5.2 - Rahmen
14.5.3 - Abstände
14.6 - Hintergrundfarben
14.7 - CSS im Header
14.8 - CSS auslagern
14.9 - Klassen

15 - Bastelstunde II: Ein Charakterbogen

15.1 - Das Makro
15.2 - Die Erklärung

16 - Makros aufrufen

16.1 - Die Makro Roll Option
16.2 - Makro in Makro ausgeben
16.3 - Ergebnisse zurückliefern
16.4 - Links mit HTML erstellen
16.5 - Einfache Links

17 - HTML Formulare

17.1 - Grundlagen
17.2 - Einzeilige Textfelder
17.3 - Mehrzeilige Textfelder
17.4 - Auswahllisten
17.5 - Radio Buttons
17.6 - Checkboxen
17.7 - Versteckte Daten
17.8 - Layout

18 - Bastelstunde III: Das Mini-Framework

18.1 - Vorbereitungen

18.2 - Charakterbogen
18.2.1 - Das Makro
18.2.2 - Die Erklärung

18.3 - Attributsproben
18.3.1 - Das Makro
18.3.2 - Die Erklärung

18.4 - HP Verwaltung
18.4.1 - HP abziehen: Das Makro
18.4.2 - HP abziehen: Die Erklärung
18.4.3 - HP hinzufügen: Das Makro
18.4.4 - HP hinzufügen: Die Erklärung

18.5 - Angriff & Verteidigung
18.5.1 - Das Makro
18.5.2 - Die Erklärung

18.6 - Waffenverwaltung
18.6.1 - Waffe hinzufügen (Formular): Das Makro
18.6.2 - Waffe hinzufügen (Formular): Die Erklärung
18.6.3 - Waffe hinzufügen (Verarbeitung): Das Makro
18.6.4 - Waffe hinzufügen (Verarbeitung): Die Erklärung
18.6.5 - Waffe löschen (Formular): Das Makro
18.6.6 - Waffe löschen (Formular): Die Erklärung
18.6.7 - Waffe löschen (Verarbeitung): Das Makro
18.6.8 - Waffe löschen (Verarbeitung): Die Erklärung

18.7 - Zauberverwaltung
18.7.1 - Zauber hinzufügen (Formular): Das Makro
18.7.2 - Zauber hinzufügen (Verarbeitung): Das Makro
18.7.3 - Zauber hinzufügen (Verarbeitung): Die Erklärung
18.7.4 - Zauber löschen (Formular): Das Makro
18.7.5 - Zauber löschen (Formular): Die Erklärung
18.7.6 - Zauber löschen (Verarbeitung): Das Makro
18.7.7 - Zauber löschen (Verarbeitung): Die Erklärung

18.8 - Charaktereditor
18.8.1 - Eingabeformular: Das Makro
18.8.2 - Eingabeformular: Die Erklärung
18.8.3 - Datenverarbeitung: Das Makro
18.8.4 - Datenverarbeitung: Die Erklärung

18.9 - Initiative
18.9.1 - Das Makro
18.9.2 - Die Erklärung

18.10 - Inventar
18.10.1 - Inventarfenster: Das Makro
18.10.2 - Inventarfenster: Die Erklärung
18.10.3 - Gegenstand hinzufügen (Formular): Das Makro
18.10.4 - Gegenstand hinzufügen (Verarbeitung): Das Makro
18.10.5 - Gegenstand hinzufügen (Verarbeitung): Die Erklärung
18.10.6 - Gegenstand editieren (Formular): Das Makro
18.10.7 - Gegenstand editieren (Formular): Die Erklärung
18.10.8 - Gegenstand editieren (Verarbeitung): Das Makro
18.10.9 - Gegenstand editieren (Verarbeitung): Die Erklärung
18.10.10 - Gegenstand löschen: Das Makro
18.10.11 - Gegenstand löschen: Die Erklärung

19 - Ende der Datenübertragung

19.1 - Fertig, und jetzt?
19.2 - Abschiedsworte
Last edited by Thargun on Tue Sep 29, 2015 4:33 pm, edited 2 times in total.

Thargun
Giant
Posts: 188
Joined: Sun Sep 14, 2014 4:27 am

Re: Macros for Dummies - A guide to MapTool-Macros (german)

Post by Thargun »

1 - Über dieses Tutorial

1.1 - Vorwort

Keine Panik! Diese zwei Worte stehen nicht nur in beruhigenden Lettern auf dem Umschlag des Reiseführers Per Anhalter durch die Galaxis, sie sind auch genau richtig um dieses Tutorial zu beginnen. Viele glauben eine Programmiersprache zu erlernen, oder in unserem Fall eine Scriptsprache, wäre hochkompliziert. Man müsse ein Genie sein, oder doch zumindest ein Matheprofi, um zu verstehen was da überhaupt vor sich geht. Ich sage: Das ist Blödsinn! Gerade die MapTool-Scriptsprache ist leicht zu verstehen.

Du kannst dir das ein bisschen vorstellen wie das Lernen einer Fremdsprache. Es gibt Vokabeln, das sind Funktionen und Befehle die irgendetwas bewirken, und die Grammatik, das sind Regeln wie du die Vokabeln richtig anordnest und die Satzzeichen richtig verwendest. Klar, ein gewisses logisches Verständnis ist schon hilfreich, und wenn du eins und eins zusammenzählen kannst wäre das sicherlich auch nicht verkehrt. Aber hey, das schafft sogar ein Affe dem eine Banane als Belohnung winkt.

Genauso wichtig wie das Lernen der Vokabeln und Einhalten der Regeln ist aber auch ein gewisses Maß an Kreativität, und davon haben wir Rollenspieler doch genug. Warum Kreativität? Naja, beim Lösen einer Aufgabe gibt es eben nicht nur den einen richtigen Weg, es gibt meist gleich mehrere Möglichkeiten die zur Lösung führen. Welchen Weg wir am Ende nehmen hängt immer von der Situation, also der Aufgabenstellung ab, wobei wir immer versuchen so effizient wie möglich vorzugehen.

Aber nochmal: Keine Panik! Wenn du deine ersten eigenen Makros geschrieben hast wirst du bald selbst neue Wege entdecken. Dabei spielt natürlich auch Erfahrung eine wichtige Rolle. Umso länger du dich mit dem Makro schreiben beschäftigst, desto besser wirst du. Und wenn du doch mal irgendwo nicht durchblickst, gib nicht gleich auf. Selbst als du Laufen gelernt hast, etwas das du heute als selbstverständlich empfindest, bist du mehr als einmal auf die Nase gefallen. Also stehe einfach wieder auf.

Wenn du bis zum Schluß durchhältst wirst du, natürlich mit ein bisschen Übung, in der Lage sein komplexe Makros zu schreiben, optische ansprechende Charakterbögen zu erstellen und noch vieles mehr. Das dauert auch nicht mal halb solange wie dir das riesige Inhaltsverzeichnis vorgaukelt. Du siehst, es lohnt sich. Jetzt aber genug der einleitenden Worte: Ran an den Speck und viel Spaß!

Thargun
Giant
Posts: 188
Joined: Sun Sep 14, 2014 4:27 am

Re: Macros for Dummies - A guide to MapTool-Macros (german)

Post by Thargun »

1.2 - Voraussetzungen

Hier geht es ausschließlich um das Erlernen der MapTool-Scriptsprache zum Schreiben von Makros. In dieser Hinsicht werden von dir keinerlei Voraussetzungen oder Vorkenntnisse verlangt. Du kannst als ohne Probleme bei Null anfangen.

Du solltest dich aber mit der allgemeinen Bedienung und der Oberfläche von MapTool auskennen, und z. B. wissen was ein Token oder eine Kampagne ist. Solche Dinge werde ich nicht erklären. Wenn du dich mit MapTool noch nicht so gut auskennst empfehle ich dir meine MapTool Videotutorials, die kaum eine Frage offen lassen.

Dann möchte ich dich noch bitten, für dieses Tutorial in MapTool eine eigene Kampagnendatei anzulegen. Da du manche Makros und Werte der Kampagne immer wieder verwenden wirst, spart dir das eine Menge Arbeit.

Thargun
Giant
Posts: 188
Joined: Sun Sep 14, 2014 4:27 am

Re: Macros for Dummies - A guide to MapTool-Macros (german)

Post by Thargun »

1.3 - Aufbau

Eine Sache möchte ich gleich mal klarstellen: Das hier ist ein Anfängertutorial, bei dem keine Vorkenntnisse vorausgesetzt werden! Wenn du also schon ein wenig Erfahrung im Makro schreiben hast oder anderweitige Programmierkenntnisse besitzt, mag es dir vielleicht hier und da zu langsam gehen, während du an anderen Stellen tiefergehende technische Informationen oder detailliertes Hintergrundwissen vermisst. Sorry, aber damit musst du entweder klarkommen oder dir eine andere Informationsquelle suchen.

Die einzelnen Kapitel in diesem Tutorial bauen alle aufeinander auf. Es ist also ratsam, dass du die Reihenfolge von Anfang bis Ende einhältst und dabei kein Kapitel überspringst. Wenn du das nicht machst wirst du vielleicht irgendwann feststellen, dass du plötzlich nicht mehr weiterkommst, weil du irgendwo etwas Wichtiges verpasst hast.

Die Themen in diesem Tutorial werden nicht nur erklärt, sondern auch mit zahlreichen Beispielen verdeutlicht. Diese Beispiele sind nicht nur zum Anschauen, sondern ausdrücklich auch zum Nachmachen gedacht! Dadurch festigst du das Wissen besser und siehst live was das Makro bewirkt. Am Anfang fordere ich dich noch öfter zum Ausprobieren auf, später erwarte ich da einfach ein wenig Eigeninitiative von dir. Übrigens empfehle ich dringend den Code aus den Beispielen nicht einfach zu kopieren und in MapTool einzufügen, sondern ihn abzuschreiben. Das dauert zwar länger, aber du entwickelst mehr Verständnis für die Themen, bekommst mehr "Gefühl" beim Schreiben von Code und machst später weniger Anfängerfehler.

Um den Rahmen nicht zu sprengen habe ich auf richtige Übungsaufgaben verzichtet. Wenn du ein Kapitel beendet, bzw. etwas Neues gelernt hast, hindere ich dich aber natürlich nicht daran dir selbst eine oder mehrere kleine Aufgaben zu stellen und zu lösen. Nur zu, dadurch lernst du schneller und besser, also experimentiere ein wenig herum.

Ich habe mich in diesem Tutorial um eine lockere und zugängliche Schreibweise bemüht, besonders in den ersten Kapiteln. Wenn du nur hinter den harten Fakten her bist mag dich das vielleicht ein bisschen stören. Aber gerade für Einsteiger finde ich es wichtig, dass sich der Text nicht wie ein staubtrockenes Fachbuch liest. Übrigens Duze ich dich einfach. Ich hoffe du findest das in Ordnung, denn so bekommen wir vielleicht einen besseren Draht zueinander, und ich komme dir nicht vor wie dein langweiliger Geschichtslehrer aus der 6. Klasse.

Thargun
Giant
Posts: 188
Joined: Sun Sep 14, 2014 4:27 am

Re: Macros for Dummies - A guide to MapTool-Macros (german)

Post by Thargun »

1.4 - Begriffserklärung

Zwar versuche ich fachbezogene Begriffe so weit wie möglich zu vermeiden, aber immer wird mir das nicht gelingen. Daher erkläre ich dir lieber gleich ein paar davon. Auch wenn du dabei noch nicht ganz durchblickst, lies es dir trotzdem schon mal durch.

Parser
Der Parser ist ein Teil von MapTool. Er liest und interpretiert deine geschriebenen Makros und sorgt dafür, dass deine Befehle umgesetzt werden.

Syntax
Die Syntax ist eine Ansammlung von Regeln. Diese Regeln müssen beim Schreiben von Makros eingehalten werden, damit der Parser deine Befehle erkennen und interpretieren kann.

Funktion
Eine Funktion ist ein Befehl in einem Makro. Es gibt viele verschiedene Funktionen die alle etwas anderes bewirken. Wird eine Funktion ausgeführt liefert sie immer ein Ergebnis zurück, den "Rückgabewert".

Rückgabewert
Das Ergebnis, das eine Funktion zurückliefert.

Parameter
Ein Parameter ist eine zusätzliche Angabe zu einer Funktion. Durch Parameter wird der Funktion mitgeteilt welche Werte sie berücksichtigen soll. Dadurch ändert sich meist auch das Ergebnis der Funktion. Parameter sind nicht immer zwingend notwendig, oft können sie auch optional eingesetzt werden.

Makro-Button
Wenn du ein neues Makro erstellst entsteht dadurch am Speicherort auch immer ein neuer Button. Das ist der Makro-Button. Mit einem Mausklick darauf kannst du das Makro dann ausführen.

HTML & CSS
Sogenannte Auszeichnungssprachen die hauptsächlich beim Webdesign eingesetzt werden. Damit lassen sich z. B. Tabellen zur Strukturierung von Inhalten erstellen, Schriften formatieren oder Links und Bilder hinzufügen. HTML & CSS sind zwar kein Teil der MapTool-Scriptsprache, doch ihre speziellen Befehle können vom Parser gelesen, interpretiert und umgesetzt werden.

Thargun
Giant
Posts: 188
Joined: Sun Sep 14, 2014 4:27 am

Re: Macros for Dummies - A guide to MapTool-Macros (german)

Post by Thargun »

1.5 - Wichtige Links

Es gibt ein paar Links die du dir unbedingt merken musst, weil du sie einfach immer wieder brauchen wirst:

MapTool Wiki

Deine erste Anlaufstelle, egal um was es geht. Hier findest du umfangreiche Informationen zu MapTool selbst und vor allem zur Makro-Scriptsprache inklusive angrenzender Themen. Ein riesiger Wissensfundus den du nicht missachten solltest.

Liste der Funktionen

Der Teil der MapTool-Wiki den du am meisten benötigen wirst. Er enthält eine Liste aller Makro-Funktionen, einmal nach Themen und dann nochmal nach Alphabet sortiert. Die Beschreibung jeder einzelnen Funktion enthält nicht nur eine genaue Erklärung und alle möglichen Parameter, sondern meist auch gleich ein oder mehrere Anwendungsbeispiele. Die Liste ist nicht ganz zu 100% aktuell, aber trotzdem unerlässlich.

MapTool Forum

Das offizielle MapTool-Forum. Etwas unübersichtlich (achte auch auf die teilweise versteckten Unterforen), und doch die beste Anlaufstelle zu allen Fragen zum Programm. Es gibt auch einen eigenen Bereich zur Makro-Scriptsprache. Dort sind einige Profis unterwegs die dir in der Regel kompetent und schnell weiterhelfen. Wenn du wegen eines Problems oder einer Frage schon am Verzweifeln bist, und niemand eine Lösung weiß, solltest du es unbedingt im MapTool-Forum versuchen. Nutze auch die Suchfunktion des Forums, viele Fragen wurden dort bereits beantwortet.

SELFHTML

DIE Seite wenn es um HTML oder CSS geht. Du findest dort einige Tutorials und eine komplette Befehlsreferenz. Ein Besuch lohnt sich wenn du etwas tiefer in die Materie einsteigen willst, oder du ein Nachschlagewerk benötigst. Lies dir bitte trotzdem erst die entsprechenden Kapitel zu HTML und CSS in diesem Tutorial durch, da es in Verbindung mit MapTool einige Dinge zu beachten gibt.

Thargun
Giant
Posts: 188
Joined: Sun Sep 14, 2014 4:27 am

Re: Macros for Dummies - A guide to MapTool-Macros (german)

Post by Thargun »

2 - Makros, Makros und nochmal Makros

2.1 - Was ist ein Makro überhaupt?

Wer sich ohne vorherige Erfahrung ein komplexes Makro anschaut mag es vielleicht mit einem mystischen Wesen wie einem Einhorn vergleichen, oder auch mit dem Supercomputer einer hochentwickelten Alienrasse. Im Endeffekt also etwas, das man als Normalsterblicher gar nicht verstehen kann, und dessen Geheimnisse solange im Verborgenen bleiben werden, bis sich die Menschheit zu etwas entwickelt hat, das allein Kraft seiner Gedanken durch Raum und Zeit reisen kann.

Das ist natürlich Unsinn. Ein Makro ist eigentlich nur eine Ansammlung von Befehlen um eine bestimmte Aufgabe in MapTool automatisch auszuführen. Das kann ein simpler Würfelwurf sein, eine beliebige Rechenaufgabe, oder auch das Darstellen eines Charakterbogens mit automatischer Abfrage von Tokenwerten. Um ehrlich zu sein sind MapTool-Makros sogar recht mächtig und können fast alles machen was du dir wünschst. Aber bevor du fragst: Nein, ein Makro kann dich weder um 5 Jahre jünger machen, noch aus irgendwelchen Fettpölsterchen ein knackiges Sixpack zaubern.

Um ein Makro zu schreiben brauchst du nur die Tastatur, denn ein Makro besteht ausschließlich aus Text. Technisch gesehen benutzt du dafür eine sogenannte Scriptsprache, also eine bestimmte Art von Programmiersprache. Wenn du ein fertig geschriebenes Makro dann benutzt, wird der komplette Inhalt des Makros in die Chatbox gesendet. Einzelne Makro-Befehle können theoretisch also auch direkt in die Chatbox eingegeben werden, das machst du aber höchstens mal um irgendetwas auszuprobieren. Ach, und keine Angst: Von dem ganzen kryptischen Geschreibsel sieht nachher niemand etwas, das wirst du zu verhindern wissen!

In der Chatbox angekommen schaut sich der Parser von MapTool an was du da so alles geschrieben hast, also das was in dem Makro steht. Das interpretiert dieser nette Parser dann und sorgt dafür, dass deine Befehle auch richtig umgesetzt werden.

Übrigens: In Makros kannst du zusätzlich auch HTML- und CSS-Befehle verwenden. Das sind Auszeichnungssprachen die eigentlich beim Webdesign genutzt werden. Davon hast du keine Ahnung? Macht nichts, dazu kommen wir schon noch.

Jetzt aber genug von dem hintergründigen Technik-Gebabbel. Schließlich willst du lernen wie man ein Makro schreibt, und es nicht zum Essen ausführen. Richtig?

Thargun
Giant
Posts: 188
Joined: Sun Sep 14, 2014 4:27 am

Re: Macros for Dummies - A guide to MapTool-Macros (german)

Post by Thargun »

2.2 - Warum ein Makro schreiben?

Vielleicht fragst du dich warum du überhaupt ein Makro schreiben solltest, schließlich kann MapTool ja auch so schon eine ganze Menge. Klar, aber würde es dir nicht gefallen deine Hitpoints nach einem schweren Treffer mit einem Mausklick schnell ändern zu können, und das vielleicht auch noch mit einem Energiebalken direkt an deinem Token anzuzeigen? Oder wie wäre es mit einem Angriffswurf der bei Erfolg auch gleich noch den Schaden auswürfelt und das alles übersichtlich im Chat ausgibt? Selbst ein simpler Würfelwurf ist angenehmer wenn du dafür nur schnell auf einen Button klicken musst, anstatt jedes Mal den Würfelbefehl in die Chatbox einzugeben. Mit Makros ist das, und noch vieles mehr, gar kein Problem.

Eventuell hilft bei Beantwortung der Frage auch eine eher praxisnahe Ansichtsweise: Deine Wäsche wäschst du ja auch mit der Waschmaschine und nicht mit der Hand. Naja, abgesehen von dem Rotweinfleck auf der Hose, den dir deine angedudelte Bekanntschaft letztes Wochenende unbemerkt verpasst hast. DU warst ja ganz bestimmt noch nüchtern...

Thargun
Giant
Posts: 188
Joined: Sun Sep 14, 2014 4:27 am

Re: Macros for Dummies - A guide to MapTool-Macros (german)

Post by Thargun »

2.3 - Makros & MapTool-Versionen

Mit jeder neuen MapTool-Version wird auch die enthaltene Scriptsprache zum Schreiben von Makros aktualisiert. Meistens sind das nur Kleinigkeiten, aber auch auf die kann es ankommen.

Wenn du nun Makros mit der aktuellen MapTool-Version schreibst, die Kampagne inklusive Makros speicherst, und dann die Kampagne mit einer älteren MapTool-Version wieder öffnest, kann es passieren (muss es aber nicht), dass einige Makros in der älteren Version nicht mehr richtig funktionieren. Das liegt dann einfach daran, dass in der aktuellen Version die Scriptsprache oder andere Programmteile aktualisiert wurden, und du Funktionen und Makro-Befehle benutzt hast, die in der älteren Version noch anders funktionierten, oder vielleicht gar nicht existierten. Das ist eigentlich nicht so tragisch, denn es gibt normalerweise keinen Grund plötzlich eine ältere MapTool-Version zu benutzen.

Das selbe kann aber auch passieren, wenn du deine Makros mit einer neueren MapTool-Version benutzt, als die, mit der du die Makros geschrieben hast. Dieser Fall tritt allerdings sehr selten auf, da die MapTool-Entwickler möglichst auf Kompatibilität achten. Trotzdem: Wenn du deine Makros mit einer neueren Version benutzt, teste sie vorher und passe sie an wenn nötig.

Ob sich bei einer neuen MapTool-Version auch die Scriptsprache geändert hat, und wenn ja welche Änderungen es gab, wird normalerweise im offiziellen MapTool-Forum bekanntgegeben.

Übrigens: Alle Erklärungen und Beispiele in diesem Tutorial beziehen sich auf MapTool v1.3.b91, sollten aber, wie bereits erwähnt, auch in neueren Versionen funktionieren.

Thargun
Giant
Posts: 188
Joined: Sun Sep 14, 2014 4:27 am

Re: Macros for Dummies - A guide to MapTool-Macros (german)

Post by Thargun »

2.4 - Makros & Mote

Wenn du MapTool kennst hast du vielleicht auch schon mal etwas von Mote gehört. Mote wird von einem anderen Team entwickelt, ist im Kern immer noch MapTool, besitzt aber ein paar zusätzliche Funktionen und eine andere Oberfläche.

Da Mote auf MapTool basiert und im Großen und Ganzen auch die gleiche Scriptsprache verwendet, kann dieses Tutorial auch für Mote verwendet werden. Trotzdem gibt es Unterschiede, und wer weiß schon was sich in Zukunft alles in Mote ändern wird. Wenn du also Makros schreibst und sie in Mote verwenden willst, musst du sie dort auch testen und eventuell anpassen.

Weitere Informationen zu Mote oder den Unterschieden zwischen Mote und MapTool wird es an dieser Stelle nicht geben.

Thargun
Giant
Posts: 188
Joined: Sun Sep 14, 2014 4:27 am

Re: Macros for Dummies - A guide to MapTool-Macros (german)

Post by Thargun »

3 - Ein paar Basics

3.1 - Wo werden Makros gespeichert?

Tja, wo kommen sie denn überhaupt hin, die fertigen Makros? Die müssen schließlich auch irgendwo schlafen, bis du sie dann, wahrscheinlich mitten in der Nacht, aus ihren schönsten Träumen reist, um irgendetwas vermeintlich Dämliches für dich zu tun.

Es gibt drei mögliche Speicherorte für Makros. Um die zu finden gehst du erst mal oben in der Menüzeile auf Fenster und machst im Untermenü ein Häkchen bei Allgemein, Kampagne, Ausgewählt und Verkörpern. Daraufhin öffnen sich einige Fenster.

Allgemein (Global)

Makros die du hier speicherst sind nur für dich bestimmt. Sie stehen dir jederzeit in MapTool zur Verfügung, egal welche Kampagne geladen ist oder auf welchem Server du dich gerade befindest. Andere Spieler, auch wenn es sich dabei um Spielleiter handelt, haben keinen Zugriff auf die hier gespeicherten Makros.

Dieser Speicherort eignet sich also um deine persönliche Note zu setzen. Das könnte z. B. die Chatausgabe von häufig benutzten Textphrasen sein, oder ein kleines Würfelmakro das du immer und überall einsatzbereit haben möchtest.

Kampagne (Campaign)

Auf Makros, die du in diesem Fenster speicherst, haben alle Mitspieler Zugriff. Außerdem sind diese Makros fest mit deiner Kampagne verbunden und werden mit ihr gespeichert. Wenn du also eine andere Kampagne lädst, oder eine neue Kampagne erstellst, sind die Makros dort nicht vorhanden.

Dieser Speicherort eignet sich wenn du nur wenige kleine Makros erstellen möchtest. Bei größeren Makrosammlungen lohnt sich das aber nicht, vor allem wenn ein Makro nicht direkt von den Spielern, sondern nur von einem anderen Makro aufgerufen werden soll.

Tokens

Makros können auch in jedem beliebigen Token gespeichert werden. Wenn du mit dem Mauszeiger auf einen Token klickst, kannst du im Fenster Ausgewählt sehen welche Makros in dem Token gespeichert sind. Natürlich kannst du dort dann auch neue Makros anlegen oder bestehende Makros ausführen. Das Fenster Verkörpern funktioniert genauso, nur wird hier immer das aktuell von dir verkörperte Token angezeigt.

In den meisten Fällen macht es wenig Sinn Makros in einem normalen Token zu speichern. Die Ausnahme ist ein Library Token.

Library Tokens

Ein Library Token ist, wie der englische Name schon verrät, eine Art Bibliothek für Makros. Wenn du eine Makro-Sammlung anlegst, ist ein Library Token der ideale Ort um die Makros zu speichern. Die dort gespeicherten Makros können dann von anderer Stelle aus aufgerufen werden, z. B. vom Campaign-Fenster, von einem anderen Makro, oder aus einem erstellten Charakterbogen heraus. Wie das Aufrufen von Makros genau funktioniert schauen wir uns später noch an.

Eigentlich sind Library Tokens ganz normale Tokens. Damit ein Token aber zu einem richtigen Library Token wird, müssen drei einfache Bedingungen erfüllt sein:

1. - Der Name des Tokens muss dem Format "Lib:name" entsprechen. Du kannst auch mehrere Library Tokens erstellen, diese dürfen aber niemals den gleichen Namen haben (auch wenn sie auf verschiedenen Karten liegen). Hier einige Beispiele:
  • Lib:makros
  • Lib:testmakros
  • Lib:kampf
  • Lib:spielleiter
2. - Der Token muss für Spieler sichtbar sein (Rechtsklick auf das Token und im Menü Visible to players aktivieren). Damit die Spieler den Token trotzdem nicht sehen kannst du ihn auf den Hidden-Layer verschieben, wenn du möchtest.

3. - Der Tokentyp muss auf NPC gestellt sein (Doppelklick auf den Token und dann oben rechts NPC auswählen).

Das war es schon. Hast du alle drei Bedingungen erfüllt, hast du ein waschechtes Library Token erstellt.
Last edited by Thargun on Tue Sep 29, 2015 4:02 pm, edited 1 time in total.

Thargun
Giant
Posts: 188
Joined: Sun Sep 14, 2014 4:27 am

Re: Macros for Dummies - A guide to MapTool-Macros (german)

Post by Thargun »

3.2 - Ein neues Makro erstellen

So langsam wird es ernst, du bist kurz davor dein erstes Makro zu schreiben. Das hat ja auch lange genug gedauert, oder? Zum Üben wirst du erst mal alle Makros im Kampagnenfenster (Campaign-Fenster) speichern. Also das Fenster öffnen, Rechtsklick mit der Maus auf eine freie Fläche und dann Neues Makro hinzufügen auswählen. Wie von Zauberhand erscheint ein neuer Button in dem Fenster. Herzlichen Glückwunsch, das ist dein erstes Makro! Es passiert natürlich nichts wenn du draufklickst, denn es hat ja noch keinen Inhalt. Also schnell einen Rechtsklick auf das neue Makro und Bearbeiten auswählen.

Was du jetzt vor dir hast ist der Makro-Editor. Schauen wir uns den doch mal etwas genauer an.

Thargun
Giant
Posts: 188
Joined: Sun Sep 14, 2014 4:27 am

Re: Macros for Dummies - A guide to MapTool-Macros (german)

Post by Thargun »

3.3 - Der Makro-Editor

Image

1. - Die Kennzeichnung ist der Name des Makros. Was du hier eingibst erscheint nachher auch auf dem Button um das Makro aufzurufen. Trage da einfach mal irgendetwas ein und klicke anschließend unten auf OK, dann siehst du was ich meine.

2. - Hier kannst du dein Makro einer Gruppe zuordnen, das hilft die Übersicht zu bewahren. Du kannst z. B. alle Makros die zum Kämpfen wichtig sind der Gruppe Kampf zuordnen, und alle Makros speziell für den Spielleiter der Gruppe Spielleiter. Die Gruppen werden dann, inklusive der zugehörigen Makros, beim Speicherort angezeigt, in unserem Fall also im Kampagnenfenster (Campaign). Das ist doch viel besser als wenn alles durcheinander fliegt, denke dabei nur mal an deine Sockenschublade!

Die Gruppen in einem Fenster werden übrigens automatisch nach Alphabet sortiert, daran lässt sich auch nichts ändern. Wenn du sie lieber manuell sortieren möchtest, setze einfach Zahlen vor die Gruppennamen, z. B.: 1 - Spielleiter, 2 - Kampf

3. - Auch die Makros innerhalb einer Gruppe werden automatisch nach Alphabet sortiert. Damit du bei den Makros keine Zahlen vor den Namen setzen musst, kannst du das Sortierungspräfix benutzen. Hier trägst du einfach ein an welcher Stelle innerhalb einer Gruppe das Makro angezeigt werden soll. Also z. B. eine "1" wenn das Makro an erster Stelle angezeigt werden soll, und eine "3" wenn es an dritter Stelle angezeigt werden soll. Trägst du bei zwei verschiedenen Makros die gleiche Zahl ein, werden beide Makros an dieser Stelle angezeigt, aber untereinander nochmal nach Alphabet sortiert. Ist klar, oder?

4. - Hier kannst du für dein Makro einen Kurzbefehl festlegen. Das ist eine bestimmte Taste oder eine Tastenkombination mit der du das Makro direkt aufrufen kannst. Der Kurzbefehl wird außerdem auch auf dem Makro-Button nochmal angezeigt.

5. - Der wichtigste Teil überhaupt. Hier schreibst du das eigentliche Makro und trägst alle Befehle und Funktionen ein. Willst du es gleich mal ausprobieren? Dann los! Trage folgendes ein:

Code: Select all

[r: "Hello World"]
Klicke anschließend unten auf OK, und führe das Makro aus indem du auf den Makro-Button klickst. Wie du siehst wird der Text Hello World in der Chatbox ausgegeben. Und damit nochmal Herzlichen Glückwunsch! Jetzt hast du dein erstes richtiges Makro geschrieben, das auch irgendetwas bewirkt!

Tipp: Wenn dein Makro nur aus ein paar wenigen Zeilen besteht, kannst du den Eingabebereich hier ruhig benutzen. Sobald allerdings ein paar mehr Zeilen hinzukommen, oder du verschachtelten Code oder Codeschleifen benutzt (das kommt später noch), wirst du schnell die Übersicht verlieren. Daher solltest du von Anfang an einen externen Texteditor benutzen um deine Makros zu schreiben, und das Makro dann einfach in den Eingabebereich kopieren. Das hört sich zwar nach mehr Aufwand an, und das ist es auch, aber glaube mir: Schon bald wirst du mir für diesen Tipp danken!

Der normale Windows-Texteditor ist übrigens genauso nützlich wie eine Zahnbürste bei der Apfelernte. Der kostenlos erhältliche Texteditor Notepad++ eignet sich dagegen wunderbar für unsere Zwecke. Zudem besitzt er ein paar Zusatzfunktionen, die dir später vielleicht noch nützlich sind wenn du etwas tiefer in der Materie steckst. Das schicke Teil kannst du hier herunterladen: https://notepad-plus-plus.org

6. - Hier kannst du ein paar Optionen für das Makro festlegen. Bevor noch irgendetwas explodiert belassen wir es aber vorerst bei den Standardeinstellungen, so wie auf dem Bild zu sehen.

7. - Mit diesen drei Einstellungen kannst du das Aussehen des Makro-Buttons näher bestimmen. Du kannst aus deinen Buttons natürlich einen knallig bunten Regenbogen machen, deine Augen werden sich dann aber bald schon bei dir mit einem scharfen Brennen beschweren. Passender ist es, wenn du Buttons zu einem Themengebiet bzw. einer Gruppe gleich einfärbst, z. B. alle Kampfmakros orange.

8. - Auch hier geht es nochmal um das Aussehen des Makro-Buttons. Normalerweise wird die Breite eines Buttons direkt an den Namen, also die Makro-Kennzeichnung angepasst. Mit den oberen zwei Feldern kannst du die minimale und maximale Breite eines Buttons festlegen, und damit z. B. dafür sorgen, dass alle Buttons die gleiche Breite besitzen. Bei Kurzinfo kannst du einen kleinen Text eingeben. Der wird angezeigt wenn du mit dem Mauszeiger über den Button fährst. Praktischerweise eignet sich dieses Feld um eine kleine Beschreibung einzugeben, was das Makro überhaupt macht. Für das tolle Muffin-Rezept deiner Freundin gibt es sicherlich einen besseren Platz.

Jetzt ist es an der Zeit, dass du dich ein wenig mit dem Makro-Editor vertraut machst. Erstelle einfach ein paar Makros und spiele ein bisschen mit den oben vorgestellten Einstellungen herum. Dann merkst du schnell wie das alles funktioniert und am Ende aussieht. Was? Das findest du langweilig? Stelle dir einfach vor du spielst mit deinem neuen Autoradio herum. Hier übrigens mal ein kleines Beispiel:

Image
Last edited by Thargun on Tue Sep 29, 2015 4:02 pm, edited 1 time in total.

Thargun
Giant
Posts: 188
Joined: Sun Sep 14, 2014 4:27 am

Re: Macros for Dummies - A guide to MapTool-Macros (german)

Post by Thargun »

3.4 - Code und Text

Unterschiede sind wichtig. Stelle dir nur mal vor es gäbe keinen Unterschied zwischen Mann und Frau. Damit wäre das Leben nicht nur langweilig und mehr als die Hälfte aller Schuhverkäufer arbeitslos, du wärst auch niemals geboren worden und könntest dieses tolle Tutorial jetzt nicht lesen. In MapTool interessiert uns besonders der Unterschied zwischen Code und Text. Wenn du in ein Makro einfach irgendetwas reinschreibst wird das vom Parser als Text interpretiert und beim Ausführen des Makros auch genauso in der Chatbox ausgegeben. Ein Beispiel:

Code: Select all

Das hier ist Text.
Code sind verschiedene Funktionen und Makro-Befehle. Wenn du Code schreibst, musst du dich an ein paar Regeln halten. Eine Regel davon ist, dass Code immer in eckigen Klammern stehen muss. Geschweifte Klammern gehen manchmal auch, aber das ist jetzt noch nicht wichtig.

Die Funktion getPlayerName() spuckt z. B. den Namen des Spielers aus, der das Makro ausführt. Damit die Funktion aber vom Parser auch als Code erkannt wird, muss sie in eckigen Klammern stehen:

Code: Select all

[getPlayerName()]
Oder wie wäre es mit einem Würfelwurf mit drei sechsseitigen Würfeln?

Code: Select all

[3d6]
Bei der Würfelfunktion kannst du für Anzahl und Würfeltyp natürlich angeben was du willst. Es kommt immer erst die Anzahl der Würfel, dann ein "d", und dann die Seitenzahl des Würfels (z. B. 1d6, 3d6, 1d8, 5d20, etc.). Außerdem kannst du auch gleich etwas dazurechnen oder abziehen wenn du möchtest, z. B.:

Code: Select all

[1d6 + 5]
Jetzt gehen wir noch einen Schritt weiter und integrieren Text in Code:

Code: Select all

["Das hier ist Text im Code."]
Wenn du Text in Code integrierst musst du, wie bei Code üblich, alles in eckige Klammern einschließen. Der Text wird dabei nochmal in doppelte Anführungszeichen eingeschlossen.

Na los, probiere die Beispiele gleich mal aus!

Achtung: Verwende in Makros niemals Umlaute (ä, ö, ü) oder das scharfe S (ß), denn diese Zeichen kann der Parser nicht lesen und spuckt dann einen Fehler aus. Keine Angst, später lernst du noch wie du diese Zeichen trotzdem darstellen kannst. Wenn du normalen Text schreibst sind außerdem eckige Klammern [ ], geschweifte Klammern { } und doppelte Anführungszeichen " verboten, da diese ausschließlich beim Schreiben von Code benutzt werden dürfen (und auch da müssen sie immer an der richtigen Stelle stehen). Auch einfache Anführungszeichen (') sollten bei normalem Text vermieden werden, da sie an manchen Stellen Fehler verursachen können (bei HTML-Code, der später noch erklärt wird, dürfen und müssen sie sogar benutzt werden).
Last edited by Thargun on Tue Sep 29, 2015 4:02 pm, edited 1 time in total.

Thargun
Giant
Posts: 188
Joined: Sun Sep 14, 2014 4:27 am

Re: Macros for Dummies - A guide to MapTool-Macros (german)

Post by Thargun »

3.5 - Roll Options

Beim Schreiben von Makros kannst du sogenannte Roll Options einsetzen. Diese werden immer am Anfang eines Codeblocks notiert und mit einem Doppelpunkt (:) beendet. In der MapTool-Wiki findest du eine Liste aller möglichen Roll Options. Wenn du möchtest, schaue mal rein. Für den Anfang interessieren uns aber vor allem zwei dieser Roll Options: result und hide, die wir mit r und h auch abkürzen können.

Wenn du eine Funktion benutzt und im Chat ausgibst, sieht das (je nach Servereinstellung) ja schon recht komisch aus, wie dir in den Beispielen des letzten Kapitels bestimmt aufgefallen ist. Normalerweise willst du im Chat ja nur das Ergebnis einer Funktion ausgeben, denn wen interessieren schon die Zwischenschritte? Dafür kannst du dann result benutzen. Wiederhole die Beispiele also nochmal, aber jetzt mit Roll Option:

Code: Select all

[r: getPlayerName()]

Code: Select all

[r: 3d6]

Code: Select all

[r: 1d6 + 5]

Code: Select all

[r: "Das hier ist Text im Code."]
Und, siehst du den Unterschied? Wenn du also das Ergebnis von Funktionen (auch Rückgabewert genannt) im Chat oder an anderer Stelle ausgeben willst, benutze immer result dafür.

In vielen Fällen willst du wahrscheinlich gar nicht, dass überhaupt irgendetwas in der Chatbox ausgegeben wird. Z. B. wenn du das Ergebnis eines Würfelwurfs erst später an einer anderen Stelle im Makro wieder verwenden möchtest. Das mag dir jetzt noch nicht so richtig klar sein, aber das kommt schon noch. Für dich ist erst mal nur wichtig, dass hide genauso funktioniert wie jede andere Roll Option. Probiere es mit einem neuen Makro aus:

Code: Select all

[h: 3d6]
Wenn du das Makro benutzt wird der Würfelwurf zwar ausgeführt, das Ergebnis aber nicht in der Chatbox ausgegeben. Oder um genauer zu sein: Es wird versteckt. Probiere es ruhig auch mit den anderen Beispielen von oben aus. Deine Befehle im Makro werden vom Parser jedes Mal korrekt interpretiert und ausgeführt, in der Chatbox wird davon aber nichts zu sehen sein.

Du kannst mehrere Roll Options übrigens auch kombinieren, dann werden sie durch ein einfaches Komma (,) getrennt:

Code: Select all

[r,h: 1d6 + 5]
Ok, das Beispiel macht zwar keinen Sinn, weil durch das hide sowieso nichts in der Chatbox angezeigt wird, aber du siehst schon mal wie es funktioniert. Hier ein besseres Beispiel:

Code: Select all

[r,s: 1d6 + 5]
Die Roll Option s (oder: self) bewirkt, dass das Ergebnis der Funktion nur dem Spieler angezeigt wird, der das Makro ausführt. Wenn du das Makro also benutzt wirst du das Ergebnis des Würfelwurfs ohne Zwischenschritte in der Chatbox sehen können, andere Spieler auf dem Server aber nicht.
Last edited by Thargun on Tue Sep 29, 2015 4:03 pm, edited 1 time in total.

Post Reply

Return to “Documentation Requests/Discussion”