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 ""
}