Ergänzt !rang um den heutigen Session-Score. Du und deine Mods tracken Sieg und Niederlage live mit !w und !l, der Bot zählt die Win-Streak mit und !kd postet Bilanz plus Win-Rate in den Chat. Drei Persisted Globals halten die Werte: sessionWins, sessionLosses und winStreak. Persisted bedeutet, sie überleben einen Streamer.bot-Neustart oder PC-Crash mitten in der Ranked-Session.
Die Hauptaction. Liest alle drei Globals, fängt Divide-by-Zero ab und postet Bilanz plus Win-Rate plus Streak. Das ist der Command, den Viewer tippen, deshalb permissionLevel: everyone.
1
Global (Get): sessionWins nach %wins%
Core›Globals›Global (Get)
Default 0, falls die Session noch leer ist.
Variable Name
sessionWins
Default Value
0
Variable Name (Destination)
wins
2
Global (Get): sessionLosses nach %losses%
Core›Globals›Global (Get)
Variable Name
sessionLosses
Default Value
0
Variable Name (Destination)
losses
3
Global (Get): winStreak nach %streak%
Core›Globals›Global (Get)
Variable Name
winStreak
Default Value
0
Variable Name (Destination)
streak
4
If/Else: noch keine Spiele?
Core›Logic›If/Else
Prüft ob Wins plus Losses gleich 0 ist. Genau dann würde die Win-Rate durch 0 teilen. Then-Branch postet eine Sonderausgabe, Else-Branch rechnet.
Input
$math(%wins% + %losses%)$
Operation
Equals
Value
0
5a
Then
Send Message: noch kein Spiel
Twitch›Chat›Send Message to Channel
Then-Branch. Keine Win-Rate möglich, deshalb eigener Text.
Message
📊 Noch kein Spiel in dieser Session. Los geht's!
5b
Then
Break
Core›Logic›Break
Beendet die Action im Then-Branch. So läuft die Berechnung im Else-Branch nicht doch noch.
6a
Else
Set Argument: winrate (Else-Branch)
Core›Arguments›Set Argument
Else-Branch. Wins durch Gesamtspiele mal 100, auf ganze Prozent gerundet. Alles in einem $math()$, weil Streamer.bot Arithmetik und round() innerhalb dieser einen Inline-Funktion auswertet. So steht im Chat 67 statt 66.6666.
Statt jede Session manuell mit !resetkd zu leeren, kannst du die drei Globals automatisch beim Stream-Online-Event auf 0 setzen. Eine Action mit den drei Global (Set) Value-0-Steps aus !resetkd, getriggert vom Event. So startest du jeden Stream mit sauberem 0-0. Siehe Stream Online Event.
Divide-by-Zero: Ganz am Anfang der Session ist %wins% + %losses% gleich 0. Ohne den If/Else-Check teilt die Win-Rate durch 0 und der Step liefert Müll oder ein leeres Argument. Immer erst die Gesamtspiele gegen 0 prüfen, dann erst rechnen.
Increment ohne Get: Global (Set) mit Mode Increment schreibt nur, gibt aber den neuen Wert nicht automatisch als Argument zurück. Für die Bestätigungs-Message in !w und !l brauchst du danach ein Global (Get), sonst ist %wins% leer.
$math()$-Syntax: Streamer.bot wertet Arithmetik und Rundung innerhalb einer einzigen $math(...)$-Inline-Funktion aus (mXparser). Division ist /, Multiplikation *, Rundung round(...). Also $math(round(%wins% / (%wins% + %losses%) * 100))$ in einem Stück. Es gibt kein eigenes $divide()$ oder $round()$. Mische die Klammern nicht, sonst rendert Streamer.bot den rohen String in den Chat. Für komplexere Formeln ist eine C# Execute Code Sub-Action der saubere Weg, weil du dort echtes Math.Round nutzt.
Persisted vergessen: Ohne Haken bei Persisted gehen alle Counter bei jedem Streamer.bot-Neustart verloren. Mitten in einer langen Ranked-Session nach einem Crash ist das ärgerlich. Alle drei Globals auf Persisted setzen.
Streak-Reset bei Loss vergessen: Der zweite Step in !l setzt winStreak per Mode Value hart auf 0. Lässt du ihn weg, läuft die Streak trotz Niederlage weiter und zeigt eine Lüge an.
Reset-Strategie: !resetkd leert manuell. Wer es automatisch will, hängt die Reset-Steps ans Stream-Online-Event. Nicht beides gleichzeitig erwarten, sonst überschreibt das Event einen laufenden Score, falls der Stream neu verbindet.