Einzelnen Beitrag anzeigen
Alt 14.05.2014, 06:05   #10 (permalink)
Ben-at-Arms
Newbie
 
Registriert seit: 14.05.2014
Beiträge: 7
Standard

Hallo,

bitte entschuldigt, wenn ich einfach so in diesen Thread platze. Ich suche nach ähnlichem

Mein Vorhaben ist es, bei Missionsstart an Ammo-Boxen, Verkehrsleitkegel, Fässer etc. eine AddAction anzubringen.

Das Ziehen dieser "Kleinlasten" soll mir/uns helfen und den Umgang mit dem IgiLoad-Script zu erleichtern.

Jetzt Mappe ich eigentlich schon mehrere Jahre, aber bis dato immer auf Beginner-Niveau was das Scripten anbelangt.

Vielleicht könnt ihr mir dabei behilflich sein?

Mein Plan:
Bei Missionsstart in der Init.sqf die Datei Greifer.sqf zu initialisieren, die alle von mir ausgesuchten Objekte mit Classnames in einem Array zusammenfasst.

Dieses Array sollte dann die AddAction aufgedrückt bekommen.

_Last addAction
["Ziehen","scripts\ziehen.sqf",nil,1,false,false,"" ,"!attached// and player distance _target<5"];};

komisch ist, wenn ich obigen Satz in die Init-Zeile jedes Objektes einfüge, kann ich es ziehen und wieder loslassen.

Das Einfügen in jede Initzeile möchte ich aber gerne umgehen, sodass das Script bei Missionsstart den ausgewählten Objekten diese AddAction verpassen soll.

Die drei Dateien soweit:

ziehen.sqf
Code:
_Last = _this select 0;
_spieler = _this select 1;
_act = _this select 2;

player setvariable ["drop",[_Last,_spieler,_act],true];

_spieler removeAction _act;
_spieler playMove "acinpknlmstpsraswrfldnon";//Für die DragGrab-Animation
sleep 2;

_Last attachTo [_spieler,[0,1.5,0.3]];
_Last setdir 90;


attached = true;
publicVariable "attached";
_actionId = _spieler addAction ["fallenlassen", "scripts\loslassen.sqf", [], 5, false, true, "", "(attached && (_target == _this))"];


_spieler setvariable ["getragenes",_Last];
 _spieler addMPEventHandler ["MPkilled", {detach ( _this select 0) getvariable "getragenes",attached=false;publicVariable "attached";}];
 
	//So funktioniert es schonmal nicht.
  //if (_Last isKindOf "Box_IND_Ammo_F") then {_Last addAction //["Ziehen","scripts\ziehen.sqf",nil,1,false,false,"","!attached// and player distance _target<5"];};


loslassen.sqf
Code:
_temp = player getvariable "drop";
_Last =  _temp select 0;
_spieler = _temp select 1;
_act = _temp select 2;

_spieler removeAction _act;
_spieler removeMPEventHandler ["killed",0]; 
//hint format ["%1",_temp];

detach _Last;
_Last setpos [(getpos _Last) select 0 , (getpos _Last) select 1 , 0.4];
_spieler switchMove "";
attached = false;
publicVariable "attached"; 
removeAllActions _spieler;

und Greifer.sqf - welche ich mit dem Init.sqf Eintrag:0 = execVM "scripts\Greifer.sqf"; aufrufe.
Code:
waitUntil { !(isNull player) };
waitUntil { time > 0 };
 
player setvariable ["drop",[_Last,_spieler,_act],true]; 
 
Lasten = ["Box_IND_Ammo_F","WL_GER_Back_Box_Flecktarn"];
 
{
 _Last = _x addAction["ziehen","scripts\ziehen.sqf"]
}forEach Lasten;
 
 hint "Greifer durchlaufen";
Ich hoffe, jemand von euch kann mich einsteigerfreundlich erleuchten

Geändert von Ben-at-Arms (14.05.2014 um 06:07 Uhr).
Ben-at-Arms ist offline