|
|
#1 (permalink) |
![]() Registriert seit: 10.03.2013
Beiträge: 19
|
Hallo,
ich hoffe dieser Post ist in der richtigen Kategorie, da es ja bei Usermade Missions anscheinend nur um fertige Missionen geht. Meine Frage ist ob es ein (einfaches) Skript gibt welches mir erlaubt Einheiten bei ihrer Initialisierung auf ein Gebäude zu verschieben. Mir ist bewusst dass man mit 'Elevation' die Höhe angeben kann, allerdings funktioniert es auf diese Weise nur mit viel Ausprobieren, da die Einheiten manchmal im Gebäude hängen oder aber mehrere Meter fallen. MfG, DerFlamer |
|
|
|
|
#2 (permalink) |
![]() ![]() Registriert seit: 01.06.2009
Beiträge: 103
|
Naja, eine "einfache" rundum-glücklich Lösung wird es dazu wohl nicht geben, aber folgender Ansatz kann weiterhelfen:
Einheit neben dem gewünschten Gebäude platzieren. In die init- Zeile der Einheit folgender code: Code:
nul= this execVM "scriptname.sqf" Code:
_soldat= _this; _haus= nearestObject [position _soldat, "Building"]; _hausMass= boundingBox _haus; _hoehe= ((_hausMass select 1) select 2); _soldat setPos (_haus modeltoworld [0,0,_hoehe]); Soll der Soldat aber nicht in der Mitte des Dachs stehen, sondern an einem der Dachränder oder Ecken, braucht es die Mitgabe von mehr Parameter an das Script um den Befehl "boundingBox" entsprechend auszuwerten. |
|
|
|
|
#3 (permalink) |
![]() Registriert seit: 10.03.2013
Beiträge: 19
|
Hallo loki,
danke erstmal für deinen Code ![]() Ich habe leider (sehr) wenig Ahnung vom Skripten in Arma, da ich mich erst seit einigen Tagen damit beschäftige. Zum Verständnis: Code:
_soldat= _this; _haus= nearestObject [position _soldat, "Building"]; Code:
_haus= nearestObject [position _this, "Building"]; Code:
_hausMass= boundingBox _haus; _hoehe= ((_hausMass select 1) select 2); ![]() Code:
_soldat setPos (_haus modeltoworld [0,0,_hoehe]); MfG, DerFlamer |
|
|
|
|
#4 (permalink) |
![]() ![]() Registriert seit: 05.01.2008
Alter: 34
Beiträge: 1.703
|
Guckst du Wiki http://community.bistudio.com/wiki/boundingBox
Die beiden Links hier am besten speichern, hilft meistens weiter: http://community.bistudio.com/wiki/C...Commands_ArmA2 (Die funktionieren auch in ArmA 3) und http://community.bistudio.com/wiki/C..._Commands_List |
|
|
|
|
#5 (permalink) |
![]() Registriert seit: 10.03.2013
Beiträge: 19
|
Würde das funktionieren?
Code:
_hausMass= boundingBox nearestObject [position _this, "Building"]; _hoehe= ((_hausMass select 1) select 2); this setPos[getPos this select 0,getPos this select 1,(getPos this select 2)+_hoehe]; Dinge schweben lassen mit "this setpos" / Funktioniert "this setunitpos" nicht mehr? - Forum des German Gamers Club e.V. Geändert von DerFlamer (10.03.2013 um 11:09 Uhr). |
|
|
|
|
#6 (permalink) |
![]() Registriert seit: 10.03.2013
Beiträge: 19
|
Hallo Joe,
ein Ja hätte mir auch gereicht ![]() Ich kannte die Seite schon habe aber nicht nachgeguckt weil es mir wie schon gesagt nicht so wichtig ist (solange es funktioniert) ![]() Da ich es jetzt allerdings verstehe könnte ich mir ein paar Skripte machen die jeweils eine Position auf dem Dach eines Gebäudes abdecken, wobei ich damit sehr eingeschränkt wäre. Ich teste jetzt mal meinen zusammengebastelten Code. MfG, DerFlamer |
|
|
|
|
#7 (permalink) |
![]() ![]() Registriert seit: 05.01.2008
Alter: 34
Beiträge: 1.703
|
War auch nicht böse gemeint, nur als Info.
Aber ein kleiner Denkanstoß, die boundingBox gibt dir doch max und min Werte zurücke, mach dir doch ein Script, dass zwischen diesen max und min werten zufällig auswählt und dann da Einheiten plaziert. |
|
|
|
|
#8 (permalink) |
![]() Registriert seit: 10.03.2013
Beiträge: 19
|
Ich hab's auch nicht böse verstanden
![]() Gute Idee, aber im Moment möchte ich dass sie genau da stehen wo ich sie haben will, was allerdings nicht wirklich funktioniert. Ich habe im Missionsverzeichnis (C:\Users\NAME\Documents\Arma 3 Alpha\missions\MISSION) ein Skript mit dem Namen "PlaceOnTop.sqf" erstellt. Ich habe es einmal mit diesem Code Code:
_hausMass= boundingBox nearestObject [position _this, "Building"]; _hoehe= ((_hausMass select 1) select 2); this setPos[getPos this select 0,getPos this select 1,(getPos this select 2)+_hoehe]; Code:
_hausMass= boundingBox nearestObject [position _this, "Building"]; _hoehe= ((_hausMass select 1) select 2); this setPos[getPos this select 0,getPos this select 1,(getPos this select 2)+_hoehe+1]; In dem Initialization-Feld steht jetzt dieser Code Code:
nul= this execVM "PlaceOnTop.sqf";
|
|
|
|
|
#9 (permalink) |
![]() ![]() Registriert seit: 01.06.2009
Beiträge: 103
|
Das hast Du schön "rationalisiert".
![]() Deine letzte Zeile hat einen Syntax- Fehler (Unterstrich beim _this vergessen) und einen kleinen Logik- Fehler (statt getpos _this select 2 + irgendetwas reicht schlicht _hoehe). Und weil Du es so gerne "rationalisiert" magst halt so ![]() Code:
_this setPos [getpos _this select 0, getpos _this select 1, ((boundingBox ( nearestObject [position _this, "Building"]) select 1) select 2)]; Code:
this setPos [getpos this select 0, getpos this select 1, ((boundingBox ( nearestObject [position this, "Building"]) select 1) select 2)] Allerdings ist der Code so etwas "Fehleranfälliger". Zum einen muss man wieder im Editor die Einheit genau Positionieren. Da man sich aber in der 2-D- Ansicht des Editors nicht immer auf die vollständige Übereinstimmung der Gebäude- Icons mit dem tatsächlichen Objekt verlassen kann (zumindest in den bisherigen Teilen), kann das gerne mal mehrere Anläufe brauchen, bis die Einheit dort steht, wo man sie haben möchte. In Missionen bei welchen viele Objekte initialisiert werden müssen, können zeitliche Verschiebungen bei der Abarbeitung auftreten. Das kann zur Folge haben dass eine Einheit z.B. zuerst vom Kollisionsmodell des Gebäudes leicht verschoben wird, bevor sein Initialisierungs- Code ausgeführt wurde und deshalb nicht exakt dort steht, wo man sie gerne hätte. Im schlimmsten Fall wird die Einheit nach ausserhalb des Gebäudes verschoben und steht dann auch nach Abarbeitung ihres Initialisierungs- Code ausserhalb des Gebäude, respektive fällt aus der vorgegeben Höhe auf den Boden und ist dann eventuell verletzt oder gar futsch. Aufgrund meiner teilweisen echt bizarren Erfahrungen mit scripten in ArmA, bevorzuge ich eher möglichst stabile Lösungen mit etwas mehr Variablen- Einsatz und "aufwendigerem" Vorgehen (modelToWorld). Trotzdem empfehle ich Dir erstmal die Variante welche Du gleich in die Init- Zeile der Einheit schreiben kannst. Das machst Du einmal, danach kopierst Du die Einheit beliebig oft und setzt sie zu den Gebäuden Deiner Wahl. Tauchen dabei "Überaschungen" auf, kannst Du Dich dann ja immer noch mit "aufwendigeren" Lösungsansätzen beschäftigen. |
|
|
|
|
#10 (permalink) |
![]() Registriert seit: 10.03.2013
Beiträge: 19
|
Dankeschön ![]() Das ist dämlich ![]() Jap, absolut falsch den zu übernehmen ![]() Wie kommst du eigentlich dazu diesen Begriff zu nehmen? Ich hätte einfach "zusammenfassen" gesagt ![]() Das war mir bewusst, das nehme ich aber (grade) für hohe (und seltene) Gebäude, die ich nicht kenne gerne in Kauf. Von einer Sorte Türme weiß ich inzwischen aber dass ich Einheiten 4,6m hoch setzen muss ![]() Das merke ich mir, danke! ![]() Und nochmal zu dem "rationalisieren"/zusammenfassen: Ich finde sowas wie Code:
_soldat= _this; Ich mag es nicht ganz ausführlich aber auch nicht in einer Zeile, ich ziehe die goldene Mitte vor ![]() Nochmal vielen Dank!
|
|
|
|
|
#11 (permalink) |
![]() ![]() Registriert seit: 01.06.2009
Beiträge: 103
|
"Rationalisieren" fand ich auch nicht toll, aber weil mir nichts besseres in den Sinn gekommen ist - wie zusammenfassen - hab ich es halt in Anführungszeichen verwendet.
![]() _Soldat= _this ist wirklich nicht unbedingt nötig. Ich konnte aber auch nicht wissen, was ich Dir zumuten kann , deshalb lieber deutlich und ausführlich, damit Du besser nachvollziehen kannst, was es bezweckt.
Geändert von Asso-Loki (10.03.2013 um 22:58 Uhr). |
|
|
| Stichworte |
| einheiten, elevation, gebäude, scripting |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Einheiten nach Tod/Zerstörung löschen | Togo | Editing & Scripting | 15 | 27.11.2012 07:28 |
| Einheiten in Gruppe löschen | Brubaker | Editing | 6 | 26.05.2011 17:44 |
| Heal/Repair Script / Einheiten in einem Radius zufällig generieren lassen | Noobfire | Editing & Scripting | 8 | 06.08.2010 15:22 |
| A2:OA - Einheiten IN Häusern und nicht AUF Häusern platzieren | pestbeule | Editing & Scripting | 8 | 09.07.2010 17:43 |
| Einheiten in verschiedene höhen platzieren | Runord | Editing & Scripting | 6 | 07.07.2010 22:51 |