Das Online Würfel Tool @RollButler

Der @RollButler ist ein Würfelgenerator mit Anbindungsmöglichkeiten an diverse Plattformen wie Discord, Telegram, Slack, Twitter, Facebook Messenger etc. Die vollständige Anleitung ist durch seinen großen Funktionsumfang entsprechend umfangreich, sodass hier nur eine Kurzanleitung geliefert wird.

An english version of this document can be found here.

Wie binde ich den @RollButler ein, bzw. wo kann ich ihn nutzen?

Bei den mit (*) gekennzeichneten Schnittstellen handelt es sich um die präferierten Varianten.

Wie nutze ich den @RollButler?

Der @RollButler hört auf Texteingaben (außer bei Alexa) und reagiert auf Nachrichten, die mit einem seiner Kommandos beginnen. Kommandos beginnen mit einem Slash ‘/’ oder einem Punkt “.”. Die wichtigsten Kommandos sind:

  • /r (oder /roll) um einen Würfelwurf zu tätigen oder eine mathematische Berechnung durchzuführen
  • /pr (oder /privateroll) um einen geheimen Würfelwurf zu tätigen
  • /rev (oder /reveal) um den letztem (geheimen) Wurf anzuzeigen
  • /rr (oder /reroll) um den letzten Wurf zu wiederholen
  • /cr um einen Wurf auf eine Charakterfertigkeit zu tätigen
  • /pcr um einen geheimen Wurf auf eine Charakterfertigkeit zu tätigen
  • /c (oder /create) um ein Zufallsobjekt zu erzeugen
  • /pc (oder /privatecreate) um geheim ein Zufallsobjekt zu erzeugen
  • /char um einen Charakterbogen zu nutzen
  • /x um eine X-Karte (Sicherheitsmechanismus) zu spielen

Groß-/Kleinschreibung ist generell, also sowohl bei den Kommandos, wie auch den nachfolgenden Instruktionen irrelevant. Der Aufruf mit Slash (/r) oder Punkt (.r) führen zum selben Ergebnis.

Im Rahmen dieser Anleitung wird immer die kürzeste mögliche Schreibweise von Befehlen sowie der Slash verwendet.

Wie würfle ich mit dem @RollButler? (/roll Kommando)

Um den @RollButler einen Würfelwurf machen zu lassen, wird immer das Kommando /r (oder /pr für einen geheimen Wurf) gefolgt von einem Leerzeichen der eigentlichen Würfelinstruktion vorangestellt.

/r d

lässt den @RollButler einen sechsseitigen Würfel werfen. Alternativ kann anstelle von ‘d’ (dice) auch die deutsche Variante ‘w’ (Würfel) gewählt werden.

/r w

Für mehrere Würfel oder Würfel mit einer anderen Seitenzahl müssen die Werte explizit mitgegeben werden. Wird keine Anzahl vor dem ‘d’ (bzw. ‘w’) angegeben, wird immer von einem Würfel ausgegangen. Wird keine Seitenanzahl nach dem ‘d’ (bzw. ‘w’) angegeben, wird immer von einem sechsseitigen Würfel ausgegangen.

/r 2d10

würfelt dementsprechend zwei zehnseitige Würfel und liefert die Summe der Ergebnisse, also z. B. 11.

/r 4xd8

würfelt vier achtseitige Würfel und liefert die Ergebnisse der einzelnen Würfe, also z. B. 2, 7, 1, 6.

/r 3d(0..9)

würfelt drei Würfel mit den Werten 0 bis 9. Die “..” Anweisung lässt die Zahlenfolge sinnig fortführen, wird also in diesem Fall ersetzt durch 0;1;2;3;4;5;6;7;8;9.

/r 2d(0;2x1;2)

würfelt zwei Würfel mit je vier Seiten, bei denen auf je einer Seite die 0 und 2 zu finden ist, auf den anderen beiden Seiten jeweils eine 1. Die “x” Anweisung wiederholt den hinter dem x angegebenen Wert entsprechend der vor dem x angegebenen Anzahl. 2×1 wird also in diesem Fall ersetzt durch 1;1.

Folgt dem x eine Klammer, kann man auch komplexere Wiederholungen realisieren:

/r 3x(d10+2)

In diesem Fall wird d10+2 dreimal ausgeführt und das Ergebnis als Liste zurückgegeben. Nicht zu verwechseln mit 3xd10+2 … was zu einem Fehler führen wird, da die Liste (3xd10) nicht mit 2 aufaddiert werden kann.

/r d{-3..3}

