Wie kann man Einheiten im Triggerradius löschen?
Hallo,
ich spawne in einer Stadt per Trigger einige Einheiten und würde gerne die übrig gebliebene AI löschen sobald der Spieler den Trigger verlässt. Ich habe folgenden Code gefunden: Code:
{if (side _x == EAST AND _x in thisList) then {_x setDamage 1};} foreach allunits; Ich hab den setDamage Befehl auch schon gegen {deleteVehicle _x} getauscht aber auch da klappt es nicht. Könnt ihr mir sagen was daran falsch ist? |
wenn du löschen willst dann solltest du dies auch tun und nicht einfach nur töten.
Code:
{if (side _x == east AND _x in thisList) then {deleteVehicle _x;}; true} count allUnits; Code:
{if (side _x == east) then {deleteVehicle _x;}; true} count thisList; |
Ich würde auch die 2 Variante vorschlagen. Warum alle Einheiten zählen lassen, wenn man eh nur die Einheiten aus dem Trigger braucht.
Sarogahtyp, wieso hast ein "true" in deine Count Abfrage gepackt? |
Danke für die Antworten bisher.
Ich habe beide Varianten versucht und bekomme die Fehlermeldung: Bei Aktivierung:Typ Zahl, erwartet nichts. |
mach mal:
Code:
nix = {if (side _x == east) then {deleteVehicle _x;}; true} count thisList; nix = nil; |
Eine Fehlermeldung gibt es nun keine mehr aber die AI wird noch immer nicht gelöscht.
|
Zitat:
Gib mal den Code aus allen Feldern Deines Triggers! |
Zum testen habe ich einen East Soldaten in einen Trigger gestellt, hab den Code bei Aktivieren eingetragen und habe auf Funk Alpha gestellt zum auslösen.
Sonst steht nichts weiter im Trigger. |
dann müssen wir mal ans debuggen gehen:
Code:
nix = {if (side _x == east) then {deleteVehicle _x;}; true} count thisList; systemChat str nix; |
im Chat steht 0
|
das bedeutet das die thisList leer ist, count zählt jedes Element darin und schiebt es in nix rein.
Der Trigger aktiviert zwar, aber es gibt kein Objekt im Triggerradius was die Bedingung erfüllt... Was steht im Feld Bedingung bzw. Condition ??? |
ich habe doch aber EAST Soldaten im Trigger stehen, die werden doch mit side _x == east abgefragt oder nicht?
|
Zitat:
der Trigger guckt ins Bedingungsfeld und schiebt alle Objekte die die BEdingung erfüllen in die thisList. ich denke da muß true drin stehn damit es funktioniert. |
Ich sehe da auch noch ein Problem, alle toten Einheiten werden nicht gelöscht weil Sie nicht mehr bei side east sonder civilian sind...
kannst du die nicht beim spawnen alle in ein globales array speichern? Dann wäre das löschen einfacher... |
Nein, auch dann klappt es leider nicht.
Zitat:
|
Was mit Deinem Trigger schief läuft weiß iuch jetzt auch nicht, eventuell ist der Radius 0?
Zeig mal wie du spawnst dann sag ich dir wie das mit dem array am besten geht. Ich mach jetzt erstmal Mittagspause, melde mich also ne halbe stunde lang nicht... |
ich poste das heute abend fix. Hatte heute eigentlich frei darf aber nun doch arbeiten :daumen:
|
okay, ich kann dann vermutlich erst morgen wieder antworten...
|
so funktioniert es, ist aber nicht schön, weil allUnits benutzt wird. das kann unter umständen langsam sein.
Code:
nix = {deleteVehicle _x; true}count (allUnits select {(side _x == east) and (_x inArea thisTrigger)}) besser ist es wenn du alle gespawnten einheiten in einem array hast dann werden auch tote gelöscht und das geht dann so: Code:
nix = {if(!isNull _x) then {deleteVehicle _x;}; true}count yourglobalarray dein array baust du in etwa so (variiert je nachdem wie du spawnst): Code:
yourglobalarry = []; //leeres array erzeugen Code:
yourglobalarry = []; |
Und so gehts richtig
Und so gehts richtig:
Trigger Typ: keine Aktivierung: Jeder Bedingung: Code:
this && {(isPlayer _x) and (alive _x)}count thisList > 0 Code:
yourglobalarray = []; Code:
nix = {if(!isNull _x) then {deleteVehicle _x;};true} count yourglobalarray; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias