Jump to content

Helicopter Parachute Supply Drop


tdavison

Recommended Posts

I am using this with Takistan, but the drops often occur well outside of the map. A while ago, I posted this:

 

1. Open SDROP_SupplyDrop.sqf.

2. Replace the "_posArray" line with this:

_posArray = [[72.0000,8184.00,200],[15320.0,7816.00,200],[7528.00,15320.0,200],[6888.00,40.0000,200]];

3. Replace the "_mapCenter" line and the "_coords" line with this:

_mapCenter = [7067.50,7798.63];
_coords = [_mapCenter,500,5000,30,0,10,0] call BIS_fnc_findSafePos;

The _posArray line has positions for helicopters to spawn on the edges of Chernarus. The _mapCenter sets the center of the map at Novy Sobor and _coords sets the distance from the center of the map to spawn the supply drop to 5000km. The edge of the map is around 7.2km from Novy Sobor, so that keeps the supply drops away from the edges of the map.

 

However in the current version there is no _mapCenter, so how can I make it so the boxes are dropped within the map? I tried just changing the _coords line as shown above, which was for Chernarus, but that didn't work.

Link to comment
Share on other sites

So, I'm having an issue editing the loadouts for the crates.  I wanted to increase the quantity of food, ammo, and add some ammo types but when I edit the SDROP_functions.sqg I seem to break the crate loadouts.

They all just revert to a single default instead of the four different setups.  Even if I simply increase the quantity of the existing items it breaks the loadouts in this way.

 

Any ideas?

 

What do you mean by single default?

Link to comment
Share on other sites

Very cool addon. I'm using it on my server. I do have two requests:

 

1. Percentage chance of it running.

2. Percentage chance that the heli will crash before dropping it's crate, just to make it more interesting.

 

Now, if anyone wants to use it for Chernarus:

 

1. Open SDROP_SupplyDrop.sqf.

2. Replace the "_posArray" line with this:

_posArray = [[72.0000,8184.00,200],[15320.0,7816.00,200],[7528.00,15320.0,200],[6888.00,40.0000,200]];

3. Replace the "_mapCenter" line and the "_coords" line with this:

_mapCenter = [7067.50,7798.63];
_coords = [_mapCenter,500,5000,30,0,10,0] call BIS_fnc_findSafePos;

The _posArray line has positions for helicopters to spawn on the edges of Chernarus. The _mapCenter sets the center of the map at Novy Sobor and _coords sets the distance from the center of the map to spawn the supply drop to 5000km. The edge of the map is around 7.2km from Novy Sobor, so that keeps the supply drops away from the edges of the map.

 

Or run the crashed heli script right after the supply drop. Now THAT would be interesting.

Link to comment
Share on other sites

  • 1 month later...
  • 4 weeks later...

I did not see anyone having this issue in the thread but recently the AI are either dead while parachuting to the ground or they die on impact.  ALL of the AI in the helicopter die.  I just started noticing this today but it could have been going on for awhile now.  Log looks like:

15:17:29 Error: Object(4 : 237) not found
15:17:54 [SDROP]: Crate landed. Starting Crate de-spawn timer
15:19:00 Server: Object 4:242 not found (message Type_90)
15:19:06 Server: Object 4:243 not found (message Type_400)
15:19:08 Error in ReloadMagazine - unable to locate target weapon arifle_TRG21_GL_F
15:19:41 "#SEM: Mission AI waiting for their first encounter"

Any ideas what would cause this and/or how to fix?


Thanks.

Edited by B_Man
Link to comment
Share on other sites

  • 1 month later...

 

12:11:31 Warning Message: No entry 'bin\config.bin/CfgMagazines.FootSnooter'.


12:11:31 Warning Message: No entry '.picture'.
12:11:31 Warning Message: '/' is not a value
12:11:31 Warning Message: No entry '.scope'.
12:11:31 Warning Message: '/' is not a value
12:11:31 Warning Message: Error: creating magazine FootSnooter with scope=private
12:11:31 Warning Message: No entry '.displayName'.
12:11:31 Warning Message: '/' is not a value
12:11:31 Warning Message: No entry '.displayNameShort'.
12:11:31 Warning Message: '/' is not a value
12:11:31 Warning Message: No entry '.nameSound'.
12:11:31 Warning Message: '/' is not a value
12:11:31 Warning Message: No entry '.Library'.
12:11:31 Warning Message: No entry '.libTextDesc'.
12:11:31 Warning Message: '/' is not a value
12:11:31 Warning Message: No entry '.type'.
12:11:31 Warning Message: '/' is not a value
12:11:31 Warning Message: No entry '.count'.
12:11:31 Warning Message: '/' is not a value
12:11:31 Warning Message: No entry '.maxLeadSpeed'.
12:11:31 Warning Message: '/' is not a value
12:11:31 Warning Message: No entry '.initSpeed'.
12:11:31 Warning Message: '/' is not a value
12:11:31 Warning Message: No entry '.reloadAction'.
12:11:31 Warning Message: '/' is not a value
12:11:31 Warning Message: No entry '.modelSpecial'.
12:11:31 Warning Message: '/' is not a value
12:11:31 Warning Message: No entry '.ammo'.
12:11:31 Warning Message: '/' is not a value
12:12:40 [SDROP]: Crate dropped in water - restarting.

Found this at line 20 in SDROP_Functions.sqf, it contains a typo:

_crate addMagazineCargoGlobal ["FootSnooter",2];

Replace with 

_crate addMagazineCargoGlobal ["FoodSnooter",2];

:)

Edited by JerryAtricks
Link to comment
Share on other sites

  • 7 months later...
On 5/15/2016 at 8:24 AM, Scorpi said:

Epoch 0.3.8

Bots don't shoot. Can someone help?

 

my settings:

        _grp = createGroup RESISTANCE;
        _grp setBehaviour "COMBAT";
        _grp setCombatMode "RED";

Just got a chance to check on my server and I can confirm this behaviour. I will look further into it but, if anyone already has experienced this and fixed it a head's up would be appreciated. I have the same standard settings, thinking an event handler issue maybe? Had a similar problem with the EH in Civilian Occupation System for infected. Will check