würfelt einen Würfel mit den Werten -3 bis 3, wobei hier ein Ziehen ohne Zurücklegen praktiziert wird, jeder Wert also nur ein mal im Ergebnis vorkommt.

/r d%

Hierbei handelt es sich um einen Spezialwurf, dem Prozentwurf. Es werden zwei zehnseitige Würfel simuliert, die zusammengesetzt (Zehner- und Einerstelle) einen Wert zwischen 1 und 100 ergeben.

/r d((1;"a");2;"a";3;2x(1;"b"))

beschreibt einen Würfel, der teilweise mehrere Werte auf einer Seite hat:

  1. 1 und a
  2. 2
  3. a
  4. 3
  5. 1 und b
  6. 1 und b

Würfelparameter

/r 10ds5

würfelt 10 sechsseitige Würfel und wertet jede geworfene 5 (und höher) als Erfolg (success)

/r 10ds

Wird einem Parameter (hier: ‘s’) kein Wert mitgegeben, wird automatisch das höchstmögliche (oder niedrigste) Würfelergebnis angenommen. Hier werden 10 sechsseitige Würfel geworfen und nur 6 als Erfolg gewertet.

Mögliche Parameter, die beliebig kombiniert werden können, sind

  • s für Erfolge (größer gleich)
  • t für Trigger, besondere Erfolge (größer gleich)
  • f für Fehlschläge (kleiner gleich)
  • m für Patzer, besondere Fehlschläge (kleiner gleich)
  • i um die Auswertung der nachfolgenden Parameter zu invertieren (ohne Wert)
  • g um die Würfelergebnisse zu gruppieren (ohne Wert)
  • ! für einfach explodierende Würfel (größer gleich)
  • !! für rekursiv explodierende Würfel (größer gleich)
  • p um die Anzahl gerader/ungerader Würfelergebnisse zu ermitteln (ohne Wert)
  • h um nur die höchsten Werte zu verwenden (Anzahl)
  • b um nur die niedrigsten Werte zu verwenden (Anzahl)
/r 8ds5tf

wirft acht sechsseitige Würfel, wertet 5 und 6 als Erfolg, 6 als Trigger und 1 als Fehlschlag.

/r 5d10is2f

wirft fünf zehnseitige Würfel, wertet (Achtung: inveriert!) 1 und 2 als Erfolg und 10 als Fehlschlag.

/r 4ds5!!

würfelt vier sechsseitige Würfel, wertet 5 und 6 als Erfolg und wiederholt danach jeden Wurf mit einer 6, bis dieser keine 6 mehr zeigt.

/r 10d4h5

würfelt 10 vierseitige Würfel, wertet allerdings nur die 5 höchsten Ergebnisse aus.

Innere Würfe

Der Seitenzahl eines Würfels können in runden Klammern weitere Optionen mitgegeben werden um die Anzahl der Würfe und die Auswahl des Ergebnisses zu beeinflussen.

/r d10(2;H)

wirft zwei zehnseitige Würfel, wertet allerdings nur den höchsten (H) Wert . Die Auswahl des höchsten Werts ist die Standardeinstellung, sodass die Angabe von “H” auch entfallen kann.

/r d%(1;3;L)

macht einen Prozentwurf, wobei die Einerstelle nur einmal geworfen wird, die Zehnerstelle drei mal und anschließend der niedrigste (L = low) Wert genutzt wird.

Als vierter Parameter kann hier auch noch angegeben werden, wie eine geworfene 0/00 zu interpretieren ist: 0 oder 100. Ohne Angabe wird 0/00 als 100 gedeutet.

/r d%(1;2;H;0)

realisiert einen Prozentwurf mit einer Einerstelle, zwei Würfen auf die Zehnerstelle, Auswahl des höchsten Wertes und 0/00 wird als 0 gewertet.

Kommentare

Es ist sinnvoll, einer Instruktion einen Kommentar mitzugeben, um später nachvollziehen zu können, um was für einen Wurf es sich gehandelt hat. Kommentare können mit einem # eingeleitet werden und gehen bis zum Ende der Eingabe.

/r 3d12 # Dies ist der Kommentar
/r 2d8 " Dies ist auch ein Kommentar

Mathematische Operatoren und Vergleiche

Der @RollButler versteht eine vielzahl mathematischer Operatoren und Funktionen, die mit den Würfelinstruktionen verwendet werden können.

/r 1+1

Bildet die Summe von 1 und 1. Das ist 2 …

/r 2d8+3

würfelt zwei achtseitige Würfel und addiert zu der Augensumme die 3 hinzu.

/r 2d12-d4

würfelt zwei zwölfseitige Würfel und zieht von der Augensumme das Ergebnis eines vierseitigen Würfelwurfs ab.

