HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   LHD per Skript fahrbar (https://hx3.de/editing-scripting-167/lhd-per-skript-fahrbar-17868/)

Cyborg11 10.09.2009 23:07

LHD per Skript fahrbar
 
Liste der Anhänge anzeigen (Anzahl: 1)
Das o.g. hab ich schon erreicht :)
Ich hab auch schon erreicht, dass alle Fahrzeuge / Infanterie am Träger festgeklebt werden, wenn sich dieser in Bewegung setzt.
Außerdem haben Spieler die Möglichkeit auf dem Träger zu laufen, wenn er fährt.

Aber das jetzige Problem ist folgendes:
Alle 8 LHD Teile sind an einem RHIB festgemacht. Da sich aber das Boot mit den Wellen bewegt, bewegt sich natürlich auch der ganze Träger.
Ist im Prinzip nicht schlimm, aber durch das ständige Auf und Ab des Trägers kann ich nie die richtige Höhe zum Attachen der Einheiten finden. Entweder die stecken dann im Träger drinnen oder schweben in der Luft.

Hätte jemand eine Idee, wie ich die richtige Höhe für jeden Standpunkt auf dem Träger abfragen kann?

Wie ihr dem Screen entnehmen könnt könnte ich das auch mit modelToWorld von dem jeweiligen Träger Teil festlegen. Wie ihr dort auch erkennen könnt, ist getPosASL von jeder Person aufm Träger der selbe Wert wie der modelToWorld auf ein Teil.
Aber ich attache den Soldaten ja nicht an das jeweilige Trägerteil, sondern ich attache ihn an das RHIB.
http://screenshot.xfire.com/screensh...8cf2ecd76b.jpg

Deswegen schaut meine Formel zum Berechnen der richtigen Höhe so aus:
Code:

_z1 = ((getPosASL _x) select 2) - (_bootpos select 2);
Nur leider führt das nicht zum gewünschten Ergebnis. Es mag zwar an manchen Stellen einwandfrei funktionieren, aber im hinteren Teil des Trägers steckt man dann im Träger fest.


Ich poste mal die jeweiligen Skripte und die Mission.
Aufgerufen wird das LHD Spawnskript so:
Code:

lhd = [this] execVM "CreateLHD.sqf";
CreateLHD.sqf
Code:

_LHDspawn = _this select 0;
_LHDdir = getdir _LHDspawn;
_LHDspawnpoint = getposasl _LHDspawn;

_land_lhd_house1 = "Land_LHD_house_1" createvehicle _LHDspawnpoint;
_land_lhd_house2 = "Land_LHD_house_2" createvehicle _LHDspawnpoint;
_land_lhd_elev = "Land_LHD_elev_R" createvehicle _LHDspawnpoint;
_land_lhd1 = "Land_LHD_1" createvehicle _LHDspawnpoint;
_land_lhd2 = "Land_LHD_2" createvehicle _LHDspawnpoint;
_land_lhd3 = "Land_LHD_3" createvehicle _LHDspawnpoint;
_land_lhd4 = "Land_LHD_4" createvehicle _LHDspawnpoint;
_land_lhd5 = "Land_LHD_5" createvehicle _LHDspawnpoint;
_land_lhd6 = "Land_LHD_6" createvehicle _LHDspawnpoint;
_land_lhd_house1 setdir _LHDdir;
_land_lhd_house2 setdir _LHDdir;
_land_lhd_elev setdir _LHDdir;
_land_lhd1 setdir _LHDdir;
_land_lhd2 setdir _LHDdir;
_land_lhd3 setdir _LHDdir;
_land_lhd4 setdir _LHDdir;
_land_lhd5 setdir _LHDdir;
_land_lhd6 setdir _LHDdir;
_land_lhd_house1 setpos _LHDspawnpoint;
_land_lhd_house2 setpos _LHDspawnpoint;
_land_lhd_elev setpos _LHDspawnpoint;
_land_lhd1 setpos _LHDspawnpoint;
_land_lhd2 setpos _LHDspawnpoint;
_land_lhd3 setpos _LHDspawnpoint;
_land_lhd4 setpos _LHDspawnpoint;
_land_lhd5 setpos _LHDspawnpoint;
_land_lhd6 setpos _LHDspawnpoint;

_land_lhd_house1 attachTo [_LHDspawn,[-3.3,-6.15,17],"hatch1"];
_land_lhd_house2 attachTo [_LHDspawn,[-6.49,-46.8,19.07],"hatch1"];
_land_lhd_elev attachTo [_LHDspawn,[2.4,-115.9,0.23],"hatch1"];
_land_lhd1 attachTo [_LHDspawn,[-0.61,84.1,-0.65],"hatch1"];
_land_lhd2 attachTo [_LHDspawn,[-1.23,22.8,-0.65],"hatch1"];
_land_lhd3 attachTo [_LHDspawn,[0,0,0],"hatch1"];
_land_lhd4 attachTo [_LHDspawn,[-2.065,-44.9,1],"hatch1"];
_land_lhd5 attachTo [_LHDspawn,[-2.45,-89.8,0.35],"hatch1"];
_land_lhd6 attachTo [_LHDspawn,[-2.05,-130.8,0.35],"hatch1"];

