HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   Soundproblem local / global (https://hx3.de/editing-scripting-187/soundproblem-local-global-22994/)

JanIs 07.10.2013 20:10

Soundproblem local / global
 
Hallo allerseits,
ich habe grad ein Problem mit dem Abspielen von Soundfiles.
Per Trigger wird eine sqf aufgerufen, in welcher per "playSound "Soundfile";" dieses abzuspielen sein soll.
Funktioniert ja grundsätzlich, nur eben am Server.
Die Clients hören nüscht ...

Kann mir bitte mal jemand erklären, wie das Ganze zu handeln wäre.
Brauche ich jetzt in dem Fall in diesem Script die Befehlszeile
"if (!isServer) exitWith {};"
Wenn die Clients praktisch "aussteigen" und das File nur am Server abgespielt wird, hören die anderen den Sound dann trotzdem noch?

Wäre es spitze, wenn mich da jemand mal aus dem Dunkeln führen würde.

LG
Jan

Pfandgiraffe 07.10.2013 20:41

Kommt jetzt drauf an was in deiner Auslösebedingung steht bzw. was in deinem Script steht.

Grundsätzlich würde ich mal sagen wäre es für dich sowieso wesentlich einfacher den Sound direkt durch den Auslöser abspielen zu lassen. Klicke im Trigger auf Effekte und dann klicke auf "hab ich vergessen". Musst du mal schauen - wenn der Sound bereits in deiner cfgSound ordentlich definiert wurde ist dieser auch dort zu finden.

Steht glaub ich auch schon in meiner Editing Guide Alphaversion wie das geht.



Grüße

Drunken Officer 07.10.2013 20:42

http://community.bistudio.com/wiki/playSound3D

Wird übers Netzwerk geschossen, damit sollten es die anderen Hören.

JanIs 08.10.2013 09:46

Zitat:

Zitat von Psychobastard (Beitrag 460795)
Kommt jetzt drauf an was in deiner Auslösebedingung steht bzw. was in deinem Script steht.

Grundsätzlich würde ich mal sagen wäre es für dich sowieso wesentlich einfacher den Sound direkt durch den Auslöser abspielen zu lassen ...

Ich will ja nicht für 8 Funksprüche 8 Auslöser reinpatschen.
Aus dem Grunde wollte ich einfach den Ablauf des Funkverkehrs in einem Script koordinieren. Wie gesagt funktioniert ja, wird halt eben nur am Server ausgeführt.
Diesen Funkverkehr sollten jedoch alle Spieler, also auf jedem Client abgespielt werden.

Im Script steht ja auch nichts anderes als wenn beispielsweise der Hubi näher als 1000 Meter ist, dann soll das File X abgespielt werden.
Zum Beispiel:

while {heli distance Helipad > 1000} do {
sleep 2;
};
if (alive heli) then {playSound "Funk1"};

usw...

Werde mal das mit "playSound3D ["Funk1", player, false, getPos player, 1, 1, 0]" probieren.

Danke einstweilen für die Hilfe.

LG
Jan

JanIs 08.10.2013 18:34

Also irgendwie verstehe ich Arma3 ned in der Richtung.

Sowohl in OFP als auch in Arma2 waren Soundmeldungen kein Problem.
In Arma3 scheint das Ganze nicht zu funktionieren. Zumindest krieg ich es nicht auf die Reihe.

Ich habe jetzt sämtliche Varianten der Soundausgabe probiert.
1. Über Trigger mit Auswahl unter Effekte sowohl Anonym als auch Stimme
2. Über Trigger bei erfüllter Bedingung als (PlName) say "Funk1";
3. Über Trigger bei erfüllter Bedingung als playSound "Funk1";
4. Über Trigger bei erfüllter Bedingung als playSound3D ["Funk1", (PlName), true, getPos (Name), 1, 1, 0];
5. Über Trigger bei erfüllter Bedingung als playSound3D ["Funk1"];
6. über sqf mit den selben Ausführungen wie über Trigger

KEINE, aber auch nicht eine einzige der obigen Versionen lief auf der Client Maschine. Die Soundausgaben waren NUR am Serverrechner hörbar.

Ich weiß jetzt keine andere Möglichkeit mehr ...

Pfandgiraffe 08.10.2013 19:19

Ich zitiere mich mal selbst:
Zitat:

Kommt jetzt drauf an was in deiner Auslösebedingung steht bzw. was in deinem Script steht.

... :schlagen: Antworte doch einfach mal auf das wesentliche mit Fakten.

JanIs 08.10.2013 20:17

In der Auslösebedingung stand eine Variable, die per Script auf true gesetzt wird.

Achse A und B: 0
Typ und Aktivierung: keine
Auslösung: Einmal
Bedingung: Funkspruch1
bei Aktivierung: (P1) say "Funk2"; [West,"HQ"] sideChat Localize "STR_RADIO_03";

Obige Ausführung geht genauso wenig wie Aktivierung des Soundfiles unter Effekte "Anonym oder Stimme".

===========================================

Und wie ich das Soundfile per Script aufgerufen habe, steht doch schon im obigen Beitrag.
Aufruf des Scriptes per Auslöser mit null=[this] execVM "Funk.sqf"

In diesem dann beispielsweise:
while {heli distance Helipad > 1000} do {
sleep 2;
};
if (alive heli) then {playSound "Funk1"};


Es geht weder das eine noch das Andere ...
Beim Clienten kommt weder der Sound noch die Sidechatmeldung an.
Egal in welcher Art und Weise (habe Punkt 1 - 6) in allen Varianten durchgespielt ...

LG
Jan

Pfandgiraffe 09.10.2013 17:52

Warum steht p1 in Klammern?

.rpt posten. (aber bitte einmal vorher löschen, dann Fehler reproduzieren und Uploadlink von pastebin.com posten)




Edit: noch was --> null=....
Schreib bitte nie nie nie null = ... sei kreativ und denk dir irgendetwas aus was nicht zu den Magic Vars gehört. z.B. affenscheisse = [] execVM "meinaffenkotfallvomhimmelscript.sqf"

JanIs 12.10.2013 09:53

Also Psychobastard, das P1 steht in Klammern weil ich in der Map nicht P1 sondern (Leader PlayGrp) stehen habe.

Egal, ich habe es nun hinbekommen, indem ich tatsächlich jeden Funkspruch über einen Auslöser starte und zudem die Bedingung im Auslöser zuvor per Script auf public setze. Die "Veröffentlichung" der Variable hatte ich anfangs weggelassen.
Trotzdem ist es ein wenig blöd, in einem aufwendigeren Intro oder Outro einen solch umständlichen Weg gehen zu müssen ...


Nebenbei erwähnt, hast du das JIP-Problem betreffend Intro mittlerweile lösen können und wenn ja wie. Habe nämlich grad das gleiche Problem, da bei JIP und dem neuerlichen Durchlauf des Intros eine Vielzahl an Scripterrors erscheinen weil ich nach dem Intro unnötige Figuren gelöscht habe.
Ich möchte also sozusagen ein "Light-Intro" für JIP-Leute ...

Greetz
Jan

Pfandgiraffe 12.10.2013 10:09

Starte das intro mit der Bedingung time < 5. Dann sehen es nur die Leute die zu Missionsbeginn mit dabei waren.

Also:
Code:

if (time < 5) then {execVM "intro.sqf"};
...oder eben statt dessen ein anderes Intro:
Code:

if (time < 5) then {execVM "intro.sqf"} else {execVM "intro_jip.sqf"};

JanIs 12.10.2013 10:19

Merci, werde das mal probieren ...

Also bist du sozusagen von der Option über "onPlayerConnected" abgekommen ...

JanIs 12.10.2013 20:45

Ich habe jetzt diese Möglichkeit getestet, allerdings startet beim JIP-Player genau das gleiche Intro wie bei Missionsbeginn.

Diese "if (time < 5)" Möglichkeit scheint also doch nicht so zu laufen wie gewünscht ...

Pfandgiraffe 13.10.2013 18:03

Das funktioniert zu 100%. Dann machst du was falsch.

JanIs 13.10.2013 21:50

Nun ich weiß ehrlich nicht genau was ich da falsch machen kann.
Ich habe die Zeile in die init gepatscht und die Mission gestartet.

Der Client ist nach Ablauf des "Hauptintros" dazu gestoßen und bei ihm wurde ebenfalls das "Hauptintro" gestartet.

Dann habe ich es so probiert und es funktioniert:
Code:

if (!isNil "Intro_durch") then
{
  execVM "camsequenzen\intro_JIP.sqf";
} else {
  execVM "camsequenzen\intro.sqf";
};

Nach etwa 5 Sekunden im Introscript "intro.sqf" wird die publicVariable "Intro_durch" auf true gesetzt weshalb alle späteren JIP's die Kurzversion sehen.

Nichts desto trotz würde mich interessieren, wieso deine Version nicht geklappt hat ...

Greetz
Jan


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:57 Uhr.

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias


SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119