PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zivilisten greifen BLUFOR-Einheiten an?


Encounter118
12.06.2013, 22:11
Hey Leute,
ich will das so machen das man per ActionMenü mit dem Zivilist reden kann (per Actionmenüeintrag) und der Zivilist dann ne Waffe zieht und auf einen schießt. Aber ich möchte das sobald man den Zivilisten erschießt, links unten NICHT steht 'a Civilian was killed by ...' und ich möchte das der Zivilist erst später im Spiel zur OPFOR-Einheit oder feindlichen Einheit wird. Allerdings soll der Zivilist nicht auf Wiederständische schießen und ich möchte keine ganzen Seiten verfeinden. (Kein 'side setFriend [side,0])

Init vom Zivilist:
IID = Test addAction ["Reden","WaffenZivi.sqf",[this]];

WaffenZivi.sqf:
_zivi = _this select 0; //Der Zivilist

_zivi addMagazine "6Rnd_45ACP";
_zivi addMagazine "6Rnd_45ACP";
_zivi addWeapon "revolver_EP1";
_zivi setFriend [West,0];
_zivi setBehaviour "COMBAT";

exit

Wolkenbeisser
13.06.2013, 10:30
Ich würde versuchen, das so zu lösen (vorausgesetzt es sind nicht zuviele schiesswütige Zivilisten):


Setze eine OPFOR-Einheit im Editor auf die Karte (das wird der spätere Zivilist), nenne sie ZIV1, und schreibe in seine Init-Zeile: removeAllWeapons this; removeAllItems this; this setCaptive true. Hänge ausserdem das gewünschte AddAction in geeigneter Weise an.
Setze einen Zivilisten mit dem gewünschten Aussehen auf die Karte und nenne ihn Dummy1
Speichere die Mission und Alt/Tab zum Verzeichnis, wo die Missions-Datei liegt. Suche darin mit Ctrl. + F nach dem Begriff "Dummy1" und kopiere dann dessen class_name (oder wie das heisst). Suche dann mit Ctrl. + F die OPFOR-Einheit "ZIV1" und ersetze deren class_name mit demjenigen des Dummy1. Speichern nicht vergessen.
Alt/Tab in den A2-Editor und neu laden der Mission (damit die veränderte Missionsdatei frisch gelesen wird). Nun hat Deine OPFOR-Einheit ZIV1 das aussehen des Zivilisten Dummy1
Sobald das AddAction am ZIV1 ausgeführt wird löst Du folgendes aus: ZIV1 setCaptive false; ZIV1 addMagzine...; ZIV1 addWeapon...
Resultat:
ZIV1 sieht aus wie ein Zivilist und da er zu Beginn keine Waffe hat und "gefangen" ist, wird er nicht von anderen Zivilisten zu unterscheiden sein. Sobald Du ihn via AddAction auf "ungefangen" stellst, und ihm eine Waffe gibst, benimmt er sich wie ein normaler OPFOR. Er zieht und schiesst. Ausserdem kommt keine "Zivilistenkillmeldung" wenn er tot ist, denn es ist ja eine OPFOR-Einheit (sie ist auch in der Farbe rot im Editor sichtbar). Auch die Strafpunkte für den Spieler bei Zivilistenmord entfallen. Des weiteren kannst Du ZIV1 jederzeit auch ohne AddAction auf gefangen/ungefangen (und bewaffnet/unbewaffnet) stellen.

Eins noch:
Solltes Du in Versuchung geraten ZIV1 per Doppelklick zu öffnen und Änderungen an ihm durchzuführen, NACHDEM Du sein Aussehen geändert hast, wirst Du feststellen, dass er danach wieder sein OPFOR-Aussehen hat. Du änderst sein Aussehen daher am besten erst ganz am Schluss, wenn alles funktioniert und getestet ist.

Vienna
13.06.2013, 13:26
Wie du einer OPFOR-Einheit in der mission.sqm Zivilkleider verpassen kannst hat dir Wolkenbeisser bereits beschrieben. Dazu noch ein Beispiel:

mission.sqm

...
side="EAST";
vehicle="RU_Soldier";
leader=1;
skill=1;
text="ZIV1";
...
"RU_Soldier" ersetzen z.B. durch "Rocker1"

Falls noch nicht geschehen, Skill auf 1 setzen!


Im Folgenden der Code wie diese Einheit das Feuer nach Betätigung der Aktion eröffnet:

Skript: Aktion.sqf

/* Anwendung Info beginn

Bewaffnet die Person der Aktion beim Aktionsaufruf und setzt sie auf Kampf.

Skill (Fähigkeiten) der Person auf Maximum setzen!!
In die Initialisierungszeile der Person folgendes reinkopieren:

this allowFleeing 0;
this setBehaviour "CARELESS";
this setCombatMode "BLUE";
removeAllWeapons this;
this addAction["Hallo! Was machst Du hier?","Aktion.sqf",[],5,true,true];

Anwendung Info Ende */

Private "_unit";

_unit = _this select 0; //Unit mit der Aktion

//Aktivierung auf Kampf und bewaffnen
_unit setBehaviour "SAFE";
_unit setCombatMode "YELLOW";
removeAllWeapons _unit;
_unit addMagazine "7Rnd_45ACP_1911";
_unit addMagazine "7Rnd_45ACP_1911";
_unit addWeapon "Colt1911";
_unit selectWeapon "Colt1911";

//falls gewünscht die Aktion entfernen
_unit removeAction (_this select 2);

//falls gewünscht wieder auf achtloses Verhalten setzen und entwaffnen
sleep 15;
_unit allowFleeing 0;
_unit setBehaviour "CARELESS";
_unit setCombatMode "BLUE";
removeAllWeapons _unit;

Was in die Initialisierungszeile der Einheit zu kopieren ist steht in der Info des Skripts.

Funktioniert recht gut, solange die KI nicht "abgelenkt" ist. Dann helfen auch keine Ziel- und Feuerbefehle. Die KI ist oft recht blöde!

Encounter118
14.06.2013, 13:19
Also soweit geht alles ganz gut, auch das aussehen zu ändern hat funktioniert. Aber es steht unten immer noch 'A Civilian was killed by..' obwohl ich setCaptive false gemacht habe.

Btw. es ist wichtig das die Schrift unten weg ist, weil das eine Mission mit vielen Zivis ist und ich wissen will wann jemand einen unschuldigen getötet hat.

Edit: Und Wegpunkte wollen sie auch nicht ablaufen..

Wolkenbeisser
14.06.2013, 14:06
Hmmm. Könnte es sein, dass die Meldung kommt, weil die Einheit - obwohl sie OPFOR ist - ein "Zivilistenmodell" übergestülpt hat? Vielleicht weiss sonst noch jemand etwas dazu.

Betreffend setCaptive muss ich meinen früheren Post noch präzisieren: Wird eine Einheit auf setCaptive true gesetzt, dann wird dadurch vor allem die KI der Gegenseite beeinflusst. Ein Beispiel: Eine "gefangene" aber bewaffnete Einheit wird weiterhin auf Gegner schiessen, die Gegner schiessen jedoch nicht zurück.

Will man also, dass sich (der bewaffnete) ZIV1 neutral ggü BLUFOR verhält (und eben nicht nur umgekehrt), müsste man sowohl die BLUFOR-Einheiten als auch ZIV1 auf setCaptive true stellen. Da ZIV1 jedoch zu Beginn keine Waffe hat (und man sie ihm bei Bedarf ja auch später wieder wegnehmen kann) spielt das im vorliegenden Szenario eher eine untergeordnete Rolle.

Das Nicht-Ablaufen der Wegpunkte hat m.E. einen anderen Grund. Es hat nicht zwingend mit den oben genannten Punkten zu tun.

Encounter118
14.06.2013, 14:59
Ja das obere könnte man evtl. mit "this setfriend [West,0]" machen.
Aber was ich herrausgefunden habe ist, wenn ich MCC benutze und Armored Civilians mache, und die dann töte, kommt die Meldung nicht.
Ich habe mir schon versucht das alles anzugucken, aber ich komme damit irgendwie nicht richtig klar und werde daraus nicht schlau.

Bier AIG Tartar
01.09.2013, 14:40
Hy


habe hier ein KI spwan script , das Problem ich möchte das diese Ki wenn sie auf der Map spwanen direkt feindlich gegen Zivilisten sind .Nur ich bekomme es nicht hin darum brauche ich dringend -hilfe .


Hier das Script



//Aufruf: i = ["marker"] execVM "create.sqf"

_pos = _this select 0;

RESISTANCE setFriend [EAST,0.5];
CIVILIAN setFriend [EAST,0.5];
EAST setFriend [RESISTANCE,0.5];
EAST setFriend [CIVILIAN,0.5];

If (isServer) then {
Sleep 10;
While {true} do {
_grp = createGroup EAST;
_u1 = "Ins_Soldier_2" createUnit [(getMarkerPos _pos), _grp,"u1 = this",0.6,"CORPORAL"];
_u2 = "Ins_Soldier_2" createUnit [(getMarkerPos _pos), _grp,"u2 = this",0.6,"PRIVATE"];
_u3 = "Ins_Soldier_2" createUnit [(getMarkerPos _pos), _grp,"u3 = this",0.6,"PRIVATE"];
_u4 = "Ins_Soldier_2" createUnit [(getMarkerPos _pos), _grp,"u4 = this",0.6,"PRIVATE"];
[_grp,getMarkerPos _pos, 100] call bis_fnc_taskPatrol;

WaitUntil {sleep 1; ! alive u1 && ! alive u2 && ! alive u3 && ! alive u4};
hint "Loop geht weiter";
Sleep 30;
};
};

Habe auch schon eine east ki auf die map gestellt mit Anwesenheit 0% hat aber auch nicht geholfen .


Die Zivilisten und die Seite west , Guer sind spielbare Einheiten nur die East sind KI .


wer hat eine Idee und weiss was ich machen kann damit die gespwante East ki direkt auf die Zivilisten schießt sobald sie gesichtet wird .


Danke schon mal im voraus


Gruß

Tartar

Vienna
01.09.2013, 16:27
Soldaten greifen keine Zivilisten an. Wenn man das will, dann wird im Editor in Verbindung mit der Mission.sqf feindlichen Einheiten die Bekleidung von Zivilisten verpasst.