diff --git a/Changelogs/0.3.7.0.txt b/Changelogs/0.3.7.0.txt index 535dc98a..515cd275 100644 --- a/Changelogs/0.3.7.0.txt +++ b/Changelogs/0.3.7.0.txt @@ -1,17 +1,19 @@ **Client** -[ADDED] Repack magazines. Select a magazine and press the "Repack" button. +[Added] Repack magazines feature. Simply select a magazine and press the "Repack" button. +[Added] 55 Gallon (210 liters) Fuel Barrel that can be used to refill/siphon vehicles. (Full - ItemBarrelF,Empty - ItemBarrelE). +[Added] Ability to siphon fuel from other fuel sources like gas stations and gas tanks. +[ADDED-WIP] Pack/unpack empty backpacks into carryable items. [ADDED-WIP] Hotwire Kit (ItemHotwire). [ADDED-WIP] Key Makers Kit (ItemKeyKit). [ADDED-WIP] Keys in colors: (Black ItemKey,ItemKeyRed,ItemKeyGreen,ItemKeyBlue,ItemKeyYellow). -[ADDED-WIP] 55 Gallon Fuel Barrel (Full - ItemBarrelF,Empty - ItemBarrelE). [ADDED-WIP] Metal Pipes (ItemPipe). [ADDED-WIP] Documents (Trash,Books,Vehicle Upgrades) (ItemDoc1-8, ItemVehDoc1-4). [ADDED-WIP] Light Bulb (ItemBulb). [ADDED-WIP] Burlap (ItemBurlap). [ADDED-WIP] Briefcase (Empty - ItemBriefcaseE). -[ADDED-WIP] Aluminum Bars (ItemAluminumBar,ItemAluminumBar10oz). -[ADDED-WIP] Copper Bars (ItemCopperBar,ItemCopperBar10oz). -[ADDED-WIP] Tin Bars (ItemTinBar,ItemTinBar10oz). +[ADDED-WIP] Aluminum Bars (ItemAluminumBar). +[ADDED-WIP] Copper Bars (ItemCopperBar). +[ADDED-WIP] Tin Bars (ItemTinBar). [ADDED-WIP] Plywood sheets in small and large stacks (ItemPlywood,ItemPlywoodPack). [Changed] Change all publicVariableServer calls to use remoteExec calls for better performance. [Fixed] Incorrectly being able to sell/buy items from a dead trader. @@ -19,7 +21,9 @@ [Fixed] Custom epoch swing animations for Hatchet and sledge now work correctly. [Fixed] Boss Sapper incorrectly cleaned up before detonation. **Server** +[Added] telePos array can now use world position for tele pads if 5th array element is true. [Added] Setting to control random magazine ammo counts in loot spawner. CfgEpochClient -> randomizeMagazineAmmoCount (default: true) +[Changed] Empty fuel barrel added to large trash and vehicle loot tables. [Changed] Earthquakes with mineral veins spawn chances increased with less players. [Changed] Driver or passengers of a driverless can now control vehicle locks. Also only the owner can control locks from outside of a occupied vehicle. [Changed] Commented out Halloween masks from loot tables. diff --git a/Server_Install_Pack/@epochhive/addons/a3_epoch_server.pbo b/Server_Install_Pack/@epochhive/addons/a3_epoch_server.pbo index 1803d425..b7338518 100644 Binary files a/Server_Install_Pack/@epochhive/addons/a3_epoch_server.pbo and b/Server_Install_Pack/@epochhive/addons/a3_epoch_server.pbo differ diff --git a/Server_Install_Pack/@epochhive/addons/a3_epoch_server_settings.pbo b/Server_Install_Pack/@epochhive/addons/a3_epoch_server_settings.pbo index 0274671b..cefca4ff 100644 Binary files a/Server_Install_Pack/@epochhive/addons/a3_epoch_server_settings.pbo and b/Server_Install_Pack/@epochhive/addons/a3_epoch_server_settings.pbo differ diff --git a/Server_Install_Pack/sc/battleye/remoteexec.txt b/Server_Install_Pack/sc/battleye/remoteexec.txt index 9f2083cd..cf37027f 100644 --- a/Server_Install_Pack/sc/battleye/remoteexec.txt +++ b/Server_Install_Pack/sc/battleye/remoteexec.txt @@ -1 +1 @@ -5 "" !="epoch_server_checkplayer [A-Z]{1} [A-Za-z]{4,10} [0-9]{1,3}-[0-9]{1,3}:[0-9]{1,3} \(.+\) REMOTE" !="epoch_server_(save(_vehicles|building)|(lock|pack)Storage|(upgrade|remove|paint|maint)build) \[.+\]" !="epoch_server_((load|respawn|dead|invite|revive|teleport)Player|(upgrade|updateplayer|create|delete)Group) \[.+\]" !="epoch_server_(knockDownTree|mineRocks|lootAnimal|handle_(say3d|switchmove|sapperObjs)) \[.+\]" !="epoch_server_((repair|fill|lock)Vehicle|(loot|fill)Container|(store|take)Crypto|make(NPC|)Trade) \[.+\]" !="epoch_server_(tradeRequest|equippeditem|packJack|createAirDrop|airDropCrate|destroytrash) \[.+\]" !="epoch_(localcleanup|fnc_saveplayer) \[.+\]" +5 "" !="epoch_server_checkplayer [A-Z]{1} [A-Za-z]{4,10} [0-9]{1,3}-[0-9]{1,3}:[0-9]{1,3} \(.+\) REMOTE" !="epoch_server_(save(_vehicles|building)|(lock|pack)Storage|(upgrade|remove|paint|maint)build) \[.+\]" !="epoch_server_((load|respawn|dead|invite|revive|teleport)Player|(upgrade|updateplayer|create|delete)Group) \[.+\]" !="epoch_server_(knockDownTree|mineRocks|lootAnimal|handle_(say3d|switchmove|sapperObjs)) \[.+\]" !="epoch_server_((repair|fill|lock)Vehicle|(loot|fill)Container|(store|take)Crypto|make(NPC|)Trade) \[.+\]" !="epoch_server_(tradeRequest|equippeditem|packJack|createAirDrop|airDropCrate|destroytrash|unpackBackpack) \[.+\]" !="epoch_(localcleanup|fnc_saveplayer) \[.+\]" diff --git a/Sources/epoch_code/compile/EPOCH_consumeItem.sqf b/Sources/epoch_code/compile/EPOCH_consumeItem.sqf index 79e621e2..7cfd4ef7 100644 --- a/Sources/epoch_code/compile/EPOCH_consumeItem.sqf +++ b/Sources/epoch_code/compile/EPOCH_consumeItem.sqf @@ -190,14 +190,14 @@ switch _interactOption do { if (cursorTarget in _vehicles) then { _vehicle = cursorTarget; _currentFuel = fuel _vehicle; - _canCapacity = 10; + _canCapacity = _interactAttributes param [0,10]; _fuelCapacity = getNumber (configfile >> "CfgVehicles" >> (typeOf _vehicle) >> "fuelCapacity"); _currentFuel = _currentFuel * _fuelCapacity; _newFuel = _currentFuel + _canCapacity; _newFuel = _newFuel / _fuelCapacity; if (_item call _removeItem) then { - player addMagazine "jerrycanE_epoch"; + player addMagazine _interactReturnOnUse; // send [_vehicle,_newFuel,player,Epoch_personalToken] remoteExec ["EPOCH_server_fillVehicle",2]; @@ -207,22 +207,37 @@ switch _interactOption do { }; case 5: { _vehicles = player nearEntities [["LandVehicle","Ship","Air","Tank"], 6]; + _canCapacity = _interactAttributes param [0,10]; + if (cursorTarget in _vehicles) then { _vehicle = cursorTarget; - _canCapacity = 10; _fuelCapacity = getNumber (configfile >> "CfgVehicles" >> (typeOf _vehicle) >> "fuelCapacity"); _newFuel = (((fuel _vehicle) * _fuelCapacity) - _canCapacity) / _fuelCapacity; - - //diag_log format["FIND fill _newFuel %1 capacity: %2 current: %3",_newFuel,_fuelCapacity,_currentFuel]; if (_newFuel > 0) then { if (_item call _removeItem) then { - player addMagazine "jerrycan_epoch"; + player addMagazine _interactReturnOnUse; [_vehicle,_newFuel,player,Epoch_personalToken] remoteExec ["EPOCH_server_fillVehicle",2]; _dt = ["Fuel Siphoned", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; }; } else { _dt = ["Not Enough Fuel", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; }; + } else { + + // find any other nearby fuel sources + _transportFuel = 0; + { + _transportFuel = _transportFuel + getNumber (configFile >> "CfgVehicles" >> (typeOf _x) >> "transportFuel"); + } forEach (player nearObjects["ALL", 6]); + + if (_transportFuel > _canCapacity) then { + if (_item call _removeItem) then { + player addMagazine _interactReturnOnUse; + _dt = ["Fuel Siphoned", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; + }; + } else { + _dt = ["Not Enough Fuel", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; + }; }; }; case 6: _unifiedInteract; //Clean -25 @@ -327,6 +342,13 @@ switch _interactOption do { }; }; + case 14: { // Unpack Backpack + if (_item call _removeItem) then { + [_interactReturnOnUse,player,Epoch_personalToken] remoteExec ["EPOCH_server_unpackBackpack",2]; + _dt = ["Unpacked backpack", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; + }; + }; + default { // bottom _dt = ["Found nothing", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext; diff --git a/Sources/epoch_code/compile/traders/EPOCH_startNpcTrade.sqf b/Sources/epoch_code/compile/traders/EPOCH_startNpcTrade.sqf index 94480849..d66a251c 100644 --- a/Sources/epoch_code/compile/traders/EPOCH_startNpcTrade.sqf +++ b/Sources/epoch_code/compile/traders/EPOCH_startNpcTrade.sqf @@ -25,7 +25,7 @@ private["_item", "_currQty", "_tradeType", "_itemWorth", "_aiItems", "_itemClass if (!isNil "EPOCH_TRADE_COMPLETE") exitWith {}; if (!isNil "EPOCH_TRADE_STARTED") exitWith{}; -if (!isNull _this) exitWith{}; +if (isNull _this) exitWith{}; if (alive _this) then { diff --git a/Sources/epoch_config/Configs/CfgMagazines/Custom.hpp b/Sources/epoch_config/Configs/CfgMagazines/Custom.hpp index 6aee44ad..b5213185 100644 --- a/Sources/epoch_config/Configs/CfgMagazines/Custom.hpp +++ b/Sources/epoch_config/Configs/CfgMagazines/Custom.hpp @@ -30,6 +30,8 @@ class ItemBarrelF : CA_Magazine { mass = 25; interactAction = 2; interactText = "USE"; + interactAttributes[] = {210}; + interactReturnOnUse = "ItemBarrelE"; }; class ItemBarrelE : CA_Magazine { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_oildrum_e_CA.paa"; @@ -41,6 +43,8 @@ class ItemBarrelE : CA_Magazine { mass = 25; interactAction = 2; interactText = "USE"; + interactAttributes[] = {210}; + interactReturnOnUse = "ItemBarrelF"; }; class ItemPipe : CA_Magazine { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_pipe_CA.paa"; @@ -195,15 +199,6 @@ class ItemAluminumBar : CA_Magazine { count = 1; mass = 1; }; -class ItemAluminumBar10oz : CA_Magazine { - picture = "\x\addons\a3_epoch_assets_1\pictures\equip_alum_bar_10oz_CA.paa"; - displayName = "$STR_EPOCH_AluminumBar10oz_19"; // Aluminum Bar (10oz) - scope = 2; - model = "\x\addons\a3_epoch_assets_1\models\aluminum_bar_10oz.p3d"; - descriptionShort = "$STR_EPOCH_AluminumBar10oz_19"; // Aluminum Bar (10oz) - count = 1; - mass = 1; -}; class ItemCopperBar : CA_Magazine { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_copper_bar_CA.paa"; displayName = "$STR_EPOCH_CopperBar1oz_16"; // Copper Bar (1oz) @@ -213,15 +208,6 @@ class ItemCopperBar : CA_Magazine { count = 1; mass = 1; }; -class ItemCopperBar10oz : CA_Magazine { - picture = "\x\addons\a3_epoch_assets_1\pictures\equip_copper_bar_10oz_CA.paa"; - displayName = "$STR_EPOCH_CopperBar10oz_17"; // Copper Bar (10oz) - scope = 2; - model = "\x\addons\a3_epoch_assets_1\models\copper_bar_10oz.p3d"; - descriptionShort = "$STR_EPOCH_CopperBar10oz_17"; // Copper Bar (10oz) - count = 1; - mass = 1; -}; class ItemTinBar : CA_Magazine { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_tin_bar_CA.paa"; displayName = "$STR_EPOCH_TinBar1oz_13"; // Tin Bar (1oz) @@ -231,15 +217,6 @@ class ItemTinBar : CA_Magazine { count = 1; mass = 1; }; -class ItemTinBar10oz : CA_Magazine { - picture = "\x\addons\a3_epoch_assets_1\pictures\equip_tin_bar_10oz_CA.paa"; - displayName = "$STR_EPOCH_TinBar10oz_14"; // Tin Bar (10oz) - scope = 2; - model = "\x\addons\a3_epoch_assets_1\models\tin_bar_10oz.p3d"; - descriptionShort = "$STR_EPOCH_TinBar10oz_14"; // Tin Bar (10oz) - count = 1; - mass = 1; -}; class ItemPlywood : CA_Magazine { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_plywood_CA.paa"; displayName = "$STR_EPOCH_Plywood_7"; // Plywood @@ -267,3 +244,399 @@ class ItemComboLock : CA_Magazine { count = 1; mass = 1; }; +class Item_AssaultPack_cbr : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_AssaultPack_cbr0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 20; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_AssaultPack_cbr"; +}; +class Item_AssaultPack_dgtl : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_AssaultPack_dgtl0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 20; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_AssaultPack_dgtl"; +}; +class Item_AssaultPack_khk : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_AssaultPack_khk0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 20; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_AssaultPack_khk"; +}; +class Item_AssaultPack_mcamo : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_AssaultPack_mcamo0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 20; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_AssaultPack_mcamo"; +}; +class Item_AssaultPack_ocamo : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_AssaultPack_ocamo0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 20; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_AssaultPack_ocamo"; +}; +class Item_AssaultPack_rgr : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_AssaultPack_rgr0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 20; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_AssaultPack_rgr"; +}; +class Item_AssaultPack_sgg : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_AssaultPack_sgg0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 20; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_AssaultPack_sgg"; +}; +class Item_AssaultPack_blk : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_AssaultPack_blk0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 20; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_AssaultPack_blk"; +}; +class Item_Carryall_cbr : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_Carryall_cbr0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 60; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_Carryall_cbr"; +}; +class Item_Carryall_khk : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_Carryall_khk0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 60; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_Carryall_khk"; +}; +class Item_Carryall_mcamo : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_Carryall_mcamo0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 60; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_Carryall_mcamo"; +}; +class Item_Carryall_ocamo : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_Carryall_ocamo0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 60; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_Carryall_ocamo"; +}; +class Item_Carryall_oli : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_Carryall_oli0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 60; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_Carryall_oli"; +}; +class Item_Carryall_oucamo : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_Carryall_oucamo0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 60; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_Carryall_oucamo"; +}; +class Item_FieldPack_blk : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_FieldPack_blk0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 30; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_FieldPack_blk"; +}; +class Item_FieldPack_cbr : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_FieldPack_cbr0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 30; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_FieldPack_cbr"; +}; +class Item_FieldPack_khk : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_FieldPack_khk0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 30; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_FieldPack_khk"; +}; +class Item_FieldPack_ocamo : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_FieldPack_ocamo0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 30; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_FieldPack_ocamo"; +}; +class Item_FieldPack_oli : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_FieldPack_oli0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 30; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_FieldPack_oli"; +}; +class Item_FieldPack_oucamo : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_FieldPack_oucamo0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 30; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_FieldPack_oucamo"; +}; +class Item_Kitbag_cbr : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_Kitback_cbr0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 50; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_Kitbag_cbr"; +}; +class Item_Kitbag_mcamo : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_Kitback_mcamo0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 50; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_Kitbag_mcamo"; +}; +class Item_Kitbag_rgr : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_Kitback_rgr0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 50; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_Kitbag_rgr"; +}; +class Item_Kitbag_sgg : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_Kitback_sgg0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 50; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_Kitbag_sgg"; +}; +class Item_TacticalPack_blk : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_TacticalPack_blk0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 40; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_TacticalPack_blk"; +}; +class Item_TacticalPack_mcamo : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_TacticalPack_mcamo0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 40; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_TacticalPack_mcamo"; +}; +class Item_TacticalPack_ocamo : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_TacticalPack_ocamo0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 40; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_TacticalPack_ocamo"; +}; +class Item_TacticalPack_oli : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_TacticalPack_oli0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 40; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_TacticalPack_oli"; +}; +class Item_TacticalPack_rgr : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_A3_B_TacticalPack_rgr0"; + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 40; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "B_TacticalPack_rgr"; +}; +class Item_smallbackpack_red : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_EPOCH_SmallBackpackRe_20"; // Small Backpack (Red) + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 25; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "smallbackpack_red_epoch"; +}; +class Item_smallbackpack_green : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_EPOCH_SmallBackpackGr_22"; // Small Backpack (Green) + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 25; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "smallbackpack_green_epoch"; +}; +class Item_smallbackpack_teal : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_EPOCH_SmallBackpackTe_21"; // Small Backpack (Teal) + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 25; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "smallbackpack_teal_epoch"; +}; +class Item_smallbackpack_pink : CA_Magazine { + picture = "\x\addons\a3_epoch_assets\textures\backpack\gear_packedBag_ca.paa"; + displayName = "$STR_EPOCH_SmallBackpackPi_21"; // Small Backpack (Pink) + scope = 2; + model = "\x\addons\a3_epoch_assets\models\PackedBag.p3d"; + descriptionShort = "$STR_EPOCH_PackedBackpack_15"; // Packed Backpack + count = 1; + mass = 25; + interactAction = 14; + interactText = "UNPACK"; + interactReturnOnUse = "smallbackpack_pink_epoch"; +}; diff --git a/Sources/epoch_config/Configs/CfgPricing.hpp b/Sources/epoch_config/Configs/CfgPricing.hpp index 250d3bdf..224a5e81 100644 --- a/Sources/epoch_config/Configs/CfgPricing.hpp +++ b/Sources/epoch_config/Configs/CfgPricing.hpp @@ -450,12 +450,13 @@ class CfgPricing class B_Kitbag_mcamo {price = 25;}; class B_Kitbag_rgr {price = 25;}; class B_Kitbag_sgg {price = 25;}; - class B_Parachute {price = 25;}; + class B_Parachute {price = 25;}; // no packed option class B_TacticalPack_blk {price = 20;}; class B_TacticalPack_mcamo {price = 20;}; class B_TacticalPack_ocamo {price = 20;}; class B_TacticalPack_oli {price = 20;}; class B_TacticalPack_rgr {price = 20;}; + class smallbackpack_red_epoch {price = 22;}; class smallbackpack_green_epoch {price = 22;}; class smallbackpack_teal_epoch {price = 22;}; diff --git a/Sources/epoch_config/Configs/CfgPricing/AutoGen.hpp b/Sources/epoch_config/Configs/CfgPricing/AutoGen.hpp index 30396405..951c1383 100644 --- a/Sources/epoch_config/Configs/CfgPricing/AutoGen.hpp +++ b/Sources/epoch_config/Configs/CfgPricing/AutoGen.hpp @@ -5,7 +5,7 @@ class ItemKeyKit { price = 15; }; class ItemBarrelF { - price = 150; + price = 200; }; class ItemBarrelE { price = 150; @@ -76,21 +76,12 @@ class ItemBriefcaseE { class ItemAluminumBar { price = 10; }; -class ItemAluminumBar10oz { - price = 100; -}; class ItemCopperBar { price = 100; }; -class ItemCopperBar10oz { - price = 1000; -}; class ItemTinBar { price = 1; }; -class ItemTinBar10oz { - price = 10; -}; class ItemPlywood { price = 10; }; @@ -100,3 +91,102 @@ class ItemPlywoodPack { class ItemComboLock { price = 45; }; +class Item_AssaultPack_cbr { + price = 10; +}; +class Item_AssaultPack_dgtl { + price = 10; +}; +class Item_AssaultPack_khk { + price = 10; +}; +class Item_AssaultPack_mcamo { + price = 10; +}; +class Item_AssaultPack_ocamo { + price = 10; +}; +class Item_AssaultPack_rgr { + price = 10; +}; +class Item_AssaultPack_sgg { + price = 10; +}; +class Item_AssaultPack_blk { + price = 10; +}; +class Item_Carryall_cbr { + price = 40; +}; +class Item_Carryall_khk { + price = 40; +}; +class Item_Carryall_mcamo { + price = 40; +}; +class Item_Carryall_ocamo { + price = 40; +}; +class Item_Carryall_oli { + price = 40; +}; +class Item_Carryall_oucamo { + price = 40; +}; +class Item_FieldPack_blk { + price = 15; +}; +class Item_FieldPack_cbr { + price = 15; +}; +class Item_FieldPack_khk { + price = 15; +}; +class Item_FieldPack_ocamo { + price = 15; +}; +class Item_FieldPack_oli { + price = 15; +}; +class Item_FieldPack_oucamo { + price = 15; +}; +class Item_Kitbag_cbr { + price = 25; +}; +class Item_Kitbag_mcamo { + price = 25; +}; +class Item_Kitbag_rgr { + price = 25; +}; +class Item_Kitbag_sgg { + price = 25; +}; +class Item_TacticalPack_blk { + price = 20; +}; +class Item_TacticalPack_mcamo { + price = 20; +}; +class Item_TacticalPack_ocamo { + price = 20; +}; +class Item_TacticalPack_oli { + price = 20; +}; +class Item_TacticalPack_rgr { + price = 20; +}; +class Item_smallbackpack_red { + price = 22; +}; +class Item_smallbackpack_green { + price = 22; +}; +class Item_smallbackpack_teal { + price = 22; +}; +class Item_smallbackpack_pink { + price = 22; +}; diff --git a/Sources/epoch_config/Configs/CfgRemoteExec.hpp b/Sources/epoch_config/Configs/CfgRemoteExec.hpp index c6c890fe..a7afba0e 100644 --- a/Sources/epoch_config/Configs/CfgRemoteExec.hpp +++ b/Sources/epoch_config/Configs/CfgRemoteExec.hpp @@ -191,7 +191,10 @@ class CfgRemoteExec allowedTargets=2; jip = 0; }; - + class EPOCH_server_unpackBackpack { + allowedTargets=2; + jip = 0; + }; }; class Commands {mode=0;}; }; diff --git a/Sources/epoch_server/compile/epoch_player/EPOCH_server_unpackBackpack.sqf b/Sources/epoch_server/compile/epoch_player/EPOCH_server_unpackBackpack.sqf new file mode 100644 index 00000000..311465df --- /dev/null +++ b/Sources/epoch_server/compile/epoch_player/EPOCH_server_unpackBackpack.sqf @@ -0,0 +1,32 @@ +/* + Author: Aaron Clark - EpochMod.com + + Contributors: + + Description: + Unpack backpack + + Licence: + Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike + + Github: + https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_server/compile/epoch_player/EPOCH_server_unpackBackpack.sqf +*/ +private ["_wHPos","_wH","_nearByHolder","_item","_player"]; +_item = _this select 0; +_player = _this select 1; +if !([_player,_this select 2] call EPOCH_server_getPToken) exitWith {}; +if (_item isKindOf "Bag_Base") then { + _wH = objNull; + _nearByHolder = nearestObjects [position _player,["groundWeaponHolder"],3]; + if (_nearByHolder isEqualTo []) then { + _wHPos = _player modelToWorld [0,1,0]; + if (surfaceIsWater _wHPos) then { + _wHPos = ASLToATL _wHPos; + }; + _wH = createVehicle ["groundWeaponHolder",_wHPos, [], 0, "CAN_COLLIDE"]; + } else { + _wH = _nearByHolder select 0; + }; + _wh addBackpackCargoGlobal [_item,1]; +}; diff --git a/Sources/epoch_server/compile/epoch_server/EPOCH_server_createTeleport.sqf b/Sources/epoch_server/compile/epoch_server/EPOCH_server_createTeleport.sqf index fd595fe3..201ec54e 100644 --- a/Sources/epoch_server/compile/epoch_server/EPOCH_server_createTeleport.sqf +++ b/Sources/epoch_server/compile/epoch_server/EPOCH_server_createTeleport.sqf @@ -17,7 +17,6 @@ for "_i" from 5 to 8 do { _debug1 setDir 90; }; - _config = configFile >> "CfgEpoch"; // spawn area props @@ -34,7 +33,7 @@ _config = configFile >> "CfgEpoch"; }; _ep = createVehicle[_class, _pos, [], 0, "CAN_COLLIDE"]; - + _ep allowDamage false; if (typeName _dir == "ARRAY") then{ _ep setVectorDirAndUp _dir; @@ -51,7 +50,16 @@ _config = configFile >> "CfgEpoch"; { _enterClass = _x select 0; - _pos1 = _debug modelToWorld (_x select 1); + + _useWorldPos = false; + if (count _x >= 5) then { + _useWorldPos = (_x select 4) isEqualTo "true"; + }; + _pos1 = _x select 1; + if !(_useWorldPos) then { + _pos1 = _debug modelToWorld (_x select 1); + }; + _exitClass = _x select 2; _pos = _x select 3; diff --git a/Sources/epoch_server_settings/configs/loots.h b/Sources/epoch_server_settings/configs/loots.h index 27805d14..fb9d85d8 100644 --- a/Sources/epoch_server_settings/configs/loots.h +++ b/Sources/epoch_server_settings/configs/loots.h @@ -848,13 +848,15 @@ class CfgLootTable items[] = { { { "MortarBucket", "magazine" }, 16 }, { { "CinderBlocks", "magazine" }, 17 }, - { { "VehicleRepair", "magazine" }, 17 }, + { { "VehicleRepair", "magazine" }, 16 }, { { "CircuitParts", "magazine" }, 17 }, { { "ItemCorrugated", "magazine" }, 17 }, { { "ItemSolar", "magazine" }, 5 }, { { "ItemBattery", "magazine" }, 5 }, { { "ItemCables", "magazine" }, 5 }, - { { "ItemSafe", "magazine" }, 1 } + { { "ItemSafe", "magazine" }, 1 }, + { { "ItemBarrelE", "magazine" }, 1 } + }; }; @@ -870,13 +872,14 @@ class CfgLootTable { { "VehicleRepair", "magazine" }, 10 }, { { "ItemCorrugated", "magazine" }, 11 }, { { "CinderBlocks", "magazine" }, 12 }, - { { "JackKit", "magazine" }, 9 }, + { { "JackKit", "magazine" }, 8 }, { { "ItemCoolerE", "magazine" }, 13 }, { { "ItemScraps", "magazine" }, 13 }, { { "lighter_epoch", "magazine" }, 1 }, { { "ItemSolar", "magazine" }, 3 }, { { "ItemBattery", "magazine" }, 3 }, - { { "ItemCables", "magazine" }, 3 } + { { "ItemCables", "magazine" }, 3 }, + { { "ItemBarrelE", "magazine" }, 1 } }; };