Mögliche Rechenoperatoren sind

  • + Addition
  • Subtraktion
  • * Multiplikation
  • / Division
  • ^ Potenzrechnung
/r d12+d>=7

würfelt einen zwölf- und einen sechsseitigen Würfel und vergleicht die Summe (größer gleich) mit 7.

Mögliche Vergleichsoperatoren sind

  • < kleiner
  • <= kleiner oder gleich
  • == gleich
  • <> oder != ungleich
  • >= größer oder gleich
  • > größer

Funktionen

Mit zahlreichen Funktionen kann die Berechnung und Auswertung komplexer Anweisungen realisiert werden. Eine Funktion besteht immer aus dem Funktionsnamen gefolgt von in runden Klammern eingeschlossenen Parametern.

/r max(d4;d;d8;d10;d12;d20)

ermittelt den höchsten Wert von Würfen mit verschiedenen Würfeln.

Mögliche Funktionen sind

  • above() Differenz zwischen zwei Werten oder 0 (zwei Parameter)
  • abs() Absolutbetrag (ein Parameter)
  • avg() Durchschnitt von Werten (mindestens ein Parameter)
  • below() Differenz zwischen zwei Werten oder 0 (zwei Parameter)
  • bmi() Bodymassindex (mindestens zwei Parameter)
  • ceil() Aufrunden (ein Parameter)
  • char() Rückgriff auf einen Wert aus dem Charakterbogen (mindestens ein Parameter)
  • count() Anzahl der Werte (mindestens ein Parameter)
  • countif() Anzahl der Werte, die x entsprechen (mindestens zwei Parameter)
  • diff() Spanne zwischen kleinstem und größtem Wert (mindestens zwei Parameter)
  • digitsum() Quersumme von Werten (mindestens ein Parameter)
  • div() Division (zwei Parameter)
  • exactcollate() Anzahl an Gruppen die genau x ergeben (mindestens zwei Parameter)
  • exp() Exponentialfunktion (ein Parameter)
  • first() die ersten x Werte (mindestens zwei Parameter)
  • floor() Abrunden (ein Parameter)
  • grade() Erfolgsgrad ermitteln (zwei bis fünf Parameter)
  • hash() Hashfunktion (zwei Parameter)
  • if() Wenn dann Verzweigung (drei Parameter)
  • kill() Unterdrückung der Ausgabe (ein Parameter)
  • last() die letzten x Werte (mindestens zwei Parameter)
  • lookup() Nachschlagefunktion mit exakter Übereinstimmung (mindestens drei Parameter)
  • max() Maximum (mindestens ein Parameter)
  • maxcollate() Anzahl an Gruppen die höchstens x ergeben (mindestens zwei Parameter)
  • maxlookup() Nachschlagefunktion mit höchster Übereinstimmung (mindestens drei Parameter)
  • md5() MD5 Hashfunktion (ein Parameter)
  • med() Median (mindestens ein Parameter)
  • min() Minimum (mindestens ein Parameter)
  • mincollate() Anzahl an Gruppen die mindestens x ergeben (mindestens zwei Parameter)
  • minlookup() Nachschlagefunktion mit kleinster Übereinstimmung (mindestens drei Parameter)
  • mix() Liste durchmischen (mindestens ein Parameter)
  • mod() Modulus, Rest einer ganzzahligen Division (zwei Parameter)
  • or() Zufällige Auswahl aus einer Liste (mindestens zwei Parameter)
  • pow() Potenzfunktion (zwei Parameter)
  • random() Zufallszahl (zwei Parameter)
  • rot13() Zeichenrotation (ein Parameter)
  • round() kaufmännisch runden (ein Parameter)
  • rsort() Liste absteigend sortieren (mindestens ein Parameter)
  • sha1() SHA1 Hashfunktion (ein Parameter)
  • sort() Liste sortieren (mindestens ein Parameter)
  • sqrt() Wurzelfunktion (ein Parameter)
  • sum() Summe von Werten (mindestens zwei Parameter)
  • text() Textfunktion (mindestens ein Parameter)
  • xmax() die x größten Werte (mindestens zwei Parameter)
  • xmin() die x kleinsten Werte (mindestens zwei Parameter)
  • yahtzee() Wertet Parameter nach Kniffel/Yahtzee Regeln aus (fünf Parameter)

Viele der Funktionen haben auch eine deutschsprachige Entsprechung. Hierzu, sowie auch für die genaue Anleitung zu den einzelnen Funktionen, sei auf die vollständige Dokumentation verwiesen. Im folgenden findet sich eine kleine Auswahl an Beispielen der relevantesten Funktionen.

