Thema: Array juchey
Einzelnen Beitrag anzeigen
Alt 12.08.2015, 11:55   #8 (permalink)
Nokman
50 Beiträge100 Beiträge250 Beiträge
 
Registriert seit: 10.10.2006
Beiträge: 263
Standard

Zitat von wolkenstuermer Beitrag anzeigen

Zwei Fragen hätte ich noch:

Das mit den privates hast du eingefügt, damit die Werte beim erneuten Aufrufen nicht überschrieben werden, oder?

um es einfach zu sagen, Ich habe die Definiert das es die gibt weil er sonst ausserhalb der foreach nicht weis das die einen Wert hat.
Foreach ist ein anderer Raum(bereiche im Script) in der Wohnung(gesamte Script). Ohne das Ich dir jetzt sage(private [""]) das jemand im nebenraum ist weist du es nicht ausser du schaust nach.

Wie Drunken Officer schon als beispiel sagte gibt es neben denn noch 100 weitere möglichkeiten.

du kanst eine globale variable verwenden

MeineSoldaten = [];
{
hier werden die einheiten erstellt und in _list1 geschrieben
}
MeineSoldaten pushback _list1;

Somit würden die soldaten aus _list1 (lokal) in die MeineSoldaten(global) reingeschoben werden ans ende.

Dann kanst du zb da alle löschen lassen mit

{deleteVehicle _x;} forEach forEach MeineSoldaten; // da sind alle weg

Du kanst es auch in bereiche nach erstellung sortieren

Jetzt wird jedes mal wenn du den Script aufrufst ne neuer bereich in der Globalen erstellt.
MeineSoldaten pushback [_list1];
dann heist der löschbefehl
{deleteVehicle _x;} forEach (MeineSoldaten select ZAHL);

Wichtig ist zu denn was ich dir hier sage Schaue dir https://community.bistudio.com/wiki/...ommands_Arma_3 an darin stehen die ganzen befehle und was die machen wie select foreach etc. einfach suchfunktion des browser (strg +f) verwenden.

Code:
private ["_grp1","_list1","_unit","_ki"];
if (isnil "MeineSoldaten") then { //isnil MeinSoldat sobald der einmal ausgeführt wurde überspringt er denn bereich.
	MeineSoldaten = [];
	kiloeschen = { //ist die Funktion (ist in einer {} )die in Addaction ausgeführt werden soll
		private ["_c","_del"];
		_del = [];
		if (count MeineSoldaten isequalto 0) exitwith {Hint 'Keine Einheiten erstellt'}; //soll aus den Script wieder Springen wenn es keine Ki zum löschen gibt
		for "_c" from 1 to (count MeineSoldaten) do { //eine For Schleife
			if ([format['Es gibt %1 Ki Gruppen möchtest Du Gruppe %2 Löschen mit %3 KI´s?',count MeineSoldaten,_c,count (MeineSoldaten select (_c -1))],'Ki Löschen','Ja','Nein']call bis_fnc_guimessage) then { // funktion GUI Message
				{deleteVehicle _x;} foreach (MeineSoldaten select (_c-1));
				_del = _del + [(_c -1)]; //speichert sich lokal die Bereiche welche gelöscht wurden in MeinSoldat
			};
		};
		reverse _del; //Dreht die speicherung um damit wir von hinten her die Meinsoldat aufräumen können
		{MeineSoldaten deleteAt _x} foreach _del; //räumt auf
	};
	player addAction ["Ki Löschen",kiloeschen]; //Fügt hinzu die Addaction
};
// jetzt das wird immer ausgeführt. Es werden Zwischen 0(da er aufrunden soll ceil ist es immer 1) und 20 KI´s Erstelt
_grp1 = createGroup EAST;
_list1 = [];
_ki = [];
for "_i" from 1 to (ceil(random 20)) do {
	_ki = _ki + ["O_Soldier_F"]; (Hier baut er die Anzahl der soldaten zusammen) 
};
_unit = [getMarkerPos "spawn", EAST, _ki,[],[],[],[],[],random 360] call BIS_fnc_spawnGroup;
_list1 = _list1 + units _unit;
[_unit] join _grp1;

Meinesoldaten = MeineSoldaten + [_list1];// hinzufügen zu MeineSoldaten
Hier ein Script der das machen sollte was du möchtest bassiert auf deinen was du bereits kantest und soll dir helfen damit zurechtzukommen. Ich habe die Soweit wichtigsten befehle darin genutzt die man so braucht.

Es ist nicht der Beste Script.

ps: Arma mit -showScriptErrors starten als paramater
Nokman ist offline