Link to comment
Share on other sites

Just now, He-Man said:

Changelogs to 0.3.8:


[Info] Some AI Scripts Mods may not work with disableRemoteSensors enabled. You can disable with "disableRemoteSensors = false;" in CfgEpochClient.

Could have to do with this?!

Will check later tonight. Thanks very much, missed that (doh!)

Link to comment
Share on other sites

Helicopter-Supply-Drop-1.0d

problem found...

(old) SDROP_Functions.sqf

Spoiler

// PLAYER DEFINED LOOT TABLES - EDIT ITEMS BELOW FOR CRATES
//Defines LOOT types and gets added to the drop crate
SDROPLoadLootFood = {
    private["_crate"];
    _crate = _this select 0;
    
    //empty crate first
    clearWeaponCargoGlobal _crate;
    clearMagazineCargoGlobal _crate;
    clearBackpackCargoGlobal _crate;
    clearItemCargoGlobal _crate;
    
    //fill the crate with FOOD & CLOTHING
    _crate addMagazineCargoGlobal ["ItemSodaRbull",2];
    _crate addMagazineCargoGlobal ["ItemSodaOrangeSherbet",2];
    _crate addMagazineCargoGlobal ["ItemSodaPurple",2];
    _crate addMagazineCargoGlobal ["ItemSodaMocha",2];
    _crate addMagazineCargoGlobal ["ItemSodaBurst",2];
    _crate addMagazineCargoGlobal ["FoodMeeps",2];
    _crate addMagazineCargoGlobal ["FootSnooter",2];
    _crate addMagazineCargoGlobal ["FoodWalkNSons",2];
    _crate addMagazineCargoGlobal ["water_epoch",4];
    _crate addMagazineCargoGlobal ["ItemCoolerE",4];
    _crate addMagazineCargoGlobal ["SweetCorn_EPOCH",4];
    _crate addMagazineCargoGlobal ["WhiskeyNoodle",6];
    _crate addMagazineCargoGlobal ["SnakeMeat_EPOCH",1];
    _crate addMagazineCargoGlobal ["CookedRabbit_EPOCH",2];
    _crate addMagazineCargoGlobal ["CookedChicken_EPOCH",2];
    _crate addMagazineCargoGlobal ["CookedGoat_EPOCH",2];
    _crate addMagazineCargoGlobal ["CookedSheep_EPOCH",2];
    _crate addItemCargoGlobal ["U_O_CombatUniform_ocamo",1];
    _crate addItemCargoGlobal ["U_O_GhillieSuit",1];
    _crate addItemCargoGlobal ["U_O_Wetsuit",1];
    _crate addItemCargoGlobal ["U_OG_Guerilla1_1",1];
    _crate addItemCargoGlobal ["U_OG_Guerilla2_1",1];
    _crate addItemCargoGlobal ["U_OG_Guerilla3_1",1];
    _crate addItemCargoGlobal ["U_OrestesBody",1];
    _crate addItemCargoGlobal ["U_Wetsuit_uniform",1];
    _crate addItemCargoGlobal ["U_Ghillie1_uniform",1];
    _crate addBackpackCargoGlobal ["B_Carryall_ocamo",2];
};

SDROPLoadLootSupplies = {
    private["_crate"];
    _crate = _this select 0;
    
    //empty crate first
    clearWeaponCargoGlobal _crate;
    clearMagazineCargoGlobal _crate;
    clearBackpackCargoGlobal _crate;
    clearItemCargoGlobal _crate;
    
    //fill the crate with SUPPLIES
    _crate addMagazineCargoGlobal ["CinderBlocks",8];
    _crate addMagazineCargoGlobal ["jerrycan_epoch",3];
    _crate addMagazineCargoGlobal ["CircuitParts",4];
    _crate addMagazineCargoGlobal ["ItemCorrugatedLg",1];
    _crate addMagazineCargoGlobal ["ItemCorrugated",4];
    _crate addMagazineCargoGlobal ["ItemMixOil",2];
    _crate addMagazineCargoGlobal ["MortarBucket",6];
    _crate addMagazineCargoGlobal ["PartPlankPack",4];
    _crate addMagazineCargoGlobal ["ItemLockbox",1];
    _crate addMagazineCargoGlobal ["FAK",6];
    _crate addMagazineCargoGlobal ["VehicleRepair",2];
    _crate addMagazineCargoGlobal ["Towelette",4];
    _crate addMagazineCargoGlobal ["HeatPack",2];
    _crate addMagazineCargoGlobal ["ColdPack",2];
    _crate addMagazineCargoGlobal ["Pelt_EPOCH",2];
    _crate addWeaponCargoGlobal ["MultiGun",2];
    _crate addMagazineCargoGlobal ["Heal_EPOCH",2];
    _crate addMagazineCargoGlobal ["Repair_EPOCH",1];
    _crate addMagazineCargoGlobal ["EnergyPack",4];
    _crate addMagazineCargoGlobal ["EnergyPackLg",1];
    _crate addBackpackCargoGlobal ["B_Carryall_oucamo",1];
    _crate addBackpackCargoGlobal ["B_FieldPack_cbr",1];
    _crate addBackpackCargoGlobal ["B_TacticalPack_ocamo",1];
};

SDROPLoadLootWeapons = {
    private["_crate"];
    _crate = _this select 0;
    
    //empty crate first
    clearWeaponCargoGlobal _crate;
    clearMagazineCargoGlobal _crate;
    clearBackpackCargoGlobal _crate;
    clearItemCargoGlobal _crate;
    
    //fill the crate with WEAPONS and AMMO
    _crate addWeaponCargoGlobal ["srifle_DMR_01_F",1];
    _crate addMagazineCargoGlobal ["20Rnd_762x51_Mag",4];
    _crate addWeaponCargoGlobal ["arifle_Mk20_F",1];
    _crate addMagazineCargoGlobal ["30Rnd_556x45_Stanag",4];
    _crate addWeaponCargoGlobal ["arifle_MX_Black_F",1];
    _crate addMagazineCargoGlobal ["30Rnd_65x39_caseless_mag_Tracer",4];
    _crate addWeaponCargoGlobal ["M249_EPOCH",1];
    _crate addMagazineCargoGlobal ["200Rnd_556x45_M249",2];
    _crate addWeaponCargoGlobal ["srifle_LRR_SOS_F",1];
    _crate addMagazineCargoGlobal ["7Rnd_408_Mag",3];
    _crate addItemCargoGlobal ["optic_Arco",1];
    _crate addItemCargoGlobal ["optic_SOS",1];
    _crate addItemCargoGlobal ["optic_Aco",1];
    _crate addItemCargoGlobal ["optic_LRPS",1];
    _crate addItemCargoGlobal ["Muzzle_snds_H",1];
    _crate addItemCargoGlobal ["Muzzle_snds_M",1];
    _crate addItemCargoGlobal ["Muzzle_snds_B",1];
    _crate addItemCargoGlobal ["ItemCompass",4];
    _crate addItemCargoGlobal ["ItemGPS",4];
    _crate addItemCargoGlobal ["EpochRadio0",4];
    _crate addItemCargoGlobal ["ItemWatch",4];
    _crate addItemCargoGlobal ["V_7_EPOCH",1];
    _crate addItemCargoGlobal ["V_10_EPOCH",1];
    _crate addItemCargoGlobal ["V_13_EPOCH",1];
    _crate addItemCargoGlobal ["V_14_EPOCH",1];
    _crate addItemCargoGlobal ["V_15_EPOCH",1];
    _crate addItemCargoGlobal ["V_37_EPOCH",1];
    _crate addItemCargoGlobal ["V_38_EPOCH",1];
    _crate addMagazineCargoGlobal ["HandGrenade",2];
    _crate addMagazineCargoGlobal ["MiniGrenade",2];
    _crate addBackpackCargoGlobal ["B_FieldPack_ocamo",2];
};

SDROPLoadLootRandom = {
    [_crate] call SDROPRandomLoot;
};

// Crate Blacklist - These are items that should NOT be in random crate - should eliminate most BE filter issues (may need more testing)
SDROPCrateBlacklist = [
    "DemoCharge_Remote_Mag", "SatchelCharge_Remote_Mag", "ATMine_Range_Mag",
    "ClaymoreDirectionalMine_Remote_Mag", "APERSMine_Range_Mag",
    "APERSBoundingMine_Range_Mag", "SLAMDirectionalMine_Wire_Mag",
    "APERSTripMine_Wire_Mag", "NVGoggles_OPFOR", "NVGoggles_INDEP",
    "FirstAidKit", "Medikit", "ToolKit", "optic_DMS"
];

SDROPRandomLoot = {
    private ["_crate","_var","_tmp","_kindOf","_report","_cAmmo"];
    
    _crate = _this select 0;
    
    // Empty Crate
    clearWeaponCargoGlobal _crate;
    clearMagazineCargoGlobal _crate;
    clearBackpackCargoGlobal  _crate;
    clearItemCargoGlobal _crate;
    
    SDROPLootList = [];
        // Generate Loot
        {
            _tmp = (getArray(_x >> 'items'));
            for "_z" from 0 to ((count(_tmp))-1) do {
                SDROPLootList = SDROPLootList + [((_tmp select _z) select 0)];
            };
        } forEach ("configName _x != 'Uniforms' && configName _x != 'Headgear'" configClasses (configFile >> "CfgLootTable"));

    
    _report = [];
    // Load Random Loot Amount
    for "_i" from 1 to ((floor(random 10)) + 10) do {
        _var = (SDROPLootList call BIS_fnc_selectRandom);
        
        if (!(_var in SDROPCrateBlacklist)) then {
            switch (true) do
            {
                case (isClass (configFile >> "CfgWeapons" >> _var)): {
                    _kindOf = [(configFile >> "CfgWeapons" >> _var),true] call BIS_fnc_returnParents;
                    if ("ItemCore" in _kindOf) then {
                        _crate addItemCargoGlobal [_var,1];
                    } else {
                        _crate addWeaponCargoGlobal [_var,1];
                        
                        _cAmmo = [] + getArray (configFile >> "cfgWeapons" >> _var >> "magazines");
                        {
                            if (isClass(configFile >> "CfgPricing" >> _x)) exitWith {
                                _crate addMagazineCargoGlobal [_x,2];
                            };
                        } forEach _cAmmo;
                    };
                };
                case (isClass (configFile >> "cfgMagazines" >> _var)): {
                    _crate addMagazineCargoGlobal [_var,1];
                };
                case ((getText(configFile >> "cfgVehicles" >> _var >>  "vehicleClass")) == "Backpacks"): {
                    _crate addBackpackCargoGlobal [_var,1];
                };
                default {
                    _report = _report + [_var];
                };
            };
        };
    };
    
    if ((count _report) > 0) then {
        diag_log text format ["[SDROP]: LoadLoot: <Unknown> %1", str _report];
    };
};

SDROPBroadcast = {
    private ["_title","_subTitle"];
    
    _title = _this select 0;
    _subTitle = _this select 1;
    
    _alertMsg = "<t color='#FFCC00' size='1.0' font='PuristaSemibold' shadow='1' shadowColor='#000000' align='center'>" + _title + "</t>";
    _alertMsg = _alertMsg + "<br /><t color='#FFFFFF' size='0.9' font='PuristaLight' shadow='0' align='center'>" + _subTitle + "</t>";
    
    [_alertMsg] execVM "\SDROP\scripts\SDROP_Alert.sqf";
};

SDROPSetAIWaypoints = {
    private ["_grp","_crate"];
    
    _grp = _this select 0;
    _crate = _this select 1;
    _cratePos = getPos _crate;
    
    _wpPatrolGrid = [
        [(_cratePos select 0)+20, (_cratePos select 1), 0],
        [(_cratePos select 0), (_cratePos select 1)+20, 0],
        [(_cratePos select 0)-20, (_cratePos select 1), 0],
        [(_cratePos select 0), (_cratePos select 1)-20, 0]
    ];
    
    for "_i" from 0 to ((count _wpPatrolGrid)-1) do {
        _wp = _grp addWaypoint [(_wpPatrolGrid select _i), 0];
        _wp setWaypointType "SAD";
        _wp setWaypointBehaviour "COMBAT";
        _wp setWaypointCompletionRadius 10;
    };
    
    _cycle = _grp addWaypoint [_cratePos, 20];
    _cycle setWaypointType "CYCLE";
    _cycle setWaypointBehaviour "COMBAT";
    _cycle setWaypointCompletionRadius 10;
};

