PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Abfrage eines Arrays


Togo
10.06.2013, 15:24
Hallo zusammen,

brauche hilfe bei einem Script. Ich habe einen Auslöser das ein script startet sobald ein player vorhanden ist, es wird geprüft ob dieser in der Gruppe A oder B ist. Ich habe die Soldaten der Gruppe A von s1-s8 bezeichnet und die der Gruppe B von s9-s16. Nun habe ich zwei Arrays erstellt:

_grpalpha = [s1,s2,s3,s4,s5,s6,s7,s8];
_grpbravo = [s9,s10,s11,s12,s13,s14,s15,s16]

wie muss ich nun die IF Abfrage gestalten ? Mit if (player in list _grpalpha) then.... geht es nicht ;:-(
Ich hoffe auf eure hilfe....

Gruß Togo

Vienna
10.06.2013, 16:12
if (player in list _grpalpha) then.... list gehört hier nicht rein, ist nur anzuführen wenn das Array eines Triggers abgefragt wird.

http://community.bistudio.com/wiki/list

Togo
10.06.2013, 19:41
Hallo Vienna,

vielen Dank, nun funktioniert es ;-)

Gruß Togo

Togo
11.06.2013, 12:07
Hallo Vienna,

hast Du evt. auch eine Idee warum das hier nicht funktioniert ?


if ( isnil ("s1") && alive ("s1") ) then
{
"tele_to_alpha" setMarkerPos getPos s1
}


möchte hier abfragen ob s1 existiert und noch lebt.

Gruß Togo

Lester
11.06.2013, 14:04
Wenn s1 kein Marker ist, wird es auch nicht in Anführungszeichen geschrieben ... und wenn doch macht das alive kein Sinn. ;)

Togo
11.06.2013, 14:06
Hi Lester,

s1 ist der Name eines Soldaten.

Gruß

Rockhount
11.06.2013, 14:12
if ( isnil ("s1") && alive ("s1") ) then
{
"tele_to_alpha" setMarkerPos getPos s1
}Du fragst zuerst ab, ob die globale Variable nicht definiert wurde und in der selben Abfrage überprüfst du, ob ein Text (String) lebt?:komisch: Das gibt doch Fehler ohne Ende. Meiner Erfahrung nach sind && und || auch nicht das, was sie sein sollten, denn die zweite Bedingung wird trozdem immer überprüft und wirft somit auch die RPT voll. Also, solche Abfragen immer verschachteln!

Lösung:
if (!(isnil "s1")) then
{
if (alive s1) then
{
"tele_to_alpha" setMarkerPos (getPos s1);
};
};

Xeno
11.06.2013, 16:35
*deleted*

Xeno

flickflack
11.06.2013, 16:36
^... es gibt halt Sprachen ...und SQF :happy:

Xeno
11.06.2013, 16:38
So isses, Flicki, so isses...

Xeno

flickflack
11.06.2013, 16:43
Ich huldige all jenen, die sich mit SQF auseinandersetzen und trotz der Einschränkungen so coole Sachen für die Comm gezaubert bekommen. Das muss man ja auch erstmal schaffen :daumen:

..sry für's hijacken.

Togo
11.06.2013, 18:43
Hi Leutz,

vielen Dank für eure Hilfe---- funktioniert nun. Wenn ihr mir noch bei diesem Respawn Script helfen könnt das einzubauen das auch Rucksäcke gespeichert und auch wieder ausgegeben werden wäre ich Wunschlos glücklich... .;-)



maxrespawns = paramsArray select 0;
myrespawns = 0;
while {true} do {
waitUntil {!alive player};
_p = player;
_weapons = weapons _p;
_magazines = magazines _p;
if (myrespawns == maxrespawns) then
{
titleCut ["Du hast alle Leben verloren.......","BLACK FADED", 5];
sleep 3;
titleCut ["Dein Einsatz is hiermit beendet.....","BLACK FADED", 5];
sleep 3;
endMission "END3" // Hier musss eine Briefing.html existieren !!
};
hidebody _p; // versteckt toten Körper !
deletevehicle _p; //löscht den toten Körper !
waitUntil {alive player};
_p = player;
removeAllWeapons _p;
removeAllItems _p; // dieser Eintrag existiert weil sonst das Funkgerät Acre 343 sich beim respawn verdoppelt.
{_p addMagazine _x;} forEach _magazines;
{_p addWeapon _x;} forEach _weapons;
_primw = primaryWeapon _p;
if (_primw != "") then {
_p selectWeapon _primw;
// Fix für Waffen mit Granatwerfer
_muzzles = getArray(configFile>>"cfgWeapons" >> _primw >> "muzzles");
_p selectWeapon (_muzzles select 0);
myrespawns = myrespawns + 1;
_rest = maxrespawns - myrespawns;
titleText [format ["Verfügbare Leben: %1",_rest],"PLAIN DOWN", 1];
hint "Weiter gehts.....";
};
};


Dies habe ich mir soweit zusammen gebastelt funktioniert auch, aber leider verschwinden nach ein paar respawns die Rucksäcke bez. deren Inhalt.
Nochmals Vielen Dank für die Mühe...

Gruss Togo

Vienna
11.06.2013, 19:19
Hallo Togo!

Vermutlich willst du wissen ob in MP eine wählbare Spielfigur deaktiviert ist?

Objekt-Variable können nicht mit isNil abgefragt werden ob sie existieren. Ich habe auch sonst keinen entsprechenden Befehl gefunden.

Um festzustellen ob z.B. ein Objekt mit Namen S1 im gestarteten Spiel überhaupt vorhanden ist kann man so vorgehen:

_aktiv = false;
if (!isNull S1) then {_aktiv = true};
if (!_aktiv) then {S1 = objNull};

Existiert ein Objekt mit Namen S1, dann ist alles OK. Wenn nicht, so wurde eine S1 Objekt-Variable mit Status objNull erstellt.

Nun kannst du Abfragen wie die folgende tätigen:

if (!isNull S1 and alive S1) then
{
hint "S1 lebt!"
}
else
{
if (isNull S1) then
{
hint "Objekt S1 ist nicht im Spiel vorhanden!"
}
else
{
hint "S1 ist tot!"
}
};