HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   Fallschirmjäger an zufälligem Punkt abspringen lassen (https://hx3.de/editing-scripting-167/fallschirmjaeger-zufaelligem-punkt-abspringen-lassen-19573/)

todyoungblood 22.08.2010 14:36

Fallschirmjäger an zufälligem Punkt abspringen lassen
 
Hallo Leute,

ich bins mal wieder :naughty:

Währe super wenn sich jemand mal mein Script anschauen könnte.
Irgendwie funktioniert das nicht (nicht schimpfen ist noch sqs :motz:).
Ich würde gerne in meiner Mission eine Einheit KSK Soldaten an einem Punkt abspringen lassen der zuvor per Zufallsgenerator ausgelost wurde.
Wenn das Flugzeug die Dropzone erreicht hat, sollen die Einheiten in kurzem Abstand hintereinander abspringen und das Flugzeug wegfliegen und bei [0,0,0] gelöscht werden.

Auf der Karte befindet sich:

6x Heli H (invisible) = d1,d2,d3,d4,d5,dropzone
1x C130 (fliegend) = plane
2x Piloten (this movein.....) pilot1,pilot2
10 x KSK Einheiten (this movein....) ksk1,ksk2,...-ksk10

Die Heli Hs d1-d5 wurden an die verschiedenen Absprungpunkte gesetzt.

PHP-Code:

_start=random 5;
_start : goto "d1";
_start : goto "d2";
_start : goto "d3";
_start : goto "d4";
_start : goto "d5";
#d1
dropzone setpos getpos d1;
goto 
"aproach";
#d2
dropzone setpos getpos d2;
goto 
"aproach";
#d3
dropzone setpos getpos d3;
goto 
"aproach";
#d4
dropzone setpos getpos d4;
goto 
"aproach";
#d5
dropzone setpos getpos d5;
goto 
"aproach";
#aproach
pilot1 action ["gear_up"vehicle plane] ;
plane flyinHeight 150;
plane setSpeedMode "limited";
#check
pilot1 doMove getPos dropzone;
~
0.1
plane flyinHeight 150
;
~
0.1
? (plane distance dropzone) <500 : goto "jump"
~0.1
goto "check"
#jump
_aunits = [ksk1,ksk2,ksk3,ksk4,ksk5,ksk6,ksk7,ksk8,ksk9,ksk10];
_i 0;
_j count _aunits;
#here
(_aunits select _iaction ["EJECT"plane] ;
unAssignVehicle (_aunits select _i) ;
_i=_i+1;
~
0.5
?_j>_i : goto "here"
#home
dropzone setPos [0,0,0];
plane setSpeedMode "FULL"
Pilot1 doMove getPos dropzone;
? (
plane distance dropzone) <400 : goto "delete"
~0.1
goto "home"
#delete
deleteVehicle plane;
deleteUnit pilot1;
deleteUnit pilot2;
exit 

Gruß Tod

Rockhount 22.08.2010 17:08

Init von einer beliebigen Einheit
Code:

null=[dropzone,Pilot1,Pilot2,plane] execVM "drop.sqf";
drop.sqf:
Code:

private ["_drop","_start","_pilot1","_pilot2","_plane"];
_drop = _this select 0;
_pilot1 = _this select 1;
_pilot2 = _this select 2;
_plane = _this select 3;
_start = random 5;

if (_start<1) then {_drop setPos getPos d1};
if (_start<2) then {_drop setPos getPos d2};
if (_start<3) then {_drop setPos getPos d3};
if (_start<4) then {_drop setPos getPos d4};
if (_start<5) then {_drop setPos getPos d5};

_pilot action ["gear_up", vehicle _plane];
_plane flyinHeight 150;
_plane setSpeedMode "limited";
_pilot doMove getPos _drop;

if ((_plane distance _drop) <500) then {
ksk1 action ["EJECT",vehicle _plane];
sleep 0.5;
ksk2 action ["EJECT",vehicle _plane];
sleep 0.5;
ksk3 action ["EJECT",vehicle _plane];
sleep 0.5;
ksk4 action ["EJECT",vehicle _plane];
sleep 0.5;
ksk5 action ["EJECT",vehicle _plane];
sleep 0.5;
ksk6 action ["EJECT",vehicle _plane];
sleep 0.5;
ksk7 action ["EJECT",vehicle _plane];
sleep 0.5;
ksk8 action ["EJECT",vehicle _plane];
sleep 0.5;
ksk9 action ["EJECT",vehicle _plane];
sleep 0.5;
ksk10 action ["EJECT",vehicle _plane];
sleep 2;
_plane setSpeedMode "FULL";
_pilot doMove getPos drop2;
};

if ((_plane distance drop2) <400) then {
deleteVehicle _plane;
deleteUnit _pilot1;
deleteUnit _pilot2;
};




Edit: du musst dann lediglich noch ein Helicopter H mit den Namen drop2 erstellen, dort wird dann das Flugzeug und die Piloten gelöscht

Buliwyf 22.08.2010 17:11

Ich kann kein SQS... :D

Was passiert denn bislang? So wie ich das sehe ist der erste Fehler, dass Du mehr Leute aus dem Flieger abspringen lässt als da sind.

_j = count _aunits macht 10 Einheiten
Dein Loop durchläuft aber 11mal....

:komisch:

TraX 22.08.2010 18:20

Hallo

@Rockhount
dürfte ich dieses Script für eine Mission nutzen ?

Rockhount 22.08.2010 18:31

Ja klar, wieso den nicht.

TraX 22.08.2010 18:55

ich Frage lieber mal nach...
in sqf bin ich nicht so bewandert, in sqs ists ja nicht schwer.

ein Deutsches sqf Tutorial wäre nicht schlecht

Danke

Rockhount 22.08.2010 20:34

Verbesserte Version:

Code:

private ["_drop","_start","_pilot1","_pilot2","_plane"];
_drop = _this select 0;
_pilot1 = _this select 1;
_pilot2 = _this select 2;
_plane = _this select 3;
_start = random 5;

_pilot1 moveInDriver _plane;
_pilot2 moveInCargo [_plane, 1]
ksk1 moveInCargo [_plane, 4];
ksk2 moveInCargo [_plane, 5];
ksk3 moveInCargo [_plane, 6];
ksk4 moveInCargo [_plane, 7];
ksk5 moveInCargo [_plane, 8];
ksk6 moveInCargo [_plane, 9];
ksk7 moveInCargo [_plane, 10];
ksk8 moveInCargo [_plane, 11];
ksk9 moveInCargo [_plane, 12];
ksk10 moveInCargo [_plane, 13];

if (_start==0) then {_drop setPos getPos d1};
if (_start==1) then {_drop setPos getPos d2};
if (_start==2) then {_drop setPos getPos d3};
if (_start==3) then {_drop setPos getPos d4};
if (_start==4) then {_drop setPos getPos d5};

_pilot action ["gear_up", vehicle _plane];
_plane flyinHeight 150;
_plane setSpeedMode "limited";
_pilot doMove getPos _drop;

if ((_plane distance _drop) <500) then {
if (ksk1 in _plane) then {ksk1 action ["EJECT",vehicle _plane];};
sleep 0.5;
if (ksk2 in _plane) then {ksk2 action ["EJECT",vehicle _plane];};
sleep 0.5;
if (ksk3 in _plane) then {ksk3 action ["EJECT",vehicle _plane];};
sleep 0.5;
if (ksk4 in _plane) then {ksk4 action ["EJECT",vehicle _plane];};
sleep 0.5;
if (ksk5 in _plane) then {ksk5 action ["EJECT",vehicle _plane];};
sleep 0.5;
if (ksk6 in _plane) then {ksk6 action ["EJECT",vehicle _plane];};
sleep 0.5;
if (ksk7 in _plane) then {ksk7 action ["EJECT",vehicle _plane];};
sleep 0.5;
if (ksk8 in _plane) then {ksk8 action ["EJECT",vehicle _plane];};
sleep 0.5;
if (ksk9 in _plane) then {ksk9 action ["EJECT",vehicle _plane];};
sleep 0.5;
if (ksk10 in _plane) then {ksk10 action ["EJECT",vehicle _plane];};
sleep 2;
_plane setSpeedMode "FULL";
_pilot doMove getPos drop2;
};

if ((_plane distance drop2) <400) then {
deleteVehicle _plane;
deleteUnit _pilot1;
deleteUnit _pilot2;
};


todyoungblood 23.08.2010 12:45

Rockhount Du bist mein sqf Held :daumen:

Dank Dir werds gleich mal ausprobieren.

Gruß Tod

todyoungblood 23.08.2010 12:56

Hast Du mir vieleicht auch ein SQF Tutorial wo mans lernen kann?
SQS is ja nich mehr so zeitgemäß :naughty:

todyoungblood 23.08.2010 13:55

Hab es gerade getestet.....aber irgendwie funktioniert das nicht.
Komischerweise steigen nur die Piloten ein und fliegen dann im Kreis.
Das Heli H dropzone hast Du in drop umbenannt oder?

Vieleicht kannst Du Dir ja mal die Missionsdatei anschauen.

Gruß Tod

Rockhount 23.08.2010 15:10

Soweit bin ich bis jetzt gekommen:

Code:

private ["_drop","_start","_pilot1","_pilot2","_plane"];
_drop = _this select 0;
_pilot1 = _this select 1;
_pilot2 = _this select 2;
_plane = _this select 3;
_start = round(random 4);
publicVariable "_start";

_pilot1 moveInDriver _plane;
_pilot2 moveInCargo [_plane, 3];
ksk1 moveInCargo [_plane, 4];
ksk2 moveInCargo [_plane, 5];
ksk3 moveInCargo [_plane, 6];
ksk4 moveInCargo [_plane, 7];
ksk5 moveInCargo [_plane, 8];
ksk6 moveInCargo [_plane, 9];
ksk7 moveInCargo [_plane, 10];
ksk8 moveInCargo [_plane, 11];
ksk9 moveInCargo [_plane, 12];
ksk10 moveInCargo [_plane, 13];

if (_start == 0) then {_drop setPos [getPos d1 select 0, getPos d1 select 1, 0]};
if (_start == 1) then {_drop setPos [getPos d2 select 0, getPos d2 select 1, 0]};
if (_start == 2) then {_drop setPos [getPos d3 select 0, getPos d3 select 1, 0]};
if (_start == 3) then {_drop setPos [getPos d4 select 0, getPos d4 select 1, 0]};
if (_start == 4) then {_drop setPos [getPos d5 select 0, getPos d5 select 1, 0]};

_pilot action ["gear_up", vehicle _plane];
_plane flyinHeight 150;
_plane setSpeedMode "limited";
_pilot doMove getPos _drop;

if ((_plane distance _drop) < 500) then {
ksk1 action ["EJECT", vehicle _plane];
sleep 0.5;
ksk2 action ["EJECT", vehicle _plane];
sleep 0.5;
ksk3 action ["EJECT", vehicle _plane];
sleep 0.5;
ksk4 action ["EJECT", vehicle _plane];
sleep 0.5;
ksk5 action ["EJECT", vehicle _plane];
sleep 0.5;
ksk6 action ["EJECT", vehicle _plane];
sleep 0.5;
ksk7 action ["EJECT", vehicle _plane];
sleep 0.5;
ksk8 action ["EJECT", vehicle _plane];
sleep 0.5;
ksk9 action ["EJECT", vehicle _plane];
sleep 0.5;
ksk10 action ["EJECT", vehicle _plane];
sleep 2;
_plane setSpeedMode "FULL";
_pilot doMove getPos drop2;
};

if ((_plane distance drop2) <400) then {
deleteVehicle _plane;
deleteUnit _pilot1;
deleteUnit _pilot2;
};

aber anscheinend greift weder das:

Code:

if (_start == 0) then {_drop setPos [getPos d1 select 0, getPos d1 select 1, 0]};
if (_start == 1) then {_drop setPos [getPos d2 select 0, getPos d2 select 1, 0]};
if (_start == 2) then {_drop setPos [getPos d3 select 0, getPos d3 select 1, 0]};
if (_start == 3) then {_drop setPos [getPos d4 select 0, getPos d4 select 1, 0]};
if (_start == 4) then {_drop setPos [getPos d5 select 0, getPos d5 select 1, 0]};

noch das hier richtig:

Code:

if ((_plane distance _drop) < 500) then {...};

Rockhount 26.08.2010 12:14

Habe hier noch ein seltenes SQF Tutorial gefunden.



MfG Rockhount

todyoungblood 02.09.2010 17:39

Dank Dir :daumen:
Bist mit demn Script schon weiter gekommen?

Gruß Tod


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:05 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