SDROPLoadAIGear = {
    private ["_unit","_isSniper","_prim","_seco","_pAmmo","_hAmmo"];
    
    _unit = _this select 0;
    _isSniper = _this select 1;
    
    if (!isNull _unit) then {
        removeAllWeapons _unit;
        {_unit removeMagazine _x;} forEach (magazines _unit);
        removeAllItems _unit;
        removeUniform _unit;
        removeVest _unit;
        removeBackpack _unit;
        removeGoggles _unit;
        removeHeadGear _unit;
        
        if (_isSniper) then {
            // Add Sniper Clothing
            _unit forceAddUniform ("U_O_GhillieSuit");
            _unit addHeadGear (SDROPHeadgearList call BIS_fnc_selectRandom);
            _unit addVest (SDROPVestList call BIS_fnc_selectRandom);
            
            // Add Sniper Weapons & Ammo (default M104 with LR scope and ammo)
            _prim = "srifle_LRR_SOS_F";
            _seco = SDROPPistolsList call BIS_fnc_selectRandom;
        } else {
            //clothing
            _unit forceAddUniform (SDROPUniformList call BIS_fnc_selectRandom);
            _unit addHeadGear (SDROPHeadgearList call BIS_fnc_selectRandom);
            _unit addVest (SDROPVestList call BIS_fnc_selectRandom);
            
            //weapons & Ammo
            _prim = SDROPRiflesList call BIS_fnc_selectRandom;
            _seco = SDROPPistolsList call BIS_fnc_selectRandom;
        };
        
        // Give unit parachute
        _unit addBackpack "B_Parachute";
        
        //NV Goggles for night drops
        if (SunOrMoon < 1) then {
            _unit addItem "NVG_EPOCH";
            _unit assignItem "NVG_EPOCH";
        };
        
        //Gotta get paid yo!
        _kryptoAmount = floor (random 300) +1;
        _unit setVariable ["krypto", _kryptoAmount];
        
        _pAmmo = [] + getArray (configFile >> "cfgWeapons" >> _prim >> "magazines");
        {
            if (isClass(configFile >> "CfgPricing" >> _x)) exitWith {
                _unit addMagazine _x;
                _unit addMagazine _x;
            };
        } forEach _pAmmo;
        
        _hAmmo = [] + getArray (configFile >> "cfgWeapons" >> _seco >> "magazines");
        {
            if (isClass(configFile >> "CfgPricing" >> _x)) exitWith {
                _unit addMagazine _x;
                _unit addMagazine _x;
            };
        } forEach _hAmmo;
        
        _unit addWeapon _prim;
        _unit selectWeapon _prim;
        _unit addWeapon _seco;

    };
};

SDROPHeadgearList = [
    "H_39_EPOCH","H_40_EPOCH","H_41_EPOCH","H_42_EPOCH","H_43_EPOCH","H_44_EPOCH","H_45_EPOCH","H_46_EPOCH","H_47_EPOCH","H_48_EPOCH",
    "H_49_EPOCH","H_50_EPOCH","H_51_EPOCH","H_52_EPOCH","H_53_EPOCH","H_54_EPOCH","H_55_EPOCH","H_56_EPOCH","H_57_EPOCH","H_58_EPOCH",
    "H_59_EPOCH","H_60_EPOCH","H_61_EPOCH","H_62_EPOCH","H_63_EPOCH","H_64_EPOCH","H_65_EPOCH","H_66_EPOCH","H_67_EPOCH","H_68_EPOCH",
    "H_69_EPOCH","H_70_EPOCH","H_74_EPOCH","H_75_EPOCH","H_76_EPOCH","H_77_EPOCH","H_86_EPOCH","H_87_EPOCH","H_88_EPOCH","H_89_EPOCH",
    "H_90_EPOCH","H_91_EPOCH","H_92_EPOCH", "H_Beret_blk", "H_Beret_red", "H_Beret_grn"
];

SDROPUniformList = [
    "U_O_CombatUniform_ocamo", "U_O_PilotCoveralls", "U_OG_Guerilla1_1", "U_OG_Guerilla2_1", "U_OG_Guerilla2_3", "U_IG_leader",
    "U_OG_Guerilla3_1", "U_OG_Guerilla3_2", "U_OG_leader", "U_C_WorkerCoveralls", "U_I_CombatUniform_tshirt", "U_I_OfficerUniform",
    "U_CamoRed_uniform", "U_CamoBrn_uniform", "U_CamoBlue_uniform", "U_Camo_uniform", "U_O_CombatUniform_oucamo", "U_I_CombatUniform_shortsleeve"
];

SDROPVestList = [
    "V_1_EPOCH","V_2_EPOCH","V_3_EPOCH","V_4_EPOCH","V_5_EPOCH","V_6_EPOCH","V_7_EPOCH","V_8_EPOCH","V_9_EPOCH","V_10_EPOCH",
    "V_11_EPOCH","V_12_EPOCH","V_13_EPOCH","V_14_EPOCH","V_15_EPOCH","V_16_EPOCH","V_17_EPOCH","V_18_EPOCH","V_19_EPOCH","V_20_EPOCH",
    "V_21_EPOCH","V_22_EPOCH","V_23_EPOCH","V_24_EPOCH","V_25_EPOCH","V_26_EPOCH","V_27_EPOCH","V_28_EPOCH","V_29_EPOCH","V_30_EPOCH",
    "V_31_EPOCH","V_32_EPOCH","V_33_EPOCH","V_34_EPOCH","V_35_EPOCH","V_36_EPOCH","V_37_EPOCH","V_38_EPOCH","V_39_EPOCH","V_40_EPOCH"
];

