Direkt zum Hauptinhalt

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: (0=global, -2=alle außer Server), JIP (true/false)

 

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 ab, anschließend 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) des Smartphones und dessen Ausrichtung (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"];