Makro / script zu viel elseif

Hallo ^^
ich hab nen kleines Problem, ich wollte mit meinem Stream Deck Plus Musik, Efekte, Dialog und Umgebungs Lautstärke regeln. Leiner bin ich schlecht mit Skripte und Lua.

/run if GetCVar(„Sound_MasterVolume“) == „0“ then SetCVar(„Sound_MasterVolume“, .05) elseif GetCVar(„Sound_MasterVolume“) == „0.05“ then SetCVar(„Sound_MasterVolume“, .1) elseif GetCVar(„Sound_MasterVolume“) == „0.1“ then SetCVar(„Sound_MasterVolume“, .15) elseif GetCVar(„Sound_MasterVolume“) == „0.15“ then SetCVar(„Sound_MasterVolume“, .2) elseif GetCVar(„Sound_MasterVolume“) == „0.2“ then SetCVar(„Sound_MasterVolume“, .25) elseif GetCVar(„Sound_MasterVolume“) == „0.25“ then SetCVar(„Sound_MasterVolume“, .3) elseif GetCVar(„Sound_MasterVolume“) == „0.3“ then SetCVar(„Sound_MasterVolume“, .35) elseif GetCVar(„Sound_MasterVolume“) == „0.35“ then SetCVar(„Sound_MasterVolume“, .4) elseif GetCVar(„Sound_MasterVolume“) == „0.4“ then SetCVar(„Sound_MasterVolume“, .45) elseif GetCVar(„Sound_MasterVolume“) == „0.45“ then SetCVar(„Sound_MasterVolume“, .5) elseif GetCVar(„Sound_MasterVolume“) == „0.5“ then SetCVar(„Sound_MasterVolume“, .55) end

also:

/run if GetCVar(„Sound_MasterVolume“) == „0“ then SetCVar(„Sound_MasterVolume“, .05)

mit wiederholtem elseif.

aber wen ich mehr elseif als 10 benutze, kommt dann ein Lua Fehler.

/run if GetCVar(„Sound_MasterVolume“) == „0“ then SetCVar(„Sound_MasterVolume“, .05) elseif GetCVar(„Sound_MasterVolume“) == „0.05“ then SetCVar(„Sound_MasterVolume“, .1) elseif GetCVar(„Sound_MasterVolume“) == „0.1“ then SetCVar(„Sound_MasterVolume“, .15) elseif GetCVar(„Sound_MasterVolume“) == „0.15“ then SetCVar(„Sound_MasterVolume“, .2) elseif GetCVar(„Sound_MasterVolume“) == „0.2“ then SetCVar(„Sound_MasterVolume“, .25) elseif GetCVar(„Sound_MasterVolume“) == „0.25“ then SetCVar(„Sound_MasterVolume“, .3) elseif GetCVar(„Sound_MasterVolume“) == „0.3“ then SetCVar(„Sound_MasterVolume“, .35) elseif GetCVar(„Sound_MasterVolume“) == „0.35“ then SetCVar(„Sound_MasterVolume“, .4) elseif GetCVar(„Sound_MasterVolume“) == „0.4“ then SetCVar(„Sound_MasterVolume“, .45) elseif GetCVar(„Sound_MasterVolume“) == „0.45“ then SetCVar(„Sound_MasterVolume“, .5) elseif GetCVar(„Sound_MasterVolume“) == „0.5“ then SetCVar(„Sound_MasterVolume“, .55) elseif GetCVar(„Sound_MasterVolume“) == „0.55“ then SetCVar(„Sound_MasterVolume“, .6) elseif GetCVar(„Sound_MasterVolume“) == „0.6“ then SetCVar(„Sound_MasterVolume“, .65) elseif GetCVar(„Sound_MasterVolume“) == „0.65“ then SetCVar(„Sound_MasterVolume“, .7) elseif GetCVar(„Sound_MasterVolume“) == „0.7“ then SetCVar(„Sound_MasterVolume“, .75) elseif GetCVar(„Sound_MasterVolume“) == „0.75“ then SetCVar(„Sound_MasterVolume“, .8) elseif GetCVar(„Sound_MasterVolume“) == „0.8“ then SetCVar(„Sound_MasterVolume“, .85) elseif GetCVar(„Sound_MasterVolume“) == „0.85“ then SetCVar(„Sound_MasterVolume“, .9) elseif GetCVar(„Sound_MasterVolume“) == „0.9“ then SetCVar(„Sound_MasterVolume“, .95) elseif GetCVar(„Sound_MasterVolume“) == „0.95“ then SetCVar(„Sound_MasterVolume“, 1) end

Weis jemand wie ich das beheben kann oder hat ne andere Idee wie ich zum zieht komme? ^^

willst du das mit einem makro oder addon machen?

an sich ist es ja eigentlich egal denke ich ^^

Wie wäre es mit einer Schleife. Kann es aber gerade nicht testen. :slight_smile:

/run local current = GetCVar("Sound_MasterVolume") for i=0, 0.95, 0.05 do if current[tostring(i)] then SetCVar("Sound_MasterVolume", i+0.05); break; end end

Edit: Kleinen Fehler korrigiert… :see_no_evil:

Edit2: Was schrieb ich da für einen Unsinn?

/run local current=tonumber(GetCVar("Sound_MasterVolume")) if current<1 then SetCVar("Sound_MasterVolume",current + 0.05) end

So blind die elseif Reihe mit einer Schleife abdecken. Dabei ist es leichter, die Zeichenkette in einen Zahlenwert umzuwandeln und dann nur 0.05 drauf zu rechnen. Das if ist nicht zwingend nötig, da der Sound nicht über 100% hinaus eingstellt werden kann. Sieht aber ordentlicher aus. :slight_smile:

Gruß Hizuro

Vielen dank das klappt perfekt :slight_smile: