Find "all" Objects

Wie kann ich alle Objekte von "TEST" gleichzeitig auswählen und dann brennen lassen ?

Hiermit kann ich immer nur 1 und dasselbe Objekte aswählen und anzünden… :

SetVar(0,FindObject(TEST,0,0,0,0,0,));
if (And(Not(Equal(Var(0),0)),Equal(Contained(Var(0),0)))) Incinerate(Var(0));

Wie müsste das aussehen damit alle objekte ausgewählt werden und angezündet werden ?

Danke !

Bitte benutze nicht mehr Var, SetVar und Konsorten. Und And, Or, Not, Equal auch nicht mehr. Das führt nur zu total unleserlichem Code.

Alle TEST-Objekte anzünden geht zB so:
for (var obj in FindObjects(Find_ID(TEST)))
        obj->Incinerate();

Die saubere Variante für Szenario/Objektscripts ist:

for(var object in FindObjects(Find_ID(TEST))) {
    Incinerate(object);
}


Falls du das aber zum Spaß mal Ingame machen willst, eignet sich Schedule ganz gut, da das quasi-instant passiert:

Schedule("Incinerate(FindObject2(Find_ID(TEST), Find_Not(Find_OCF(OCF_OnFire))))", 1, 1000)

Ok vielen Dank !

Wie wäre es wenn ich nicht alle, sondern nur z.B die nächsten 2 Objekte von "TEST" anzünden möchte ?

Geht das ?

Und falls ich Incinerate 2 mal ausführen möchte?
Falls ein Objekt brennt soll es nicht nochmal angezünden werden , statdessen das nächste Objekt des selben Typs finden was nicht brennt und das anzünden.

Ich hatte mich bei SetVar an einen Beispielobjekt orientiert ( "Fernbedienung EKE PACK", stimmt das ist wirklich schwer nachzuvollziehen … :smiley:

var num = 2;
for(var object in FindObjects(Find_ID(TEST), Sort_Distance())) if (num–) object->Incinerate(); else break;

Oder die kuerzere Hack-Variante: FindObjects(Find_ID(TEST), Find_Func("Incinerate"));

>Find_Not(Find_OCF(OCF_OnFire)))


Das macht genau das Statement hier. Aber wenn du das ingame machen willst, nimm am Besten die Lösung von Sven2 - die ist nochmal eleganter.

Falls du meintest, dass die Objekte erst nach und nach angezündet werden sollten: (… geht B_E's Lösung natürlich auch, aber man kann auch in einem Objekt den Timer benutzen)

func Timer(){
var pSollBrennen = FindObject2(Find_ID(TEST),Find_Not(Find_OCF(OCF_OnFire)));
if(pSollBrennen) pSollBrennen->~Incinerate();    
}

In der Defcore muss dann natürlich noch der Timer eingestellt werden: (Dazu zu dem Objekt, dass die Objekte anzünden soll, folgendes in die DefCore schreiben:)
Timer=1
TimerCall=Timer



Wenn jetzt noch Jemand die Lösung als Effekt aufschreibt, haben wir so ziemlich alle kuhlen Lösungen gefunden. :smiley: