27.02.2011, 12:32 | #21 (permalink) |
Registriert seit: 20.05.2009
Beiträge: 605
|
Hmmm verdammt was ist nun schon wieder falsch ?!?!?! nach meinem verständniss habe ich unten nun stehen Code:
wenn _animi == gewünschtebewegung und _x ist nicht auf ARRESTED gesetzt dann { _x = ARRESTED _x = Addaction hinzufügen } Sonst { wenn _x aufderflucht dann _animi gleich bewegung von _X wenn bewegung von _x die gewünschte bewegung dann keinebewegung. sonst { _x führt die gewünschte bewegung aus } } Code:
while {true} do { if (_animi == "AmovPercMstpSsurWnonDnon" AND not (_x getVariable "ARRESTED")) then { _x setVariable ["ARRESTED", true, true]; _x addAction ["Arrest","surrender\gotojail.sqf"]; } else{ {if (fleeing _x ) then { _animi = animationState _x; if (_animi == "AmovPercMstpSsurWnonDnon") then { _x disableAI "ANIM"; } else { player groupChat format["%1 Feind? %3 Animation %2",_x,_animi,player countEnemy[_x]==1]; _x switchmove "AmovPercMstpSsurWnonDnon"; }; };} forEach nearestObjects [player, ["Man"], 50]; sleep 0.1; }; }; |
27.02.2011, 12:42 | #22 (permalink) |
das sollte wohl eher so gemeint sein...
Code:
while {true} do { {if (fleeing _x ) then { _animi = animationState _x; if (_animi == "AmovPercMstpSsurWnonDnon" AND not (_x getVariable "ARRESTED")) then { _x disableAI "ANIM"; _x addAction ["Arrest","surrender\gotojail.sqf"]; _x setVariable ["ARRESTED", true, true]; } else { player groupChat format["%1 Feind? %3 Animation %2",_x,_animi,player countEnemy[_x]==1]; _x switchmove "AmovPercMstpSsurWnonDnon"; }; };} forEach nearestObjects [player, ["Man"], 50]; sleep 0.1; };
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
27.02.2011, 12:48 | #23 (permalink) |
Registriert seit: 20.05.2009
Beiträge: 605
|
Funktioniert leider nicht , nun laufen einfach alle soldaten weg ohne irgendwas zu machen.... |
27.02.2011, 12:51 | #24 (permalink) |
Registriert seit: 11.03.2005
Ort: HH
Alter: 52
Beiträge: 1.930
|
Die Zeile _x setVariable ["ARRESTED", true, true]; muss nicht in das Script, sondern in das, welches Du per ActionMenu-Eintrag aufrufst. Also in die gotojail.sqf...
Dort musst Du das _x ersetzen, durch zB _this select 0. |
27.02.2011, 13:02 | #25 (permalink) |
Registriert seit: 20.05.2009
Beiträge: 605
|
Derzeit taucht der addaction eintrag nicht bei den ki einheiten auf ?! Um evtl. verwirrung zu vermeiden hier mal der zwischenstand.... ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ Derzeit gibt es 2 Datein... surrender.sqf gotojail.sqf Die surrender.sqf ruffe ich in der init.sqf auf. Code:
execVM "surrender\surrender.sqf"; Code:
while {true} do { {if (fleeing _x ) then { _animi = animationState _x; if (_animi == "AmovPercMstpSsurWnonDnon" AND not (_x getVariable "ARRESTED")) then { _x disableAI "ANIM"; _x addAction ["Arrest","surrender\gotojail.sqf"]; _x setVariable ["ARRESTED", true, true]; } else { player groupChat format["%1 Feind? %3 Animation %2",_x,_animi,player countEnemy[_x]==1]; _x switchmove "AmovPercMstpSsurWnonDnon"; }; };} forEach nearestObjects [player, ["Man"], 50]; sleep 0.1; }; Code:
_unit = _this select 0; if(alive _unit) then { sleep 5; _unit setpos getmarkerpos "jail"; [_unit] joinSilent group prisoner; _unit allowdammage false; _unit setUnitPos "Up"; dostop _unit; _unit playMoveNow "AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon"; _unit disableAI "MOVE"; _unit disableAI "ANIM"; }; |
27.02.2011, 13:07 | #26 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Wie ich bereits sagte, übernimmst du den Flüchtenden ohne Waffen in deine Gruppe. Dann weist du ihm die Aktion zu.
Durch die Abfrage, ob er in deiner Gruppe ist, sind Wiederholungen ausgeschlossen. Wenn er aus Reichweite der Routine ist, dann entfernst du ihn wieder aus deiner Gruppe. Solange er in deiner Gruppe ist, kannst du Animationen vergessen. Im Arrest "frierst" du ihn dann mit den Händen über dem Kopf ein. Es ist von Vorteil wenn du ihn in deine Gruppe übernimmst, dann läuft er automatisch zu dir und du kannst dann seine Aktion anklicken. Allerdings könntest du ihn auch in der Routine -ohne Gruppenübernahme und Aktion- gleich in den Arrest beamen. Du setzt die Animation und den Bewegungsstop, dann beamst du ihn in den Arrest. Code:
while {true} do { { if (fleeing _x and player countEnemy[_x]==1) then { //Ist der Fliehende noch nicht in der Gruppe des Spielers? if (NOT(_x in units group player)) then { removeAllWeapons _x; // dem "Gefangenen" alle Waffen entfernen // Den Flüchtenden in die Gruppe des Spielers aufnehmen [_x] joinSilent group player; //Der Spieler erhält die Kontrolle über _x //Aktion dem "Gefangen" hinzufügen _x addAction ["Arrest","surrender\gotojail.sqf"]; // Achtung! im Skript der Aktion ist der Gefangene aus der Gruppe zu entfernen! // Natürlich erst dann, wenn er außer "Reichweite" dieser Routine ist. } } } forEach nearestObjects [player, ["Man"], 50]; sleep 1 }; |
27.02.2011, 13:31 | #27 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Wenn du die KI nicht in deine Gruppe aufnehmen willst, dann kannst du die Wiederholung in der schleife auch so verhindern:
Code:
while {true} do { { if (fleeing _x and player countEnemy[_x]==1) then { if (NOT(stopped _x)) then { _x stop true; removeAllWeapons _x; _x switchMove "AmovPercMstpSsurWnonDnon"; _x disableAI "ANIM"; ...; ...; } } } forEach nearestObjects [player, ["Man"], 50]; sleep 1 } Geändert von Vienna (27.02.2011 um 13:33 Uhr). |
27.02.2011, 13:34 | #28 (permalink) |
Registriert seit: 20.05.2009
Beiträge: 605
|
Das script funktioniert soweit , allerdings nur wenn ich den fett markierten bereich rauslösche. sonsten hat es keinen effect auf die flüchtenden einheiten. if (fleeing _x and player countEnemy[_x]==1) auch das mit dem addaction eintrag funktioniert nun vernünftig. die einheiten werden nach dem ins gefängniss beamen einer anderen gruppe zu geordnet und fliegen somit aus meiner gruppe raus. Habe auch in der gotojail.sqf noch die animation hinzugefügt, so das wenn man einen typen verhaftet, er die arme hochnimmt und dann nach 10 sek weggebeamt wird. gotojail.sqf Code:
_unit = _this select 0; if(alive _unit) then { _unit playMoveNow "AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon"; _unit disableAI "MOVE"; _unit disableAI "ANIM"; sleep 10; _unit setpos getmarkerpos "jail"; [_unit] joinSilent group prisoner; _unit allowdammage false; _unit setUnitPos "Up"; dostop _unit; }; |
27.02.2011, 14:06 | #29 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Wenn das mit diesem Abfrageteil and player countEnemy[_x]==1 nicht funktioniert, dann sind deine Testsoldaten keine Feinde.
Der Teil ist notwendig, damit eigene fliehende Einheiten nicht auch von der Routine betroffen sind. |
27.02.2011, 15:36 | #30 (permalink) |
Registriert seit: 20.05.2009
Beiträge: 605
|
Ohm das problem war das ich zu testzwecken der ki gleich in der init der einheit die waffen entzogen habe, dardurch wurde sie wohl nicht als feind erkannt. Nun scheint alles zu funktionieren... werde das nun mal im "kampf" erproben. ~~~~~~~~~~~~~~~ Surrender script ~~~~~~~~~~~~~~~ v.1 beta ~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ Danke an euch (Vienna, Psychobastard, Buliwyf) ohne euch währe es sicherlich nur eine idee geblieben. aufruf über die init.sqf Code:
execVM "surrender\surrender.sqf"; Code:
// ----------------------------------------------- // Author: Anemia // welcome to the jungle // ----------------------------------------------- while {true} do { { if (fleeing _x and player countEnemy[_x]==1) then { //Ist der Fliehende noch nicht in der Gruppe des Spielers? if (NOT(_x in units group player)) then { removeAllWeapons _x; // dem "Gefangenen" alle Waffen entfernen // Den Flüchtenden in die Gruppe des Spielers aufnehmen [_x] joinSilent group player; //Der Spieler erhält die Kontrolle über _x //Aktion dem "Gefangen" hinzufügen _x addAction ["Arrest","surrender\gotojail.sqf"]; player groupChat format["%1 Feind? %3 Animation %2",_x,_animi,player countEnemy[_x]==1]; // Achtung! im Skript der Aktion ist der Gefangene aus der Gruppe zu entfernen! // Natürlich erst dann, wenn er außer "Reichweite" dieser Routine ist. } } } forEach nearestObjects [player, ["Man"], 50]; sleep 1 }; Code:
// ----------------------------------------------- // Author: Anemia // welcome to the jungle // ----------------------------------------------- _unit = _this select 0; if(alive _unit) then { _unit playMoveNow "AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon"; _unit disableAI "MOVE"; _unit disableAI "ANIM"; sleep 10; _unit setpos getmarkerpos "jail"; [_unit] joinSilent group prisoner; _unit allowdammage false; _unit setUnitPos "Up"; dostop _unit; }; Nun habe ich noch eine weitere hürde entdeckt. Das script wie es ist erkennt nun fliehende feindliche einheiten. Über das Surrender Modul verhalten sich die KI einheiten allerdings so das sie erst mit waffe weg laufen, wenn sie sich dann ergeben legen sie die waffen nieder und heben die hände über den kopf. Diese einheiten fliehen dann ja nicht sondern haben sich schon ergeben. Dardurch fallen sie durch das rasta des scriptes Dafür dache ich kann ich eine abfrage einbauen ob eine feindliche einheit in meinem umkreis die animation ausführt, es funktioniert aber mal wieder nicht... Code:
// ----------------------------------------------- // Author: Anemia // welcome to the jungle // ----------------------------------------------- while {true} do { { _animi = animationState _x; if (_animi == "AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon" AND side _x == east OR side _x ==CIV) then { // Den Flüchtenden in die Gruppe des Spielers aufnehmen [_x] joinSilent group player; //Der Spieler erhält die Kontrolle über _x //Aktion dem "Gefangen" hinzufügen _x addAction ["Arrest","surrender\gotojail.sqf"]; } if (fleeing _x and player countEnemy[_x]==1) then { //Ist der Fliehende noch nicht in der Gruppe des Spielers? if (NOT(_x in units group player)) then { removeAllWeapons _x; // dem "Gefangenen" alle Waffen entfernen // Den Flüchtenden in die Gruppe des Spielers aufnehmen [_x] joinSilent group player; //Der Spieler erhält die Kontrolle über _x //Aktion dem "Gefangen" hinzufügen _x addAction ["Arrest","surrender\gotojail.sqf"]; player groupChat format["%1 Feind? %3 Animation %2",_x,_animi,player countEnemy[_x]==1]; // Achtung! im Skript der Aktion ist der Gefangene aus der Gruppe zu entfernen! // Natürlich erst dann, wenn er außer "Reichweite" dieser Routine ist. } } } forEach nearestObjects [player, ["Man"], 50]; sleep 1 }; Mir sind 2 animationen bekannt , die den gleichen effeckt zu haben scheinen. AmovPercMstpSnonWnonDnon_AmovPercMstpSsurWnonDnon und AmovPercMstpSsurWnonDnon scheinen den gleichen effekt zu haben, deshalb hab ich das script oben auch schon in beiden varriationen getestet , beides leider ohne erfolg. |
27.02.2011, 17:30 | #31 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Die KI flieht mit und ohne Waffen. Wenn sie dann in deiner Gruppe ist, so flieht sie nicht mehr. Der Status fürs Fliehen ist dann aufgehoben.
So wäre die Abfrage, ob die KI in deiner Gruppe ist, eigentlich nicht notwendig. Wie dieses Beispiel zeigt. Auch wird dir hier nicht nur der Feindstatus, sondern auch der Fluchtstatus angezeigt. Code:
// ----------------------------------------------- // Author: Anemia // welcome to the jungle // ----------------------------------------------- while {true} do { { if (fleeing _x and player countEnemy[_x]==1) then { removeAllWeapons _x; // dem "Gefangenen" alle Waffen entfernen // Den Flüchtenden in die Gruppe des Spielers aufnehmen [_x] joinSilent group player; //Der Spieler erhält die Kontrolle über _x //Aktion dem "Gefangen" hinzufügen _x addAction ["Arrest","surrender\gotojail.sqf"]; player groupChat format["%1 Feind? %2 | Fluchtstatus? %3",name _x, player countEnemy[_x]==1,fleeing _x]; } } forEach nearestObjects [player, ["Man"], 50]; sleep 1 }; |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Beta-Patch für OpA erschienen | det99 | Community | 1429 | 18.07.2014 16:51 |
Day & Weather Script | Moerderhoschi | Editing & Scripting | 13 | 02.12.2012 10:29 |
UAV Modul nur für den Teamleader | SniperWolf | Editing & Scripting | 2 | 24.01.2011 15:58 |
marker über script erzeugen | hypercop | Editing & Scripting | 2 | 28.08.2010 22:40 |
Improved Bullet Cam Script | miromanu | Editing & Scripting | 3 | 21.08.2010 01:01 |