HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   Feststellen ob Sprengladung gelegt wurde (https://hx3.de/editing-scripting-187/feststellen-ob-sprengladung-gelegt-wurde-22542/)

[GNC]Lord-MDB 02.05.2013 18:26

Feststellen ob Sprengladung gelegt wurde
 
Hallo an alle

Ich habe hier ne Problem.
Und zwar würde ich gerne für eine PVP Liga Map es möglich machen das man Sprengladungen an ein Fahrzeug packen kann.
Also so das ich wenn ich die Sprengladung gelegt habe einen Actioneintrag habe um die Ladung ans Fahrzeug zu packen.
Ich habe da nun das Problem das ich noch keine Idee habe wie ich fest stellen kann das die Sprengladung gelegt gelegt wurde.Ich müste irgendwie an den Namen der gelegten Sprengladung kommen können um ihn dann mit attachTo an das Fahrzeug zu packen.

Hat da einer ne Idee oder so was ähnliches noch mal gemacht ?

burns 02.05.2013 18:31

Der FDF Mod hatte doch ne Funktion Satchels an Fahrzeuge zu pappen, weiss jetzt allerdings nicht ob OFP, ArmA1 oder ArmA2. Das wurde da auch gelöst ohne sie vorher gelegt zu haben, denke das ist der bessere (weil direktere) Weg.

Buliwyf 02.05.2013 19:24

Schau mal in dieses Addon. Ist zwar ArmA2, aber scripttechnisch sollte ein Grundlage vorhanden sein: >> click <<

;)

[GNC]Lord-MDB 02.05.2013 19:53

Ja vielen Danke Leute

Ich habe es inzwschen hin bekommen,ich hatte mich erinnert das ich das schon irgend mal wo gesehen hatte. Und nun geht nach dem Fälschen namen gesucht nicht nach dem Magazin sondern nach den Ammo muste ich suchen.
Dieses Script einfach per Addaction anhängen und fertig.

PHP-Code:



PRIVATE ["_unit","_tank","_bomb","_pic"];


sleep 1;
_unit player;
_tank = (nearestObjects[_unit,["car","truck","tank","wheeled_apc"],15]) select 0;
sleep 0.2;
_bomb = (nearestObject [_unit'PipeBombBase']);
sleep 0.2;
if (
isNull _tankexitWith {};
if (
isNull _bombexitWith {};
_thrown=true;
_bomb attachTo[_tank,[0,0,-1.5]];
_pic "A3\Weapons_F\Data\UI\gear_c4_charge_small_CA.paa";
hint composeText [parseText format ["<t align='left' size='%4'><img image='%3'></t>" +"<t align='center' size='1.25' shadow='true'>%1</t><t align='right' size='%4'><img image='%3'></t>" +"<br/>" +"<t align='center' size='1.0' shadow='true'>%2</t>","C4","Attached..",_pic,3.0]]; 


Vienna 03.05.2013 13:28

Das geht auch recht einfach mit einem "Fired" EventHandler. Da kann es keine Probleme geben wenn man mehrere Bomben anheften will.

Code:

temp = player addEventHandler
 [
  "Fired",
  {
  if (_this select 4 == "PipeBomb") then
    {
    if (count nearestObjects[player,["car","truck","tank"],10] > 0) then
      {
      _this select 6 attachTo[(nearestObjects[player,["car","truck","tank"],10])select 0,[0,0,-1.2]];
      player groupChat "Bombe an Fahrzeug angebracht!"
      }
    } 
  }
 ];

Ist auf Arma2 getestet. Die Namen der Bombe und Fahrzeuge sind erforderlichenfalls entsprechend anzupassen.

[GNC]Lord-MDB 03.05.2013 14:58

und der Eventhandler löst aus wenn man die Sprengladung legt ?
Der würde ja dann immer auslösen auch wenn ich garn die Absicht habe die Bombe an ein Fahrzeug anzuheften

Vienna 03.05.2013 19:07

Beim Legen der Bombe (nicht beim Zünden) löst der EventHandler aus.

Er wird dazu verwendet die ID der Bombe zu erfahren (_this select 6). Das ist treffsicherer als mit nearestObject.

Diese Zeile bindet die abgelegte Bombe an das Fahrzeug:
_this select 6 attachTo[(nearestObjects[player,["car","truck","tank"],10])select 0,[0,0,-1.2]];

Das geschieht nur, wenn ein Fahrzeug 10m im Umkreis der gelegten Bombe ist. Ist das nicht dauerhaft gewünscht, dann kann man den EventHandler bei Bedarf über eine Aktion starten und nach dem Legen einer Bombe wieder entfernen bzw. mit einer globalen Variablen das Anheften ein- und ausschalten.

[GNC]Lord-MDB 03.05.2013 22:24

jo das ist klar,frage ist nur ob ich dann jeder mal wenn der Addaction ausgeführt wurde wieder entfernen muss,weil sonst der Spieler nach 10 mal 10 "fire" Evendhandler ausgelöst hat.

Vienna 04.05.2013 13:13

Wenn du befürchtest, dass die Abfrage des EventHandlers das System zu sehr ausbremst, dann eben mit einer Aktion. Es sollte aber gesorgt werden, dass nur die unmittelbar beim Spieler liegende Bombe angesprochen wird und der Spieler über die Wirkung der Aktion informiert ist.

Skript: bombe_anheften.sqf
Code:

//Lokal für Player. Gelegte Bombe an Fahrzeug über Aktionsmenüpunkt befestigen.
//
//Aktion: player addAction["Bombe anheften","bombe_anheften.sqf",[],-1,false,true];

private ["_tb","_tv","_b","_v"];

_tb = "PipeBomb";                      //Name der Bombe 
_tv = ["car","truck","tank"];          //Namen der Objekte an die angeheftet werden darf

_b = nearestObject [player, _tb];      //Bombe in 1 Meter Umkreis vorhanden?
if (isNull _b or player distance _b > 1) exitWith {player groupChat "Keine Bombe in Reichweite!"};

_v = nearestObjects [player, _tv, 10]; //Anheft-Objekte in 10 Meter Umkreis vorhanden?
if (count _v == 0) exitWith {player groupChat "Kein Fahrzeug in Reichweite!"};

_b attachTo [_v select 0,[0,0,-1.2]];  //Bombe an Objekt anheften
player groupChat "Bombe an Fahrzeug angebracht!"


[GNC]Lord-MDB 04.05.2013 16:06

jo das ist besser,als der Eventhandler ;)


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