PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : KI Erzeugen via Auslöser mit angepassten Ausrüstungen.


zynon
12.10.2013, 16:08
Hallo Community

Mal eine frage, weiss jemand wie man Einheiten mit angepassten Ausrüstungen erzeugen kann?

Ich weiss wie einheiten erzeugen werden mit wegpunkten.
Doch die Angepassten einheiten die ich gerne erzeugen möchte, kann ich nicht via Auslöser erstellen.

Bevorzugte Ausrüstung:
Waffen,vesten,helme und klamotten.

hier mal ein beispiel script für das Erzeugen von Einheiten und Wegpunkte;
"I_Soldier_AAR_F" createUnit [getMarkerPos "born1",chef, "e1=this;",0.9,"captain"];
"I_Soldier_AAR_F" createUnit [getMarkerPos "born1",chef, "e2=this;",0.8,"Private"];
e1 doMove (getMarkerPos "wa1");
e2 doMove (getMarkerPos "wa1")

chef = Einheit Leader
e1 = Einheit
born1 = Respawnmarker
wa1 = Waypoint


Zusätzlich:
Weiss einer noch wie Respawn Punkte mit angepassten einheiten respawnt werden können? (ist für MP Missionen / Player Respawnpunkte)

zynon
12.10.2013, 17:53
Hab die Lösung gefunden.
Es war nicht mal so eine schwere arbeit. Das einzige was man machen muss sind eigene dateien erstellen.

und dies dann mit einem Trigger auslösen.

[player] exec "clothing.sqs";[player] exec "erzeugen.sqs"

Es besteht halt immer noch ein kleines problem.. und zwar das die Nachtsichtsgeräte nicht entfern werden (aufgrund von bugs)

Buliwyf
12.10.2013, 18:52
Alter! SQS? 2013? Na prost Mahlzeit... :daumen:

Drunken Officer
12.10.2013, 19:46
hier mal ein beispiel script für das Erzeugen von Einheiten und Wegpunkte;
"I_Soldier_AAR_F" createUnit [getMarkerPos "born1",chef, "e1=this;",0.9,"captain"];
"I_Soldier_AAR_F" createUnit [getMarkerPos "born1",chef, "e2=this;",0.8,"Private"];
e1 doMove (getMarkerPos "wa1");
e2 doMove (getMarkerPos "wa1")

chef = Einheit Leader
e1 = Einheit
born1 = Respawnmarker
wa1 = Waypoint


Kann ja sein, dass ich etwas überlesen habe, aber wo erzeugst du Wegpunkte?! Du läßt die Einheit e1 und e2 zu einem Wegpunkt laufen, dass ist wohl richtig.

Zum Thema Ausrüstung
removeallWeapons e1;
e1 removeMagazines "20Rnd_762x51_Mag"; //entfernt die MAgazine
e1 addWeapon "EBR_Rifle_F";

e1 addUniform "U_B_CombatUniform_mcam";

....
Einfach mal durchklicken, wenn du noch Pistolen oder Waffenzusätze entfernen willst.
http://community.bistudio.com/wiki/Category:Scripting_Commands_Arma_3

zynon
13.10.2013, 00:12
Nun ich dachte es sei ein Wegpunkt.
wenn ich e1 doMove (getMarkerPos "wa1"); eingebe.

und so sieht der code bei mir aus:

Erzeugen.sqf

"B_Soldier_F" createUnit [getMarkerPos "born1",chef, "e1=this;",0.9,"captain"];
"B_Soldier_F" createUnit [getMarkerPos "born1",chef, "e2=this;",0.8,"Private"];
e1 doMove (getMarkerPos "wa1");
e2 doMove (getMarkerPos "wa1")

clothing.sqf

removeHeadgear e1;
removeUniform e1;
removeAllWeapons e1;
e1 unassignItem "NVGoggles";
e1 removeItem "NVGoggles";
e1 addMagazine "16Rnd_9x21_Mag";
e1 addvest "V_BandollierB_rgr";
e1 addHeadgear "H_Bandanna_sgg";
e1 addUniform "U_C_Poloshirt_tricolour";


& so sieht meine neue Datei aus (Übersichtlicher)

opfec#4.sqf

ochef setDammage 1; grp1 = group chef; ochef setPosATL (ochef modelToWorld[0,0,-10])
################################Einheiten Ausrichten#################################

a1 setdir 190; ----------> Funktioniert nicht
a2 setdir 190; ----------> Funktioniert nicht

################################Einheiten Erzeugen###################################

"O_Soldier_F" createUnit [getMarkerPos "born2",ochef, "a1=this;",0.9,"captain"];
"O_Soldier_F" createUnit [getMarkerPos "born2",ochef, "a2=this;",0.8,"Private"];
"O_Soldier_F" createUnit [getMarkerPos "born2",ochef, "a3=this;",0.8,"Private"];
"O_Soldier_F" createUnit [getMarkerPos "born2",ochef, "a4=this;",0.8,"Private"];

################################Einheiten Ausrüsten##################################

removeHeadgear a1;
removeUniform a1;
a1 removeItem "NVGoggles"; ----------> Funktioniert nicht
a1 unassignItem "NVGoggles"; ----------> Funktioniert nicht
a1 addHeadgear "H_Shemag_khk";
a1 addUniform "U_C_Poloshirt_burgundy";

removeHeadgear a2;
removeUniform a2;
a2 removeItem "NVGoggles"; ----------> Funktioniert nicht
a2 unassignItem "NVGoggles"; ----------> Funktioniert nicht
a2 addHeadgear "H_ShemagOpen_khk";
a2 addUniform "u_c_poloshirt_redwhite";

removeHeadgear a3;
removeUniform a3;
a3 removeItem "NVGoggles"; ----------> Funktioniert nicht
a3 unassignItem "NVGoggles"; ----------> Funktioniert nicht
a3 addHeadgear "H_Shemag_olive";
a3 addUniform "U_C_Poloshirt_stripped";

removeHeadgear a4;
removeUniform a4;
a4 removeItem "NVGoggles"; ----------> Funktioniert nicht
a4 unassignItem "NVGoggles"; ----------> Funktioniert nicht
a4 addHeadgear "H_Shemag_tan";
a4 addUniform "U_C_Poloshirt_tricolour";

JanIs
16.10.2013, 23:03
Schmeiss mal am Anfang nach
removeHeadgear a1;
removeUniform a1;
folgende Zeile dazu:
removeallassigneditems a1;

Ich denke dann dürfte das blöde Nachtsichtglas weg sein.
Habe mich auch sehr lange damit herumgequält ...

Folgendes läuft bei mir anstandslos wenn ich sie in eine bestimmte Blickrichtung haben will:
{_x setDir 180} foreach [a1,a2,a3 usw.];

Und nebenbei bemerkt - falls es kein Flüchtigkeitsfehler beim Kopieren war:
e2 doMove (getMarkerPos "wa1");
Hier wirst du eine Fehlermeldung erhalten weil das ";" fehlt.

LG
Jan

zynon
17.10.2013, 15:07
Danke JanIs für den Hinweis.
werds mir heute abend mal anschauen.

Melde mich heute abend wieder und gebe dir auskunft obs funktioniert.
also bis dann.

JanIs
17.10.2013, 20:33
Hab mir den Script jetzt mal angeschaut und mir ist dabei folgendes aufgefallen:

1. Warum arbeitest du mit so vielen Markern?
Du kannst die Einheit ja genausogut zum "ochef" anstatt zum Marker createn:

"O_Soldier_F" createUnit [[(getPos ochef select 0)+1,(getPos ochef select 1)+1,0],grp1, "a1=this;",0.9,"captain"];
"O_Soldier_F" createUnit [(getPos ochef),grp1, "a2=this;",0.8,"Private"];
2. Gleiches gilt für die Wegpunkte. Du hast doch sicherlich andere Anhaltspunkte so dass du dir die zusätzlichen Marker sparen kannst.

3. Dein Ausrichten der Einheiten kann nicht funktionieren, da du den setDir Befehl gibst bevor die Einheit überhaupt created wurde.
Wenn du am Ende des Scripts

{_x setDir 180} foreach [a1,a2,a3,a4];hinzufügst, dann schauen sie auch in die gewünschte Richtung.

4. Wozu dient das "ochef setPosATL (ochef modelToWorld[0,0,-10])" ??
Das bewirkt ja nur, dass "ochef" in die Luft gewirbelt wird und dann erst wieder tot am Boden liegt. Warum löscht du den Kerl nicht einfach nachdem die erzeugte Einheit an seine tote Position gestellt wurden?

5. Mit der Befehlszeile

removeallassigneditems a1;haben die Jungs tatsächlich kein NV mehr ;-)

6. Ich glaube du willst doch die erzeugten Einheiten in der Gruppe "grp1" haben nicht ochef wie in deinem Script ...

Habe es gerade getestet und läuft einwandfrei ...

zynon
05.11.2013, 17:40
Hab mir den Script jetzt mal angeschaut und mir ist dabei folgendes aufgefallen:

1. Warum arbeitest du mit so vielen Markern?
Du kannst die Einheit ja genausogut zum "ochef" anstatt zum Marker createn:

"O_Soldier_F" createUnit [[(getPos ochef select 0)+1,(getPos ochef select 1)+1,0],grp1, "a1=this;",0.9,"captain"];
"O_Soldier_F" createUnit [(getPos ochef),grp1, "a2=this;",0.8,"Private"];
2. Gleiches gilt für die Wegpunkte. Du hast doch sicherlich andere Anhaltspunkte so dass du dir die zusätzlichen Marker sparen kannst.

3. Dein Ausrichten der Einheiten kann nicht funktionieren, da du den setDir Befehl gibst bevor die Einheit überhaupt created wurde.
Wenn du am Ende des Scripts

{_x setDir 180} foreach [a1,a2,a3,a4];hinzufügst, dann schauen sie auch in die gewünschte Richtung.

4. Wozu dient das "ochef setPosATL (ochef modelToWorld[0,0,-10])" ??
Das bewirkt ja nur, dass "ochef" in die Luft gewirbelt wird und dann erst wieder tot am Boden liegt. Warum löscht du den Kerl nicht einfach nachdem die erzeugte Einheit an seine tote Position gestellt wurden?

5. Mit der Befehlszeile

removeallassigneditems a1;haben die Jungs tatsächlich kein NV mehr ;-)

6. Ich glaube du willst doch die erzeugten Einheiten in der Gruppe "grp1" haben nicht ochef wie in deinem Script ...

Habe es gerade getestet und läuft einwandfrei ...

zu Punkt 1:
Ich wollte das die Einheiten am Marker respawnen, und die Einheiten in einer Gruppe sind.

zu Punkt 2:
Momentan hab ich kein Plan wie ich Wegpunkte erzeugen kann, arbeite mich noch ein.

zu Punkt 3:
Ach so! Dann werd ich dies so umsetzten, dass der befehl weiter unten ist.

zu Punkt 4:
Ich dachte es sei eine gute lösung für mein Problem.
Die Einheiten sollten in einer Grp respawnen (wenn Player im trigger ist)
doch dies klappt nicht ohne einen Teamleader der bereits auf der Karte ist.
Und da ich nicht will, das schon am beginn meiner Mission Einheiten sind, habe ich mich für diese Variante entschieden


zu Punkt 5:
Hab dank! werde es so schnellst wie möglich ausprobieren!

Clausewitz
05.11.2013, 23:16
noch nen paar Hinweise zu den Befehlen:

Das "removeuniform" , "removeheadgear" etc. kannst du dir dann sparen, wenn du unmittelbar eine andere Uniform oder Mütze zuweist. ArmA3 überschreibt einfach die vorhandene Kleidung.
Es reicht, Einheit adduniform "uniformType" zu schreiben.

Ausrüstung entfernen:

geht in zwei Schritten:

1) Einheit unassignitem "item"
2) Einheit removeitem "item"

bei 1) wird das Teil (z.B. NVGoggles) vom Kopf des Charakters in das Inventar verschoben. Und erst wenn es da ist, kann man es gezielt mit "removeitem" tatsächlich komplett entfernen.

Umgekehrt gehts natürlich genauso:

1) Einheit additem "item"
2) Einheit assignitem "item"

bei 1) landet es im Inventar, bei 2) wird es verwendet bzw. aufgesetzt.

Hat mich ne Stunde gekostet, bis ich das raushatte, aber nun ist es nützlich...

zynon
27.09.2014, 09:14
Ich weiss, dass das thema hier schon lange abgeschlossen ist. Leider habe ich jetzt wieder die gleiche frage, nur diesmal geht es nicht darum das die einheiten respawnt werden sondern, wie ich es hinkriege das ich kein ochef beginn der mission auf der map haben muss.

meine idee war:
das ich die einheit: a1 als "chef" mache, leider hat das bisher nicht richtig funktioniert...

PS; Ja ich war ein jahr inaktiv ^^

################################Einheiten Erzeugen###################################

"O_Soldier_F" createUnit [getMarkerPos "born2",a1, "a1=this;",0.9,"captain"];
"O_medic_F" createUnit [getMarkerPos "born2",a1, "a2=this;",0.8,"Private"];
"O_Soldier_F" createUnit [getMarkerPos "born3",a1, "a3=this;",0.8,"Private"];
"O_Soldier_F" createUnit [getMarkerPos "born3",a1, "a4=this;",0.8,"Private"];
"O_Soldier_A_F" createUnit [getMarkerPos "born3",a1, "a5=this;",0.8,"Private"];
a1 doMove (getMarkerPos "wa1");

zynon
27.09.2014, 10:16
Habe wahrscheinlich die lösung gefunden im Mr.Murray's Guide von Arma 2
hoffe das es noch funktioniert mit dem alten script:

Grp1 = Creategroup EAST;
_Leader="SquadLeaderE" createUnit [getMarkerPos "GrpM", Grp1, "Grp1=this", 1, "Sergeant"];
_Unit2="SoldierEB" createUnit [getMarkerPos "GrpM", Grp1, "", 1, "Corporal"];
_Unit3="SoldierEB" createUnit [getMarkerPos "GrpM", Grp1, "", 1, "Corporal"];
_Unit4="SoldierEG" createUnit [getMarkerPos "GrpM", Grp1, "", 1, "Corporal"];
_Unit5="SoldierEMG" createUnit [getMarkerPos "GrpM", Grp1, "", 1, "Corporal"];
_Unit6="SoldierEAT" createUnit [getMarkerPos "GrpM", Grp1, "", 1, "Corporal"];
_Unit7="SoldierESniper" createUnit [getMarkerPos "GrpM", Grp1, "", 1, "Corporal"];
exit

zynon
27.09.2014, 10:46
Ok Funktioniert einwandfrei! Hier die komplette Codierungen:

################################Gruppe Erzeugen###################################
truppe1 = creategroup EAST;

################################Einheiten Erzeugen###################################

_Leader="O_Soldier_F" createUnit [getMarkerPos "born2",truppe1, "a1=this;",0.9,"captain"];
_Unit2="O_medic_F" createUnit [getMarkerPos "born2",truppe1, "a2=this;",0.8,"Private"];
_Unit3="O_Soldier_F" createUnit [getMarkerPos "born3",truppe1, "a3=this;",0.8,"Private"];
_Unit4="O_Soldier_F" createUnit [getMarkerPos "born3",truppe1, "a4=this;",0.8,"Private"];
_Unit5="O_Soldier_A_F" createUnit [getMarkerPos "born3",truppe1, "a5=this;",0.8,"Private"];

################################Einheiten Ausrüsten##################################

removeHeadgear a1;
removeUniform a1;
removeallassigneditems a1;
a1 addHeadgear "H_Shemag_khk";
a1 addUniform "U_C_Poloshirt_burgundy";

removeHeadgear a2;
removeUniform a2;
removeallassigneditems a2;
a2 addHeadgear "H_ShemagOpen_khk";
a2 addUniform "u_c_poloshirt_redwhite";

removeHeadgear a3;
removeUniform a3;
removeallassigneditems a3;
a3 addHeadgear "H_Shemag_olive";
a3 addUniform "U_C_Poloshirt_stripped";

removeHeadgear a4;
removeUniform a4;
removeallassigneditems a4;
a4 addHeadgear "H_Shemag_tan";
a4 addUniform "U_C_Poloshirt_tricolour";

removeHeadgear a5;
removeUniform a5;
removeallassigneditems a5;
a5 addHeadgear "H_Shemag_khk";
a5 addUniform "U_C_Poloshirt_burgundy";

################################Einheiten Ausrichten#################################

a1 setDir -190;
a2 setDir -190;


################################Einheiten/Gruppe Bewegen nach#################################


a1 Move (getMarkerPos "wa1");


Panzer / Fahrzeuge mit Einheiten erstellen:

################################Panzer Erzeugen###################################
panzer1="rds_t34_aaf_01" createVehicle getMarkerPos "Marker1"; panzer1 setdir 190;



################################Einheiten Erzeugen###################################
truppe1 = creategroup EAST;

_Leader="O_Soldier_F" createUnit [getMarkerPos "Marker1",truppe1, "a1=this;",0.9,"captain"];
_Unit2="O_medic_F" createUnit [getMarkerPos "Marker1",truppe1, "a2=this;",0.8,"Private"];
_Unit3="O_Soldier_F" createUnit [getMarkerPos "Marker1",truppe1, "a3=this;",0.8,"Private"];


################################Einheiten Ausrüsten##################################

removeHeadgear a1;
removeUniform a1;
removeallassigneditems a1;
a1 addHeadgear "H_Shemag_khk";
a1 addUniform "U_C_Poloshirt_burgundy";

removeHeadgear a2;
removeUniform a2;
removeallassigneditems a2;
a2 addHeadgear "H_ShemagOpen_khk";
a2 addUniform "u_c_poloshirt_redwhite";

removeHeadgear a3;
removeUniform a3;
removeallassigneditems a3;
a3 addHeadgear "H_Shemag_olive";
a3 addUniform "U_C_Poloshirt_stripped";


################################Einheiten Einsteigen#################################

a1 moveInCommander panzer1;
a2 moveInGunner panzer1;
a3 moveInDriver panzer1;

################################Einheiten/Gruppe Bewegen nach#################################


a1 Move (getMarkerPos "wa1");