Der „Pool-Pattern“-Klassiker: perfekt um Repetitivität bei häufig genutzten Commands zu vermeiden. Bei 8 Expressions und Anti-Repeat-Guard sieht der Stream bei jedem Aufruf frisch aus. Pattern setzt Globale Variable%lastExpression%Persisted Global mit dem Namen der zuletzt aktivierten Expression: sorgt für das Anti-Repeat.
Variablen-Doku .
Liest die zuletzt aktivierte Expression um sie aus dem Random-Pool auszuschließen.
Global Name
lastExpression
Persisted
aktiv
Variable Name
lastExpr
Default Value
none
2
Group [Random] · VTS Expression Pool
8 Sub-Actions in einer Group, Group ist auf Random gesetzt (Rechtsklick auf Group → Random). Streamer.bot wählt zufällig genau eine aus. Anti-Repeat per If/Else direkt in jeder Sub-Action. Siehe Pattern-Doku.
Group-Name
VTS Expression Pool
Group-Modus
Random (Checkmark gesetzt)
Sub-Actions in Group
8 × Integrations > VTube Studio > Set Expression State
Innerhalb von Group: VTS Expression Pool liegen 8 sub-Actions: pro Expression eine, jede mit gleichem 3-Schritt-Pattern:
Sub-Action in Group
Schritte
[Mood] Happy
1. If/Else %lastExpr% == "happy" → Re-Roll (siehe unten) · 2. Set Expression happy.exp3.json = Enabled (Fade 400 ms) · 3. Global Set lastExpression = "happy"
[Mood] Sad
analog mit sad.exp3.json
[Mood] Angry
analog mit angry.exp3.json
[Mood] Surprised
analog mit surprised.exp3.json
[Mood] Confused
analog mit confused.exp3.json
[Mood] Wink
analog mit wink.exp3.json
[Mood] Love
analog mit love.exp3.json
[Mood] Sleepy
analog mit sleepy.exp3.json
3
Delay. Anzeigedauer
Core›Delay›Delay
Duration
8000 ms
4
Set Expression State. Reset
Integrations›VTube Studio›Set Expression State
Disabled die zuletzt gesetzte Expression nach Anzeigedauer. lastExpression hält den Namen aus Sub-Action 2 fest.
Channel-Point-Reward Random Mood mit gleichem Group-Random-Pattern. Höherer Cooldown (300 s) + längere Anzeigedauer (15 s). User reagieren mehr drauf wenn’s was kostet.
Group-Sub-Action fehlt: wenn du eine der 8 in der Group vergisst, runt Random gelegentlich „nichts“. Group-Inhalt regelmäßig prüfen
Filename-Tippfehler: Set Expression State gibt %success% = false, keine Wirkung. Im Group-Action-Set durchgehen
lastExpression wird in der Group gesetzt, aber außerhalb gelesen: Persisted-Globals sind action-übergreifend, das funktioniert. ABER: zwischen Group-Sub-Action und Sub-Action 4 (Reset) liegt ein Delay: wenn ein zweiter !mood während des Delays kommt, überschreibt er lastExpression. Sub-Action 4 disabled dann die falsche Expression. Workaround: in der Group-Sub-Action lokales Argument setzen, in Sub-Action 4 das Argument nutzen statt Global lesen
Sub-Action 4 nutzt %lastExpression% statt local: bewusst gewählt damit der Re-Roll-Fall (gleiche Expression noch aktiv) sauber funktioniert. Akzeptiertes Risiko bei Cooldown ≥ Anzeigedauer (60 s > 8 s)
Pool zu klein: bei 3 Expressions wirkt Anti-Repeat zu deterministisch (immer abwechselnd). Mindestens 5+ Pool-Optionen empfehlenswert