HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   Artillery Granaten Sound (https://hx3.de/editing-scripting-167/artillery-granaten-sound-22517/)

Elokarissyan 22.04.2013 20:48

Artillery Granaten Sound
 
Hallo zusammen

ich habe volgendes problem ich spiele zur zeit arma 2 und baue im editor eine edwas grössere mission für SP, diese soll im vietnam spielen daher nutze ich zusammen gewürfelte addons aus verschiedenen mods wie zbs. The Unsung mod und VTE mod was davon halt zu gebrauchen ist ^^ habe auch schon das eine oder anderre szenario sehr anschaulich hinbekomen,
nun komme ich zu meinen problem ich habe versucht artillery feuer von meiner seite per map klick, als wie auch von feinden durch auslöser hinzubekomen dies ist mir gelungen durch codes die ich hier im forum fand wie zbs.




temp = Ari1 spawn {_this = position _this; for "_j" from 1 to 3 do {sleep 0; for "_i" from 1 to 20 do {"ARTY_Sh_122_HE" createVehicle [(_this select 0)-100+random 100*2,(_this select 1)-100+random 100*2]; sleep (2*0.66 + random(2*0.33))}}}



diesen nutze ich für die gegner per auslöser


und diesen:



temp = 0 spawn { while {true} do { private "_t"; waitUntil{visibleMap}; player sideChat "Beim Klick in die Karte erfolgt dort Artilleriebeschuss!"; onMapSingleClick " _t = _pos spawn { private ['_i','_b']; onMapSingleClick ''; player sideChat 'Erster Einschlag in 3 Sekunden!'; sleep 3; for '_i' from 1 to 5 do { _b = 'ARTY_sh_122_he' createVehicle [(_this select 0)-30+random 35,(_this select 1)-30+random 35]; sleep (2.0 + random 1.0) }; player sideChat 'Artilleriefeuer beendet!'; } "; waitUntil{!visibleMap}; onMapSingleClick "" } }



nutze ich für meinen map click,


jetzt das problem, ich suche eine möglichkeit das die granaten bevor sie einschlagen diesen pfeif ton abgeben.


ich habe hier im forum schon einen beitrag darüber gefunden aber konnte damit nicht wirklich edwas anfangen da das script gleichermassen sound als wie auch der beschuss war, und da ich nicht der hellste bin in sachen script/en weis ich auch nicht wie ich es umschreiben könnte das es auf diese zwei befehle die ich hier oben reingestelt habe reagieren würde.
da ich die beiden befehle gerne weiter nutzen würde halt nur mit sound :D


Bei scripts habe ich das problem das ich so wie ich das bis jetzt sehe extrem viele davon erstellen müste da ich auf einer sehr grossen map spiele und es mehrere artillery angriffe gibt mit verschiedenen reichweiten, munition, als auch dauer, mit denn obrigen Codes funktioniert das mit wenig aufwand sehr gut und zuverlässig.


Würde mich aber freuen wenn es eine möglichkeit gibt diese zwei befehle im spiel mit einem sound zu versehen.





Fg Elokarissyan

Vienna 23.04.2013 00:37

Schau einmal hier rein: Artillerie mit Sound.

Elokarissyan 23.04.2013 18:17

Hallo Vienna


Danke dir für deine antwort


muss aber leider sagen das ich diesen beitrag meinte
du bietest auf der zweiten seite eine MP taugliche mission an, in der artillery beschuss mit sound zu finden ist.
Problem daran ist ich habe nach einer möglichkeit gesucht meine zwei codes vom vorpost mit sound und einer description.ext zu verbinden,
Da ich in sachen script keine ahnung habe und ich das script aber anpassen müste für meine zwecke.


Ich würde das script auch nutzen wenn ich wüste wie ich es umschreiben kann um es für meine zwecke gebrauchen zu können.

nun ist die frage kann mann die zwei codes die kein script benötigen mit einem sound verbinden ? wenn ja würde ich mich unwarscheinlich auf eine antwort freuen:D
wenn nicht muss ich wohl ohne sound auskommen :(

PS: ich habe auch keine ahnung wie ich eine Description.ext definieren muss oder das dazugehörige script
schreiben muss.



Danke für deine hilfe


FG Elokarissyan

Vienna 23.04.2013 19:06

Bis auf die Datei mission.sqm musst du alles aus meinem Missionsordner in deinen Missionsordner kopieren.

Dann in deiner Mission im Editor ein Logic-Objekt mit Namen: EinschlagsMarker erstellen. Wie dieses Objekt aussieht siehst du ja im Editor in meiner Mission.


Mit folgender Zeile:

onMapSingleClick " [_pos, 3, 25,'ARTY_Sh_81_HE'] execVM 'artillerie_einschlag.sqf' ";

ist das Skript für den Map-Klick verwendbar. Beachte die unterschiedlichen Anführungszeichen.

In _pos bei den Übergabeparametern ist die Position des Klicks enthalten, die 3 steht für die Runden, die 25 für die Anzahl der Granaten pro Runde, dann steht noch der Name der Munition.


Wenn du das hin bekommst, wird es dir keine Problem mehr machen das Skript auch für weitere Artillerie zu verwenden.

Lies dir im Skript die ersten 5 Zeilen durch. Das ist ein Kommentar welcher beschreibt wie das Skript zu verwenden ist. In den Zeilen 13-16 ist im Kommentar erkennbar welche Auswirkungen eine Änderung der Parameter hat.

Elokarissyan 23.04.2013 19:10

Danke sehr das du mir so weit entgegen kommst werde es soffort probieren
aber eine frage hätte ich noch per mapclick für mich gegen feinde suche ich auch noch dies ist ja dort nicht mit drinen

ups sry solte gescheit lesen entschuldige -.- übersehen

Fg Elokarissyan

Elokarissyan 23.04.2013 19:35

Hallo Vienna

Ich habe es hinbekommen es leuft per auslöser wie auch per mapclick
munition und runden wie auch die schuss der runden leuft super jetzt habe ich das einzige und letzte problem :(

da ich mehr mals beschuss durch artillery benötige in meiner mission is jetzt volgendes aufgetreten:

das erste betroffene gebiet soll bis zu 8km lang und 300m breit bombardiert werden mit bis zu 2000 granaten das script ist ausgelegt auf 100m breit und lang wenn ich das umschreibe auf die obigen daten dann is der mapclick wieder rum auch so groß weist du da einen ausweg oder muss ich das script kopieren so oft und jedes einzelne abändern ? habe bei meiner mission 25 verschieden grosse artillery beschuss szenen :(

um es genauer zu erleutern der erste arty angriff kommt in den ersten 5 min bei einer fahrt mit einem jeep wo der radius auf 8000 zu 300 ist so weit so gut mit dem hubi geht es dan ins kampf gebiet dort erwartet mich ein paar soldaten und feindliche mg stellungen kurtz darauf begegne ich einen panzer sobald ich dann arty funke beschiest die arty einen radius von 8000 zu 300 obwohl ich einen radius von 10 zu 10 breuchte

vieleicht weist du jetzt genau was ich meine

danke für deine hilfe

Fg Elokarissyan

Elokarissyan 23.04.2013 20:45

Ich bins nochmal ich habe probiert es umzuschreiben aber es funktioniert einfach nicht immer das gleiche problem hoffe mann kann irgenwie noch ne zeile hinzufügen im script um im auslöser noch den radius einzustellen

Fg Elokarissyan

Vienna 23.04.2013 22:56

Liste der Anhänge anzeigen (Anzahl: 1)
In Anhang ein 2. Skript mit Namen artillerie_einschlag2.sqf (beim Skript-Namen ist hinten eine zwei angefügt). Dieses Skript kann gleichzeitig mit dem ersten Skript laufen.

Es ist ein 2. Logic-Objekt mit Namen: EinschlagsMarker2 im Editor hinzuzufügen. Als 5. Parameter ist ein Wert für den Radius hinzugekommen.

Aufrufbeispiele
Code:

temp = [Position, 3, 25,"ARTY_Sh_81_HE",200] execVM "artillerie_einschlag2.sqf";
Die 200 stehen für den Radius des Granatenbereichs.

Für eine Anwendung mit onMapSingleClick unten im Post #11 nachlesen.

Elokarissyan 24.04.2013 19:42

Hallo vienna dieses script funtioniert bei mir nicht er schreibt mir
"ungültige zahl in ausdruck"

was nun xD

Elokarissyan 24.04.2013 20:08

ok hab es hin bekommen hatte mich wohl verschrieben
eine frage hätt ich aber dennoch undzwar ich stelle 1 runde mit 2000 granaten ein es fallen aber nur 2 oder 6 oder nur 1ne ist immer unterschiedlich es werden aber nie mehr als 23 is das denn normal ?

habe es schon mit einer anderen runden zahl probiert und mit einer anderren anzahl an granaten aber geht trotzdem nicht er generiert die anzahl der granaten selber :(

Vienna 25.04.2013 13:16

Liste der Anhänge anzeigen (Anzahl: 1)
Wenn du nichts am Skript geändert hast, dann müssten die Runden- und Schussanzahl korrekt durchlaufen werden. Ich habe das im 2. Skript mit 2 Runden zu je 200 Schuss getestet.

Das Skript muss ja bei allen Spieler gestartet werden, sonst wäre der Sound bei den Clients nicht zu hören. Darum der Aufruf über einen Auslöser.

Der Befehl onMapSingleClick ist vermutlich nicht publik, so wird der Sound nicht bei den Clients zu hören sein. Daher muss über eine publike Variable einen Auslöser das Skript bei allen Spielern aufrufen.

Im Beispiel im Anhang ist das Skript artillerie_einschlag2.sqf so abgeändert, dass es für onMapSingleClick verwendbar ist. Der Code für den Klick ist folgender:

Code:

      Aufruf des Map-Click: onMapSingleClick "EinschlagPosition2=_pos; publicVariable 'EinschlagPosition2' ";
Bedingung für den Auslöser: not isNil "EinschlagPosition2"
  Aufrufzeile im Ausllöser: temp = [EinschlagPosition2, 3, 25,'ARTY_Sh_81_HE',200] execVM "artillerie_einschlag2.sqf"

Dazu ist das artillerie_einschlag2.sqf Skript aus dem Beispiel zu verwenden!

PlatinOps 25.04.2013 16:22

Code:

//Artilleriefeuer über Map-Click.
//  Das Skript wird über einen Auslöser auf allen PCs gestartet!    [Vienna 25.04.2013]
//
//Benötigt im Editor ein Logic-Objekt mit Namen: EinschlagsMarker2
//================================================================
//
//Aufruf: temp = [Position, 3, 25,"ARTY_Sh_81_HE",200] execVM "artillerie_einschlag2.sqf";
//
//Für Mapklick in Verbindung mit Auslöser
//=======================================
//          Aufruf des Map-Click: onMapSingleClick "EinschlagPosition2=_pos; publicVariable 'EinschlagPosition2' ";
//    Bedingung für den Auslöser: not isNil "EinschlagPosition2"
//      Aufrufzeile im Ausllöser: temp = [EinschlagPosition2, 3, 25,'ARTY_Sh_81_HE',200] execVM "artillerie_einschlag2.sqf"
//
// Die beiden Testinfo-Zeilen sind nach dem Funktions-Test zu entfernen!
 
waitUntil {isNil "ViennasArtillerieAktiv2"}; //Verhindert gleichzeitigen Ablauf des Skripts
ViennasArtillerieAktiv2 = true;

onMapSingleClick ""; //Mapklick entfernen

private ["_zentrum","_runden","_schuss","_bombe","_posX","_sounds","_einschlag","_bereich"];

_zentrum = _this select 0; //Position für das Artilleriefeuer
_runden  = _this select 1; //Anzahl der Runden
_schuss  = _this select 2; //Anzahl der Bomben pro Runde
_bombe  = _this select 3; //Name der Bombe in Anführungszeichen
_bereich = _this select 4; //"Radius" für den Granaten-Bereich

_posX = floor(getPos EinschlagsMarker2 select 0);//jede neue Position des EinschlagsMarker2 löst den Sound aus
_sounds = ["mortar1","mortar2","mortar3","mortar4","mortar5","mortar6"];//unterschiedliche Geschoss-Sounds, werden für jede Bombe zufällig ausgewählt

for "_i" from 1 to _runden do  //Anzahl der Runden
 {
  player groupChat format["Runde %1. Noch 10 Sekunden bis 1. Einschlag!",_i]; //>>>>>> Info nur zum Testen <<<<<<<
  sleep 10;                    // Pause bis zum ersten Feuern und zwischen den Runden
  for "_j" from 1 to _schuss do //Anzahl der Schüsse pro Runde
  {
    if (isServer)then          //nur für den Server/Host
    {
      _einschlag = [(_zentrum select 0)-_bereich+random _bereich*2,(_zentrum select 1)-_bereich+random _bereich*2];//zufällige Einschlagposition festlegen (Radius gem. Parameter)
      EinschlagsMarker2 setPos _einschlag; //EinschlagsMarker2 auf die Einschlagposition setzen
    };
    waitUntil {floor(getPos EinschlagsMarker2 select 0) != _posX}; //warten bis EinschlagsMarker2 auf neuer Position
    EinschlagsMarker2 say [_sounds select(floor(random(count _sounds))),150];//Geschoss-Sound beim EinschlagsMarker2 abspielen 
    hint format ["Runde:%1 Schuss:%2",_i,_j]; //>>>>>> Info nur zum Testen <<<<<<<
    if (isServer)then //nur für den Server/Host
    {
      sleep 1.1;      //Soundlänge abwarten (alle Sounds haben eine Länge von 1,1 Sekunden)
      _bombe createVehicle _einschlag; //Bombe beim EinschlagsMarker2 zünden
      sleep (2*0.66 + random(2*0.33))  //Pause zwischen den Bomben
    };
    _posX = floor(getPos EinschlagsMarker2 select 0) //Position für Vergleich bei waitUntil speichern
  }
 };
ViennasArtillerieAktiv2 = nil;
EinschlagPosition2      = nil

Wie kann ich den das einstellung das ich in den Parametern einstellen kann wie groß die Streuung sein soll?

Vienna 25.04.2013 18:49

Folgende Parameter sind dem Skript beim Aufruf zu übergeben:

[Position des Mittelpunktes, Runden, Granaten pro Runde, "GranatenName", Streuung]

Die Streuung ist ein quadratischer Bereich, wobei die Position der Mittelpunkt ist. Bei einer Streuung von 200 misst das Quadrat 400 x 400 in dem die Granaten einschlagen.

Elokarissyan 26.04.2013 18:36

hallo vienna

Es funktioniert alles tadelos danke dir für deine hilfe leuft flüssig und gibt ein tolles feeling ^^

hätte da aber eine weitere frage zu einem anderren punkt ^^

Hast du zufällig einen trigger befehl wie ich die M119 zum schiessen bekomme ?


ich habe gesucht und gesucht im internet google und anderre seiten aber habe nichts gefunden.

Danke dir erneut für deine hilfe

fg elokarissyan

Vienna 26.04.2013 18:59

Da kann ich dir nicht weiterhelfen. Wenn vorgesehen ist, dass dieses Objekt zum Schießen bedient werden kann, dann wird es auch möglich sein. Wenn nicht vorgesehen, dann ist das nur sehr schwer zu ändern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 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