Anleitung zum Online Würfel Tool @RollButler – Würfelvorschrift

Funktionen

Einige mathematische und logische Funktionen erlauben zusätzliche Komplikationen:

  • abs(a) – der Absolutbetrag (vorzeichenlose Wert) von a wird zurückgeliefert
    • Beispiele:
      • abs(-8) => 8
      • abs(4) => 4
  • abrunden(a) – der Wert a wird auf die nächste ganze Zahl abgerundet
    • Beispiele:
      • abrunden(3,2) => 3
      • abrunden(5,7) => 5
  • aufrunden(a) – der Wert a wird auf die nächste ganze Zahl aufgerundet
    • Beispiele:
      • aufrunden(3,2) => 4
      • aufrunden(5,7) => 6
  • grad(a; b; c; d; e) – der Erfolgsgrade des Werts a wird ermittelt. b ist dabei der mindestens zu erreichende Wert, c die Stufenweite, d der additive Modifikator für den Erfolgsgrad und e der maximal mögliche Erfolgsgrad. Die Parameter können von hinten an weggelassen werden.
    • Beispiele:
      • grad(7;10) => 0 (7 ist nicht größer als 10, also keine Erfolgsstufe)
      • grad(7;3) => 1 (7 ist größer als 3, aber keine Stufenweite angegeben, also nur ein Erfolgsstufe)
      • grad(7;3;2) => 2 (Erfolgsstufen unterscheiden sich im Abstand 2, 7 ist 4 Einheiten größer als 3, also 2 Erfolgsstufen erreicht)
      • grad(7;3;2;2) => 4 (wie zuvor, allerdings werden 2 Erfolgsstufen hinzugefügt)
      • grad(7;3;2;-2) => 0 (wie zuvor, allerdings werden 2 Erfolgsstufen abgezogen)
      • grad(9;3;2;0;2) => 2 (3 Erfolgsstufen, allerdings sind maximal 2 möglich)
  • runden(a) – der Wert a wird kaufmännisch gerundet
    • Beispiele:
      • runden(3,2) => 3
      • runden(5,7) => 6
  • max(a; b;…) – der größte Wert aus a, b,… wird zurückgeliefert
    • Beispiele:
      • max(3; 1; 12; 5) => 12
  • xmax(x; a; b;…) – der x-größte Wert aus a, b,… wird ermittelt
    • Beispiele:
      • xmax(2; 3; 1; 12; 5) => 5
  • min(a; b;…) – der kleinste Wert aus a, b,… wird zurückgeliefert
    • Beispiele:
      • min(3; 1; 12; 5) => 1
  • xmin(x; a; b;…) – der x-kleinste Wert aus a, b,… wird ermittelt
    • Beispiele:
      • xmin(2; 3; 1; 12; 5) => 3
  • erste(x; a; b;…) – die ersten x Werte aus a, b,… werden zurückgegeben
    • Beispiele:
      • erste(2; 3; 1; 12; 5) => 3; 1
      • erste(3; sortieren(10xW6)) => … (die kleinsten 3 Werte von 10 Würfelergebnissen)
  • letzte(x; a; b;…) – die letzten x Werte aus a, b,… werden zurückgegeben
    • Beispiele:
      • letzte(2; 3; 1; 12; 5) => 12; 5
      • letzte(3; sortieren(10xW6)) => … (die höchsten 3 Werte von 10 Würfelergebnissen)
  • zufall(min; max) – eine Zufallszahl zwischen min und max wird ermittelt
    • Beispiele:
      • zufall(3; 17) => … (eine zufällig generierte, ganze Zahl zwischen 3 und 17)
  • sortieren(a; b;…) – sortiert eine Liste aufsteigend
    • Beispiele:
      • sortieren(3; 1; 12; 5) => 1; 3; 5; 12
      • sortieren(10xW6) => … (eine aufsteigend sortierte Liste von 10 Würfelergebnissen)
      • sortieren(10xW6; 5) => … (eine aufsteigend sortierte Liste von 10 Würfelergebnissen und 5)
  • absortieren(a; b;…) – sortiert eine Liste absteigend
    • Beispiele:
      • absortieren(3; 1; 12; 5) => 12; 5; 3; 1
      • absortieren(10xW6) => … (eine absteigend sortierte Liste von 10 Würfelergebnissen)
      • absortieren(10xW6; 5) => … (eine absteigend sortierte Liste von 10 Würfelergebnissen und 5)
  • mischen(a; b;…) – durchmischt eine Liste
    • Beispiele:
      • mischen(1; 2; 3; 10) => … (eine zufällig angeordnete Liste mit den Zahlen 1, 2, 3 und 10)
      • mischen(5xW6) => … (geht, ist allerdings sehr unsinnig, da 5xW6 bereits zufällig angeordnete Ergebnisse liefert)
  • ueber(a; b) – liefert die Differenz von a-b, wenn a größer ist als b, sonst 0
    • Beispiele:
      • ueber(10; 6) => 0 (6 ist kleiner als 10)
      • ueber(10; 14) => 4 (14 ist 4 größer als 10)
      • ueber(10; 2d6) => …
  • unter(a; b) – liefert die Differenz von b-a, wenn a gleiner ist als b, sonst 0
    • Beispiele:
      • unter(10; 6) => 4 (6 ist 4 kleiner als 10)
      • unter(10; 14) => 0 (14 ist größer als 10)
      • unter(10; 2d6) => …
  • mod(a; b) – berechnet den Rest bei einer ganzzahligen Divison von a durch b
    • Beispiele:
      • mod(7; 3) => 1 (der Rest von 7 geteilt durch 3)
      • mod(8; 2) => 0 (kein Rest)
  • div(a; b) – ganzzahlige Division von a und b
    • Beispiele:
      • div(7; 3) => 2
      • div(8; 2) => 4
  • diff(a; b; …) – Spanne zwischen dem größten und kleinsten Wert der Liste
    • Beispiele:
      • diff(7; 3) => 4
      • diff(1;2;4;8;16) => 15
  • wenn(a; b; c) – wenn a wahr oder ungleich 0 ist, dann b, ansonsten c
    • Beispiele:
      • wenn(5>3; 1; 0) => 1 (5 ist größer als 3, also wird der erste Wert zurückgegeben)
      • wenn(W6>5; 10; 0) => … (wenn das Würfelergebnis über 5 (also gleich 6) ist, wird eine 10, ansonsten 0 zurückgegeben)
  • wurzel(a) – berechnet die Quadratwurzel von a (sqrt{a})
    • Beispiele:
      • wurzel(9) => 3
      • wurzel(7) => 2.6457513110645907
  • mincollate(x; a; b;…) – ermittelt die maximale Anzahl an Gruppen, die man aus a, b,… bilden kann mit einer Augensumme von mindestens x
    • Beispiele:
      • mincollate(10; 2; 4; 6; 7; 9; 10) => 3 (10=10, 6+4=10, 9+2=11, Rest 7)
      • mincollate(10; 8xW10) => …
  • exactcollate(x; a; b;…) – ermittelt die maximale Anzahl an Gruppen, die man aus a, b,… bilden kann mit einer Augensumme von exakt x
    • Beispiele:
      • exactcollate(10; 2; 4; 6; 7; 9; 10) => 2 (10=10, 6+4=10, Rest 18)
      • exactcollate(10; 8xW10) => …
  • maxcollate(x; a; b;…) – ermittelt die maximale Anzahl an Gruppen, die man aus a, b,… bilden kann mit einer Augensumme von höchstens x
    • Beispiele:
  • oder(a; b;…) – wählt ein zufälliges Element aus a, b,… aus
    • Beispiele:
      • oder(Pest; Cholera) => … (Pest oder Cholera)
      • oder(0; 1) => … (1 oder 0)
  • mittelwert(a; b;…) – ermittelt den Mittelwert von a, b,…
    • Beispiele:
      • mittelwert(3; 4; 5) => 4
  • median(a; b;…) – ermittelt den Median von a, b,…
    • Beispiele:
      • median(2; 5; 4) => 4
  • summe(a; b;…) – berechnet die Summe a + b +…
    • Beispiele:
      • summe(17; 4) => 21
      • summe(5xW6) => … (Summe von 5 Würfelergebnissen; dies kann auch einfacher mit 5W6 erreicht werden)
  • quersumme(a; b;…) – berechnet die Quersumme von a, b,…
    • Beispiele:
      • quersumme(5; 6; 7) => 8
      • quersumme(5xW10) => … (Quersumme von 5 Würfelergebnissen)
  • liste(a; b;…) – erzeugt eine Liste aus den Werten a, b,…, die dann z. B. für Listenfunktionen wie sortieren() verwendet werden kann.
    • Beispiele:
      • liste(5; 6; 7) => 5, 6, 7
      • liste(5; 6; 7; 2xW12) => … (erzeugt eine Liste aus den Zahlen 5, 6, 7 und zwei Würfelergebnissen)
  • zaehlen(a;…) – zählt die Zahl der Elemente in der Liste
    • Beispiel:
      • zaehlen(1; 2; 3; 3) => 1: 1; 2: 1; 3: 2 (die Zahlen 1 und 2 sind jeweils einmal in der Liste enthalten, die 3 zweifach)
      • zaehlen(10xW6) => … (liefert die Anzahl der Vorkommen aller Zahlen in 10 Würfelergebnissen)
  • zaehlenwenn(a; b;…) – zählt die Anzahl der Werte von b,…, die gleich a sind
    • Beispiele:
      • zaehlenwenn(2; 1; 2; 3) => 1 (die Zahl 2 ist in der Liste einmal enthalten)
      • zaehlenwenn(2; 10xW6) => … (liefert die Anzahl der Vorkommen von 2 in 10 Würfelergebnissen)
  • kniffel(a; b; c; d; e) – wertet 5 Zahlen (a bis e) im Sinne von Kniffel aus und liefert die möglichen Ergebnisse
    • Beispiele:
      • kniffel(5xd6) => z. B.: Einsen: 2 Zweier: 2 Dreier: 0 Vierer: 0 Fünfer: 10 Sechsen: 0 Dreierpasch: 0 Viererpasch: 0 Full House: 0 Kleine Straße: 0 Große Straße: 0 Kniffel/Yahtzee: 0 Chance: 14
  • zehntausend(a; b; c; d; e) – wertet 5 Zahlen (a bis e) gemäß der Regeln des Würfelspiels 1000 aus.
    • Beispiele:
      • zehntausend(5xd6) => 450. Details: Einsen: 100 Dreierpasch aus Dreien: 300 Fünfen: 50
  • exp(a) – berechnet ea
    • Beispiele:
      • exp(7) => 1096.633158428458
  • hoch(a; b) – berechnet ab
    • Beispiele:
      • hoch(2; 3) => 8
  • lookup(a; b; c…) – Nachschlagefunktion, bei der der Wert a im nachfolgenden Array gesucht wird und dann der passende Wert ausgegeben wird. Falls keiner der Schlüsselwerte im Array exakt übereinstimmt, wird der optional angegebene letzte Wert oder false ausgegeben.
    • Beispiele:
      • lookup(3; 1; „a“; 2; „b“; 3; „c“; „d“) => „c“
      • lookup(3; 1; „a“; 2; „b“; „d“) => „d“
      • lookup(3; 1; „a“; 2; „b“) => false
  • minlookup(a; b; c…) – Nachschlagefunktion, bei der der Wert a im nachfolgenden Array gesucht wird und dann der passende Wert ausgegeben wird. Es gilt der größte Schlüsselwert, der kleiner als a ist, ansonsten wird der optional angegebene letzte Wert oder false ausgegeben.
    • Beispiele:
      • minlookup(3; 2; „a“; 4; „b“; 6; „c“; „d“) => „a“
      • minlookup(1; 2; „a“; 4; „b“; „d“) => „d“
      • minlookup(1; 2; „a“; 4; „b“) => false
  • maxlookup(a; b; c…) – Nachschlagefunktion, bei der der Wert a im nachfolgenden Array gesucht wird und dann der passende Wert ausgegeben wird. Es gilt der kleinste Schlüsselwert, der größer als a ist, ansonsten wird der optional angegebene letzte Wert oder false ausgegeben.
    • Beispiele:
      • maxlookup(3; 2; „a“; 4; „b“; 6; „c“; „d“) => „b“
      • maxlookup(7; 2; „a“; 4; „b“; „d“) => „d“
      • maxlookup(7; 2; „a“; 4; „b“) => false

