Jump to content
JasonTM

[RELEASE] JAEM - Just another Evac-Chopper Mod v1.5

Recommended Posts

This is a reworked and updated version of JAEM originally from @OtterNas3 This version is compatible with DayZ Epoch 1.0.6.2.

A complete set of install instructions is provided on my github repository Download here

Let me know if you have trouble understanding them or if I made a mistake.

New Features

  • ZSC support -  you can choose between Epoch currency or ZSC to pay for your evac chopper.
  • Deploy Anything - you can use Mudzereli's right-click actions to call the evac chopper instead of using the built in self-action loop.
  • Plot pole and plot friends restriction - to prevent players from placing evac helipads in obnoxious places, they have to build them on their own plots or their friends plots.

I have placed all of the config variables in one place in varables.sqf. The variables all have explanatory comments. Adjust them to your preferred settings:

// Evac Chopper Config Variables
evac_chopperPrice = 1; // This is the price players pay in full briefcases to set up an evac chopper (between 1-12 briefcases). Players must have the briefcases in their inventory.
evac_chopperUseZSC = false; // If you have ZSC installed you can set this to true and have players pay the amount below to set up an evac chopper.
evac_chopperPriceZSC = 100000; // Price for evac chopper if you have ZSC Installed and evac_chopperUseZSC set to true.
evac_chopperMinDistance = 500; // Minimum distance for player to call evac chopper. Do not set this lower than 500.
evac_chopperZoneMarker = 0; // Evac zone marker type (0 = Landingpad | 1 = Smoke).
evac_chopperNeedRadio = 0; // 1 - Require player to have a radio in gear to call evac chopper | 0 - Doesn't require radio to call evac chopper.
evac_chopperUseClickActions = false; // If you have Mudzereli's Deploy Anything installed and are going to use click actions to call the evac chopper, set this to true (disables call chopper self-action loop).

Functionality Instructions

  1. if you have any other mods which save classname "HeliHRescue" to the database, be aware that this particular classname is used along with ownerID to make this mod work.
  2. If you already have an instance of HeliHRescue saved to the database with your playerUID, then you will get a message stating that you cannot create another when trying to set an evac chopper.
  3. To create an evac chopper you need a keyed helicopter, a plot pole, and the money to make the purchase.
  4. You have to have the key in your inventory to set and clear the evac chopper field.
  5. Walk up to the helicopter and you will get blue self actions for setting and clearing the evac chopper field.
  6. You do not have to have the key on you to call the evac chopper.
  7. There is a flight status monitor that appears in the same place as the debug monitor, so you will want to have the debug toggled off to view it.
  8. If you use Mudzereli's right click actions, make sure to set variable evac_chopperUseClickActions to true to disable the built in self action loop.
  9. If your helicopter is destroyed simply place a new one on the rescue helipad. The call evac chopper function finds the nearest heli (within 10 meters) of your rescue helipad.
  10. It does not return your money when you disable the evac chopper.

Known Issues

There is only one known issue at this time. If the player is killed while the evac chopper is in route, the helicopter will not return to base. The pilot lands at the evac zone, gets out of the heli and just stands there. The helicopter remains locked. The way the code is written, it looks like it should work, but everything I have tried thus hasn't fixed it. I might try using some diagnostic logs to try to find where the breakdown is later. As long as you don't die before it gets there, it's smooth sailing.

Enjoy!

 

OtterNas3's original release topic

 

Share this post


Link to post
Share on other sites
6 hours ago, Cubitron said:

Nice one, works but  i can set the helipad without money after placement i have -100000 coins

Thank you for testing. The problem is that the exitWith clause was nested in an if - then scope so it did not exit the script, just the original scope.

The fix is to find this line in SetEvacChopper.sqf

format["Making an Evac-Chopper costs %1 Coins", evac_chopperPriceZSC] call dayz_rollingMessages;

and place this below it

breakOut "exit";

I have updated this in github. Thanks again for the testing.

Share this post


Link to post
Share on other sites