player addaction ["Bewegung!","bewegung.sqf",[_LHDspawn,_land_lhd1]];

bewegung.sqf
Code:

_array = _this select 3;
_boot = _array select 0;
_lhd1 = _array select 1;
_enemyside = east;

hold = false;
_boot setVelocity [0,5,0];

_objects = nearestObjects [_boot, ["LAND","AIR"], 100];
_max = (count _objects) - 1;
_i = 0;

for [{_i = 0},{_i <= _max},{_i = _i + 1}] do {
        _penemy = _objects select _i;
        _engine = IsEngineOn _penemy;
        If ((side _penemy) == east || !(alive _penemy)) then {
                _objects = _objects - [_penemy];
        };
};

{
        _bootpos = _boot modelToWorld [0,0,0];
        _xpos = _x modelToWorld [0,0,0];
        _x1 = (_xpos select 0) - (_bootpos select 0);
        _y1 = (_xpos select 1) - (_bootpos select 1);
        _z1 = ((getPosASL _x) select 2) - (_bootpos select 2);
        _dir = direction _x;
                hint format ["Name: %5\n\n_X Z (Model): %3\n_X Z (getPos): %4\n_X Z (...ASL): %8\n\nBoot Z (Model): %2\nBoot Z (getPos): %6\nBoot Z (...ASL): %7\n\nLHD1 Z (Model): %8\nLHD1 Z (getPos): %9\nLHD1 Z (...ASL): %10\n\nZ1: %1",_z1,_bootpos select 2,_xpos select 2,((getpos _x) select 2),name _x,(getpos _boot) select 2,(getPosASL _boot) select 2, (getPosASL _x) select 2,(_lhd1 modelToWorld [0,0,0]),((getPos _lhd1) select 2), (getposASL _lhd1) select 2];
        _x attachTo [_boot,[_x1,_y1,_z1]];
        attached = true;
        KEY_pressed = compile preprocessfile "onTop_KEY_pressed.sqf";
        (findDisplay 46) displaySetEventHandler ["KeyDown", "_this call KEY_pressed"];
        If (_x isKindOf "AIR") then {_x addaction ["Detach + Get In","detach.sqf"]};
        _x setdir _dir;
        sleep 1;
} foreach _objects;

player groupChat "You can detach yourself by pressing the Insert (Einfuegen) key.";

While {!hold} do {
        _boot setVelocity [0,5,0];
        sleep 5;
};

Und im Anhang findet ihr die Beispielmission :) Da fehlen übrigens noch mehrere Sachen, die ich noch einbauen möchte. Aber zuerst muss das mit der richtigen Höhe funktionieren ;)

Cyborg11 11.09.2009 23:27

Ui doch so viele, die sich gemeldet haben. Bin beeindruckt :ugly:

Hat eigentlich irgendjemand Interesse an so einem Feature? :)

Hemingway 12.09.2009 13:10

ich denk mal dieses elefanten-projekt hat die meisten erstmal erschreckt xD


hm... an sich keine dumme idee, aber ich denke das die wasserfläche auf chenaurus zu klein ist, um irgendwelche sinnvollen trägerbewegungen durchzuführen...

interessant wäre es, wenn es später mal verschiedene kriegsschiffe als addon geben wird/würde, sodass es wirklich zu seeschlachten kommen kann^^

Cyborg11 12.09.2009 13:19

Es gibt ja schon einen fahrbaren Träger als Addon ;)
Nur dort wird keiner am Träger festgemacht, sobald der losfährt :D
Und ich wollte den als Skriptversion fahrbar machen (was ja auch klappt), damit keiner unbedingt das Addon braucht, wenn der Träger beweglich sein soll.

Nur wie gesagt, hab ich hier ein "kleines" Problem mit der Höhe. Kannst du ja gerne mal die Beispielmission testen. :naughty:
Und ein "Elefanten"projekt ist es auch nicht, da es eigentlich leicht zu skripten geht, wenn man weiß wie. Nur diese blöde Höhe krieg ich einfach nicht raus :schlagen:

Banjo 12.09.2009 13:38

Ich kann zwar nicht unbedingt helfen, aber echt ein feines Projekt :daumen:
Werds auch gleich mal antesten.

TERMISOLDATOR 12.09.2009 13:41

Zitat:

Zitat von Cyborg11 (Beitrag 266502)
Hat eigentlich irgendjemand Interesse an so einem Feature? :)

Interesse schon aber helfen kann ich leider auch nicht =( so sehr ich auch will...
mfg
termi

Cyborg11 27.09.2009 01:38

Kann ich irgendwie die Physik im Wasser vom Boot entfernen?
Code:

this enableSimulation false;
lässt das Boot überhaupt nicht mehr bewegen => LHD bewegt sich natürlich dadurch auch nicht mehr.

Hab immer noch nicht rausgefunden, wie ich den blöden unterschiedlichen Höhenunterschied rausbekomme -.- Entweder ich attach mich IN den Träger oder ich attach mich in die Luft :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:24 Uhr.

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 117 118 119