Say3D ohne Loop
Verweist auf description.ext! Exakte Schreibweise und Pfad beachten! Die Datei wird nur einmal abgespielt.
1. Ohne remoteExec (funktioniert, wenn alle beim Serverstart dabei sind):
a) Als einfache Objekt-Init:
this say3D ["Sounddatei", Reichweite, 1];
b) mit addAction:
Objektname addAction [ "MUSIC ON", {Objektname this say3D ["Sounddatei", Reichweite, Pitch];}];
2. Mit remoteExec:
[smartphone, ["song", 15, 1, false]] remoteExec ["say3D", 0, true];
Die Syntax ist:
[Objekt, ["Datei", Reichweite, Pitch, Radioeffekt]] remoteExec ["say3D", targets, JIP];
Erläuterung zu targets:targets: (0=global, -2=alle außer Server), JIP (true/false)
ACHTUNG: Ein Sound kann in Arma 3 nur beendet werden, indem man die Quelle des Sounds löscht!
Will man also einen Sound beenden, ohne das Objekt zu zerstören, muss man es löschen und an exakt der gleichen Position wieder spawnen. Im Beispiel unten spielt das "Smartphone" den Song per Aktionsmenü ab, anschließendsofort werden alle bisherigen Aktionsmenü-Einträge gelöscht, damit der Sound durch die Clients kein weiteres Mal abgespielt werden kann (Überlagerungen!).
Der neue Script-Eintrag "Radio aus" löst bei Aktivierung global (remoteExec) folgendes aus: Er findet die genaue Position (getPosATL)getPosATL) des Smartphones und dessen Ausrichtung (getDir)getDir), löscht es und spawnt es genau dort wieder (ohne die Aktionsmenü-Einträge!).
Das sieht dann so aus:
[smartphone, ["sameintheend", 15, 1, false]] remoteExec ["say3D", 0, true];
smartphone remoteExec ["removeAllActions"];
[smartphone, ["Radio aus",
{
_pos = getPosATL (_this select 0);
_dir = getDir (_this select 0);
deleteVehicle (_this select 0);
smartphone = "Land_MobilePhone_smart_F" createVehicle [0, 0, 0];
smartphone setPosATL [_pos select 0, _pos select 1, _pos select 2];
smartphone setDir _dir;
}]] remoteExec ["addAction"];
Man könnte nun mit diesem laufenden Script die alten Einträge wieder hinzufügen und folgendes einfach anhängen:
[smartphone, ["Sublime", {execVM "scripts\playRadio1.sqf"}, [], 6, false, true, "", "", 2]] remoteExec ["addAction"];
[smartphone, ["Dylan", {execVM "scripts\playRadio2.sqf"}, [], 5, false, true, "", "", 2]] remoteExec ["addAction"];
[smartphone, ["Ataris", {execVM "scripts\playRadio3.sqf"}, [], 5, false, true, "", "", 2]] remoteExec ["addAction"];
[smartphone, ["CCR", {execVM "scripts\playRadio4.sqf"}, [], 5, false, true, "", "", 2]] remoteExec ["addAction"];