Pato

Fast Roping

25 posts in this topic

Evening/Morning All

 

Anyone thought about doing a port for fast roping for exile, I currently don't have the time nor the knowledge to try to do a port

 

 

Share this post


Link to post
Share on other sites
Advertisement

I have used this in standard ARMA 3 missions and works well with visual rope but no animation for holding on. I have not tried to get working in exile.

called from init.sqf with [] execVM "scripts\zlt_fastrope.sqf";

// 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","I_Heli_light_03_F","I_Heli_light_03_unarmed_F","Exile_Chopper_Hummingbird_Green"];
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", "Exile_Chopper_Hummingbird_Green"],
        [0.6,0.5,-25.9],
        [-0.8,0.5,-25.9]
    ],
    [
        ["I_Heli_light_03_F", "I_Heli_light_03_unarmed_F"],
        [-0.95,3.0,-25.82],
        [0.8,3.0,-25.82]
    ]
];


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'];
}];

Share this post


Link to post
Share on other sites

The ZLT script would work but this is a survival mod who would need to fast rope in a survival mod. I guess it would be cool to have but i just dont see the need for it.

Share this post


Link to post
Share on other sites

The ZLT script would work but this is a survival mod who would need to fast rope in a survival mod. I guess it would be cool to have but i just dont see the need for it.

I don't see the need for another zombie game but some still putting zombies into Exile, it is there for those who choose to use it.

A possible use could be with sling loading vehicles, passenger can get down quick to sell sell vehicle before others take it while heli is landing.

Share this post


Link to post
Share on other sites

I don't see the need for another zombie game but some still putting zombies into Exile, it is there for those who choose to use it.

A possible use could be with sling loading vehicles, passenger can get down quick to sell sell vehicle before others take it while heli is landing.

LOL bro your to funny. Im not saying dont use its always a cool thing to have. And as far as the zombies for us servers that are not full all day everyday its something for the users that we do have to have something to do believe me its gets boring quick. And for all them frankie nuts out there.

Share this post


Link to post
Share on other sites

The ZLT script would work but this is a survival mod who would need to fast rope in a survival mod. I guess it would be cool to have but i just dont see the need for it.

when you team up with friends. The XM8 does have a party system on it.  Zlt fastrope works great with players, not so great with AI.

 

 

 

 

Share this post


Link to post
Share on other sites

when you team up with friends. The XM8 does have a party system on it.  Zlt fastrope works great with players, not so great with AI.

Yes this i know but what i am saying my server that i work hard on we dont have that many player cause we are not one of the big named communities and dont have that many players at max 20. I just dont see the need for it cause most of them are random ppl just looking to chill on an empty server.  Dont get me wrong i am in support of the fast roping i have had it on my altis life server (which imploded due to shitty owners). But im not bashing having on a server.

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.