PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Array bug?


JSR
24.01.2016, 16:17
Moin!

Wir schreiben grade ein Script, doch sind am rätseln.

Das Script initialisiert Zivilisten auf der Map, ladet die in ein Array und lässt zufällig einen in die Luft gehen.

Was passiert? Beim ersten Durchlauf explodieren zwei Zivilisten, bei weiteren Versuchen (Debug Console) geht jeweils nur ein Zivilist in die Luft. (Random).


selection = [];
_k = 0;
_count = count allUnits;
for [{_i=0;}, {_i<_count}, {_i = _i+1}]
do
{
_unit = allUnits select _i;
if ((side _unit) == civilian)
then
{
selection pushBack _unit;
_k = _k + 1;
}
};
hint format ["%1", _k];
_random = floor random (count selection);
_randomc = selection select _random;
"R_60mm_HE" createVehicle position _randomc;



if (_k==0)
then
{
hint "No suizide bomber initialized.";
};



Wenn am Anfang zwei Zivilisten von 10 in die Luft gehen, zeigt er auch immer ein Zivilist mehr an als eigentlich existieren.


Ich bin verwirrt.

PS: Pushback und normales Verfahren, sprich [_k, _unit] schon ausprobiert - no difference.

In A2 funktioniert alles...(mit Pushback natürlich nicht).

Ich teste grade mal die ... "stable" Version aus... dauert n bisschen aber mehr fällt mir auch nicht ein.

Nokman
24.01.2016, 16:52
Als ich sehe jetzt nicht das er ein fehler macht darine.

Aber damit ich nicht ganz ohen sachen sastehen hier ein wenig überarbeitet

Performanter
selection = [];
{
if ((side _x) == civilian) then {
selection pushBack _x;
};
}foreach allUnits;

if (selection isequalto []) then {
hint "No suizide bomber initialized.";
} else {
_randomc = selection call BIS_fnc_selectRandom;
"R_60mm_HE" createVehicle position _randomc;
};

vielleicht liegt der fehler beim aufrufen?

JSR
24.01.2016, 16:58
Danke dir. :thump: Problem ist auch schon gefunden. Will auch nicht sagen, was der Fehler war. :poeh:

Wenn ihr den Script nimmt, wird er funktionieren. In A2 und A3.

Haste übrigens ziemlich gut geschrieben. !