I have installed the mob, line for line, checked against your files supplied with the download, and rechecked 2 more times. Everything is exactly the same as yours. But now i cannot access any helicopters. 

Edit: I can access vehicles but not traders either

 

Share this post


Link to post
Share on other sites
5 hours ago, Cyrus said:

I have installed the mob, line for line, checked against your files supplied with the download, and rechecked 2 more times. Everything is exactly the same as yours. But now i cannot access any helicopters. 

Edit: I can access vehicles but not traders either

 

you have an error in selfactions check your client side rpt.

Share this post


Link to post
Share on other sites
14 minutes ago, kingpapawawa said:

Ive tried all the tricks I know to make it so AI do not attack the heli and tried to prevent damage but cant seem to make it immune.  Any thoughts?

You might try to change

evacChopperGroup = createGroup WEST;

To

evacChopperGroup = createGroup EAST;

The ai won't shoot at the heli if the pilot is on the same side.

Share this post


Link to post
Share on other sites

I tried civilian and east and still got blown up.
evacChopperPilot setCaptive true; <-- works, landed in a mission with 4 igla pods and an a10.

Using ClickActions, you can call evac multiple times, 1st time pilot gets in chopper and comes to evac (he landed at a HeliH about 100m from where I called from) Second Click caused a pilot to spawn and run toward evac. Heli Pilot did not get out of chopper.

 

Have not looked into that yet and calling it a night!

Share this post


Link to post
Share on other sites
19 hours ago, kingpapawawa said:

I tried civilian and east and still got blown up.
evacChopperPilot setCaptive true; <-- works, landed in a mission with 4 igla pods and an a10.

Using ClickActions, you can call evac multiple times, 1st time pilot gets in chopper and comes to evac (he landed at a HeliH about 100m from where I called from) Second Click caused a pilot to spawn and run toward evac. Heli Pilot did not get out of chopper.

 

Have not looked into that yet and calling it a night!

Thanks for reporting this problem. Here is the solution I came up with.

Change your click actions entry to this

["ItemGPS","Call Evac Chopper","if(!evac_chopperInProgress) then {execVM 'scripts\JAEM\callEvacChopper.sqf';} else {'You have already called an Evac Chopper' call dayz_rollingmessages;};","true"]

Open your variables.sqf and add this line with your other evac chopper variables

evac_chopperInProgress = false;

I updated my github with the fix. Download a fresh copy and replace your CallEvacChopper.sqf with a new one from the download.

Share this post


Link to post
Share on other sites

Hi Jason.

I have installed the script like instructions. Now i have the problem if someone is buying a vehicle, the vehicle don´t spawn at the Trader.

When i uninstall the script the vehicle will spawn. RPT´s (Server and Player) has no errors. 

What did i do wrong.

Sry for my bad english

Share this post


Link to post
Share on other sites
19 hours ago, Kimarik said:

Hi Jason.

I have installed the script like instructions. Now i have the problem if someone is buing a vehicle, the vehicle don´t spawn.

If i uninstall the script the vehicle will spawn. RPT´s (Server and Player) has no errors. 

What did i do wrong.

Sry for my bad english

You must have made a mistake in the fn_selfactions.sqf part. Post that file in a pastebin. What other mods do you have installed which modify that file?

Share this post


Link to post
Share on other sites

This is the entry of my fn_selfaction.

Spoiler

    // Allow Owner to lock and unlock vehicle  
    if (_player_lockUnlock_crtl) then {
        _totalKeys = call epoch_tempKeys;
        _temp_keys = _totalKeys select 0;
        _temp_keys_names = _totalKeys select 1;
        _hasKey = _characterID in _temp_keys;
        
        if (s_player_lockUnlock_crtl < 0) then {
            _oldOwner = (_characterID == _uid);
            if (_isLocked) then {
                if (_hasKey || {_oldOwner}) then {
                    _temp_key_name = (_temp_keys_names select (_temp_keys find _characterID));
                    _unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_UNLOCK",_text], "\z\addons\dayz_code\actions\unlock_veh.sqf",[_cursorTarget,_temp_key_name], 2, true, true];
                    s_player_lockunlock set [count s_player_lockunlock,_unlock];
                    s_player_lockUnlock_crtl = 1;
                } else {
                    if (_hasHotwireKit) then {
                        _unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_HOTWIRE",_text], "\z\addons\dayz_code\actions\hotwire_veh.sqf",_cursorTarget, 2, true, true];
                    } else {
                        _unlock = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_VEHLOCKED"], "",_cursorTarget, 2, false, true];
                    };
                    s_player_lockunlock set [count s_player_lockunlock,_unlock];
                    s_player_lockUnlock_crtl = 1;
                };
            } else {
                if (_hasKey || _oldOwner) then {
                    _lock = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\lock_veh.sqf",_cursorTarget, 1, true, true];
                    s_player_lockunlock set [count s_player_lockunlock,_lock];
                    s_player_lockUnlock_crtl = 1;
                };
            };
        };
        if (s_player_copyToKey < 0) then {
            if ((_hasKey && {"ItemKeyKit" in weapons player} && {(count _temp_keys) > 1} && {!_isLocked}) || {_cursorTarget getVariable ["hotwired",false]}) then {
                s_player_copyToKey = player addAction ["<t color=""#0096FF"">Change vehicle key</t>","scripts\vkc\vehicleKeyChanger.sqf",[_cursorTarget,_characterID,if (_cursorTarget getVariable ["hotwired",false]) then {"claim"} else {"change"}],5,false,true];
            };
        };
    } else {
        {player removeAction _x} count s_player_lockunlock;s_player_lockunlock = [];
        s_player_lockUnlock_crtl = -1;
        player removeAction s_player_copyToKey;
        s_player_copyToKey = -1;
    };

maybe i did the merg wrong.

Can you help me please?

Share this post


Link to post
Share on other sites
Spoiler

    // Allow Owner to lock and unlock vehicle  
    if (_player_lockUnlock_crtl) then {
        _totalKeys = call epoch_tempKeys;
        _temp_keys = _totalKeys select 0;
        _temp_keys_names = _totalKeys select 1;
        _hasKey = _characterID in _temp_keys;
        
        if (s_player_lockUnlock_crtl < 0) then {
            _oldOwner = (_characterID == _uid);
            if (_isLocked) then {
                if (_hasKey || {_oldOwner}) then {
                    _temp_key_name = (_temp_keys_names select (_temp_keys find _characterID));
                    _unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_UNLOCK",_text], "\z\addons\dayz_code\actions\unlock_veh.sqf",[_cursorTarget,_temp_key_name], 2, true, true];
                    s_player_lockunlock set [count s_player_lockunlock,_unlock];
                    s_player_lockUnlock_crtl = 1;
                } else {
                    if (_hasHotwireKit) then {
                        _unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_HOTWIRE",_text], "\z\addons\dayz_code\actions\hotwire_veh.sqf",_cursorTarget, 2, true, true];
                    } else {
                        _unlock = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_VEHLOCKED"], "",_cursorTarget, 2, false, true];
                    };
                    s_player_lockunlock set [count s_player_lockunlock,_unlock];
                    s_player_lockUnlock_crtl = 1;
                };
            } else {
                if (_hasKey || _oldOwner) then {
                    _lock = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\lock_veh.sqf",_cursorTarget, 1, true, true];
                    s_player_lockunlock set [count s_player_lockunlock,_lock];
                    s_player_lockUnlock_crtl = 1;
                };
            };
            //Evac Chopper
            if (s_player_evacChopper_ctrl < 0) then {
                private ["_setEvac","_clearEvac"];
                if (_hasKey || _oldOwner) then {
                    if ((_cursorTarget isKindOf "Helicopter") && (!playerHasEvacField)) then {
                        _setEvac = player addAction [("<t color=""#0000FF"">" + ("Set Evac-Chopper") + "</t>"),"scripts\JAEM\SetEvacChopper.sqf",_cursorTarget,3,false,false];
                        s_player_evacChopper set [count s_player_evacChopper,_setEvac];
                        s_player_evacChopper_ctrl = 1;
                    };
                    if ((_cursorTarget isKindOf "Helicopter") && playerHasEvacField && (player distance playersEvacField < 10)) then {
                        _clearEvac = player addAction [("<t color=""#0000FF"">" + ("Clear Evac-Chopper") + "</t>"),"scripts\JAEM\ClearEvacChopper.sqf",_cursorTarget,4,false,false];
                        s_player_evacChopper set [count s_player_evacChopper,_clearEvac];
                        s_player_evacChopper_ctrl = 1;
                    };
                };
            };
        };
        if (s_player_copyToKey < 0) then {
            if ((_hasKey && {"ItemKeyKit" in weapons player} && {(count _temp_keys) > 1} && {!_isLocked}) || {_cursorTarget getVariable ["hotwired",false]}) then {
                s_player_copyToKey = player addAction ["<t color=""#0096FF"">Change vehicle key</t>","scripts\vkc\vehicleKeyChanger.sqf",[_cursorTarget,_characterID,if (_cursorTarget getVariable ["hotwired",false]) then {"claim"} else {"change"}],5,false,true];
            };
        };
    } else {
        {player removeAction _x} count s_player_lockunlock;s_player_lockunlock = [];
        s_player_lockUnlock_crtl = -1;
        player removeAction s_player_copyToKey;
        s_player_copyToKey = -1;
        {player removeAction _x} count s_player_evacChopper;s_player_evacChopper = [];
        s_player_evacChopper_ctrl = -1;
    };

I will try now .

 

OK it works. i found the mistake i did.

Share this post


Link to post
Share on other sites
4 hours ago, server steve21k said:

hi, looking for some help with HeliHRescue, after restart I cant use or clear HeliHRescue.

If you were able to create the HeliHRescue and then can't clear it, then you must have missed the server side steps in server_monitor.sqf. That is where it stores and retrieves the owners of the helipads. You should also have the option to create another evac chopper.

Share this post


Link to post
Share on other sites

All working perfectly now. One question.. How do i delete an instance of the Heli rescue that is linked to a players UID? Like say if i want to move my Heli Rescue pad elsewhere? I found in the object_data table my UID is linked to HeliHRescue

Share this post


Link to post
Share on other sites
23 minutes ago, Cyrus said:

All working perfectly now. One question.. How do i delete an instance of the Heli rescue that is linked to a players UID? Like say if i want to move my Heli Rescue pad elsewhere? I found in the object_data table my UID is linked to HeliHRescue

If you have the key for the heli in your gear, you should get the option to clear the evac chopper when you point at it. That will remove the rescue heli pad.

Share this post


Link to post
Share on other sites
1 hour ago, JasonTM said:

If you have the key for the heli in your gear, you should get the option to clear the evac chopper when you point at it. That will remove the rescue heli pad.

Thanks. but what if the key is lost due to death?

Share this post


Link to post
Share on other sites
5 hours ago, JasonTM said:

If you were able to create the HeliHRescue and then can't clear it, then you must have missed the server side steps in server_monitor.sqf. That is where it stores and retrieves the owners of the helipads. You should also have the option to create another evac chopper.

I can create and clear, bu after restart I cant use HeliHRescue or clear, I have to put a new 1 down.

Share this post


Link to post
Share on other sites
55 minutes ago, server steve21k said:

I can create and clear, bu after restart I cant use HeliHRescue or clear, I have to put a new 1 down.

Post your server_monitor.sqf in a pastebin.

Do you have DZE_permanentPlot  set to false?

Share this post


Link to post
Share on other sites
3 hours ago, Cyrus said:

Thanks. but what if the key is lost due to death?

Make copies of your keys. You don't have to have the key on you to call the evac chopper. Also, I think that one of the database events unlocks vehicles when there is no key on restart.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Advertisement
  • Supporters
  • Discord

×
×
  • Create New...