Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 12.07.2010, 13:34   #1 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.12.2006
Beiträge: 157
Standard 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).
hypercop ist offline   Mit Zitat antworten
Alt 12.07.2010, 14:15   #2 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 12.06.2006
Beiträge: 1.252
Standard

Scheint nur möglich per Selbsttest.

Die Seite kennst?
buildingPos - Bohemia Interactive Community
__________________
PvPscene
.kju ist offline   Mit Zitat antworten
Alt 12.07.2010, 14:30   #3 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.12.2006
Beiträge: 157
Standard

Die Seite kenne ich, trotzdem danke. Was meinst du mit Selbsttest?
hypercop ist offline   Mit Zitat antworten
Alt 12.07.2010, 15:12   #4 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Fogu
 
Registriert seit: 12.05.2009
Ort: FRA
Beiträge: 1.621
Standard

Naja Du sollts selber TESTEN wieviele Positionen die Gebäude haben
Zitat:

Übrigens wenn du der Einheit vorher einen Wegpunkt auf das Haus setzt, kannst du sehen welche Positionen im Haus verfügbar sind....

__________________


My Youtube Channel

"Before you diagnose yourself with depression or low self esteem,
first make sure you are not, in fact, just surrounded by assholes!"
William Gibson
Fogu ist offline   Mit Zitat antworten
Alt 12.07.2010, 17:18   #5 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von TeRp
 
Registriert seit: 02.04.2003
Ort: San Francisco
Beiträge: 1.919
Standard

Code:
_building = _this select 0;
_dude = _this select 1;

_i = 0;

while {(_building buildingPos _i) distance [0,0,0] > 1} do 
{ _i = _i + 1; };

_pos = floor(random _i);
if (_pos == _i) then { _pos = _i - 1; };

_dude setPos (_building buildingPos _pos);
Oh, Frage falsch gelesen.
Aber sollte als Basis zur Lösung des Problems durchaus genügen.
__________________

TeRp ist offline   Mit Zitat antworten
Alt 12.07.2010, 22:47   #6 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.12.2006
Beiträge: 157
Standard

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.
hypercop ist offline   Mit Zitat antworten
Alt 13.07.2010, 05:51   #7 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 12.06.2006
Beiträge: 1.252
Standard

zB doStop - Bohemia Interactive Community
__________________
PvPscene
.kju ist offline   Mit Zitat antworten
Alt 15.07.2010, 22:33   #8 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.12.2006
Beiträge: 157
Standard

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.
hypercop ist offline   Mit Zitat antworten
Alt 16.07.2010, 11:00   #9 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von TeRp
 
Registriert seit: 02.04.2003
Ort: San Francisco
Beiträge: 1.919
Standard

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.
__________________

TeRp ist offline   Mit Zitat antworten
Alt 17.07.2010, 17:00   #10 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.12.2006
Beiträge: 157
Standard

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?!
hypercop ist offline   Mit Zitat antworten
Alt 17.07.2010, 17:27   #11 (permalink)
50 Beiträge100 Beiträge
 
Benutzerbild von TraX
 
Registriert seit: 21.06.2009
Alter: 45
Beiträge: 158
Standard

Tach
vielleicht hilft ja das Module: Visual House Positions - Bohemia Interactive Forums
TraX ist offline   Mit Zitat antworten
Alt 17.07.2010, 17:32   #12 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 12.06.2006
Beiträge: 1.252
Standard

Hier alle Befehle in A2/OA:
Category:Scripting Commands ArmA2 - Bohemia Interactive Community
__________________
PvPscene
.kju ist offline   Mit Zitat antworten
Alt 17.07.2010, 18:22   #13 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.12.2006
Beiträge: 157
Standard

Danke für die Hinweise, haben mich aber auch nicht wirklich weiter gebracht.
hypercop ist offline   Mit Zitat antworten
Alt 17.07.2010, 19:49   #14 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Zitat von hypercop Beitrag anzeigen

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?

Meinst du etwa so?

Code:
While {true} do
{
    If ((_building buildingPos _i) distance [0,0,0] > 1) then { _i = _i + 1};
};
Welche Lösung schaut denn nun eleganter aus?
Außerdem müsstest du dort noch eine Bedingung einbauen, dass die Schleife verlassen wird.

Warum einfach, wenn es auch umständlich geht?
Cyborg11 ist offline   Mit Zitat antworten
Alt 17.07.2010, 20:09   #15 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 31
Beiträge: 1.725
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

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"];
if (!isServer) exitWith {};

_heliH = _this select 0;
_building = nearestBuilding _heliH;
_i = 0;


while {(_building buildingPos _i) distance [0,0,0] > 1} do{ _i = _i + 1;};

_grp = createGroup (east);
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";
};
_grp allowFleeing 0;

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.
__________________
Niemand hat die Absicht eine Tüte zu bauen!

Geändert von Pfandgiraffe (17.07.2010 um 21:00 Uhr).
Pfandgiraffe ist offline   Mit Zitat antworten
Alt 17.07.2010, 21:21   #16 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von TeRp
 
Registriert seit: 02.04.2003
Ort: San Francisco
Beiträge: 1.919
Standard

Du bist es.
__________________

TeRp ist offline   Mit Zitat antworten
Alt 19.07.2010, 00:36   #17 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.12.2006
Beiträge: 157
Standard

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.
hypercop ist offline   Mit Zitat antworten
Alt 19.07.2010, 21:00   #18 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.12.2006
Beiträge: 157
Standard

Es geht, es geht.

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.
hypercop ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116