Einzelnen Beitrag anzeigen
Alt 07.08.2017, 11:02   #5 (permalink)
JSR
500 Beiträge1000 Beiträge
 
Registriert seit: 29.10.2008
Beiträge: 1.192
Standard

Also erst einmal kann man in Arma nicht wirklich einen Sound, der bereits angefangen hat, beenden. Quelle: BI Forums.
https://forums.bistudio.com/forums/t...omment=1808120


Ähnlicher Workaround:
Erstelle ein invisible H, attachTo Player. Lass das H den Sound ausgeben und wenn du willst, dass er beendet wird, lösch das invisible H. Ist der Spieler wieder unter Wasser mit createVehicle ein neues H und so weiter...

Und den While true loop würde ich eher mit einem EventHandler lösen, wenn das möglich ist.
Vllt. mit AnimChanged. Ist auch gleich der Erste in der Liste:
https://community.bistudio.com/wiki/...rs#AnimChanged

Dann finde heraus, wie die Animation unter Wasser heißt und gleiche diese dann mit If Else Condition ab.

Das Problem mit While {true} ist, dass dieser niemals endet. Endlosschleife. Irgendwie nicht gut.

Zu der Möglichkeit, ob der Sound fertig ist. Meines Wissens nicht. Jedoch kannst du einfach die genaue Zeit der Sound File herausfinden (z.B. 5 Sekunden) und mit sleep 5 halt dein Script schreiben.
Würde eine .sqf verwenden.

Code:
_unit addeventHandler {"AnimChanged", {if ((animationState player) == "deine_animation") then {"deineSqf.sqf"};}};
deineSqf.sqf

Code:
_h = "Land_HelipadEmpty_F" createvehicle (position player);
player attachTo [_h, [0, 0, 0] ]; // zweiter Array ist bezogen auf offset
_soundLength = 3; // oder '_this select 0' für Parameter beim Aufruf der Funktion /SQF

while {(animationState player) == "deine_animation"} do {
    _h playSound3D _soundfile;
    sleep _soundLength;

};

Geändert von JSR (07.08.2017 um 11:20 Uhr).
JSR ist offline