PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anschnallgurt Script


Jamork
16.03.2015, 22:44
Heyho,
ich bin zurzeit dabei mit einer kleinen Truppe nen dedizierten Server aufzubauen und will u.a. ein Script für Anschnallgurte drinhaben, bei dem man aus der scheibe fliegt, wenn man sich nicht anschnallt. Ich habe bereits eine Version bei armaholic gefunden, die hatte aber nicht die Option zum anschnallen, also versuche ich zurzeit diese selber hinzuzufügen, komme aber leider grade nicht weiter und übersehe anscheinend einen total offensichtlichen Fehler :stupid:
Bis zu test2 kommt er aber wenn ich dann einsteige kommt das heiß erhoffte menü nicht :(
Vielen Dank im Vorraus :)

// Ausschnitt aus der init.sqf
if (hasInterface) then {nul=[false] execVM "scripts\windShield.sqf";};

//windShield.sqf
angeschnallt = _this select 0;
waitUntil {vehicle player != player};
hint "test2";
switch (angeschnallt) do
case false:
{
_id = vehicle player [angeschnallt] addAction ["anschnallen","angeschnallt=true"];
};
case true:
{
vehicle player removeAction _id;
};
while {speed vehicle player > 40} do
{
hint "test3";
oldVehVelocity = velocity (vehicle player);
sleep 0.2;
if ((speed vehicle player < 2) AND (angeschnallt==false)) then
{
moveOut player;
player setVelocity [(oldVehVelocity select 0) * 2,(oldVehVelocity select 1) * 2,((oldVehVelocity select 2) * 2) + 5];
};
};
[angeschnallt] execVM "scripts\windShield.sqf";

Drunken Officer
17.03.2015, 04:13
Im Switch Kommando wird das do in {} gesetzt. Die hast du komplett weggelassen.

Man fliegt durch die Scheibe wenn man fährt? - "Interessante" Theorie.

Bei deinem Script behalte ich das Anschnalen-Menü, wenn ich z.B. nur 20 km/h fahre und danach aussteige. Du hast keinerlei Abfrage drin, ober sich der Spieler in einem Fahrzeug befindet.

Jamork
17.03.2015, 15:44
Vielen Dank wie gesagt war mal wieder blind x.x
Ja herausfliegen direkt tut man leider nich es läuft in der Regel darauf hinaus, dass man etwas links vom Fahrzeug nach vorne rausfliegt. Das mit dem entfernen des Menüs klappt wie du sagst noch nicht so richtig muss ich mir noch etwas einfallen lassen:daumen:

Edit: Aber auch mit den Klammern tut sich noch nichts da hat sich noch ein Fehler eingeschlichen...
Edit²: Fehler gefunden hab einen alten Übergabewert bei addaction noch behalten der war überflüssig,angeschnallt==false nimmt er nich hab ich durch (!angeschnallt) ersetzt.
Edit³: Habe jetzt das Skript erweitert nur das entfernen der Action funktioniert noch nicht 100%ig, wenn ich aussteige behalte ich sie und wenn ich mich anschnalle behalte ich sie was ich eig mit folgendem Code zu lösen dachte ?
wird aus der init mit [false,false] execVM .... aufgerufen
angeschnallt = _this select 0;
option = _this select 1;
id = _this select 2;
waitUntil {vehicle player != player};
_vehicle = vehicle player;
hint "test2";
switch (angeschnallt) do
{
case false:
{
if (!option) then {id = vehicle player addAction ["anschnallen",{angeschnallt=true}]; };
Option=true;
};
case true:
{
vehicle player removeAction id;
};
};
while {speed vehicle player > 40} do
{
hint "test3";
oldVehVelocity = velocity (vehicle player);
sleep 0.2;
if ((speed vehicle player < 2) AND (!angeschnallt)) then
{
moveOut player;
player setVelocity [(oldVehVelocity select 0)*2,(oldVehVelocity select 1)*2,((oldVehVelocity select 2)*2) + 5];
_vehicle removeAction id;
opt=false;
angeschnallt=false;
};
};
if ((vehicle player == player) AND (alive player)) then
{
_vehicle removeAction id;
option=false;
angeschnallt=false;
};
[angeschnallt,option,id] execVM "scripts\windShield.sqf";

Drunken Officer
18.03.2015, 08:02
Das du nicht direkt rausfliegst war mir schon klar. Du arbeitest mit Moveout. Wobei links auch nicht 100% stimmt. Deiner Beifahrer wird nach rechts raus gewippt.

Aber wieso fliegt man aus einem Auto wenn es fährt? Denn Sinn verstehe ich nicht ganz.

Jamork
18.03.2015, 11:17
Man fliegt nur nach nem Unfall raus das macht das Script doch :komisch:

Drunken Officer
19.03.2015, 10:49
Dein script haut dich auch raus, wenn du normal anhälst.

Dein Script starte bei 40 km/h und löst bei kleiner 2 km/h aus, wenn der Spieler nicht angeschnallt ist. Also auch bei einem normalen Anhaltevorgang.

Eine Möglichkeit wäre, du fragt die Geschwindigkeit des Fahrzeuges 2x ab. Diese Werte läßt du vergleichen. Ist innerhalb der Schleife eine Differenz gegeben
_dif = Wert1 - Wert 2; if (_dif >= 30) then {.... };

dann löse aus.

Jamork
19.03.2015, 20:50
Um die normale Bremsung rauszunehmen ist doch grade das ganze mit einem Zeitfaktor versehen. Wenn du von über 40 in 0.2 sekunden auf unter 2 runterbeschleunigst, dann kann es nur ein Unfall sein, so schnell kann man nicht bremsen .
Bei deinem angesprochenen Fall würde das Script , wenn die Geschwindigkeit unter 40km/h sinkt spätestens nach 0.2 sek. aus der Schleife herausgehen da die Bedingung nicht erfüllt ist. (Ich glaube nicht das man so schnell geregelt bremsen kann lasse mich aber gerne eines besseren belehren :))
Edit: Habe es grade mit mehreren Vollbremsungen getestet ( mit handbremse ) und es hat nicht ausgelöst.

Drunken Officer
19.03.2015, 22:46
Stimmt, dass mit der Zeitschleife hatte ich übersehen.

Jamork
20.03.2015, 17:10
Nun stellt sich nur die Frage wieso er trotz anklicken des angeschnallt buttons mich bei einem unfall raushaut ... :stupid: