# 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 (siehe auch Einträge zu addAction):

 <span style="color: #ff0000;">Objektname</span> addAction \[ "MUSIC ON", {<span style="color: #ff0000;">Objektname</span> this say3D \[<span style="color: #ff00ff;">"Sounddatei"</span>, <span style="color: #00ffff;">Reichweite</span>, <span style="color: #339966;">Pitch</span>\];}\];

  
2\. Mit remoteExec:

 \[<span style="color: #ff0000;">smartphone</span>, \[<span style="color: #ff00ff;">"song"</span>, <span style="color: #00ffff;">15</span>, <span style="color: #339966;">1</span>, <span style="color: #0000ff;">false</span>\]\] remoteExec \["say3D", <span style="color: #800080;">0</span>, <span style="color: #ff6600;">true</span>\];

Die **Syntax** ist:

 \[<span style="color: #ff0000;">Objekt</span>, \[<span style="color: #ff00ff;">"Datei"</span>, <span style="color: #00ffff;">Reichweite</span>, <span style="color: #339966;">Pitch</span>, <span style="color: #0000ff;">Radioeffekt</span>\]\] remoteExec \["say3D", <span style="color: #800080;">targets</span>, <span style="color: #ff6600;">JIP</span>\];

<span style="text-decoration: underline;">Erläuterung</span> zu <span style="color: #800080;">targets</span>: (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 erstellen - autoradios sind so nur möglich, wenn man an die Fahrzeuge ein Objekt anhängt (attach) und es als Emitter nutzt. Habe ich aber noch die gemacht.

Im Beispiel unten spielt das "Smartphone" den Song per Aktionsmenü ab, sofort werden alle bisherigen Aktionsmenü-Einträge gelöscht ("removeAllActions"), damit der Sound durch die Clients kein weiteres Mal abgespielt werden kann (keine Überlagerungen!).

Der neu erzeugte addAction-Eintrag "<span style="color: #ff0000;">Radio aus</span>" löst <span style="text-decoration: underline;">bei Aktivierung</span> global (<span style="color: #339966;">remoteExec</span>) folgendes aus: Er findet die genaue Position (<span style="color: #ff9900;">getPosATL</span>) des Smartphones und dessen Ausrichtung (<span style="color: #808000;">getDir</span>), <span style="color: #ff00ff;">löscht</span> das Objekt und <span style="color: #993366;">spawnt</span> 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, \["<span style="color: #ff0000;">Radio aus</span>",*  
 *{*  
 *\_pos = <span style="color: #ff9900;">getPosATL</span> (\_this select 0);*  
 *\_dir = <span style="color: #808000;">getDir</span> (\_this select 0);*  
 *<span style="color: #ff00ff;">deleteVehicle</span> (\_this select 0);*  
  
 *smartphone = "Land\_MobilePhone\_smart\_F" <span style="color: #993366;">createVehicle</span> \[0, 0, 0\];*  
 *smartphone setPosATL \[\_pos select 0, \_pos select 1, \_pos select 2\];*  
 *smartphone setDir \_dir;*  
  
 *}\]\] <span style="color: #339966;">remoteExec</span> \["addAction"\];*

Man könnte nun mit diesem laufenden Script die alten Einträge wieder hinzufügen und folgendes einfach anhängen. Fertig wäre das fertige Radio zum Ein- und Ausschalten:

 *\[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"\];*