Daneben kann der @RollButler auch noch einige Berechnungen durchführen, die weniger Zusammenhang mit Würfeln haben:

  • bmi(a; b) – berechnet den Body-Mass-Index bei angegebenen Gewicht in kg und Körpergröße in cm
  • md5(a) – berechnet die MD5-Prüfsumme von a
  • sha1(a) – berechnet die SHA1-Prüfsumme von a
  • hash(a; b) – berechnet die Prüfsumme von b basierend auf dem Algorithmus a (md2, md4, md5, aha1, sha256, sha384, sha512, ripemd128, ripemd160, ripemd256, ripemd320, whirlpool, tiger128,3, tiger160,3, tiger192,3, tiger128,4, tiger160,4, tiger192,4, snefru, gost, adler32, crc32, crc32b, haval128,3, haval160,3, haval192,3, haval224,3, haval256,3, haval128,4, haval160,4, haval192,4, haval224,4, haval256,4, haval128,5, haval160,5, haval192,5, haval224,5, haval256,5)
  • rot13(a) – codiert den Text a im ROT 13 Verfahren
  • adfgx(a; b; c; d …) – codiert einen Text (letzter Parameter) mit den Kennworten a, b, c … im ADFGX Verfahren (nur Buchstaben)
  • adfgvx(a; b; c; d …) – codiert einen Text (letzter Parameter) mit den Kennworten a, b, c … im ADFGVX Verfahren (nur Buchstaben und Ziffern)
  • tapcode(a; b …) – erzeugt den Klopfzeichencode für die Texte a, b …
  • morse(a; b …) – erzeugt den Morsecode für die Texte a, b …
  • caesar(a; b …) – erzeugt eine einfache Cäsar-Verschlüsselung (A = 1, B = 2 …) der Texte a, b …
  • kill(a) – unterdrück die Ausgabe von a. Diese Funktion kann hilfreich sein, wenn in Zusammenhang mit der text() Funktion Ergebnisse präsentiert werden sollen.
    • Beispiele:
      • kill(3W6+20) => 0
  • string(a; b; c …) – wandelt die Parameter a, b, c … ohne Trennzeichen in einen Text um
    • Beispiele:
      • string(3xW12) => „7103“
  • glue(a; b; c …) – wandelt die Parameter b, c … in einen Text um und verkettet diese mit a
    • Beispiele:
      • glue(„,“;3xW12) => „7,10,3“
  • split(a; b; c …) – teilt die Texte b, c … in eine Liste von Strings der maximalen Länge a
    • Beispiele:
      • split(5;“Dies ist ein Beispiel“) => „Dies „, „ist e“, „in Be“, „ispie“, „l“
  • text(a; b; c …) – Textausgabe von a. Wenn weitere Parameter b, c… angegeben wurden, können diese mit den Platzhaltern $1, $2… im Text a ausgegeben werden.
    • Beispiele:
      • text(„Das Ergebnis ist $1“;3W6+20) => „Das Ergebnis ist 34“
      • text(„Wurf 2 ist $2, Wurf 1 war $1“;W10;W20) => „Wurf 2ist 18, Wurf 1 war 2“

9 Kommentare

  1. Gibt es eine Möglichkeit die höchsten/niedrigsten Werte aus einem Wurf mit mehreren Würfeln auszugeben?
    Ich kenne es aus anderen Programmen, wo man z.B. 4W6H3 verwenden kann um 4 W6 zu werfen und die höchsten 3 zusammen zu zählen.

    1. Hi,
      in der Tat ist dies möglich, aber leider nicht ganz so trivial.

      /roll last(3;sort(4xW6))

      um sich nur die höchsten drei Werte anzeigen zu lassen oder

      /roll sum(last(3;sort(4xW6)))

      um deren Augensumme zu ermitteln.

      Zugegeben, das ist etwas sperrig, aber ich schau mal, ob ich in einem der kommenden Updates diese ‚H‘ Option mit einbaue.

      1. So, jetzt ist die Option ‚H‘ auch implementiert:

        /roll 4W6H3

        liefert nur die Augensumme der drei höchsten Werte bei vier Sechsseitern.

        Und

        /roll 4W6B3

        macht das gleiche, nur mit den drei kleinsten Werten.

  2. Hi,
    gibt es die Möglichkeit eine Zahl mit zwei Erfolgen/ Fehlschlägen zu belegen, und dann die Zahl der Erfolge/ Fehlschläge anzeigen zu lassen?

    1. Hi,

      das ist bedingt möglich über den Trigger. Beispiel 10D6F1E4T6 (oder kürzer: 10DFE4T), dabei werden Einsen als Fehlschlag, Werte ab 4 als Erfolg und Sechsen (zusätzlich) als Trigger gewertet. In der Ausgabe steht dann beispielsweise

      Erfolge 6,
      Fehlschläge 2,
      effektive Erfolge +4,
      Trigger 1

      Für den gewünschten Effekt müssten nun (noch im Kopf) die Trigger noch zu den Erfolgen (und dem effektiven Erfolg) hinzugerechnet werden, also in diesem Beispiel: 7 Erfolge, effektive Erfolge +5.

      Automatisch geht dies mit folgender Formel: e(10dfe4t6)+t($1)

      e() liefert die Anzahl der Erfolge (und nicht die Augensumme) der in der Klammer angegebenen Würfelinstruktion.
      t() liefert analog die Anzahl der Trigger.
      $1 referenziert auf die erste ausgeführte Würfelinstruktion, t($1) liefert damit in diesem Beispiel die Zahl der Trigger der vorangegangenen Würfelei.

      Ich nehme die Idee allerdings einmal auf und überlege, ob dafür auch eine geeignete Option sinnvoll wäre, aber kürzer wird es dadurch nicht …

      Ich hoffe, das hilft.

  3. Hej, ich sehe gerade, das es für Alien bereits eine Mechanik/ein Makro ähnlich der gibt, die ich derzeit für V5 suche – Vampire, 5. Edition. Hier werden W10 gegen 6 gewürfelt, und in den meisten Lagen werden sog. Hungerwürfel in den Pool eingestreut. Zwei Zehner sind besondere Erfolge und werden als 4 Erfolge gezählt, besondere Ergebnisse aus den Hungerwürfeln haben noch andere Effekte.
    Klingt in der Grundlage sehr ähnlich wie die Sache mit den Stresswürfeln. Lässt sich das auch als Makro (zB _v5?) einrichten? Würde ungern einen zweiten Bot zum würfeln installieren müssen.

      1. Hallo Michael,
        ich habe mich auch gerade an einer Umsetzung für Vampire versucht und habe aktuell diese Lösung für mich herausgeknobelt:
        /r 5xd(4xErfolg;1xKritisch;5x.)+8xd(4xErfolg;1xBiestKritisch;3x.;1xBeastFailure)

        5xd(4xErfolg;1xKritisch;5x.) stellt die schwarzen Würfel dar und der zweite Teil den roten. Das ist noch nicht so optimal, aber hilft mir erstmal.

        Viele Grüße
        Selina

        1. Hallo Selina,

          danke, dass Du die die Mühe gemacht hast.

          Für V5 hatte ich zwei Makros realisiert _v5() mit einem, bzw. zwei Parametern. Dahinter stecken die folgenden Formeln:

          S(aD10S6T)+if(T($1)>1;2;0)

          bzw.

          S(aD10S6T)+S(bD10S6T)+if(T($1)+T($2)>1;2;0)

          mit a als erstem, b als zweitem Parameter.

          Deine Formel /r 5xd(4xErfolg;1xKritisch;5x.)+8xd(4xErfolg;1xBiestKritisch;3x.;1xBeastFailure) hat den Haken, dass mathematisch mit „Erfolg“ keine Rechenoperation („+“) durchgeführt werden kann – das ist halt keine Zahl.

          Der zweite Würfel bei Dir hat darüber hinaus nur 9 Werte, also ein W9 – ist das so beabsichtigt?

          Meine zweite Formel löst das Problem, indem Erfolge und Trigger genutzt werden.

          a 10-Seiter, Werte 6 und größer sind Erfolge, die 10 sogar ein Trigger
          b ebensolche 10-Seiter

          Von beiden werden die Erfolge gezählt und addiert. Danach noch einmal die Trigger der beiden Würfe, damit die kritischen Erfolge halt doppelt zählen.

          Den BeastFailure kann man mit einem Fehlschlag realisieren, dann wäre das

          S(aD10S6T)+S(bD10S6TF)+if(T($1)+T($2)>1;2;0)

          In dem Fall müssten dann aber a die regulären und b die Hunger-Würfel sein.

          Im Endeffekt müsste das noch etwas komplexer werden um Messy critical und Bestial failure mit abbilden zu können.

          Schönen Gruß,
          Michael

Kommentar hinterlassen

Nutze dieses Kommentarfeld um deine Meinung oder Ergänzung zu diesem Beitrag kundzutun. Verhalte dich bitte respektvoll und höflich! Kommentare werden vor der Veröffentlichung in der Regel moderiert und bei Verstößen gegen geltendes Recht, die guten Sitten, fehlendem Bezug oder missbräuchlicher Verwendung nicht freigegeben oder gelöscht.
Über die Angabe deines Namens, deiner E-Mail Adresse und deiner Webseite freuen wir uns, doch diese Felder sind optional. Deine E-Mail Adresse wird dabei zu keinem Zeitpunkt veröffentlicht.

Um mit dem Betreiber dieser Seite nicht-öffentlich in Kontakt zu treten, nutze die Möglichkeiten im Impressum.