ARMA 3 - MISSION EDITING & SCRIPTING Arma 3 - Zaun zerschneiden ohne Ace Menu
Arma 3 - Zaun zerschneiden ohne Ace Menu
Quelle: Gametwitter.de Forum | views: 1700

Ich suche stetig nach weiteren Aufgaben für die Pios. Darunter stört mich ein bisl @Enhanced Movement, das man so ziemlich über alles rüberkommt.

So auch Stacheldrahtzäune. Wenn ich könnte würde ich den Stacheldrahtbereich symbolisch unter Strom setzen oder vielleicht doch den ganzen Zaun? ;)

Zu einem späteren Zeitpunkt vielleicht :saint: .

Erstmal geht es mir darum, das die Pios den Zaun bzw. einen Zaun zerstören können mit dem Besitz des Drahtschneiders. Zunächst bestimme ich den Zauntyp für das Skript.

Wie findet man den Classname der Zaunobjekts auf der Map heraus?

  • Stelle eine Einheit so dicht wie möglich an den gewünschten Zaun.
  • Starte das Szenario.
  • Öffne die Console und füge folgenden Code-Schnipsel ein und führe diesen Lokal aus (damit kopierst Du alle Objekte in der Nähe der Einheit in deinen Zwischenspeicher)
copyToClipboard str format ["Nearobjects: %1", (nearestObjects [getpos player, [], 10])];

In einer beliebigen Textdatei Strg + V drücken. Damit fügst Du den Inhalt des Zwischenspeichers als String in Deine Datei. Da findest Du das Objekt für den Zaun

In meinem Fall war es: Land_New_WiredFence_10m_F

Mit einem Rechtsklick im Editor holst Du Dir die Position von deinem Einsatzgebiet. in meinen Fall [3922.69,10318.4,0]

Du öffnest bzw. erstellst Deine initServer.sqf und fügst dann folgen Schnipsel da ein und speicherst die Datei ab

(Hier musst Du natürlich Dein Objekt bzw Postion dann eintragen )

[]spawn{
   {
      if ((str _x) find "Land_New_WiredFence_10m_F" > -1 || (str _x) find "netfence_03_m_9m_f" > -1) then {
         fenceAction = _x addAction["Zaun öffnen", "GT_wirecut.sqf", [], 1, true, true, "", "_this distance _target < 10"];
      };
   } forEach nearestObjects [[3922.69,10318.4,0], [], 1500];
};

Die 1500 ist der Umkreis um die gewünschte Position, da es kein Sinn macht alle Zäune auf der Karte mit dem Addaction - Befehl zu belegen!

Mit dem Addaction Befehl weise ich eine Datei zu, genannt GT_wirecut.sqf

Was enthält die Datei?

Grob:

Eine Zuweisung des Spieler zu einer Variable

Dann kommt eine Abfrage, die sicherstellt, das die folgende Aktion nur von einem Pionier ausgeführt werden kann

Dann flogt die Prüfung, ob der Pionier mitgedacht hat und sich auch so ausgerüstet hat. Vorrausetzung um den Zaun zu zerstören ist der Ace Drahschneider

Neben einer Animation folgt auch das Abspielen eines Sounds. Hier habe ich das Durchschneiden eines Maschendrahtes hinterlegt.

Die GT_wirecut.sqf dazu ist wie folgt aufgebaut:

private ["_grabber"];
_grabber = player;

if ( (typeOf player == "gm_ge_army_demolition_g3a4_80_ols") )then{

   if("ACE_wirecutter" in (items _grabber + assignedItems _grabber))then{
      _anim = "AinvPknlMstpSnonWnonDnon_medic0";
      _grabber playMove _anim;
      waituntil {animationState _grabber == "AinvPknlMstpSnonWnonDnon_medic0"};

      {
          if ((str _x) find "fence_03_m_9m_f.p3d" > -1) then {
             [_x , "wirecut",10] call CBA_fnc_globalSay3d;
             sleep 2;
             [_x  , "wirecut",10] call CBA_fnc_globalSay3d;
            sleep 2;
            [_x  , "wirecut",10] call CBA_fnc_globalSay3d;
            sleep 2;
            [_x  , "wirecut",10] call CBA_fnc_globalSay3d;
            sleep 1;

           hideobject _x;
         };

    } forEach nearestObjects [_grabber, [], 3];

}else{

   hint "Drahtschneider fehlt ...";
};

}else{
   hint "Pionier erforderlich...";
};

Eine Kommentarfunktion ist in diesem Blog nicht vorgesehen.
Bei Problemen zum Skript bitte im Gametwitter.de Forum registieren und dort die Kommentarfunktion nutzen.