Suicide Bomber
Moin!
Will ein suicide Bomber machen, der random vom Spiel ausgesucht wird. Angefangen mit: SBomber = nearestObjects [player, ["Civilian"], 200]; ///// SBomber = Suicide Bomber///// Er sucht im Raum von 200 Metern Zivilisten. Meine erste Frage und eig. auch der Kern: wie kann ich jetzt sagen, dass er einen von den rauspickt und als "Object" benennt, damit ich später im Waituntil (in einer Schleife) die Distance zum Player abchecken lassen kann? while {true} do { SBomber = nearestObjects [player, ["Civilian"], 200]; _dist = {_x distance Player} foreach SBomber; /// Hier fehlt der Punkt, wo er nicht mehr nach weiteren Zivilisten im 200 Meter Radius abfragt, sondern einen zufälligen Zivilisten auswählt und ihn eine Variable zuteilt. ///// if (true) then {SBomber commandMove (getPos player); waitUntil {SBomber = nearestObject [player, "Civilian"]; SBomber distance player < 10;};}; Bomb="R_OG9_HE" createVehicle position SBomber ; }; |
Wenn du keinen Wert drauf legst welcher der Zivilisten von mehreren genommen wird:
Code:
SBomber = []; |
Hey Vienna, wieder mal danke für die Antwort! :)
Ich probiere das Ganze zu verstehen: SBomber = []; /// Es wird ein "leerer" Array eingefügt, damit NearestOBjects funktioniert (in dem Fall) und den Zivilisten als Wert in die Klammern einfügen kann - richtig? In der Bedingung von While wird solange abgefragt, bis aus null eins wird, bzw. ein Zivilist ausgewählt ist. Dann SBomber = Sbomber select 0; weil es ja - logischerweise - der erste Wert in []; bzw im Array ist, richtig? Danach ist ja eig. alles ziemlich easy. Nochmals danke! Code:
SBomber = []; |
Zitat:
Man könnte als Bedingung auch count SBomber < 1 nehmen. |
Okay danke, habe es verstanden! :daumen: Top.
PS: Kleine Erweiterung. Code:
SBomber = []; Man achte auf die Variable _rf. Somit wird ein zufälliger Zivi genommen, der sich im Radius von 200 Metern befindet. Mit select 0 wird immer der nähste gewählt. Auch für Leute, die durch Google hier her stoßen! |
Das würde nur dann funktionieren, wenn immer 11 oder mehr Zivilisten im Bereich wären.
So wird die Auswahl an die Anzahl der vorhandenen Zivilisten angepasst: Code:
SBomber = []; |
Okay verstehe! Dann ist Random und Floor aber doch gar nicht mehr nötig, oder?
PS: Ach doch klar, sonst wird immer der gleiche abgewählt. |
Falls du das schon kopiert hast, ich habe bei while das Zeichen von > auf < geändert!
floor ist notwendig für die Rundung für Arrays und random um einen Inhalt zufällig auszuwählen. Ohne random würde immer der letzte Zivilist von mehreren genommen. |
Code:
while {count SBomber < 1} SBomber = Code:
SBomber select (floor ( random (count SBomber -1))); Aber wenn ich 10 Zivilisten habe und der -1 Befehl kommt, bedeutet das, dass ein Zivilist genommen wird der in den Array SBomber[1]; gesteckt wird? PS: Script so verändert, dass er auf die Distance zum Westsoldier achtet und nicht mehr auf den Spieler fixiert ist: Code:
Bei nearestObjects kann man natürlich dann auch "Player" mit West tauschen oder einfach den Radius dementsprechend groß machen, so dass sowieso jede Einheit betroffen ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias