Perixx

Helikopter Fastrope

18 posts in this topic

Guten Morgen,

Ich hab da mal eine Frage an euch! Und zwar möchte ich fastrope implementieren, ist ne einfache sqf Datei, die ich in denn Mission Ordner lege, und in die init folgendes schreibe [] execVM "zlt_fastrope.sqf";

Nur bekomme ich im Helikopter nicht diese Funktion, das ich fastrope aktivieren kann.

Habt ihr vielleicht ne Lösung für mich

https://forums.bistudio.com/topic/160875-helicopter-fastrope-script/

 

// v1g Fast Rope by [STELS]Zealot

#define MAX_SPEED_WHILE_FASTROPING 10
#define MAX_SPEED_ROPES_AVAIL 30


#define STR_TOSS_ROPES "Toss Ropes"
#define STR_FAST_ROPE "Fast Rope"
#define STR_CUT_ROPES "Cut Ropes"


if (isdedicated) exitwith {};
waituntil {player == player};

zlt_rope_ropes = [];
zlt_mutexAction = false;

zlt_rope_helis = ["O_Heli_Light_02_unarmed_F","O_Heli_Light_02_F","B_Heli_Transport_01_F","B_Heli_Transport_01_camo_F","O_Heli_Attack_02_F","O_Heli_Attack_02_black_F","I_Heli_Transport_02_F","B_Heli_Light_01_F"];
zlt_rope_helidata =
[
    [
        ["O_Heli_Light_02_unarmed_F", "O_Heli_Light_02_F"],
        [1.35,1.35,-24.95],
        [-1.45,1.35,-24.95]
    ],
    [
        ["B_Heli_Transport_01_F", "B_Heli_Transport_01_camo_F"],
        [-1.11,2.5,-24.7],
        [1.11,2.5,-24.7]
    ],
    [
        ["O_Heli_Attack_02_F", "O_Heli_Attack_02_black_F"],
        [1.3,1.3,-25],
        [-1.3,1.3,-25]
    ],
    [
        ["I_Heli_Transport_02_F"],
        [0,-5,-26],
        []
    ],    
    [
        ["B_Heli_Light_01_F"],
        [0.6,0.5,-25.9],
        [-0.8,0.5,-25.9]
    ]
];


zlt_fnc_tossropes = {
    private ["_heli","_ropes","_oropes","_rope"];
    _heli = _this;
    _ropes = [];
    _oropes = _heli getvariable ["zlt_ropes",[]];
    if (count _oropes != 0 ) exitwith {};
    _i = 0;
    {
        if ((typeof _heli) in (_x select 0)) exitwith {
            _ropes = _ropes + [_x select 1];
            if ( count (_x select 2) !=0 ) then {
                _ropes = _ropes + [_x select 2];
            };
        };
        _i = _i +1;
    } foreach zlt_rope_helidata;
    
    sleep random 0.3;
    if ( count (_heli getvariable ["zlt_ropes",[]]) != 0 ) exitwith { zlt_mutexAction = false; };
    _heli animateDoor ['door_R', 1];
    _heli animateDoor ['door_L', 1];
    {
        _rope = createVehicle ["land_rope_f", [0,0,0], [], 0, "CAN_COLLIDE"];
        _rope setdir (getdir _heli);
        _rope attachto [_heli, _x];
        _oropes = _oropes + [_rope];
    } foreach _ropes;
    _heli setvariable ["zlt_ropes",_oropes,true];
    
    _heli spawn {
        private ["_heli","_ropes"];
        _heli = _this;
        while {alive _heli and count (_heli getvariable ["zlt_ropes", []]) != 0 and abs (speed _heli) < MAX_SPEED_ROPES_AVAIL } do {
            sleep 0.3;
        };
        _ropes = (_heli getvariable ["zlt_ropes", []]);
        {deletevehicle _x} foreach _ropes;
        _heli setvariable ["zlt_ropes", [], true];
    };

};

zlt_fnc_ropes_cond = {
    _veh = vehicle player;
    _flag = (_veh != player) and {(not zlt_mutexAction)} and {count (_veh getvariable ["zlt_ropes", []]) == 0} and { (typeof _veh) in zlt_rope_helis } and {alive player and alive _veh and (abs (speed _veh) < MAX_SPEED_ROPES_AVAIL ) };
    _flag;

};

zlt_fnc_fastropeaiunits = {
        private ["_heli","_grunits"];
        diag_log ["zlt_fnc_fastropeaiunits", _this];
        _heli = _this select 0;
        _grunits = _this select 1;

        dostop (driver _heli );
        (driver _heli) setBehaviour "Careless";
        (driver _heli) setCombatMode "Blue";
        
        _heli spawn zlt_fnc_tossropes;

        [_heli, _grunits] spawn {
            private ["_units","_heli"];
            sleep random 0.5;
            _units = _this select 1;
            _heli = (_this select 0);
            _units = _units - [player];
            _units = _units - [driver _heli];
            {if (!alive _x or isplayer _x or vehicle _x != _heli) then {_units = _units - [_x];}; } foreach _units;
                        
            { sleep (0.5 + random 0.7); _x spawn zlt_fnc_fastropeUnit; } foreach _units;
            waituntil {sleep 0.5; { (getpos _x select 2) < 1 } count _units == count _units; };
            sleep 10;
            (driver _heli) doFollow (leader group (driver _heli ));
            (driver _heli) setBehaviour "Aware";
            (driver _heli) setCombatMode "White";
            _heli call zlt_fnc_cutropes;
            
        };
};


zlt_fnc_fastrope = {
    diag_log ["fastrope", _this];
    zlt_mutexAction = true;
    sleep random 0.3;
    if (player == leader group player) then {
        [vehicle player, units group player] call zlt_fnc_fastropeaiunits;
    };
    player call zlt_fnc_fastropeUnit;
    zlt_mutexAction = false;
};

zlt_fnc_fastropeUnit = {
    private ["_unit","_heli","_ropes","_rope","_zmax","_zdelta","_zc"];
    _unit = _this;
    _heli = vehicle _unit;
    if (_unit == _heli) exitWith {};

    _ropes = (_heli getvariable ["zlt_ropes", []]);
    if (count _ropes == 0) exitwith {};
    
    _rope = _ropes call BIS_fnc_selectRandom;
    _zmax = 22;
    _zdelta = 7 / 10  ;
    
    _zc = _zmax;
    _unit action ["eject", _heli];
    _unit switchmove "gunner_standup01";
    
    _unit setpos [(getpos _unit select 0), (getpos _unit select 1), 0 max ((getpos _unit select 2) - 3)];
    while {alive _unit and (getpos _unit select 2) > 1 and (abs (speed _heli)) < MAX_SPEED_WHILE_FASTROPING  and _zc > -24} do {
        _unit attachTo [_rope, [0,0,_zc]];
        _zc = _zc - _zdelta;
        sleep 0.1;
    };
    _unit switchmove "";
    detach _unit;

};


zlt_fnc_cutropes = {
    _veh = _this;
    _ropes = (_veh getvariable ["zlt_ropes", []]);
    {deletevehicle _x} foreach _ropes;
    _veh setvariable ["zlt_ropes", [], true];
    _veh animateDoor ['door_R', 0];
    _veh animateDoor ['door_L', 0];

};

zlt_fnc_removeropes = {
    (vehicle player) call zlt_fnc_cutropes;
};

zlt_fnc_createropes = {
    zlt_mutexAction = true;
    (vehicle player) call zlt_fnc_tossropes;
    zlt_mutexAction = false;
};

 

player createDiarySubject [STR_SCRIPTS_NAME,STR_SCRIPTS_NAME];
player createDiaryRecord [STR_SCRIPTS_NAME,[STR_SCRIPT_NAME, STR_HELP]];

player addAction["<t color='#ffff00'>"+STR_TOSS_ROPES+"</t>", zlt_fnc_createropes, [], -1, false, false, '','[] call zlt_fnc_ropes_cond'];
player addAction["<t color='#ff0000'>"+STR_CUT_ROPES+"</t>", zlt_fnc_removeropes, [], -1, false, false, '','not zlt_mutexAction and count ((vehicle player) getvariable ["zlt_ropes", []]) != 0'];
player addAction["<t color='#00ff00'>"+STR_FAST_ROPE+"</t>", zlt_fnc_fastrope, [], 15, false, false, '','not zlt_mutexAction and count ((vehicle player) getvariable ["zlt_ropes", []]) != 0 and player != driver vehicle player'];

player addEventHandler ["Respawn", {
    player addAction["<t color='#ffff00'>"+STR_TOSS_ROPES+"</t>", zlt_fnc_createropes, [], -1, false, false, '','[] call zlt_fnc_ropes_cond'];
    player addAction["<t color='#ff0000'>"+STR_CUT_ROPES+"</t>", zlt_fnc_removeropes, [], -1, false, false, '','not zlt_mutexAction and count ((vehicle player) getvariable ["zlt_ropes", []]) != 0'];
    player addAction["<t color='#00ff00'>"+STR_FAST_ROPE+"</t>", zlt_fnc_fastrope, [], 15, false, false, '','not zlt_mutexAction and count ((vehicle player) getvariable ["zlt_ropes", []]) != 0 and player != driver vehicle player'];
}];

 

 

Edited by Perixx

Share this post


Link to post
Share on other sites
Advertisement

Ich hab ein teilfunktionsfähige fastrope, mal.geht's mal nicht halt wie Arma gelaunt ist aber vielleicht finde ich den Fehler noch da 

1 person likes this

Share this post


Link to post
Share on other sites

Hab aber Grad zuviel andere Sachen noch im bauzustand daher muss fastrope erstmal warten :D 

Oberste Priorität hat erstmal die neuen Bauteile ;)

Share this post


Link to post
Share on other sites

Ist zwar schade aber Mann soll sich ja auch nicht zu viele Baustellen anlegen, ich hoffe das es in der nächsten Zeit ein fastrope von dir gibt, denn bei mir funzt es einfach nicht

Share this post


Link to post
Share on other sites

Also ich selber habe "ZLT Fastrope" schon immer genutzt für meine Server/Missionen und es war immer sehr einfach und problemlos zu bewerkstelligen, doch wenn ich mir deine Datei so anschaue, dann ist das sowas von gar nicht das "originale" ZLT Fastrope, wie ich es kenne!

 

Eventuell ist das nur eine angepasste Version auf Basis des originalen, an der sich ein anderer bereichern wollte? Kann vermutlich dadurch zu Problemen kommen!

 

Wenn ich mal irgendwie/irgendwo meine originalen Dateien wiederfinden sollte, dann kann ich diese dir gerne zukommen lassen, mit denen sollte es anstandslos funktionieren!

Share this post


Link to post
Share on other sites
Advertisement

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.