/r above(d12;10)

wenn das Ergebnis des Würfelwurfs (d12) größer ist als 10, wird die Differenz zurückgeliefert, ansonsten 0.

/r countif(2;10xd;2xd8)

zählt die Anzahl der vorkommenden 2 in einem Wurf von 10 sechsseitigen Würfeln und einem Wurf von zwei achtseitigen Würfeln.

/r first(3;sort(12xd))

liefert die ersten drei Werte einer aufsteigend sortierten Liste von 12 sechsseitigen Würfeln.

/r if(3d>10;"large";"small")

wirft drei sechsseitige Würfel (3d) und vergleicht das Ergebnis mit 10. Ist das Ergebnis größer, wird “large” ausgegeben, ansonsten “small”.

/r mincollate(10;12xd)

wirft 12 sechsseitige Würfel (12xd) und versucht die Einzelergebnisse so zu kombinieren, dass möglichst viele Gruppen mit einer Summe von je mindestens 10 entstehen. Liefert dann die Anzahl der Gruppen.

/r maxlookup(d4;2;"small";3;"medium";"else")

wirft einen vierseitigen Würfel (d4) und vergleicht das Ergebnis mit den folgenden Parametern. Ist das Ergebnis höchstens 2 wird “small” zurückgeliefert, ist es höchstens 3 “medium” und andernfalls “else”. Der letzte Parameter ist optional und kommt immer dann zum Tragen, wenn bei den vorherigen Vergleichswerten keine Übereinstimmung gefunden wurde.

/r text("Hello World!")

gibt den Text “Hello World!” aus. Die wirkliche Macht dieser Funktion ergibt sich allerdings über die optionalen Parameter.

/r text("Erfolge: $1 Trigger: $2";s(3ds5t);t($1))

wirft drei sechsseitige Würfel und zählt Erfolge (5 und 6) sowie Trigger (6). Gibt dann den Text “Erfolge: $1 Trigger: $2” aus, wobei $1 und $2 ersetzt werden durch die Parameter 1 (Anzahl der Erfolge: s(3ds5t)) und 2 (Anzahl der Trigger: t($1)).

Die Platzhalter $1, $2 … in der Textvorlage referenzieren die nachfolgenden Parameter der Funktion und sind nicht zu verwechseln mit den Variablen (s. u.), die außerhalb der Textvorlage gelten. Das ist möglicherweise etwas verwirrend, daher hierzu noch einmal eine grafische Aufbereitung …

/r c("STA")

führt die im Charakterbogen (siehe /char) hinterlegte Instruktion für die Fertigkeit, bzw. den Shortcut STA durch.

Würfelfunktionen

Den Würfelinstruktionen konnten verschiedene Parameter mitgegeben werden, um Erfolge, Fehlschläge etc. zu bestimmen. Um auf diese Werte zugreifen zu können, werden Funktionen angewandt, die Würfe als Parameter erfordern. Zudem muss der Würfelinstruktion mindestens der zugehörige Parameter mitgegeben worden sein.

/r s(4ds5)+2

wirft vier sechsseitige Würfel, wertet 5 und 6 als Erfolg, liefert dann nur die Anzahl der Erfolge (successes) und addiert 2 hinzu.

Mögliche Würfelfunktionen sind:

  • s() Erfolge (successes), erfordert Parameter s
  • f() Fehlschläge (failures), erfordert Parameter f
  • t() Trigger (trigger), erfordert Parameter t
  • m() Patzer (misses), erfordert Parameter m
  • p() Anzahl der geraden (pair) Ergebnisse, erfordert Parameter p
  • o() Anzahl der ungeraden (odd) Ergebnisse, erfordert Parameter p
  • effective() Anzahl der Erfolge abzüglich der Anzahl der Fehlschläge, erfordert Parameter s und f
  • sum() Augensumme des Würfelwurfs (standard)
  • null() liefert eine 0, ignoriert die Resultate des Würfelwurfs
  • g() liefert die Anzahl der Vorkommen gleicher Zahlen (group), erfordert den Parameter g in der Würfelinstruktion sowie als ersten Wert in der Klammer den zu zählenden Wert
  • l() wandelt einen Würfelwurf in eine Liste um
/r g(2;10dg)

wirft 10 sechsseitige Würfel (10dg), liefert aber nur die Anzahl der darin vorkommenden 2.

Variablen

Variablen sind Zwischenspeicher, in die Werte abgelegt werden können. Variablenbezeichner beginnen immer mit einem $ gefolgt von einer Bezeichnung.

/r $a=(3d10)

