|
-
Gezielt Sounds beenden
Hi! Meine Frage richtet sich eher an diejenigen, die etwas mehr Erfahrung mit den Gothic internen Funktionen haben als ich.
Ich habe gerade an einigen Stellen das Bedürfnis, bestimmte Sounds gezielt zu beenden und abzufragen, wie lang diese sind. Ich habe dazu folgende Zeilen gefunden:
Code:
// Vielleicht zum stoppen?
virtual void __thiscall zCSndSys_MSS::StopSound(int const &) 0x004F2300 0 10 public: virtual void __thiscall zCSndSys_MSS::StopSound(int const &)
// Vielleicht zum abfragen, wie lang eine bestimmte Datei ist?
virtual float __thiscall zCSndSys_MSS::GetPlayingTimeMSEC(zSTRING const &) 0x004F40E0 0 6 public: virtual float __thiscall zCSndSys_MSS::GetPlayingTimeMSEC(zSTRING const &)
Allerdings habe ich jetzt keine Ahnung, welche Parameter diese Funktionen jetzt genau erwarten. Hat da vielleicht schon mal jemand mit herumgespielt oder kann das für mich im Quellcode nachschauen?
Vielleicht gibt es aber auch einfachere Wege, um bestimmte Sounds zu beenden?
-
Vielleicht hilft dir das hier weiter (Abschnitt sound.d) :
https://forum.worldofplayers.de/foru...1#post25717008
Dort wird u.a. Musik gestoppt. Vielleicht kannst du das umwandeln bzw. die Funktionsweise abwandeln...
-
Zitat von Fisk2033
Danke für den Hinweis! Die Datei haben wir tatsächlich schon im Einsatz. Dort gibt es allerdings nur eine Funktion, um alle Sounds zu stoppen. Und die Adresse lässt sich nicht für einzelne Sounds anpassen.
-
Um was für eine Art Sound handelt es sich denn (z.B. Ambientdialoge, Effektsounds, Umgebungsgeräusche)? Vielleicht lässt sich damit die Suche in der Engine etwas eingrenzen.
-
Zitat von mud-freak
Um was für eine Art Sound handelt es sich denn (z.B. Ambientdialoge, Effektsounds, Umgebungsgeräusche)? Vielleicht lässt sich damit die Suche in der Engine etwas eingrenzen.
Effektsounds (Definiert in SfxInst.d), die in diesem Fall eine bestimmte Art von Sprachausgabe für einen Npc darstellt (Zwischenkommentare in einem Bossfight). Ziel wäre, dass sich diese Sounds nicht überlappen, damit der Npc sich nicht selbst ins Wort fällt. Manche Sätze davon sind wichtiger als andere, sodass ich am liebsten alle Sounds von ihm beenden würde, damit er einen neuen Satz beginnen kann. Ich hoffe, das Szenario ist klar. Ansonsten gerne nochmal nachfragen^^
-
Ah ok. Wie startest du die Sounds denn? Mit AI_OutputSVM_Overlay oder AI_Snd_Play?
Bei erstem kannst du versuchen, self und target den gleichen NPC anzugeben. Wenn ich das richtig erkenne, sollte er dann erst zu Ende sprechen, bevor er etwas neues sagt.
Bei letzterem kannst du versuchen, stattdessen AI_Snd_Play3D zu verwenden. Auch hier bin ich mir nicht sicher, aber er sollte seine Aussagen dann nach einander abarbeiten.
Sag mal Bescheid, falls das nicht geklappt. Man könnte unter der Haube an laufende SVM gelangen können, falls nötig.
-
Zitat von mud-freak
Ah ok. Wie startest du die Sounds denn? Mit AI_OutputSVM_Overlay oder AI_Snd_Play?
Bei erstem kannst du versuchen, self und target den gleichen NPC anzugeben. Wenn ich das richtig erkenne, sollte er dann erst zu Ende sprechen, bevor er etwas neues sagt.
Bei letzterem kannst du versuchen, stattdessen AI_Snd_Play3D zu verwenden. Auch hier bin ich mir nicht sicher, aber er sollte seine Aussagen dann nach einander abarbeiten.
Sag mal Bescheid, falls das nicht geklappt. Man könnte unter der Haube an laufende SVM gelangen können, falls nötig.
Bisher verwende ich einfach Snd_Play() statt den 3D-Varianten, damit der Sound direkt gespielt wird und auch zu hören ist, wenn man ein wenig vom NPC entfernt steht (da sonst die anderen Effekte im Kampf meist die Sprachausgabe übertönen). Ich hatte gar nicht auf dem Schirm, dass es AI-Varianten von diesen Funktionen gibt.
Ich werde mal mit AI_Snd_Play3D etwas herumprobieren, ob das potentiell das Problem lösen kann, wenn ich es an den richtigen Stellen verwende. Danke für den Tipp! =)
-
Zitat von Draxes
Bisher verwende ich einfach Snd_Play() statt den 3D-Varianten, damit der Sound direkt gespielt wird und auch zu hören ist, wenn man ein wenig vom NPC entfernt steht (da sonst die anderen Effekte im Kampf meist die Sprachausgabe übertönen). Ich hatte gar nicht auf dem Schirm, dass es AI-Varianten von diesen Funktionen gibt.
Ich werde mal mit AI_Snd_Play3D etwas herumprobieren, ob das potentiell das Problem lösen kann, wenn ich es an den richtigen Stellen verwende. Danke für den Tipp! =)
Du kannst es natürlich auch erst einmal mit AI_Snd_Play ausprobieren. Vielleicht genügt das schon und du umgehst das Problem mit übertönenden Geräuschen.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
|
|