05.06.2011, 08:34 | #1 (permalink) |
Registriert seit: 08.08.2010
Ort: Naumburg/Saale
Alter: 63
Beiträge: 16
|
Das leidige Thema Sound mal wieder
Was ich bisher getan habe.......
1.In der "description.ext" eigene Sound´s definiert: class CfgSounds { sounds[] = { Wakeup,Heli,Heli1,Heli2 class Wakeup {name="Wakeup";sound[]={"\sounds\Wakeup.ogg",db+20,1.0};titles[] = {};}; class Heli {name="Heli";sound[]={"\sounds\Heli.ogg",db+15,1.0};titles[] = {};}; class Heli1 {name="Heli1";sound[]={"\sounds\Heli1.ogg",db+15,1.0};titles[] = {};}; class Heli2 {name="Heli2";sound[]={"\sounds\Heli2.ogg",db+15,1.0};titles[] = {};}; 2.Eigene Sounds im Ordner "sounds" eingefügt: Wakeup.ogg,Heli.ogg,Heli1.ogg,Heli2.ogg (im Format 44100Hz,36kbps,mono) 3.Mit dem Editor in der Mission Auslöser plaziert: Bsp.1: class Item22 { position[]={4729.8218,339,10339.498}; a=5; b=5; angle=57.512001; rectangular=1; activationBy="WEST"; repeating=1; interruptable=1; age="UNKNOWN"; name="mhq1"; expCond="! isNull driver xvec1"; expActiv="xvec1 say Wakeup; mhq1 setPos getPos xvec1"; class Effects { voice="Wakeup"; }; }; Bsp.2: class Item23 { position[]={4690.1602,339,10278.343}; a=10; b=10; activationBy="WEST"; repeating=1; interruptable=1; age="UNKNOWN"; name="sound"; expCond="! isNull driver ch1"; expActiv="ch1 say Heli; sound setPos getPos ch1"; class Effects { voice="Heli"; }; }; Erklärung zu den Beispielen: mhq1=Name des Auslösers für MHQ Nummer 1 xvec1=Name MHQ Nummer 1 sound=Name Auslöser für Helikopter Nummer 1 ch1=Helikopter Nummer 1 Bedingung des Auslösers=! isNull driver xvec1,! isNull driver ch1 (ein Fahrer muss im MHQ oder dem Helikopter sitzen) bei Aktivierung=ch1 say Heli,xvec1 say Wakeup (ch1 sagt Sound "Heli.ogg",xvec1 sagt "Wakeup.ogg") bei Aktivierung=sound setPos getPos ch1,mhq1 setPos getPos xvec1 (Auslöser wandert mit Helikopter oder MHQ mit) Was ich gerne noch haben möchte: 1. Der Sound soll gestoppt werden,wenn der Pilot oder Fahrer aus dem Fahrzeug/Helikopter steigt und erst wieder starten,wenn diese Positionen wieder eingenommen werden. 2. Der Sound ist zu lange für andere Mitspieler zu hören,wenn der Heli oder das MHQ sich von ihnen entfernt. So,wie es jetzt ist,kann man den Sound die halbe Karte über hören und der Sound verschiebt sich in der Tonhöhe und Abspielgeschwindigkeit.(say2D,say3D....??????????? ) Die hörbarkeit dürfte höchstens 20-50 Meter betragen. 3. Das Ganze läuft momentan über das "automatisierte Verfahren" bei den Auslösern (activationBy="WEST"). Ich denke auch an ein Manuelles aktivieren nach (activationBy="ALPHA"). Das sollte aber nicht das Problem sein. Auf einen Nenner gebracht: Wenn mir jemand sagt,was bei "bei Deaktivierung" bei den Auslösern rein muss,um den Sound zu beenden wenn der "Driver" ausgestiegen ist und wie ich den Sound in seiner Hörbarkeit auf 20-50 Meter bekomme, währe ich euch sehr Dankbar. Wenn sich einige "Profis" unter euch wundern,weil ich wahrscheinlich etwas Umständlich an die Sache heran gegangen bin, dann muss ich leider sagen: "Ich kann es nicht anders" Eine Bitte zum Schluß: Keine Vorschläge für Scripte,es sei denn,ihr macht euch die Mühe,mir ein fertiges Script zu liefern. Scripte sind "Bohemiahische Dörfer" für mich. Besten Dank im Voraus Michael |
05.06.2011, 09:51 | #2 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Schau in diesem Thread nach: Sound auf "Knopfdruck"?
Anzumerken ist noch, dass es ohne Skript nicht gehen wird, weil der Sound vor seinem Ende nur abgestellt werden kann wenn man das aufrufende Objekt löscht. Wie z.B. in diesem Skript, welches in einem der Beispiele aus obigem Link verwendet wird und für den Sound ein zusätzliches unsichtbares Objekt verwendet. Code:
// Aufruf Lokal | Vienna 11.01.2011 // // Radio schaltet automatisch beim Einsteigen in ein Fahrzeug ein und beim Verlassen aus. // // 1. Aufruf schaltet Radio ein. Nächster Aufruf schaltet aus. usw. // // Aufruf: temp = ["Soundname",Soundlänge]] execVM "Sound.sqf"; // // Beispiel: temp = ["MeinSound",127] execVM "Sounds\Sound.sqf"; // Wichtig, im 2. Übergabewert die Soundlänge eingeben (hier 127 Sekunden)! // // In der description.ext ist die Klasse für den Sound einzufügen. // Lokale Variable private ["_s","_l","_r","_t"]; // _s: Soundname aus dem Parameter in der Aktion laden _s = _this select 0; // _l: Länge des Musikstücks (darf nicht viel kürzer sein, sonst Überschneidung) _l = _this select 1; //Endlosschleife while {true} do { if (player != vehicle player AND alive player) then // Spieler in einem Fahrzeug { // _r: unsichtbares Objekt _r = "HeliHEmpty" createVehicle getPos player; // Hauptschleife Sound starten (Wiederholung bis abgeschaltet wird) while {player != vehicle player AND alive player} do { // Sound starten _r say _s; // _t: nach Zeitablauf Sound neu starten _t = time + _l - 5; // Warteschleife bis Soundende und "Radio" dem Objekt _r nachsetzen while {_t > time AND player != vehicle player AND alive player} do { _r setPos getPos player; sleep 1 } }; sleep 1; deleteVehicle _r }; sleep 1 } Geändert von Vienna (05.06.2011 um 11:19 Uhr). |
05.06.2011, 14:41 | #3 (permalink) |
Registriert seit: 08.08.2010
Ort: Naumburg/Saale
Alter: 63
Beiträge: 16
|
Ich habe mir deine Beispiele schon vor deinem Edit angesehen.
Ich habe die Mission so umgebaut,dass der Sound per Action-Menü aufgerufen wird. Stand der Dinge: 3 Helikopter,je einen eigenen Sound. Text geändert in: "Radio on/off Heli No.1" "Radio on/off Heli No.2" "Radio on/off Heli No.3" Das Radio-Script vervielfältigt zu Radio.sqf,Radio1.sqf und Radio2.sqf Also je ein Script pro Heli und Sound. Nur Sicherheitshalber,k.a. ob auch eins gereicht hätte. Sekundenangaben aus init den Sounds angepasst. Testlauf: Soweit,sogut. Mit "Radio on/off Heli No.1" den Sound von Heli 1 abspielen lassen, zu Heli 2 gehen und dort das gleiche machen. Sound von Heli1 geht aus. Nicht so schlimm,damit kann ich leben. Die 3 Helis sind übrigends die Lift-Helis aus der Domination!!!!!!!!!! KI in den Heli setzen,Sound an machen und über die Main-Mission fliegen lassen. Heli wird abgeschossen und zerstört. Heli respawnt in der Base und weigert sich,den Action-Menü Eintrag zu zeigen. Kein Sound mehr möglich. Das Script und die Beispiele sind nicht für den MP gedacht,oder? Nun schaue ich mir mal deinen Edit an und werde sehen, was ich damit los reißen kann. Aber nicht mehr heute. Mir Qualmt schon der Schädel. Nächstes WE ist wieder Bastelzeit. Dann melde ich mich wieder. Besten Dank Michael |
06.06.2011, 09:46 | #4 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Du hast vermutlich das unten angeführte Skript verwendet, mit dem man das Radio über Aktionsmenü ein- und ausschalten kann. Den Kommentar am Beginn habe ich etwas abgeändert.
Dieses Skript verwendet mehrmals ein globale Variable (fett dargestellt), in der gespeichert ist ob der Radio ein oder aus ist. Wenn du mehrere Fahrzeug mit dem Radio ausstatten willst, dann musst du Skripts mit verschiedenen Namen verwenden, von denen in jedem Skript diese globale Variable einen anderen Namen hat. z.B. eine Zahl hinten anfügen ViennasRadio1 Diese Änderung muss unbedingt im jeweiligen Skript an jeder Stelle gleich geändert werden! Für einen Respawn ist die Aktion nach createVehicle so anzuführen (dabei auf den jeweiligen Skriptnamen achten): Code:
_veh = "AH1Z" createVehicle position Player; _veh setVehicleInit ' temp = this addAction ["*** Radio ein- oder ausschalten ***","Sounds\Radio.sqf",["BlackAttack",127],-1,false,true,""] '; processInitCommands; Ein im Mehrspielermodus funktionierendes Beispiel findest du im Anhang. Allerdings wird der Sound automatisch ein- und ausgeschalten, abhängig davon ob ein Driver im Fahrzeug ist. Dafür kommt man mit einem Skript für alle Fahrzeuge aus, weil keine globale Variable verwendet wird. Unterschiedliche Soundnamen sind dabei möglich und werden als Parameter übergeben. Der Sound ist in der Umgebung der Fahrzeuge von allen Spielern zu hören. Eine "Bedienungsanleitung" findest du im Kommentar oben im Skripts vom Download. Radio.sqf Code:
/* Aufruf Lokal | Vienna 30.12.2010 Radio über Aktionsmenü ein- und ausschalten 1. Aufruf schaltet Radio ein. Nächster Aufruf schaltet aus. usw. Aufruf in der Initialisierung eines Objekt: temp = this addAction ["Aktionstext","Dateiname",["Soundname",Soundlänge],-1,false,true,""] Wichtig! Im 2. Übergabewert Soundlänge die Abspieldauer des Sounds eingeben (im Beispiel 127 Sekunden)! Beispiel 1: temp = this addAction ["*** Radio ein- oder ausschalten ***","Sounds\Radio.sqf",["BlackAttack",127],-1,false,true,""] Beispiel 2: Für Vehicle welche mit createVehicle erstellt werden _veh = "AH1Z" createVehicle position Player; _veh setVehicleInit ' temp = this addAction ["*** Radio ein- oder ausschalten ***","Sounds\Radio.sqf",["BlackAttack",127],-1,false,true,""] '; processInitCommands; In der description.ext ist die Klasse für den Sound einzufügen. */ // Lokale Variable private ["_o","_s","_l","_r","_t"]; //globale Variable beim ersten Aufruf für Radio Kontrolle initialisieren. if (isNil "ViennasRadio") then {ViennasRadio = false}; // _o: Objekt welches den Sound abgibt _o = _this select 0; // _s: Soundname aus dem Parameter in der Aktion laden _s = (_this select 3) select 0; // _l: Länge des Musikstücks (darf nicht viel kürzer sein, sonst Überschneidung) _l = (_this select 3) select 1; //Wenn aufrufendes Objekt zerstört, dann Aktion entfernen if (!alive _o) exitWith {player groupChat "---- Radio nicht mehr betriebsbereit! ----"; _o removeAction (_this select 2)}; // Radio einschalten wenn ViennasRadio false und ausschalten wenn ViennasRadio true /////////////////////////////////////////////////////////////////////////////////// if (!ViennasRadio) then //Radio erstellen (Radio einschalten) { ViennasRadio = true; // _r: unsichtbares Objekt _r = "HeliHEmpty" createVehicle getPos _o; // Hauptschleife Sound starten (Wiederholung bis abgeschaltet wird) while {ViennasRadio AND alive _o} do { // Sound starten _r say _s; // _t: nach Zeitablauf Sound neu starten _t = time + _l - 5; // Warteschleife bis Soundende und "Radio" dem Objekt _o nachsetzen while {_t > time AND ViennasRadio AND alive _o} do { _r setPos position _o; sleep 0.5 } }; deleteVehicle _r } else // vorherigen Radioskriptaufruf beenden (Radio ausschalten) { ViennasRadio = false; |
12.06.2011, 07:16 | #5 (permalink) |
Registriert seit: 08.08.2010
Ort: Naumburg/Saale
Alter: 63
Beiträge: 16
|
So denn......
Neues Script-neues Glück Setze ich eine KI in den Heli und lasse ihn zu einem beliebigen Ort fliegen, ist alles in Ordnung. Auch die Rückkehr von ihm mit dem Heli zu meiner Position ist OK. Es klingt mit der Musik wie ein eingeschalteter "Außenlautsprecher" am Heli. Dumm wird es erst,wenn ich als Pasagier einteige und die KI als Pilot los fliegen lasse. Die Tonhöhe und die Abspielgeschwindigkeit der Musik verändert sich bei der Innenansicht zu tiefer Stimme und langsamer Abspielgeschwindigkeit. Beim wechsel in die Außenansicht,hört man im Hintergrund die gleiche Musik in höherer Tonlage und schneller Abspielgeschwindigkeit zusammen mit der zuvor geschilderten langsamen und tiefen Tonlage gleichzeitig. Ich nehme an,es liegt an der Nachführung des "Unsichtbaren Heleports", der ja die Musik ausgiebt. Deswegen wollte ich ja ursprünglich,dass der Heli selbst mit "say" die Musik wieder gibt.Da kommt die Tonwiedergabe vom Objekt selbst, dass sich bewegt und mit ihm alle Insassen des Heli. Ist der Heli zerstört worden,funktioniert das Ganze nach respawn des Heli nicht mehr. Kein Pip´s zu hören. Ich erinnere noch mal daran,dass es die Lift-Heli´s in der Domination sind,bei denen ich versuche eine Musikwiedergabe von selbst erstellten Sound zu basteln. Eine Variante a la "Mando-Musik" mit Wiedergabe der internen Musik-Tracks von Arma währe sicher einfacher zu bewerkstelligen. Daran habe ich aber kein Intresse. Außerdem betrachte ich mein Ansinnen als eine Art "Denksport". Sollte es nicht gelingen,habe ich wenigstens ein wenig in den "Eingeweiden" von Arma rum gewühlt und die Grenzen des Machbaren erfahren. Ich werde mich heute noch mal hin setzen,und mit "Versuch und Irrtum" ein wenig experimentieren. Eventuell komme ich da auch zu einem befriedigendem Ergebnis. |
12.06.2011, 15:20 | #6 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Hast du das mit dem Beispiel aus Post #4 getestet? (Dazu eine KI in deine Gruppe hinzufügen.)
Dort ist ja der Heli mit dem Auslöser wie bei einem Respawn erstellt und der Sound ist vorhanden. (Was dabei für den Respawn zu beachten ist siehe auch im Post #4.) In dem Beispiel gibt es bei mir keine Verzerrungen wenn die KI der Driver ist. Verwendest andere Sounddateien? Sind sie im .ogg Format? |
12.06.2011, 19:35 | #7 (permalink) |
Registriert seit: 24.05.2011
Ort: Innsbruck
Beiträge: 25
|
Also ich nehme mal einfach das Thema für mein Problem.
Seit gut 3 Stunden probiere ich nun Musik abzuspielen. Die description: PHP-Code:
Es will einfach nicht. Ich habe es in .ogg Format mit 41kHz Stereo konvertiert und es will einfach nicht funzen. Bitte Hilfe ich dreh sonst noch durch und ich weis nicht wie lange meine Maus das noch durchhält.
__________________
Geändert von SUBmars (12.06.2011 um 19:59 Uhr). |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Real Combat Sound | JSR | Mods & Addons | 45 | 18.11.2011 01:22 |
Hilfe bei config Motor Sound | stiefel1976 | Editing & Scripting | 4 | 30.01.2011 18:16 |
Sound beenden | Anemia | Editing & Scripting | 5 | 11.07.2010 13:08 |
description.ext (sound) problem | miromanu | Editing & Scripting | 7 | 07.07.2010 15:40 |
Riflesounds | Big Fan | Mods & Addons | 3 | 26.05.2010 03:41 |