diff --git a/README.md b/README.md new file mode 100644 index 00000000..9637bda9 --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# DynamicBulwarks-fixed-bugs +Fixed some bugs for example the normal version dont filter for scope 2 (real units) in the zivilian round + +1 - Open the mission in the editor.\ (change the ending of the folder to .altis or the mapending you want to play on. +2 - Place a marker called "bulwark_zone_0" where you want your location to be. || If you want multiple possible locations copy the marker and paste as many times as you want.\ +3 - There is a red marker with the marker text: "This marker needs to have the mapname of the current map, as variable Name for location markers to work". Change its variable name to the world your playing. For example "tanoa" or "malden". \ +That is it, your done. +\ +To use your placed markers select "Position" > "Use location markers" in the mission parameter.\ +\ +Keep in mind:\ +The Bulwark will be on the exact location where the marker is.\ +Make sure there is loot nearby or place some houses in editor that can spawn loot.\ +You can't spawn on buildings with this, always places you on ground. diff --git a/build/Functions.hpp b/build/Functions.hpp index 4b09806e..557ddfd1 100644 --- a/build/Functions.hpp +++ b/build/Functions.hpp @@ -6,7 +6,7 @@ class build class sell {}; class pickup {}; class reset{}; - class move {}; + class move {}; class place {}; class doPlace {}; diff --git a/bulwark/Functions.hpp b/bulwark/Functions.hpp index 60db972d..e9c1c546 100644 --- a/bulwark/Functions.hpp +++ b/bulwark/Functions.hpp @@ -10,7 +10,7 @@ class bulwark class roomCentre {}; class roomVolume {}; class startWave {}; - class endWave {}; + class endWave {}; class revivePlayer{}; class bulwarkReset{}; @@ -19,5 +19,6 @@ class bulwark class moveBox {}; class dropBox {}; + }; }; diff --git a/bulwark/createBase.sqf b/bulwark/createBase.sqf index f7948daf..e449fe1f 100644 --- a/bulwark/createBase.sqf +++ b/bulwark/createBase.sqf @@ -77,6 +77,9 @@ format ["Configuring Bulwark at Location: %1 City: %2", bulwarkRoomPos, bulwarkC }; ","",1,false,false,"true","true",2.5]] remoteExec ["addAction", 0, true]; +//Add delete dumped Items-Script to leader +[bulwarkBox, ["Delete Dumped Items", { execVM "clearZone.sqf"; },"",0,false,false,"true","player == leader player",2.5]] remoteExec ["addAction", 0, true]; + //Add Bulwark Box to Zeus mainZeus addCuratorEditableObjects [[bulwarkBox], true]; diff --git a/bulwark/dialog.hpp b/bulwark/dialog.hpp index 560f7341..cb31014f 100644 --- a/bulwark/dialog.hpp +++ b/bulwark/dialog.hpp @@ -31,7 +31,7 @@ class startBox_Dialog class ObjectPicture: RscPicture { idc = 1502; - text="preview.paa"; + text="preview.paa"; x = 0.1 * safezoneW + safezoneX; y = 0.3 * safezoneH + safezoneY; w = 0.2 * safezoneW; @@ -46,7 +46,7 @@ class startBox_Dialog y = 0.58 * safezoneH + safezoneY; w = 0.185 * safezoneW; h = 0.04 * safezoneH; - action = "_nil=[]ExecVM ""bulwark\purchase.sqf"""; + action = "ctrlEnable [1600, false], _nil=[]ExecVM ""bulwark\purchase.sqf"""; }; class startBox_supportLst: RscListbox @@ -65,7 +65,7 @@ class startBox_Dialog y = 0.58 * safezoneH + safezoneY; w = 0.185 * safezoneW; h = 0.04 * safezoneH; - action = "_nil=[]ExecVM ""supports\purchase.sqf"""; + action = "ctrlEnable [1601, false], _nil=[]ExecVM ""supports\purchase.sqf"""; }; //////////////////////////////////////////////////////// diff --git a/bulwark/purchase.sqf b/bulwark/purchase.sqf index 5aab2dcb..1825bab5 100644 --- a/bulwark/purchase.sqf +++ b/bulwark/purchase.sqf @@ -23,6 +23,7 @@ if(_killPoints >= _shopPrice && !(player call build_fnc_isHoldingObject)) then { [player, _buildItem] remoteExec ["build_fnc_doCreate", 2]; objPurchase = true; } else { + ctrlEnable [1600, true]; if(_killPoints < _shopPrice) then { [format ["Not enough points for %1!", _shopName], -0, -0.02, 2, 0.1] call BIS_fnc_dynamicText; objPurchase = false; @@ -36,4 +37,4 @@ sleep 0.1; if (objPurchase) then { closeDialog 0; -}; +}; \ No newline at end of file diff --git a/clearZone.sqf b/clearZone.sqf new file mode 100644 index 00000000..e1f47bf0 --- /dev/null +++ b/clearZone.sqf @@ -0,0 +1,14 @@ +/** +* clears Zone from items that laying around +* +* Actor for the bulwark "clear Zone" action menu item +* +* Domain: Client +**/ + +_start = diag_tickTime; +{ deleteVehicle _x; } forEach allDead; +{ deleteVehicle _x; } forEach nearestObjects [getpos player,["WeaponHolder","GroundWeaponHolder"],2000]; +//{ deleteVehicle _x; } forEach nearestObjects [getpos player,["WeaponHolder","GroundWeaponHolder"],BULWARK_RADIUS*2]; + +hint format ["Server cleanup took %1 seconds",diag_tickTime - _start]; \ No newline at end of file diff --git a/description.ext b/description.ext index 7108e6aa..a88267cd 100644 --- a/description.ext +++ b/description.ext @@ -1,9 +1,9 @@ onLoadMission = "Hold out as long as you can!"; onLoadIntro = "Defend yourself"; onLoadName = "Dynamic Bulwarks"; -briefingName = "Dynamic Bulwarks"; +briefingName = "Dynamic Bulwarks -dev 20200817 WMod"; overviewText = "Survive by scavenging equipment, in a randomly selected city, against ever increasing waves of hostiles."; -author = "Hilltop & omNomios"; +author = "Frank648, Hilltop & omNomios, edit by Spacefussel, Wetzer & Hirado"; overviewPicture = "preview.paa"; loadScreen = "preview.paa"; @@ -30,7 +30,7 @@ class Header { gameType = Survive; minPlayers = 1; - maxPlayers = 12; + maxPlayers = 15; }; #include "shared\defines.hpp" @@ -70,6 +70,7 @@ class CfgRemoteExec class support {}; class airStrike {}; class ragePack {}; + class radioBox {}; class say3DGlobal {}; class createBlur {}; class suiExplode{}; diff --git a/hostiles/CivWave.sqf b/hostiles/CivWave.sqf index 049a1edd..27909b86 100644 --- a/hostiles/CivWave.sqf +++ b/hostiles/CivWave.sqf @@ -60,21 +60,26 @@ CWS_AddNextCivWaypoint = { private _civFaction = "CIV_F"; private _cfgVehiclesConfig = configFile >> "CfgVehicles"; private _cfgVehiclesConfigCount = count _cfgVehiclesConfig; + for [{_i = 0}, {_i < _cfgVehiclesConfigCount}, {_i = _i + 1}] do { - _config = _cfgVehiclesConfig select _i; - if (isClass _config) then + _config = _cfgVehiclesConfig select _i; + if (isClass _config) then + { + _scope = getNumber (_config >> "scope"); + if (_scope == 2) then { - _typeMan = getNumber (_config >> "isMan"); - if (_typeMan != 0) then + _typeMan = getNumber (_config >> "isMan"); + if (_typeMan != 0) then + { + _faction = getText (_config >> "faction"); + if (_faction == _civFaction) then { - _faction = getText (_config >> "faction"); - if (_faction == _civFaction) then - { - civClassArr set [count civClassArr, configName _config]; - }; + civClassArr set [count civClassArr, configName _config]; }; + }; }; + }; }; for [{_i=0}, {_i<20}, {_i=_i+1}] do { diff --git a/onPlayerRespawn.sqf b/onPlayerRespawn.sqf index e15f7477..358a3dfd 100644 --- a/onPlayerRespawn.sqf +++ b/onPlayerRespawn.sqf @@ -21,6 +21,9 @@ removeVest player; removeBackpack player; removeAllWeapons player; removeAllAssignedItems player; +player linkItem "ItemWatch"; +player linkItem "ItemCompass"; + player setPosASL ([bulwarkBox] call bulwark_fnc_findPlaceAround); if(PLAYER_STARTWEAPON) then { @@ -31,19 +34,21 @@ if(PLAYER_STARTWEAPON) then { }; if(PLAYER_STARTMAP) then { - player addItem "ItemMap"; - player assignItem "ItemMap"; player linkItem "ItemMap"; }; if(PLAYER_STARTNVG) then { - player addItem "Integrated_NVG_F"; - player assignItem "Integrated_NVG_F"; player linkItem "Integrated_NVG_F"; }; +// ACRE 2 Radio +if (acre_main) then { + player addItem "ACRE_PRC343"; +}; + +//TFAR Radio if (isClass (configfile >> "CfgVehicles" >> "tf_anarc164")) then { - player addItem "tf_anprc152"; + player linkItem "TFAR_anprc152"; }; waituntil {alive player}; diff --git a/presets/custom.sqf b/presets/custom.sqf index 8d5e4872..85385afb 100644 --- a/presets/custom.sqf +++ b/presets/custom.sqf @@ -22,7 +22,103 @@ LOOT_BLACKLIST = [ "O_UAV_01_backpack_F", "B_IR_Grenade", "O_IR_Grenade", - "I_IR_Grenade" + "I_IR_Grenade", + "TrainingMine_01_F", + "TrainingMine_01_used_F", + "Item_I_UavTerminal", // UAV-Terminal + "Item_O_UavTerminal", + "Item_I_E_UavTerminal", + "Item_B_UavTerminal", + "Item_C_UavTerminal", + "I_UGV_02_Demining_backpack_F", // UGV + "O_UGV_02_Demining_backpack_F", + "C_IDAP_UGV_02_Demining_backpack_F", + "I_E_UGV_02_Demining_backpack_F", + "B_UGV_02_Demining_backpack_F", + "I_UGV_02_Science_backpack_F", + "O_UGV_02_Science_backpack_F", + "I_E_UGV_02_Science_backpack_F", + "B_UGV_02_Science_backpack_F", + "O_UAV_06_backpack_F", // UAV + "C_UAV_06_backpack_F", + "I_E_UAV_06_backpack_F", + "C_IDAP_UAV_06_backpack_F", + "I_UAV_06_medical_backpack_F", + "O_UAV_06_medical_backpack_F", + "B_UAV_06_medical_backpack_F", + "C_UAV_06_medical_backpack_F", + "I_E_UAV_06_medical_backpack_F", + "C_IDAP_UAV_06_medical_backpack_F", + "I_UAV_01_backpack_F", + "O_UAV_01_backpack_F", + "B_UAV_01_backpack_F", + "I_E_UAV_01_backpack_F", + "C_IDAP_UAV_01_backpack_F", + "C_IDAP_UAV_06_antimine_backpack_F", + "I_HMG_01_high_weapon_F", // Mk30 HMG + "I_HMG_01_support_high_F", + "O_HMG_01_high_weapon_F", + "O_HMG_01_support_high_F", + "I_E_HMG_01_high_Weapon_F", + "I_E_HMG_01_support_high_F", + "B_HMG_01_high_weapon_F", + "B_HMG_01_support_high_F", + "I_HMG_01_weapon_F", + "I_HMG_01_support_F", + "O_HMG_01_weapon_F", + "O_HMG_01_support_F", + "I_E_HMG_01_Weapon_F", + "I_E_HMG_01_support_F", + "B_HMG_01_weapon_F", + "B_HMG_01_support_F", + "I_HMG_01_A_weapon_F", + "O_HMG_01_A_weapon_F", + "I_E_HMG_01_A_weapon_F", + "B_HMG_01_A_weapon_F", + "I_HMG_02_high_weapon_F", // M2 HMG + "I_HMG_02_support_high_F", + "I_G_HMG_02_high_weapon_F", + "I_G_HMG_02_support_high_F", + "I_E_HMG_02_high_weapon_F", + "I_E_HMG_02_support_high_F", + "I_C_HMG_02_high_weapon_F", + "I_C_HMG_02_support_high_F", + "I_HMG_02_weapon_F", + "I_HMG_02_support_F", + "I_G_HMG_02_weapon_F", + "I_G_HMG_02_support_F", + "I_E_HMG_02_weapon_F", + "I_E_HMG_02_support_F", + "I_C_HMG_02_weapon_F", + "I_C_HMG_02_support_F", + "I_GMG_01_A_weapon_F", // static GMG + "O_GMG_01_A_weapon_F", + "I_E_GMG_01_A_Weapon_F", + "B_GMG_01_A_weapon_F", + "I_GMG_01_high_weapon_F", + "O_GMG_01_high_weapon_F", + "I_E_GMG_01_high_Weapon_F", + "B_GMG_01_high_weapon_F", + "I_GMG_01_weapon_F", + "O_GMG_01_weapon_F", + "I_E_GMG_01_Weapon_F", + "B_GMG_01_Weapon_F", + "I_AA_01_weapon_F", // static Titan + "O_AA_01_weapon_F", + "I_E_AA_01_weapon_F", + "B_AA_01_weapon_F", + "I_AT_01_weapon_F", + "O_AT_01_weapon_F", + "I_E_AT_01_weapon_F", + "B_AT_01_weapon_F", + "I_Mortar_01_weapon_F", // Mortar + "I_Mortar_01_support_F", + "O_Mortar_01_weapon_F", + "O_Mortar_01_support_F", + "B_Mortar_01_weapon_F", + "B_Mortar_01_support_F", + "I_E_Mortar_01_Weapon_F", + "I_E_Mortar_01_support_F" ]; //LOOT WHITELISTS, when a whitelist contains an element it is used instead of what the game grabs from factions: LOOT_WHITELIST_UNIFORMS = []; @@ -63,7 +159,7 @@ HOSTILE_ARMOUR_POINT_SCORE = 4; lowSpecialWave_list = [ "fogWave", "switcharooWave", - "specCivs" + "specCivs" ]; //comment out the waves you don't like. Don't forget to remove the , behind the last entry //list of all special waves you can get on higher waves @@ -76,8 +172,8 @@ specialWave_list= [ "specMortarWave", "nightWave", "defectorWave", - "mgWave", - "sniperWave" + "mgWave", + "sniperWave" ]; //starting from this wave the lowSpecialWaveList is used lowSpecialWaveStart = 5; @@ -87,16 +183,26 @@ SpecialWaveStart = 10; /* SUPPORT */ //Comment out or delete the below support items to prevent the player from buying them BULWARK_SUPPORTITEMS = [ - [800, "Recon UAV", "reconUAV"], + [800, "Recon UAV", "reconUAV"], [1680, "Emergency Teleport", "telePlode"], - [1950, "Paratroopers", "paraDrop"], + [1950, "Paratroopers", "paraDrop"], [3850, "Missile CAS", "airStrike"], [4220, "Mine Cluster Shell", "mineField"], - [4690, "Rage Stimpack", "ragePack"], - [5930, "Mind Control Gas", "mindConGas"], - [6666, "ARMAKART TM", "armaKart"], - [7500, "Predator Drone", "droneControl"] + [4690, "Rage Stimpack", "ragePack"], + [5930, "Mind Control Gas", "mindConGas"], + [6666, "ARMAKART TM", "armaKart"], + [7500, "Predator Drone", "droneControl"] ]; + +// if Radio Mod is present +if (!isNil "acre_main") then { +BULWARK_SUPPORTITEMS pushback [0, "Radio Box (ACRE) for 2min", "radioBox"]; +}; + +if (isClass (configfile >> "CfgVehicles" >> "tf_anarc164")) then { +BULWARK_SUPPORTITEMS pushback [0, "Radio Box (TFAR) for 2min", "radioBox"]; +}; + //support settings: casAircraft = "B_Plane_CAS_01_DynamicLoadout_F"; //CAS aircraft default: "B_Plane_CAS_01_DynamicLoadout_F" supportAircraft = "B_T_VTOL_01_vehicle_F"; //Plane that drops support and paratroopers default: "B_T_VTOL_01_vehicle_F" @@ -110,42 +216,68 @@ supportAircraftSpeed = 20; // adds speed to the aircraft -- default 20 /* Price - Display Name - Class Name - Rotation When Bought - Object Radius (meters) - explosive - invincible - Has AI true/false (for objects with AI like autonomous turrests) */ BULWARK_BUILDITEMS = [ - [25, "Long Plank (8m)", "Land_Plank_01_8m_F", 0, 4, 0, 0, false], - [50, "Junk Barricade", "Land_Barricade_01_4m_F", 0, 1.5, 0, 0, false], - [75, "Small Ramp (1m)", "Land_Obstacle_Ramp_F", 180, 1.5, 0, 0, false], - [85, "Flat Triangle (1m)", "Land_DomeDebris_01_hex_green_F", 180, 1.5, 0, 0, false], - [100, "Short Sandbag Wall", "Land_SandbagBarricade_01_half_F", 0, 1.5, 0, 0, false], - [150, "Sandbag Tall (hole)", "Land_SandbagBarricade_01_hole_F", 0, 1.5, 0, 0, false], - [150, "Sandbag Tall", "Land_SandbagBarricade_01_F", 0, 1.5, 0, 0, false], - [180, "Concrete Shelter", "Land_CncShelter_F", 0, 1, 0, 0, false], - [180, "Timber Pile", "Land_TimberPile_04_F", 0, 3.5, 0, 0, false], - [200, "Timber Pile (sloped)", "Land_TimberPile_02_F", 0, 3.5, 0, 0, false], - [200, "Concrete Walkway", "Land_GH_Platform_F", 0, 3.5, 0, 0, false], - [250, "Tall Concrete Wall", "Land_Mil_WallBig_4m_F", 0, 2, 0, 0, false], - [250, "Guard Box", "Land_GuardBox_01_brown_F", 0, 2, 0, 0, false], - [260, "Portable Light", "Land_PortableLight_double_F", 180, 1, 0, 0, false], - [300, "Long Concrete Wall", "Land_CncBarrierMedium4_F", 0, 3, 0, 0, false], - [300, "Obstacle Bridge", "Land_Obstacle_Bridge_F", 0, 3, 0, 1, false], - [400, "Large Ramp", "Land_VR_Slope_01_F", 0, 4, 0, 0, false], - [500, "Bunker Block", "Land_Bunker_01_blocks_3_F", 0, 2, 0, 0, false], - [500, "Guard Tower (small)", "Land_GuardTower_02_F", 0, 2, 0, 0, false], - [500, "H Barrier", "Land_HBarrier_3_F", 0, 2, 0, 0, false], - [500, "Explosive Barrel", "Land_MetalBarrel_F", 0, 1, 1, 0, false], - [750, "Ladder", "Land_PierLadder_F", 0, 1, 0, 0, false], - [800, "Storage box small", "Box_NATO_Support_F", 0, 1, 0, 0, false], - [950, "Stairs", "Land_GH_Stairs_F", 180, 4, 0, 0, false], - [1000, "Hallogen Lamp", "Land_LampHalogen_F", 90, 1, 0, 0, false], - [1000, "Double H Barrier", "Land_HBarrierWall4_F", 0, 4, 0, 0, false], - [1000, "Concrete Platform", "BlockConcrete_F", 0, 3.5, 0, 0, false], - [1200, "Storage box large", "Box_NATO_AmmoVeh_F", 0, 1, 0, 1, false], - [2500, "Static HMG", "B_HMG_01_high_F", 0, 1, 0, 1, false], - [3000, "Small Bunker", "Land_BagBunker_Small_F", 180, 3, 0, 0, false], - [4500, "Pillbox", "Land_PillboxBunker_01_hex_F", 90, 2.5, 0, 0, false], - [4500, "Static HMG Autonomous", "B_HMG_01_high_F", 0, 1, 0, 0, true], - [5000, "Metal Guard Tower", "Land_GuardTower_01_F", 90, 2.5, 0, 0, false], - [6000, "Guard Tower", "Land_Cargo_Patrol_V3_F", 0, 3.5, 0, 0, false], - [7000, "Static GMG", "B_GMG_01_high_F", 0, 3.5, 0, 1, false], - [9500, "Static GMG Autonomous", "B_GMG_01_high_F", 0, 3.5, 0, 0, true], - [9500, "Modular Bunker", "Land_Bunker_01_Small_F", 180, 4, 0, 1, false], - [25000, "Mortar", "B_Mortar_01_F", 180, 3.5, 0, 1, false] + [10, "Holzstamm", "Land_TimberLog_05_F", 0, 4, 0, 0, false], + [25, "Lange Planke (8m)", "Land_Plank_01_8m_F", 0, 4, 0, 0, false], + [50, "Holzplanken", "Land_Target_Single_01_F", 0, 4, 0, 0, false], + [75, "Holzhaufen", "Land_TimberPile_05_F", 0, 4, 0, 0, false], + [85, "Holz Rampe (1m)", "Land_Obstacle_Ramp_F", 180, 1.5, 0, 1, false], + [95, "Flaches Dreieck (1m)", "Land_DomeDebris_01_hex_green_F", 180, 1.5, 0, 0, false], + [100, "Holz Schuppen", "Land_Shed_12_F", 0, 1.5, 0, 0, false], + [120, "Schranke", "Land_RoadBarrier_01_F", 0, 1.5, 0, 0, false], + [150, "Müll Barikade 01", "Land_GarbageHeap_01_F", 0, 1.5, 0, 0, false], + [250, "Müll Barikade 02", "Land_Barricade_01_4m_F", 0, 1.5, 0, 0, false], + [270, "Barriere", "Land_CncBarrier_stripes_F", 0, 1.5, 0, 0, false], + [300, "Lebensmittelsäcke", "Land_FoodSacks_01_large_brown_F", 0, 1.5, 0, 0, false], + [300, "Fass brennend", "MetalBarrel_burning_F", 0, 1, 0, 0, false], + [350, "Blechwand", "Land_Wall_Tin_4", 0, 1.5, 0, 0, false], + [500, "Aufbewahrungsbox klein", "Box_NATO_Support_F", 0, 1, 0, 1, false], + [600, "kurze Sandsackwand", "Land_SandbagBarricade_01_half_F", 0, 1.5, 0, 0, false], + [650, "Sandsack Barrikade (Nische)","Land_SandbagBarricade_01_hole_F",0, 1.5, 0, 0, false], + [650, "Sandsack Barrikade", "Land_SandbagBarricade_01_F", 0, 1.5, 0, 0, false], + [680, "Panzersperre", "Land_CzechHedgehog_01_old_F", 0, 1.5, 0, 0, false], + [700, "Wohnwagen", "Land_Caravan_01_green_F", 0, 1.5, 0, 0, false], + [700, "Tragbares Licht", "Land_PortableLight_double_F", 180, 1, 0, 0, false], + [720, "Leiter", "Land_PierLadder_F", 0, 1, 0, 0, false], + [750, "Gerüst", "Land_Scaffolding_F", 0, 1, 0, 0, false], + [800, "Militärwand", "Land_CamoConcreteWall_01_l_4m_v1_F",0, 2, 0, 0, false], + [850, "Hochsitz", "Land_DeerStand_01_F", 0, 4, 0, 0, false], + [950, "Treppe", "Land_GH_Stairs_F", 180, 4, 0, 0, false], + [1000, "Hallogen Lampe", "Land_LampHalogen_F", 90, 1, 0, 0, false], + [1500, "Betonunterstand", "Land_CncShelter_F", 0, 1, 0, 0, false], + [1700, "Betonweg", "Land_GH_Platform_F", 0, 3.5, 0, 0, false], + [1850, "Hohe Betonwand", "Land_Mil_WallBig_4m_F", 0, 2, 0, 0, false], + [1900, "Lange Betonwand", "Land_CncBarrierMedium4_F", 0, 3, 0, 0, false], + [2000, "Aufbewahrungsbox groß", "Box_NATO_AmmoVeh_F", 0, 1, 0, 1, false], + [2000, "Verschlag für Wache", "Land_GuardBox_01_brown_F", 0, 2, 0, 0, false], + [2050, "Brücke", "Land_Obstacle_Bridge_F", 0, 3, 0, 1, false], + [2100, "große Rampe flach", "Land_RampConcrete_F", 0, 4, 0, 0, false], + [2100, "große Rampe steil", "Land_RampConcreteHigh_F", 0, 4, 0, 0, false], + [2100, "Bunker Block", "Land_Bunker_01_blocks_3_F", 0, 2, 0, 0, false], + [2150, "Wachturm (klein)", "Land_GuardTower_02_F", 0, 2, 0, 0, false], + [2200, "H Barriere", "Land_HBarrier_3_F", 0, 2, 0, 0, false], + [2300, "Fass mit Benzin", "Land_MetalBarrel_F", 0, 1, 1, 0, false], + [2500, "Double H Barrier", "Land_HBarrierWall4_F", 0, 4, 0, 0, false], + [2600, "Beton Plattform", "BlockConcrete_F", 0, 3.5, 0, 0, false], + [2700, "statisches HMG groß", "B_HMG_01_high_F", 0, 1, 0, 0, false], + [3000, "Sandsack Bunker", "Land_BagBunker_Small_F", 180, 3, 0, 0, false], + [4000, "Holzhaus", "Land_Camp_House_01_brown_F", 180, 3, 0, 0, false], + [4500, "Wachturm 01", "Land_GuardTower_02_F", 90, 2.5, 0, 0, false], + [5000, "statisches M2 .50 groß", "B_G_HMG_02_high_F", 0, 1, 0, 0, false], + [6000, "Wachturm 02", "Land_GuardTower_01_F", 90, 3.5, 0, 0, false], + [8000, "Wachturm 03", "Land_Cargo_Patrol_V3_F", 0, 3.5, 0, 0, false], + [9000, "Wachturm 04", "Land_ControlTower_01_F", 0, 3.5, 0, 0, false], + [10000, "kleiner Bunker", "Land_PillboxBunker_01_hex_F", 90, 2.5, 0, 0, false], + [10000, "autonom. M2 .50 groß", "B_G_HMG_02_high_F", 0, 1, 0, 0, true], + [10000, "großer Sandsack-Bunker", "Land_BagBunker_Large_F", 90, 5, 0, 0, false], + [11000, "autonom. HMG groß", "B_HMG_01_high_F", 0, 1, 0, 0, true], + [11000, "statisches GMG groß", "B_GMG_01_high_F", 0, 3.5, 0, 0, true], + [12000, "modularer Bunker klein", "Land_Bunker_01_Small_F", 180, 4, 0, 0, false], + [16000, "Cargo Tower HQ", "Land_Cargo_HQ_V1_F", 0, 7.5, 0, 0, false], + [18000, "statisches M2 .50 klein","B_G_HMG_02_F", 0, 1, 0, 0, false], + [20000, "autonom. HMG klein", "B_HMG_01_A_F", 0, 1, 0, 0, true], + [22000, "autonom. GMG klein", "B_GMG_01_A_F", 0, 3.5, 0, 0, true], + [24000, "modularer Bunker hoch", "Land_Bunker_01_tall_F", 180, 4, 0, 0, false], + [36000, "autonom. M2 .50 klein", "B_G_HMG_02_F", 0, 1, 0, 0, true], + [37000, "Mörser", "B_Mortar_01_F", 180, 3.5, 0, 1, true], + [50000, "Cargo Tower sehr hoch", "Land_Cargo_Tower_V1_F", 0, 1, 0, 0, false] ]; \ No newline at end of file diff --git a/score/functions/fn_support.sqf b/score/functions/fn_support.sqf index ff1cb6d1..f8d67e0a 100644 --- a/score/functions/fn_support.sqf +++ b/score/functions/fn_support.sqf @@ -40,4 +40,7 @@ switch (_type) do { case ("telePlode"): { [_player] call supports_fnc_telePlode; }; + case ("radioBox"): { + [_player] call supports_fnc_radioBox; + }; }; diff --git a/shared/Functions.hpp b/shared/Functions.hpp index f02da10e..e3f65f0e 100644 --- a/shared/Functions.hpp +++ b/shared/Functions.hpp @@ -3,7 +3,7 @@ class shared class public { file = "shared\functions"; - class log {}; + class log {}; class getCurrentParamValue {}; class getDefaultParameterSets {}; class getDefaultParams {}; diff --git a/shared/bulwark.hpp b/shared/bulwark.hpp index 690c4cab..fef7669b 100644 --- a/shared/bulwark.hpp +++ b/shared/bulwark.hpp @@ -53,71 +53,71 @@ #define BULWARK_PARAM_LOOT_EXPLOSIVES 47 //old #define BULWARK_PARAM_LOOT_CONSTRUCTS 48 //old #define BULWARK_PARAM_REVIVE_UNCONSCIOUS_MODE 49 -#define BULWARK_PARAM_LOOT_FACTIONS 50 -#define BULWARK_PARAM_LOOT_ITEMS 51 -#define BULWARK_PARAM_LOOT_UNIFORMS 52 -#define BULWARK_PARAM_LOOT_VESTS 53 -#define BULWARK_PARAM_LOOT_BACKPACKS 54 -#define BULWARK_PARAM_LOOT_HEADGEAR 55 -#define BULWARK_PARAM_LOOT_GLASSES 56 -#define BULWARK_PARAM_LOOT_GRENADES 58 -#define BULWARK_PARAM_LOOT_STATICGUN 59 -#define BULWARK_PARAM_LOOT_AUTOGUN 60 -#define BULWARK_PARAM_LOOT_DRONE 61 -#define BULWARK_PARAM_LOOT_MG 63 -#define BULWARK_PARAM_LOOT_HANDGUN 64 -#define BULWARK_PARAM_LOOT_SNIPER 65 -#define BULWARK_PARAM_LOOT_SMG 66 -#define BULWARK_PARAM_LOOT_ASSAULT 67 -#define BULWARK_PARAM_LOOT_LAUNCHER 68 -#define BULWARK_PARAM_LOOT_SHOTGUN 69 -#define BULWARK_PARAM_LOOT_SUPPORTS 70 //old - covered by static gun already -#define BULWARK_PARAM_LOOT_EXPLOSIVE 71 -#define BULWARK_PARAM_LOOT_ATTACHMENT 72 -#define BULWARK_PARAM_AMMO_ASSAULTMIN 73 -#define BULWARK_PARAM_AMMO_ASSAULTMAX 74 -#define BULWARK_PARAM_AMMO_SMGMIN 75 -#define BULWARK_PARAM_AMMO_SMGMAX 76 -#define BULWARK_PARAM_AMMO_MGMIN 77 -#define BULWARK_PARAM_AMMO_MGMAX 78 -#define BULWARK_PARAM_AMMO_SNIPERMIN 79 -#define BULWARK_PARAM_AMMO_SNIPERMAX 80 -#define BULWARK_PARAM_AMMO_LAUNCHERMIN 81 -#define BULWARK_PARAM_AMMO_LAUNCHERMAX 82 -#define BULWARK_PARAM_AMMO_HANDGUNMIN 83 -#define BULWARK_PARAM_AMMO_HANDGUNMAX 84 -#define BULWARK_PARAM_AMMO_SHOTGUNMIN 85 -#define BULWARK_PARAM_AMMO_SHOTGUNMAX 86 -#define BULWARK_PARAM_LOOT_MODS 87 +#define BULWARK_PARAM_LOOT_FACTIONS 50 +#define BULWARK_PARAM_LOOT_ITEMS 51 +#define BULWARK_PARAM_LOOT_UNIFORMS 52 +#define BULWARK_PARAM_LOOT_VESTS 53 +#define BULWARK_PARAM_LOOT_BACKPACKS 54 +#define BULWARK_PARAM_LOOT_HEADGEAR 55 +#define BULWARK_PARAM_LOOT_GLASSES 56 +#define BULWARK_PARAM_LOOT_GRENADES 58 +#define BULWARK_PARAM_LOOT_STATICGUN 59 +#define BULWARK_PARAM_LOOT_AUTOGUN 60 +#define BULWARK_PARAM_LOOT_DRONE 61 +#define BULWARK_PARAM_LOOT_MG 63 +#define BULWARK_PARAM_LOOT_HANDGUN 64 +#define BULWARK_PARAM_LOOT_SNIPER 65 +#define BULWARK_PARAM_LOOT_SMG 66 +#define BULWARK_PARAM_LOOT_ASSAULT 67 +#define BULWARK_PARAM_LOOT_LAUNCHER 68 +#define BULWARK_PARAM_LOOT_SHOTGUN 69 +#define BULWARK_PARAM_LOOT_SUPPORTS 70 //old - covered by static gun already +#define BULWARK_PARAM_LOOT_EXPLOSIVE 71 +#define BULWARK_PARAM_LOOT_ATTACHMENT 72 +#define BULWARK_PARAM_AMMO_ASSAULTMIN 73 +#define BULWARK_PARAM_AMMO_ASSAULTMAX 74 +#define BULWARK_PARAM_AMMO_SMGMIN 75 +#define BULWARK_PARAM_AMMO_SMGMAX 76 +#define BULWARK_PARAM_AMMO_MGMIN 77 +#define BULWARK_PARAM_AMMO_MGMAX 78 +#define BULWARK_PARAM_AMMO_SNIPERMIN 79 +#define BULWARK_PARAM_AMMO_SNIPERMAX 80 +#define BULWARK_PARAM_AMMO_LAUNCHERMIN 81 +#define BULWARK_PARAM_AMMO_LAUNCHERMAX 82 +#define BULWARK_PARAM_AMMO_HANDGUNMIN 83 +#define BULWARK_PARAM_AMMO_HANDGUNMAX 84 +#define BULWARK_PARAM_AMMO_SHOTGUNMIN 85 +#define BULWARK_PARAM_AMMO_SHOTGUNMAX 86 +#define BULWARK_PARAM_LOOT_MODS 87 // These are known parameter values, and should be named _ // WARNING: If you change these it could mess up the interpretation of people's saved parameters. // If you need to get rid of a value, you should instead rename it and interpret the old // value as one of the new values (so old saves keep working). -#define KILLPOINTS_MODE_PRIVATE 0 // Killpoints are per-player -#define KILLPOINTS_MODE_SHARED 1 // Killpoints are shared by all players -#define KILLPOINTS_MODE_SHAREABLE 2 // Killpoint can be shared by players manually +#define KILLPOINTS_MODE_PRIVATE 0 // Killpoints are per-player +#define KILLPOINTS_MODE_SHARED 1 // Killpoints are shared by all players +#define KILLPOINTS_MODE_SHAREABLE 2 // Killpoint can be shared by players manually -#define LOOT_CATEGORY_HATS 0 -#define LOOT_CATEGORY_UNIFORMS 1 -#define LOOT_CATEGORY_VESTS 2 -#define LOOT_CATEGORY_BACKPACKS 3 -#define LOOT_CATEGORY_STATIC_GUNS 4 -#define LOOT_CATEGORY_DRONE_GUNS 5 -#define LOOT_CATEGORY_DRONES 6 -#define LOOT_CATEGORY_LAUNCHERS 7 -#define LOOT_CATEGORY_OPTICS 8 +#define LOOT_CATEGORY_HATS 0 +#define LOOT_CATEGORY_UNIFORMS 1 +#define LOOT_CATEGORY_VESTS 2 +#define LOOT_CATEGORY_BACKPACKS 3 +#define LOOT_CATEGORY_STATIC_GUNS 4 +#define LOOT_CATEGORY_DRONE_GUNS 5 +#define LOOT_CATEGORY_DRONES 6 +#define LOOT_CATEGORY_LAUNCHERS 7 +#define LOOT_CATEGORY_OPTICS 8 #define LOOT_CATEGORY_RAIL_ATTACHMENTS 9 #define LOOT_CATEGORY_MUZZLE_ATTACHMENTS 10 -#define LOOT_CATEGORY_BIPODS 11 -#define LOOT_CATEGORY_MISC 12 -#define LOOT_CATEGORY_MINES 13 -#define LOOT_CATEGORY_GLASSES 14 -#define LOOT_CATEGORY_GRENADES 15 -#define LOOT_CATEGORY_EXPLOSIVES 16 -#define LOOT_CATEGORY_SNIPER 17 -#define LOOT_CATEGORY_ASSAULT 18 -#define LOOT_CATEGORY_SMG 19 -#define LOOT_CATEGORY_MG 20 -#define LOOT_CATEGORY_NVGS 21 -#define LOOT_CATEGORY_HANDGUNS 22 \ No newline at end of file +#define LOOT_CATEGORY_BIPODS 11 +#define LOOT_CATEGORY_MISC 12 +#define LOOT_CATEGORY_MINES 13 +#define LOOT_CATEGORY_GLASSES 14 +#define LOOT_CATEGORY_GRENADES 15 +#define LOOT_CATEGORY_EXPLOSIVES 16 +#define LOOT_CATEGORY_SNIPER 17 +#define LOOT_CATEGORY_ASSAULT 18 +#define LOOT_CATEGORY_SMG 19 +#define LOOT_CATEGORY_MG 20 +#define LOOT_CATEGORY_NVGS 21 +#define LOOT_CATEGORY_HANDGUNS 22 \ No newline at end of file diff --git a/shared/functions/fn_getDefaultParams.sqf b/shared/functions/fn_getDefaultParams.sqf index 2867738c..99074a46 100644 --- a/shared/functions/fn_getDefaultParams.sqf +++ b/shared/functions/fn_getDefaultParams.sqf @@ -327,12 +327,13 @@ private _defaultBulwarkParams = [ BULWARK_PARAM_TIME_MULTIPLIER, "Time multiplier", PARAM_CATEGORY_TIME, PARAM_TYPE_NUMBER, false, [ - [0, "Real-time", 3], - [1, "1hr/10 min", 6], - [2, "1hr/5 min", 12], - [3, "1hr/3 min", 20], - [4, "1hr/2 min", 30], - [5, "1hr/1 min", 60] + [0, "Real-time", 1], + [1, "1hr/20 min", 3], + [2, "1hr/10 min", 6], + [3, "1hr/5 min", 12], + [4, "1hr/3 min", 20], + [5, "1hr/2 min", 30], + [6, "1hr/1 min", 60] ], 0, "The rate at which game time passes. Note church bells ring every 15 minutes game time..." @@ -349,7 +350,9 @@ private _defaultBulwarkParams = [ [1, "Small (100m)", 100], [2, "Normal (150m)", 150], [3, "Large (200m)", 200], - [4, "Huge (250m)", 250] + [4, "Huge (250m)", 250], + [5, "Mega Huge (500m)", 500], + [6, "Ultra Huge (1000m)", 1000] ], 2, "This is the mission area radius be around the start area" diff --git a/supports/CommunicationMenu.h b/supports/CommunicationMenu.h index 309445eb..e99bedb5 100644 --- a/supports/CommunicationMenu.h +++ b/supports/CommunicationMenu.h @@ -96,3 +96,14 @@ class telePlode enable = "1"; removeAfterExpressionCall = 1; }; + +class radioBox +{ + text = "Radio Box (ACRE/TFAR) for 2min"; + submenu = ""; + expression = "[_this select 0, _this select 1,'radioBox'] remoteExec ['killPoints_fnc_support', 2];"; + icon = "\a3\Ui_f\data\GUI\Cfg\CommunicationMenu\transport_ca.paa"; + cursor = "\a3\Ui_f\data\IGUI\Cfg\Cursors\iconCursorSupport_ca.paa"; + enable = "1"; + removeAfterExpressionCall = 1; +}; \ No newline at end of file diff --git a/supports/Functions.hpp b/supports/Functions.hpp index 0ca54ac7..4ec86bbf 100644 --- a/supports/Functions.hpp +++ b/supports/Functions.hpp @@ -13,5 +13,6 @@ class supports class droneControl {}; class mineField {}; class telePlode{}; + class radioBox {}; }; }; diff --git a/supports/functions/fn_CustomAmmoBox.sqf b/supports/functions/fn_CustomAmmoBox.sqf new file mode 100644 index 00000000..0fa4efb3 --- /dev/null +++ b/supports/functions/fn_CustomAmmoBox.sqf @@ -0,0 +1,9 @@ +_wPos = screenToWorld [0.5,0.5]; +_ammobox = "ACRE_RadioSupplyCrate" createVehicle _wPos; + +sleep 120; + +deleteVehicle _ammobox; + + +//_ammobox addAction ["Munition Auffüllen","ammoDrop.sqf"]; \ No newline at end of file diff --git a/supports/functions/fn_paraTroop.sqf b/supports/functions/fn_paraTroop.sqf index 289476e4..24667f1e 100644 --- a/supports/functions/fn_paraTroop.sqf +++ b/supports/functions/fn_paraTroop.sqf @@ -5,6 +5,7 @@ * * Domain: Server **/ + params ["_player", "_targetPos", "_unitCount", "_aircraft", "_classList"]; if (count _targetPos == 0) then { @@ -19,11 +20,12 @@ if (count _targetPos == 0) then { _dropStart = _targetPos vectorAdd [_pointX, _pointY, _height]; _dropTarget = [(_targetPos select 0), (_targetPos select 1), 200]; - _dropEnd = _targetPos vectorAdd [-_pointX*2, -_pointY*2, _height];; + _dropEnd = _targetPos vectorAdd [-_pointX*2, -_pointY*2, _height]; _targetSmoker = "SmokeShellOrange" createVehicle (_targetPos vectorAdd [0,0,0.3]); - _agSpawn = [_dropStart, 0, supportAircraft, WEST] call bis_fnc_spawnvehicle; + _agSpawn = [_dropStart, 0, supportAircraft, west] call BIS_fnc_spawnVehicle; +// _agSpawn = [_dropStart, 0, supportAircraft, playerSide] call BIS_fnc_spawnVehicle; _agVehicle = _agSpawn select 0; //the aircraft _agCrew = _agSpawn select 1; //the units that make up the crew _ag = _agSpawn select 2; //the group @@ -64,16 +66,22 @@ _agVehicle setVelocity [ sleep 0.5; coreGroup = group _player; + _tempGroup = createGroup west; [group _player, _player] remoteExec ["selectLeader", groupOwner group _player]; for ("_i") from 1 to PARATROOP_COUNT do { _location = getPos _agVehicle; _unitClass = selectRandom _classList; _unit = objNull; - _unit = coreGroup createUnit [_unitClass, _location vectorAdd [0,0,-2], [], 0.5, "CAN_COLLIDE"]; - mainZeus addCuratorEditableObjects [[_unit], true]; - sleep 0.3; +// _unit = coreGroup createUnit [_unitClass, _location vectorAdd [0,0,-2], [], 0.5, "CAN_COLLIDE"]; + _unit = _tempGroup createUnit [_unitClass, _location vectorAdd [0,0,-2], [], 0.5, "CAN_COLLIDE"]; waitUntil {!isNull _unit}; + [_unit] joinSilent coreGroup; // hoffentlich wechseln diese die seite +// [_unit] join coreGroup; // eingefügt funzt in lokalen MP +// [_unit] join group _player; +// sleep 0.3; + mainZeus addCuratorEditableObjects [[_unit], true]; + removeBackpack _unit; // löscht eventuellen Backpack _unit addBackpack "B_Parachute"; _unit setSkill ["aimingAccuracy", 0.8]; _unit setSkill ["aimingSpeed", 0.7]; diff --git a/supports/functions/fn_radioBox.sqf b/supports/functions/fn_radioBox.sqf new file mode 100644 index 00000000..46f8a2e2 --- /dev/null +++ b/supports/functions/fn_radioBox.sqf @@ -0,0 +1,23 @@ +_player = _this select 0; + +_vehiclePos = [_player, 1, 15, 5, 0, 30, 0] call BIS_fnc_findSafePos; + +// TFAR Box +if (isClass (configfile >> "CfgVehicles" >> "tf_anarc164")) then { +radioStorage = createVehicle ["Box_NATO_Equip_F", _vehiclePos, [], 0, "CAN_COLLIDE"]; +clearItemCargo radioStorage; +radioStorage addItemCargo ["TFAR_anprc148jem", 15]; +radioStorage addItemCargo ["TFAR_anprc152", 15]; +radioStorage addItemCargo ["TFAR_anprc154", 15]; +radioStorage addItemCargo ["TFAR_fadak", 15]; +radioStorage addItemCargo ["TFAR_pnr1000a", 15]; +radioStorage addItemCargo ["TFAR_rf7800str", 15]; +}; + +// ACRE Box +if (!isNil "acre_main") then { +radioStorage = createVehicle ["ACRE_RadioSupplyCrate", _vehiclePos, [], 0, "CAN_COLLIDE"]; +}; + +sleep 120; +deleteVehicle radioStorage; \ No newline at end of file diff --git a/supports/functions/fn_supplyDrop.sqf b/supports/functions/fn_supplyDrop.sqf index e6fb0571..2931f542 100644 --- a/supports/functions/fn_supplyDrop.sqf +++ b/supports/functions/fn_supplyDrop.sqf @@ -68,7 +68,6 @@ _supplyBox allowDamage false; [_supplyBox, _cargo] remoteExec ["addAction", 0, true]; - waitUntil {getpos _supplyBox select 2<4}; _smoker = "SmokeShellBlue" createVehicle (getpos _supplyBox vectorAdd [0,0,5]); detach _supplyBox; @@ -76,3 +75,6 @@ detach _supplyBox; sleep 20; deletevehicle _agVehicle; {deletevehicle _x} foreach _agCrew; + +// delete Parachute if it is hanging in trees +deletevehicle _parachute; \ No newline at end of file diff --git a/supports/purchase.sqf b/supports/purchase.sqf index 5e94a245..f8e57be0 100644 --- a/supports/purchase.sqf +++ b/supports/purchase.sqf @@ -21,7 +21,10 @@ if (SUPPORTMENU) then { if(([player] call killPoints_fnc_get) >= _shopPrice) then { [player, _shopPrice] remoteExec ["killPoints_fnc_spend", 2]; [player, _shopClass] call BIS_fnc_addCommMenuItem; + sleep 0.3; + ctrlEnable [1601, true]; } else { + ctrlEnable [1601, true]; [format ["Not enough points for %1!", _shopName], -0, -0.02, 0.2] call BIS_fnc_dynamicText; objPurchase = false; };