SDROPRiflesList = [
    "srifle_EBR_F","srifle_DMR_01_F","arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F",
    "arifle_MX_GL_F","arifle_MXM_F","arifle_SDAR_F","arifle_TRG21_F","arifle_TRG20_F","arifle_TRG21_GL_F","arifle_Mk20_F",
    "arifle_Mk20C_F","arifle_Mk20_GL_F","arifle_Mk20_plain_F","arifle_Mk20C_plain_F","arifle_Mk20_GL_plain_F","SMG_01_F",
    "SMG_02_F","hgun_PDW2000_F","arifle_MXM_Black_F","arifle_MX_GL_Black_F","arifle_MX_Black_F","arifle_MXC_Black_F","Rollins_F",
    "LMG_Mk200_F","arifle_MX_SW_F","LMG_Zafir_F","arifle_MX_SW_Black_F","m249_EPOCH","m249Tan_EPOCH",
    "m16_EPOCH","m16Red_EPOCH","M14_EPOCH","M14Grn_EPOCH","m4a3_EPOCH","AKM_EPOCH"
];

SDROPPistolsList = [
    "hgun_ACPC2_F","hgun_Rook40_F","hgun_P07_F","hgun_Pistol_heavy_01_F","hgun_Pistol_heavy_02_F","ruger_pistol_epoch",
    "1911_pistol_epoch","hgun_Pistol_Signal_F"
];

// Set AI Skills
SDROPSetUnitSkills = {
    private ["_unit","_skillSetArray"];
    
    _unit = _this select 0;
    _skillSetArray = _this select 1;
    
    {
        _unit setSkill [(_x select 0),(_x select 1)];
        //diag_log text format ["[SDROP]: Skill: %1:%2", (_x select 0),(_x select 1)];
    } forEach _skillSetArray;
};

//SkillSets - endurance removed from Arma 3
skillsRookie = [
["aimingAccuracy",0.4],
["aimingShake",0.3],
["aimingSpeed",0.3],
["spotDistance",0.3],
["spotTime",0.3],
["courage",0.4],
["reloadSpeed",0.6],
["commanding",0.6],
["general",1.0]
];

skillsVeteran = [
["aimingAccuracy",0.6],
["aimingShake",0.6],
["aimingSpeed",0.6],
["spotDistance",0.6],
["spotTime",0.6],
["courage",0.6],
["reloadSpeed",0.7],
["commanding",0.8],
["general",1.0]
];

skillsElite = [
["aimingAccuracy",0.8],
["aimingShake",0.75],
["aimingSpeed",0.7],
["spotDistance",0.8],
["spotTime",0.8],
["courage",1.0],
["reloadSpeed",0.8],
["commanding",1.0],
["general",1.0]
];

if (SDROP_Debug) then {
    diag_log text format ["[SDROP]: Functions loaded. Starting supply drop timer."];
};

 

(hotfix)  SDROP_Functions.sqf

Spoiler

// PLAYER DEFINED LOOT TABLES - EDIT ITEMS BELOW FOR CRATES
//Defines LOOT types and gets added to the drop crate
SDROPLoadLootFood = {
    private["_crate"];
    _crate = _this select 0;
    
    //empty crate first
    clearWeaponCargoGlobal _crate;
    clearMagazineCargoGlobal _crate;
    clearBackpackCargoGlobal _crate;
    clearItemCargoGlobal _crate;
    
    //fill the crate with FOOD & CLOTHING
    _crate addMagazineCargoGlobal ["ItemSodaRbull",2];
    _crate addMagazineCargoGlobal ["ItemSodaOrangeSherbet",2];
    _crate addMagazineCargoGlobal ["ItemSodaPurple",2];
    _crate addMagazineCargoGlobal ["ItemSodaMocha",2];
    _crate addMagazineCargoGlobal ["ItemSodaBurst",2];
    _crate addMagazineCargoGlobal ["FoodMeeps",2];
    _crate addMagazineCargoGlobal ["FootSnooter",2];
    _crate addMagazineCargoGlobal ["FoodWalkNSons",2];
    _crate addMagazineCargoGlobal ["water_epoch",4];
    _crate addMagazineCargoGlobal ["ItemCoolerE",4];
    _crate addMagazineCargoGlobal ["SweetCorn_EPOCH",4];
    _crate addMagazineCargoGlobal ["WhiskeyNoodle",6];
    _crate addMagazineCargoGlobal ["SnakeMeat_EPOCH",1];
    _crate addMagazineCargoGlobal ["CookedRabbit_EPOCH",2];
    _crate addMagazineCargoGlobal ["CookedChicken_EPOCH",2];
    _crate addMagazineCargoGlobal ["CookedGoat_EPOCH",2];
    _crate addMagazineCargoGlobal ["CookedSheep_EPOCH",2];
    _crate addItemCargoGlobal ["U_O_CombatUniform_ocamo",1];
    _crate addItemCargoGlobal ["U_O_GhillieSuit",1];
    _crate addItemCargoGlobal ["U_O_Wetsuit",1];
    _crate addItemCargoGlobal ["U_OG_Guerilla1_1",1];
    _crate addItemCargoGlobal ["U_OG_Guerilla2_1",1];
    _crate addItemCargoGlobal ["U_OG_Guerilla3_1",1];
    _crate addItemCargoGlobal ["U_OrestesBody",1];
    _crate addItemCargoGlobal ["U_Wetsuit_uniform",1];
    _crate addItemCargoGlobal ["U_Ghillie1_uniform",1];
    _crate addBackpackCargoGlobal ["B_Carryall_ocamo",2];
};

SDROPLoadLootSupplies = {
    private["_crate"];
    _crate = _this select 0;
    
    //empty crate first
    clearWeaponCargoGlobal _crate;
    clearMagazineCargoGlobal _crate;
    clearBackpackCargoGlobal _crate;
    clearItemCargoGlobal _crate;
    
    //fill the crate with SUPPLIES
    _crate addMagazineCargoGlobal ["CinderBlocks",8];
    _crate addMagazineCargoGlobal ["jerrycan_epoch",3];
    _crate addMagazineCargoGlobal ["CircuitParts",4];
    _crate addMagazineCargoGlobal ["ItemCorrugatedLg",1];
    _crate addMagazineCargoGlobal ["ItemCorrugated",4];
    _crate addMagazineCargoGlobal ["ItemMixOil",2];
    _crate addMagazineCargoGlobal ["MortarBucket",6];
    _crate addMagazineCargoGlobal ["PartPlankPack",4];
    _crate addMagazineCargoGlobal ["ItemLockbox",1];
    _crate addMagazineCargoGlobal ["FAK",6];
    _crate addMagazineCargoGlobal ["VehicleRepair",2];
    _crate addMagazineCargoGlobal ["Towelette",4];
    _crate addMagazineCargoGlobal ["HeatPack",2];
    _crate addMagazineCargoGlobal ["ColdPack",2];
    _crate addMagazineCargoGlobal ["Pelt_EPOCH",2];
    _crate addWeaponCargoGlobal ["MultiGun",2];
    _crate addMagazineCargoGlobal ["Heal_EPOCH",2];
    _crate addMagazineCargoGlobal ["Repair_EPOCH",1];
    _crate addMagazineCargoGlobal ["EnergyPack",4];
    _crate addMagazineCargoGlobal ["EnergyPackLg",1];
    _crate addBackpackCargoGlobal ["B_Carryall_oucamo",1];
    _crate addBackpackCargoGlobal ["B_FieldPack_cbr",1];
    _crate addBackpackCargoGlobal ["B_TacticalPack_ocamo",1];
};

SDROPLoadLootWeapons = {
    private["_crate"];
    _crate = _this select 0;
    
    //empty crate first
    clearWeaponCargoGlobal _crate;
    clearMagazineCargoGlobal _crate;
    clearBackpackCargoGlobal _crate;
    clearItemCargoGlobal _crate;
    
    //fill the crate with WEAPONS and AMMO
    _crate addWeaponCargoGlobal ["srifle_DMR_01_F",1];
    _crate addMagazineCargoGlobal ["20Rnd_762x51_Mag",4];
    _crate addWeaponCargoGlobal ["arifle_Mk20_F",1];
    _crate addMagazineCargoGlobal ["30Rnd_556x45_Stanag",4];
    _crate addWeaponCargoGlobal ["arifle_MX_Black_F",1];
    _crate addMagazineCargoGlobal ["30Rnd_65x39_caseless_mag_Tracer",4];
    _crate addWeaponCargoGlobal ["M249_EPOCH",1];
    _crate addMagazineCargoGlobal ["200Rnd_556x45_M249",2];
    _crate addWeaponCargoGlobal ["srifle_LRR_SOS_F",1];
    _crate addMagazineCargoGlobal ["7Rnd_408_Mag",3];
    _crate addItemCargoGlobal ["optic_Arco",1];
    _crate addItemCargoGlobal ["optic_SOS",1];
    _crate addItemCargoGlobal ["optic_Aco",1];
    _crate addItemCargoGlobal ["optic_LRPS",1];
    _crate addItemCargoGlobal ["Muzzle_snds_H",1];
    _crate addItemCargoGlobal ["Muzzle_snds_M",1];
    _crate addItemCargoGlobal ["Muzzle_snds_B",1];
    _crate addItemCargoGlobal ["ItemCompass",4];
    _crate addItemCargoGlobal ["ItemGPS",4];
    _crate addItemCargoGlobal ["EpochRadio0",4];
    _crate addItemCargoGlobal ["ItemWatch",4];
    _crate addItemCargoGlobal ["V_7_EPOCH",1];
    _crate addItemCargoGlobal ["V_10_EPOCH",1];
    _crate addItemCargoGlobal ["V_13_EPOCH",1];
    _crate addItemCargoGlobal ["V_14_EPOCH",1];
    _crate addItemCargoGlobal ["V_15_EPOCH",1];
    _crate addItemCargoGlobal ["V_37_EPOCH",1];
    _crate addItemCargoGlobal ["V_38_EPOCH",1];
    _crate addMagazineCargoGlobal ["HandGrenade",2];
    _crate addMagazineCargoGlobal ["MiniGrenade",2];
    _crate addBackpackCargoGlobal ["B_FieldPack_ocamo",2];
};

SDROPLoadLootRandom = {
    [_crate] call SDROPRandomLoot;
};

// Crate Blacklist - These are items that should NOT be in random crate - should eliminate most BE filter issues (may need more testing)
SDROPCrateBlacklist = [
    "DemoCharge_Remote_Mag", "SatchelCharge_Remote_Mag", "ATMine_Range_Mag",
    "ClaymoreDirectionalMine_Remote_Mag", "APERSMine_Range_Mag",
    "APERSBoundingMine_Range_Mag", "SLAMDirectionalMine_Wire_Mag",
    "APERSTripMine_Wire_Mag", "NVGoggles_OPFOR", "NVGoggles_INDEP",
    "FirstAidKit", "Medikit", "ToolKit", "optic_DMS"
];

SDROPRandomLoot = {
    private ["_crate","_var","_tmp","_kindOf","_report","_cAmmo"];
    
    _crate = _this select 0;
    
    // Empty Crate
    clearWeaponCargoGlobal _crate;
    clearMagazineCargoGlobal _crate;
    clearBackpackCargoGlobal  _crate;
    clearItemCargoGlobal _crate;
    
    SDROPLootList = [];
        // Generate Loot
        {
            _tmp = (getArray(_x >> 'items'));
                {SDROPLootList = SDROPLootList + [ ( _x select 0 ) select 0 ];} forEach (_tmp);
            } forEach ("configName _x != 'Uniforms' && configName _x != 'Headgear'" configClasses (configFile >> "CfgLootTable"));

    
    _report = [];
    // Load Random Loot Amount
    for "_i" from 1 to ((floor(random 10)) + 10) do {
        _var = (SDROPLootList call BIS_fnc_selectRandom);
        
        if (!(_var in SDROPCrateBlacklist)) then {
            switch (true) do
            {
                case (isClass (configFile >> "CfgWeapons" >> _var)): {
                    _kindOf = [(configFile >> "CfgWeapons" >> _var),true] call BIS_fnc_returnParents;
                    if ("ItemCore" in _kindOf) then {
                        _crate addItemCargoGlobal [_var,1];
                    } else {
                        _crate addWeaponCargoGlobal [_var,1];
                        
                        _cAmmo = [] + getArray (configFile >> "cfgWeapons" >> _var >> "magazines");
                        {
                            if (isClass(configFile >> "CfgPricing" >> _x)) exitWith {
                                _crate addMagazineCargoGlobal [_x,2];
                            };
                        } forEach _cAmmo;
                    };
                };
                case (isClass (configFile >> "cfgMagazines" >> _var)): {
                    _crate addMagazineCargoGlobal [_var,1];
                };
                case ((getText(configFile >> "cfgVehicles" >> _var >>  "vehicleClass")) == "Backpacks"): {
                    _crate addBackpackCargoGlobal [_var,1];
                };
                default {
                    _report = _report + [_var];
                };
            };
        };
    };
    
    if ((count _report) > 0) then {
        diag_log text format ["[SDROP]: LoadLoot: <Unknown> %1", str _report];
    };
};

SDROPBroadcast = {
    private ["_title","_subTitle"];
    
    _title = _this select 0;
    _subTitle = _this select 1;
    
    _alertMsg = "<t color='#FFCC00' size='1.0' font='PuristaSemibold' shadow='1' shadowColor='#000000' align='center'>" + _title + "</t>";
    _alertMsg = _alertMsg + "<br /><t color='#FFFFFF' size='0.9' font='PuristaLight' shadow='0' align='center'>" + _subTitle + "</t>";
    
    [_alertMsg] execVM "\SDROP\scripts\SDROP_Alert.sqf";
};

SDROPSetAIWaypoints = {
    private ["_grp","_crate"];
    
    _grp = _this select 0;
    _crate = _this select 1;
    _cratePos = getPos _crate;
    
    _wpPatrolGrid = [
        [(_cratePos select 0)+20, (_cratePos select 1), 0],
        [(_cratePos select 0), (_cratePos select 1)+20, 0],
        [(_cratePos select 0)-20, (_cratePos select 1), 0],
        [(_cratePos select 0), (_cratePos select 1)-20, 0]
    ];
    
    for "_i" from 0 to ((count _wpPatrolGrid)-1) do {
        _wp = _grp addWaypoint [(_wpPatrolGrid select _i), 0];
        _wp setWaypointType "SAD";
        _wp setWaypointBehaviour "COMBAT";
        _wp setWaypointCompletionRadius 10;
    };
    
    _cycle = _grp addWaypoint [_cratePos, 20];
    _cycle setWaypointType "CYCLE";
    _cycle setWaypointBehaviour "COMBAT";
    _cycle setWaypointCompletionRadius 10;
};

SDROPLoadAIGear = {
    private ["_unit","_isSniper","_prim","_seco","_pAmmo","_hAmmo"];
    
    _unit = _this select 0;
    _isSniper = _this select 1;
    
    if (!isNull _unit) then {
        removeAllWeapons _unit;
        removeAllItems _unit;
        removeUniform _unit;
        removeVest _unit;
        removeBackpack _unit;
        removeGoggles _unit;
        removeHeadGear _unit;
        
        if (_isSniper) then {
            // Add Sniper Clothing
            _unit forceAddUniform ("U_O_GhillieSuit");
            _unit addHeadGear (SDROPHeadgearList call BIS_fnc_selectRandom);
            _unit addVest (SDROPVestList call BIS_fnc_selectRandom);
            
            // Add Sniper Weapons & Ammo (default M104 with LR scope and ammo)
            _prim = "m107Tan_EPOCH";
            _seco = SDROPPistolsList call BIS_fnc_selectRandom;
        } else {
            //clothing
            _unit forceAddUniform (SDROPUniformList call BIS_fnc_selectRandom);
            _unit addHeadGear (SDROPHeadgearList call BIS_fnc_selectRandom);
            _unit addVest (SDROPVestList call BIS_fnc_selectRandom);
            
            //weapons & Ammo
            _prim = SDROPRiflesList call BIS_fnc_selectRandom;
            _seco = SDROPPistolsList call BIS_fnc_selectRandom;
        };
        
        // Give unit parachute
        _unit addBackpack "B_Parachute";
        
        //NV Goggles for night drops
        if (SunOrMoon < 1) then {
            _unit addItem "NVG_EPOCH";
            _unit assignItem "NVG_EPOCH";
        };
        
        //Gotta get paid yo!
        _kryptoAmount = floor (random 300) +1;
        _unit setVariable ["krypto", _kryptoAmount];
        
        _pAmmo = [] + getArray (configFile >> "cfgWeapons" >> _prim >> "magazines");
        {
                if (count _pAmmo > 2) then
                {
                    _pAmmo resize 2;
                };
                for "_i" from 0 to (3 + (round random 2)) do
                {
                    _unit addMagazine (_pAmmo select floor random count _pAmmo);
                };
        } forEach _pAmmo;
        
        _hAmmo = [] + getArray (configFile >> "cfgWeapons" >> _seco >> "magazines");
        {
                for "_i" from 0 to (2 + (round random 2)) do
                {
                    _unit addMagazine (_pAmmo select floor random count _pAmmo);
                };
        } forEach _hAmmo;
        
        _unit addWeapon _prim;
        _unit selectWeapon _prim;
        _unit addWeapon _seco;

    };
};

SDROPHeadgearList = [
    "H_39_EPOCH","H_40_EPOCH","H_41_EPOCH","H_42_EPOCH","H_43_EPOCH","H_44_EPOCH","H_45_EPOCH","H_46_EPOCH","H_47_EPOCH","H_48_EPOCH",
    "H_49_EPOCH","H_50_EPOCH","H_51_EPOCH","H_52_EPOCH","H_53_EPOCH","H_54_EPOCH","H_55_EPOCH","H_56_EPOCH","H_57_EPOCH","H_58_EPOCH",
    "H_59_EPOCH","H_60_EPOCH","H_61_EPOCH","H_62_EPOCH","H_63_EPOCH","H_64_EPOCH","H_65_EPOCH","H_66_EPOCH","H_67_EPOCH","H_68_EPOCH",
    "H_69_EPOCH","H_70_EPOCH","H_74_EPOCH","H_75_EPOCH","H_76_EPOCH","H_77_EPOCH","H_86_EPOCH","H_87_EPOCH","H_88_EPOCH","H_89_EPOCH",
    "H_90_EPOCH","H_91_EPOCH","H_92_EPOCH", "H_Beret_blk", "H_Beret_red", "H_Beret_grn"
];

SDROPUniformList = [
    "U_O_CombatUniform_ocamo", "U_O_PilotCoveralls", "U_OG_Guerilla1_1", "U_OG_Guerilla2_1", "U_OG_Guerilla2_3", "U_IG_leader",
    "U_OG_Guerilla3_1", "U_OG_Guerilla3_2", "U_OG_leader", "U_C_WorkerCoveralls", "U_I_CombatUniform_tshirt", "U_I_OfficerUniform",
    "U_CamoRed_uniform", "U_CamoBrn_uniform", "U_CamoBlue_uniform", "U_Camo_uniform", "U_O_CombatUniform_oucamo", "U_I_CombatUniform_shortsleeve"
];

SDROPVestList = [
    "V_1_EPOCH","V_2_EPOCH","V_3_EPOCH","V_4_EPOCH","V_5_EPOCH","V_6_EPOCH","V_7_EPOCH","V_8_EPOCH","V_9_EPOCH","V_10_EPOCH",
    "V_11_EPOCH","V_12_EPOCH","V_13_EPOCH","V_14_EPOCH","V_15_EPOCH","V_16_EPOCH","V_17_EPOCH","V_18_EPOCH","V_19_EPOCH","V_20_EPOCH",
    "V_21_EPOCH","V_22_EPOCH","V_23_EPOCH","V_24_EPOCH","V_25_EPOCH","V_26_EPOCH","V_27_EPOCH","V_28_EPOCH","V_29_EPOCH","V_30_EPOCH",
    "V_31_EPOCH","V_32_EPOCH","V_33_EPOCH","V_34_EPOCH","V_35_EPOCH","V_36_EPOCH","V_37_EPOCH","V_38_EPOCH","V_39_EPOCH","V_40_EPOCH"
];

SDROPRiflesList = [
    "srifle_EBR_F","srifle_DMR_01_F","arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F",
    "arifle_MX_GL_F","arifle_MXM_F","arifle_SDAR_F","arifle_TRG21_F","arifle_TRG20_F","arifle_TRG21_GL_F","arifle_Mk20_F",
    "arifle_Mk20C_F","arifle_Mk20_GL_F","arifle_Mk20_plain_F","arifle_Mk20C_plain_F","arifle_Mk20_GL_plain_F","SMG_01_F",
    "SMG_02_F","hgun_PDW2000_F","arifle_MXM_Black_F","arifle_MX_GL_Black_F","arifle_MX_Black_F","arifle_MXC_Black_F","Rollins_F",
    "LMG_Mk200_F","arifle_MX_SW_F","LMG_Zafir_F","arifle_MX_SW_Black_F","m249_EPOCH","m249Tan_EPOCH",
    "m16_EPOCH","m16Red_EPOCH","M14_EPOCH","M14Grn_EPOCH","m4a3_EPOCH","AKM_EPOCH"
];

SDROPPistolsList = [
    "hgun_ACPC2_F","hgun_Rook40_F","hgun_P07_F","hgun_Pistol_heavy_01_F","hgun_Pistol_heavy_02_F","ruger_pistol_epoch",
    "1911_pistol_epoch","hgun_Pistol_Signal_F"
];

// Set AI Skills
SDROPSetUnitSkills = {
    private ["_unit","_skillSetArray"];
    
    _unit = _this select 0;
    _skillSetArray = _this select 1;
    
    {
        _unit setSkill [(_x select 0),(_x select 1)];
        //diag_log text format ["[SDROP]: Skill: %1:%2", (_x select 0),(_x select 1)];
    } forEach _skillSetArray;
};

//SkillSets - endurance removed from Arma 3
skillsRookie = [
["aimingAccuracy",0.4],
["aimingShake",0.3],
["aimingSpeed",0.3],
["spotDistance",0.3],
["spotTime",0.3],
["courage",0.4],
["reloadSpeed",0.6],
["commanding",0.6],
["general",1.0]
];

skillsVeteran = [
["aimingAccuracy",0.6],
["aimingShake",0.6],
["aimingSpeed",0.6],
["spotDistance",0.6],
["spotTime",0.6],
["courage",0.6],
["reloadSpeed",0.7],
["commanding",0.8],
["general",1.0]
];

skillsElite = [
["aimingAccuracy",0.8],
["aimingShake",0.75],
["aimingSpeed",0.7],
["spotDistance",0.8],
["spotTime",0.8],
["courage",1.0],
["reloadSpeed",0.8],
["commanding",1.0],
["general",1.0]
];

if (SDROP_Debug) then {
    diag_log text format ["[SDROP]: Functions loaded. Starting supply drop timer."];
};

 

test it

Link to comment
Share on other sites

  • 7 months later...

Can someone please help me get this going on my server. I have tried many times nothing happens. When I do install it on my server I loose my [RELEASE] Status Bar With Icons & Server FPS display v1.36. So i install the supply drop and No supply drop happens and I also spawn in with no Status bar.

Link to comment
Share on other sites

  • 5 months later...
On 4. 1. 2017 at 4:47 AM, Pvpmedic said:

Can someone please help me get this going on my server. I have tried many times nothing happens. When I do install it on my server I loose my [RELEASE] Status Bar With Icons & Server FPS display v1.36. So i install the supply drop and No supply drop happens and I also spawn in with no Status bar.

You need still help?

Link to comment
Share on other sites

  • 5 years later...

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
  • Advertisement
×
×
  • Create New...