weist der Variablen $a den ausgeführten Würfelwurf 3d10 zu. Zu beachten ist, dass die Zuweisung eine Klammerung erfordert.

Um den Wert der Variablen wieder abzurufen, muss lediglich der Variablenbezeichner angegeben werden. Hiermit kann ein Würfelwurf mehrfach ausgewertet werden.

/r s($a=(3d10s8t))+t($a)

wirft drei zehnseitige Würfel mit 8, 9 und 10 als Erfolg und 10 als Trigger (3d10s8t). Der Wurf wird der Variablen $a zugewiesen. Anschließend wird die Anzahl der Erfolge (s()) und die Anzahl der Trigger (t()) summiert und als Ergebnis zurückgegeben.

Der @RollButler weist automatisch die Würfe den Variablen $1, $2 … in der Reihenfolge des Aufkommens zu, sodass die die vorherige Anweisung auch einfacher genutzt werden kann:

/r s(3d10s8t)+t($1)

Über die Charakterbogenoption (siehe /char) können ebenfalls Variablen vordefiniert werden. Wurde beispielsweise ein Fertigkeitswert STA angelegt, steht dieser in der Variablen $STA bereit.

/r d%<=$STA

führt eine Probe mit einem Prozentwurf (W100) gegen den Wert in $STA aus.

Logische Verknüpfungen

Insbesondere im Zusammenhang mit der Entscheidungsfunktion if() können logische Verknüpfungen relevant sein um mehrere Bedingungen mit einem “und” oder “oder” zu verbinden. Hierzu stehen die Operatoren & (und) und | (oder) zur Verfügung.

/roll (if(3ds>6&s($1);"Erfolg";"kein Erfolg")

In diesem Fall wird die Meldung “Erfolg” nur dann ausgegeben, wenn die Augensumme des Würfelwurf (3ds) größer als 6 ist und mindestens eine sechs dabei war.

Intern werden Wahrheitswerte als 1 (wahr) und 0 (falsch) gespeichert. In der Auswertung wird jeder von 0 abweichende Wert als wahr interpretiert.

Wie nutze ich einen Charakterbogen im @RollButler? (/char Kommando)

Der @RollButler kann persistent Charakterbögen für jeden Nutzer speichern. Dies erfolgt über das Kommando /char.

Der einfachste Weg einen Charakterbogen zu erstellen, ist der Import einer CSV Datei. Die Datei kann z. B. in Tabellenkalkulationsprogrammen oder Texteditoren erstellt und bearbeitet werden und sollte das folgende Format haben:

Shortcut,Name,Value,Formula

Dies kann auch die Kopfzeile der Tabelle darstellen. Die Werte darunter sehen dann wie folgt aus:

ST,Stärke,45,d%<=$$
  • Im ersten Feld (hier: ST) ist eine möglichst kurze Bezeichnung des Wertes vermerkt, die für die späteren Funktions- und Werteaufrufe dient.
  • Im zweiten Feld (hier: Stärke) ist eine textuelle Bezeichnung zur besseren Lesbarkeit enthalten.
  • Die dritte Spalte (hier: 45) beinhaltet den Wert selber.
  • In der vierten Spalte kann eine Würfelinstruktion hinterlegt werden, die für eine Probe auf die Fertigkeit herangezogen wird. Die spezielle Variable $$ wird hierbei automatisch durch eine Referenz auf den Fertigkeitswert dieser Zeile (hier: $ST) ersetzt.

Mit dem Kommando

/char import() <CSV oder JSON Inhalt>

wird der Charakterbogen dann importiert, wobei <CSV oder JSON Inhalt> durch den Inhalt der CSV (oder JSON) Datei ersetzt werden sollte. Dies sieht dann z. B. so aus:

/char import() ST,Stärke,45,d100<=$$
GE,Geschicklichkeit,55,d100<=$$

Alternativ, bzw. bei erforderlichen Anpassungen von Werten des Charakterbogens kann das folgende Kommando genutzt werden.

/char set ST=55

Hierbei wird der Fertigkeitswert ST auf 55 gesetzt.

/char export()

gibt den Charakterbogen im JSON Format aus. In diesem Format kann er mit einem Texteditor bearbeitet werden oder zu einem späteren Zeitpunkt wieder in den @RollButler importiert werden.

/cr ST

führt die im Charakterbogen bei ST angegebene Würfelinstruktion aus (“CharactersheerRoll”).

Alternativ funktioniert der Aufruf auch via

/r c("ST")

Auf den Fertigkeitswert kann man innerhalb eigener Würfelinstruktionen mit der Variable $ST, also $<Shortcut> zugreifen:

/r d%<=$ST