Einzelnen Beitrag anzeigen
Alt 19.06.2011, 13:53   #11 (permalink)
Vienna
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Mit Skript ist das etwas umfangreicher, dafür sind aber Einstellungen nach Bedarf möglich.

z.B. ein Aufruf: temp = [2, 15, 50, 3] execVM "ArtillerieMapKlick.sqf"

Damit kann kann 2 Mal ein Artilleriebeschuss mit je 15 Granaten, 50m Streuung und Granatenabstand vom ca. 3 Sekunden aufgerufen werden. An der Klickposition der Karte ist ein Marker vorhanden.

ArtillerieMapKlick.sqf
Code:
//Artilleriebeschuss durch Mapklick  [Vienna  19.06.2011]
//  
//Aufruf: temp = [Serienanzahl, Granaten je Serie, Streuung, Schussabstand] execVM "ArtillerieMapKlick.sqf"

private["_s","_z","_t","_a","_m","_j","_f","_i","_g"];

_s = _this select 0;   // Anzahl der Artilleriebeschüsse
_z = _this select 1;   // Granatenanzahl je Serie  
_t = _this select 2;   // Streuung in Meter
_a = _this select 3;   // Granatenabstand in Sekunden (mit 33% Schwankung)

_m = "ARTY_Sh_122_HE"; // Granatenname
_j = 0;                // zählt erfolgte Artilleriefeuer

//Marker für das Artillerieziel erstellen
if (isNil "ViennasArtillerieMarker") then
 {
  ViennasArtillerieMarker = createMarkerLocal ["ViennasArtillerieMarker",[0,0]];
  ViennasArtillerieMarker setMarkerShapeLocal "ICON";
  ViennasArtillerieMarker setMarkerTypeLocal  "Destroy";
  ViennasArtillerieMarker setMarkerColorLocal "ColorRed";
  ViennasArtillerieMarker setMarkerSizeLocal  [0.7,0.7];
  ViennasArtillerieMarker setMarkerTextLocal  "Artillerieziel"
 };

while {_s > _j} do //Schleife gemäß Artillerieanzahl _s
 {
  waitUntil{visibleMap};
  player sideChat format["Beim Klick in die Karte erfolgt dort der %1. Artilleriebeschuss von %2",_j+1,_s];
  ViennasArtilleriePos = []; //globale Variable für das Artillerieziel
  onMapSingleClick "ViennasArtilleriePos = _pos";
  _f = true; // false wenn Artillerie feuerte
  //Warten auf Kartenklick
  while {visibleMap and _f} do
   { 
    if (count ViennasArtilleriePos > 0) then
     { 
      onMapSingleClick "";
      player sideChat "Erster Einschlag in 20 Sekunden!";
      ViennasArtillerieMarker setMarkerPosLocal ViennasArtilleriePos;
      sleep 20;
      for "_i" from 1 to (_z) do  // Schleife gemäß Granatenanzahl _z
       {
        // Granateneinschlag an der "gestreuten" Position                         
        _g = _m createVehicle [(ViennasArtilleriePos select 0) - _t + random _t*2,(ViennasArtilleriePos select 1) - _t + random _t*2];
        // Pause für den Schussabstand der Granaten mit 33% Schwankung 
        sleep (_a*0.66 + random(_a*0.33)) 
       };
      player sideChat 'Artilleriefeuer beendet!';
      _j = _j+1;
      _f = flase
     }
   }
  onMapSingleClick ""
 }
Vienna ist offline