if sound_isplaying (alle oder keiner)

  • GM 8

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • if sound_isplaying (alle oder keiner)

    Hallo, Erst Ewigkeiten nicht mehr hier sein und dann noch blöde Fragen stellen... sorry ;)

    Also ich hab mir jetzt einen Wolf mit der Hilfe gesucht und auch in der Einsteigerreferenz nichts passendes gefunden. Dabei ist die Lösung bestimmt ganz einfach. Wie lasse ich mir vom GameMaker zurückgeben, bzw. wie checke ich, ob aktuell KEIN Sound oder IRGENDEIN Sound abgespielt wird?

    if sound_isplaying() oder if sound_isplaying(all) nimmt er natürlich nicht, aber es muss doch eine Alternative dazu geben alle Sounds einzeln aufzählen zu müssen.
  • Leider gibt es soetwas nicht :/ Oft wird empfohlen nicht das sound system des GM's zu verwenden sonder auf eine Dll zuzugreifen. Kenne allerdings auch keine die dies was du brauchst unterstützen würde.
    Von daher bleibt dir nichts anderes Übrig als jeden sound einzeln abzufragen...
    Weshalb brauchst du diese Funktion denn überhaupt. Es müste eigentlich andere Wege geben dies zu vermeiden.

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • Oh nein, das hatte ich befürchtet. Ähm, nun das Spiel läuft hauptsächlich über Sprache und Sounds, deshalb gibt es auch keine Hintergrundmusik oder sowas. Und ich möchte halt verhindern, dass mehrere Soundfiles gleichzeitig abgespielt werden. Da das ganze Spiel darauf basiert, gibt es eben seeeeehr viel Sounds und die müsste ich in dem Fall dann ja alle abfragen lassen um zu verhindern, dass zwei Sounds zur gleichen Zeit abgespielt werden (natürlich könnte ich den / alle vorher stoppen) aber das ist nicht Sinn der Sache.
  • So ganz verstehe ich das nicht. Was für eine art Spiel ist das?
    Wenn du aber einfach nur einen sound abspielen lassen willst und danach den nächsten, speichere doch einfach in einer variablen ab welcher sound grad gestartet wurde und frag dann anhand dieser Variable ob der sound noch spielt...
    also mit:

    [code]
    sound = sn_meine_sound:
    sound_play(sound);

    if sound_isplaying(sound)...
    [\code]

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von DragonGamer () aus folgendem Grund: Meine Rechtschreibung ist kacke ^_^

  • Du müsstest durch alle Sounds durchloopen, wenn du wirklich überprüfen willst, ob irgendeiner gespielt wird. Also am besten alle Sounds, die du überprüfen willst in ein Array, oder in eine Liste speichern.

    © 2008 by Teamgrill Productions
  • Aaah dankeschön @ DragonGamer.
    Ja an die Idee Arrays zu verwenden denke ich meistens nicht (weil ich zu doof bin sie zu kapieren, auch wenn ich weiß, dass ich sie für alles möglich brauch). Kann ich (mit arrays oder irgendwie anders) denn alle Sounds in einen Topf schmeißen und ihm sagen wenn einer von den Sounds läuft spiele keinen neuen ab?
  • Das könnte zum Beispiel so aussehen:

    GML-Quellcode

    1. sndarray[0] = sound1;
    2. sndarray[1] = sound2;
    3. ...
    4. sndarray[9] = sound10;


    Dann schreibst du dir ein Script, welches prüft, ob einer der Sounds gespielt wird:

    GML-Quellcode

    1. for (i = 0; i < 10; i += 1)
    2. {
    3. if (sound_isplaying(sndarray[i]))
    4. return 1;
    5. }
    6. return 0;

    © 2008 by Teamgrill Productions
  • Sagtest du nicht das NIE mehr als ein sound gleichzeitig abgespielt werden soll?
    Dann macht es doch keinen Sinn bei allen sounds abzufragen ob sie grad nicht spielen. Es würde doch reichen immer den letzten sound abzufragen, also der der zuletzt gestartet wurde... Oder nicht?

    Willst du auf diese Drachen und -eier klicken?
    Sie werden sich freuen ;)
  • wie checke ich, ob aktuell KEIN Sound oder IRGENDEIN Sound abgespielt wird?
    Kommt drauf an, wie mans auslegt. Wenns aber wirklich nur darum geht, zu prüfen, ob was abgespielt wird, ist die Variante von DragonGamer natürlich besser.

    © 2008 by Teamgrill Productions
  • Hi, danke nochmal für die Antworten. Meine Frage hörte sich nur so kompliziert an, weil mir yoyogames zu dem Zeitpunkt die Registrierung meiner GM Version unmöglich machte. Mit der registrierten Version und dem externen laden von sounds löst sich dieses Problem quasie von allein.
    Ich habe eine Variable erschaffen global.speak die abfragt ob gerade einer von 7 Sounds abgespielt wird oder nicht (else = global.speak=0). Mit der unregistrierten Version hätte ich jetzt für jeden kommenden Sound noch zusätzlich in diese Funktion setzen müssen. Mit der registrierten Version erledigt sich das Problem aber von selbst, weil ich einfach ins jeweilige room_script einmal alle Sounds ersetze replace_sound.
    Natürlich hätte das auch mit arrays oder weniger (bzw. einem einzigen) Sound(s) funktioniert, aber so erschien es mir am einfachsten und am übersichtlichsten.
    Ich lass die Frage noch ein bisschen auf, falls noch jemand etwas zu sagen hat und schließe sie dann im Laufe des Tages.