buildingpos auslesen
Gibt es eine Möglichkeit, dass man auslesen kann, wieviele Gebäudepositionen es in einem Gebäude gibt?
Ich möchte bei einem zufälligen Gebäude alle Positionen mit Soldaten besetzen. Das Gebäude ist bei Missionsbeginn jedesmal ein anderes (Wird druch ein HeliH mit Radius 1000 und dann nearest buildung HeliH festgelegt). |
|
Die Seite kenne ich, trotzdem danke. Was meinst du mit Selbsttest?
|
Naja Du sollts selber TESTEN wieviele Positionen die Gebäude haben:naughty:
Zitat:
|
Code:
_building = _this select 0; Aber sollte als Basis zur Lösung des Problems durchaus genügen. |
Ich habe jetzt 2 Std lang probiert und habs nicht hinbekommen. Meine Soldaten spawnen zwar an den verschiedenen Positionen im Gebäude, sind aber immer in der gleichen Gruppe und verlassen deshalb ihre Positionen und formieren sich beim ersten erstellten Soldaten.
[sodat] join GrpNull hab ich schon probiert, geht aber nicht, da die soldaten scheinbar immer die gleichen Namen zugewiesen bekommen. Bitte TeRp, schrieb mir die Lösung etwas präzieser. Mein Script möchte ich hier lieber nicht posten, hehe. |
|
Oh man, ich mach jetzt seit mehreren Abenden an dem Script herum. Mir sagt der Tipp von TeRp ehrlich gesagt nicht sehr viel. Ich hab es probiert und das Einzige was passiert ist, dass ein Sodat gespawnt wird und dieser immer wieder an eine neue Position im Gebäude gebeamt wird.
Ich möchte folgendes: Auf der Karte habe ich ein Helipad mit einem Radius von 1000. Jetzt soll ein Script überprüfen, welches Gebäude sich am nächsten zu dem Helipad befindet. Ferner soll das script prüfen, wieviele Gebäudepostitionen sich im Gebäude befinden und diese Positionen mit Soldaten besetzen. Ich hab mir auch schon mal das "Random-House-Position-and-Patrol-Script" angeschaut. Auch daraus bin ich nicht schlauer geworden. Bitte helft mir bei dem Script weiter. |
Wenn du mein Scriptbeispiel mal Befehl für Befehl auseinander nimmst, wirst du ganz schnell auf die Lösung kommen.
Ich bin kein Freund dieser "Postet mir bitte ein komplettes Script"-Fragen, denn da ist der Lerneffekt Null und der nächste Thread mit dem nächsten Scriptwunsch folgt meist sogleich. Wie gesagt, nimm mein Script mal Befehl für Befehl (oder Absatz für Absatz) auseinander, was dort genau geschieht. Das kannst du ja mal hier posten und dann können wir von mir aus von dort an gemeinsam weiter machen, aber dir jetzt einfach ein Script vorkauen mach ich eher weniger. ;) |
Hallo TeRP,
es ist verständlich, dass du kein fertig Script vorgeben willst. Ich wünschte auch, dass ich von selber auf die Lösung kommen würde, da der Editor und das Scripten, bei Arma eigentlich mit das Tollste am Spiel ist. Leider bin ich ein Noob. Also hier mal meine Probleme: while {(_building buildingPos _i) distance [0,0,0] > 1} do { _i = _i + 1; }; Diese Zeile bedeutet, dass solange die Gebäudeposition _i immer um 1 addiert wird, solange die Gebäudeposition nicht mehr als 1m von 0,0,0 (also ganz links unten auf der Karte) entfernt ist. Warum macht man dies nicht mit der If THEN ELSE-Schleife? _pos = floor(random _i); if (_pos == _i) then { _pos = _i - 1; }; Diese beiden Zeilen sagen mir nichts. Den floor-Befehl hab ich noch nie verwendet. Und die zweite Zeile bedeutet, dass _pos (was immer das auch darstellt), wenn es die gleiche Größe wie _i hat, irgendwo etwas abgezogen wird?!:oh: |
Tach:ugly:
vielleicht hilft ja das Module: Visual House Positions - Bohemia Interactive Forums |
Hier alle Befehle in A2/OA:
Category:Scripting Commands ArmA2 - Bohemia Interactive Community |
Danke für die Hinweise, haben mich aber auch nicht wirklich weiter gebracht.
|
Zitat:
Code:
While {true} do Außerdem müsstest du dort noch eine Bedingung einbauen, dass die Schleife verlassen wird. Warum einfach, wenn es auch umständlich geht? |
warum sollte er denn die schleife doppeln?! er hat doch nur den code von terp kopiert und versucht zu interpretieren, was ihm ja auch gut gelungen ist.
das einzige was er noch benötigt ist der spawn eines soldaten an jeder pos, die er ja eigentlich schon hat... ich hab mich nu mal erbarmt. Code:
private ["_i","_building","_grp"]; natürlich ungetestet und ohne gewähr. EDIT: hab aus interesse nun mal selbst probiert. funktioniert so. p.s.: disableai "move" zieht der ki die zähne und wenn man ihr die bewegung lässt laufen sie sofort los wenn sie einen gegner sehen... also aus dem haus raus. |
Du bist es.
|
Sehr cool, vielen Dank.
Ich hatte erst gerade Zeit es auszuprobieren. Hat aber nicht ganz funktioniert. Die Soldaten werden immer auf dem Dach des Gebäudes gespawnt. Ich werd mal ein bischen rumprobieren. PS. Das Script verwirrt mich. Ich check das keinen Meter. Ne Erklärung wäre echt toll. Von mir aus auch ein ganzer Aufsatz, hehe. |
Es geht, es geht.:D
Ich hab die eine Zeile folgendermaßen verändert: for [{_j=1}, {_j < _i}, {_j=_j+1}] do { _pos = _building buildingPos _j; _unit = _grp createUnit ["TK_Soldier_EP1", _pos, [], 0, "NONE"]; sleep 1; _unit disableAI "MOVE";_unit setPos (_building buildingPos _j)}; Zuvor standen die Soldaten immer auf den Dächern. Jetzt sind sie drin. Vielen Dank nochmals. Auch wenn ich nicht verstehe, wie dieses Script genau funktioniert. Ich werd mich damit nochmals ein bischen auseinandersetzten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:25 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias