HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-187/)
-   -   KI Erzeugen via Auslöser mit angepassten Ausrüstungen. (https://hx3.de/editing-scripting-187/ki-erzeugen-via-ausloeser-angepassten-ausruestungen-23013/)

zynon 12.10.2013 15:08

KI Erzeugen via Auslöser mit angepassten Ausrüstungen.
 
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;
Code:

"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 16:53

KI Erzeugen via Auslöser mit angepassten Ausrüstungen. (Lösung)
 
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.

Code:

[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 17:52

Alter! SQS? 2013? Na prost Mahlzeit... :daumen:

Drunken Officer 12.10.2013 18:46

Zitat:

Zitat von zynon (Beitrag 461186)
hier mal ein beispiel script für das Erzeugen von Einheiten und Wegpunkte;
Code:

"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/C...ommands_Arma_3

zynon 12.10.2013 23: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

Code:

"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

Code:

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

Code:

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 22: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 14: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 19: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:
Code:

"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
Code:

{_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
Code:

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 16:40

Zitat:

Zitat von JanIs (Beitrag 461769)
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:
Code:

"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
Code:

{_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
Code:

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 22: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 08: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 ^^

Code:

################################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 09:16

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

Code:

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 09:46

Ok Funktioniert einwandfrei! Hier die komplette Codierungen:

Code:

################################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:

Code:

################################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");



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