diff --git a/Changelogs/0.3.7.0.txt b/Changelogs/0.3.7.0.txt index 5a1fe635..3e465342 100644 --- a/Changelogs/0.3.7.0.txt +++ b/Changelogs/0.3.7.0.txt @@ -1,17 +1,22 @@ **Client** -[ADDED] Repack magazines option. -[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, ItemDoc2) -[WIP] Light Bulb (ItemBulb) -[WIP] Burlap (ItemBurlap) -[WIP] Briefcase (Empty - ItemBriefcaseE) +[ADDED] Repack magazines. Select a magazine and press the "Repack" button. +[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] Plywood sheets in small and large stacks (ItemPlywood,ItemPlywoodPack). [Changed] Change all publicVariableServer calls to use remoteExec calls for better performance. [Fixed] Custom epoch swing animations for Hatchet and sledge now work correctly. **Server** -[Updated] New Battleye remoteExec.txt for added remoteExec calls. [Changed] Driver or passengers of a driverless can now control vehicle locks. +[Changed] Commented out Halloween masks from loot tables. +[Updated] New Battleye remoteExec.txt for added remoteExec calls. [Info] Removed old .bikey and added new one for 0370. diff --git a/Server_Install_Pack/@epochhive/addons/a3_epoch_server.pbo b/Server_Install_Pack/@epochhive/addons/a3_epoch_server.pbo index c0c560fb..0c9729b9 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 08f5f5be..fa9996ee 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/Sources/epoch_config/Configs/CfgMagazines/Custom.hpp b/Sources/epoch_config/Configs/CfgMagazines/Custom.hpp index 8fc03173..6aee44ad 100644 --- a/Sources/epoch_config/Configs/CfgMagazines/Custom.hpp +++ b/Sources/epoch_config/Configs/CfgMagazines/Custom.hpp @@ -1,4 +1,4 @@ -class ItemHotwire : CA_Magazine { +class ItemHotwire : CA_Magazine { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_hotwire_ca.paa"; displayName = "$STR_EPOCH_VehicleHotwireK_19"; // Vehicle Hotwire Kit scope = 2; @@ -9,7 +9,7 @@ class ItemHotwire : CA_Magazine { interactAction = 2; interactText = "USE"; }; -class ItemKeyKit : CA_Magazine { +class ItemKeyKit : CA_Magazine { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_keykit_ca.paa"; displayName = "$STR_EPOCH_KeyMakersKit_14"; // Key Makers Kit scope = 2; @@ -20,7 +20,7 @@ class ItemKeyKit : CA_Magazine { interactAction = 2; interactText = "USE"; }; -class ItemBarrelF : CA_Magazine { +class ItemBarrelF : CA_Magazine { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_oil_drum_model_ca.paa"; displayName = "$STR_EPOCH_FuelBarrelFull_18"; // Fuel Barrel (Full) scope = 2; @@ -31,7 +31,7 @@ class ItemBarrelF : CA_Magazine { interactAction = 2; interactText = "USE"; }; -class ItemBarrelE : CA_Magazine { +class ItemBarrelE : CA_Magazine { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_oildrum_e_CA.paa"; displayName = "$STR_EPOCH_FuelBarrelEmpty_19"; // Fuel Barrel (Empty) scope = 2; @@ -42,7 +42,7 @@ class ItemBarrelE : CA_Magazine { interactAction = 2; interactText = "USE"; }; -class ItemPipe : CA_Magazine { +class ItemPipe : CA_Magazine { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_pipe_CA.paa"; displayName = "$STR_EPOCH_Pipes_5"; // Pipes scope = 2; @@ -51,7 +51,7 @@ class ItemPipe : CA_Magazine { count = 1; mass = 15; }; -class ItemKey : CA_Magazine { +class ItemKey : CA_Magazine { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_key_CA.paa"; displayName = "$STR_EPOCH_Key_3"; // Key scope = 2; @@ -62,27 +62,27 @@ class ItemKey : CA_Magazine { interactAction = 2; interactText = "USE"; }; -class ItemKeyBlue : ItemKey { +class ItemKeyBlue : ItemKey { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_key_CA_blue.paa"; displayName = "$STR_EPOCH_KeyBlue_10"; // Key (Blue) model = "\x\addons\a3_epoch_assets_1\models\key_blue.p3d"; }; -class ItemKeyGreen : ItemKey { +class ItemKeyGreen : ItemKey { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_key_CA_green.paa"; displayName = "$STR_EPOCH_KeyGreen_11"; // Key (Green) model = "\x\addons\a3_epoch_assets_1\models\key_green.p3d"; }; -class ItemKeyRed : ItemKey { +class ItemKeyRed : ItemKey { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_key_CA_red.paa"; displayName = "$STR_EPOCH_KeyRed_9"; // Key (Red) model = "\x\addons\a3_epoch_assets_1\models\key_red.p3d"; }; -class ItemKeyYellow : ItemKey { +class ItemKeyYellow : ItemKey { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_key_CA_yellow.paa"; displayName = "$STR_EPOCH_KeyYellow_12"; // Key (Yellow) model = "\x\addons\a3_epoch_assets_1\models\key_yellow.p3d"; }; -class ItemDoc1 : CA_Magazine { +class ItemDoc1 : CA_Magazine { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_child1_ca.paa"; displayName = "$STR_EPOCH_Book_4"; // Book scope = 2; @@ -93,9 +93,177 @@ class ItemDoc1 : CA_Magazine { interactAction = -1; interactText = "READ"; }; -class ItemDoc2 : ItemDoc1 { +class ItemDoc2 : ItemDoc1 { picture = "\x\addons\a3_epoch_assets_1\pictures\equip_child2_ca.paa"; displayName = "$STR_EPOCH_Book_4"; // Book scope = 2; model = "\x\addons\a3_epoch_assets_1\models\doc_child2.p3d"; }; +class ItemDoc3 : ItemDoc1 { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_deaths_ca.paa"; + displayName = "$STR_EPOCH_Book_4"; // Book + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\doc_deaths.p3d"; +}; +class ItemDoc4 : ItemDoc1 { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_doc_generic_ca.paa"; + displayName = "$STR_EPOCH_Book_4"; // Book + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\doc_generic.p3d"; +}; +class ItemDoc5 : ItemDoc1 { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_doc_letter_ca.paa"; + displayName = "$STR_EPOCH_Letter_6"; // Letter + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\doc_letter.p3d"; +}; +class ItemDoc6 : ItemDoc1 { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_doc_ramp_ca.paa"; + displayName = "$STR_EPOCH_Book_4"; // Book + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\doc_ramp.p3d"; +}; +class ItemDoc7 : ItemDoc1 { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_child2_ca.paa"; + displayName = "$STR_EPOCH_Letter_6"; // Letter + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\doc_trashy1.p3d"; +}; +class ItemDoc8 : ItemDoc1 { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_child2_ca.paa"; + displayName = "$STR_EPOCH_Letter_6"; // Letter + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\doc_trashy2.p3d"; +}; +class ItemVehDoc1 : ItemDoc1 { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_docup1_ca.paa"; + displayName = "$STR_EPOCH_VehicleManualI_16"; // Vehicle Manual I + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\doc_Up1.p3d"; +}; +class ItemVehDoc2 : ItemDoc1 { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_docup2_ca.paa"; + displayName = "$STR_EPOCH_VehicleManualII_17"; // Vehicle Manual II + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\doc_Up2.p3d"; +}; +class ItemVehDoc3 : ItemDoc1 { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_docup3_ca.paa"; + displayName = "$STR_EPOCH_VehicleManualII_18"; // Vehicle Manual III + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\doc_Up3.p3d"; +}; +class ItemVehDoc4 : ItemDoc1 { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_docup4_ca.paa"; + displayName = "$STR_EPOCH_VehicleManualII_19"; // Vehicle Manual IIII + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\doc_Up4.p3d"; +}; +class ItemBulb : CA_Magazine { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_bulb_CA.paa"; + displayName = "$STR_EPOCH_LightBulb_10"; // Light Bulb + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\bulb.p3d"; + descriptionShort = "$STR_EPOCH_LightBulbinfact_60"; // Light Bulb in factory package. Gives off light when powered. + count = 1; + mass = 1; +}; +class ItemBurlap : CA_Magazine { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_burlap_ca.paa"; + displayName = "$STR_EPOCH_Burlap_6"; // Burlap + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\burlap.p3d"; + descriptionShort = "$STR_EPOCH_Wovenfabricmade_36"; // Woven fabric made from plant fibers. + count = 1; + mass = 1; +}; +class ItemBriefcaseE : CA_Magazine { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_briefcase_E_CA.paa"; + displayName = "$STR_EPOCH_EmptyBriefcase_15"; // Empty Briefcase + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\briefcase.p3d"; + descriptionShort = "$STR_EPOCH_Arectangularcon_55"; // A rectangular container, for carrying books and papers. + count = 1; + mass = 1; +}; +class ItemAluminumBar : CA_Magazine { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_alum_bar_CA.paa"; + displayName = "$STR_EPOCH_AluminumBar1oz_18"; // Aluminum Bar (1oz) + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\aluminum_bar.p3d"; + descriptionShort = "$STR_EPOCH_AluminumBar1oz_18"; // Aluminum Bar (1oz) + 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) + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\copper_bar.p3d"; + descriptionShort = "$STR_EPOCH_CopperBar1oz_16"; // Copper Bar (1oz) + 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) + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\tin_bar.p3d"; + descriptionShort = "$STR_EPOCH_TinBar1oz_13"; // Tin Bar (1oz) + 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 + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\plywood.p3d"; + descriptionShort = "$STR_EPOCH_PlywoodSheets_14"; // Plywood Sheets + count = 1; + mass = 1; +}; +class ItemPlywoodPack : CA_Magazine { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_plywood_pack_CA.paa"; + displayName = "$STR_EPOCH_PlywoodPack_12"; // Plywood Pack + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\plywood_pack.p3d"; + descriptionShort = "$STR_EPOCH_StackofPlywoodS_23"; // Stack of Plywood Sheets + count = 1; + mass = 1; +}; +class ItemComboLock : CA_Magazine { + picture = "\x\addons\a3_epoch_assets_1\pictures\equip_combolock_ca.paa"; + displayName = "$STR_EPOCH_CombinationLock_16"; // Combination Lock + scope = 2; + model = "\x\addons\a3_epoch_assets_1\models\combo_lock_mag.p3d"; + descriptionShort = "$STR_EPOCH_CombinationLock_16"; // Combination Lock + count = 1; + mass = 1; +}; diff --git a/Sources/epoch_config/Configs/CfgPricing.hpp b/Sources/epoch_config/Configs/CfgPricing.hpp index fae7c4f4..250d3bdf 100644 --- a/Sources/epoch_config/Configs/CfgPricing.hpp +++ b/Sources/epoch_config/Configs/CfgPricing.hpp @@ -16,44 +16,8 @@ class CfgPricing { - // 037 - class ItemHotwire { - price = 15; - }; - class ItemKeyKit { - price = 15; - }; - class ItemBarrelF { - price = 150; - }; - class ItemBarrelE { - price = 150; - }; - class ItemPipe { - price = 10; - }; - class ItemKey { - price = 10; - }; - class ItemKeyBlue { - price = 10; - }; - class ItemKeyGreen { - price = 10; - }; - class ItemKeyRed { - price = 10; - }; - class ItemKeyYellow { - price = 10; - }; - class ItemDoc1 { - price = 10; - }; - class ItemDoc2 { - price = 10; - }; - // 037 + // generated by external system + #include "CfgPricing\AutoGen.hpp" class ChainSaw {price = 125;}; class CircuitParts {price = 50;}; diff --git a/Sources/epoch_config/Configs/CfgPricing/AutoGen.hpp b/Sources/epoch_config/Configs/CfgPricing/AutoGen.hpp new file mode 100644 index 00000000..30396405 --- /dev/null +++ b/Sources/epoch_config/Configs/CfgPricing/AutoGen.hpp @@ -0,0 +1,102 @@ +class ItemHotwire { + price = 15; +}; +class ItemKeyKit { + price = 15; +}; +class ItemBarrelF { + price = 150; +}; +class ItemBarrelE { + price = 150; +}; +class ItemPipe { + price = 10; +}; +class ItemKey { + price = 10; +}; +class ItemKeyBlue { + price = 10; +}; +class ItemKeyGreen { + price = 10; +}; +class ItemKeyRed { + price = 10; +}; +class ItemKeyYellow { + price = 10; +}; +class ItemDoc1 { + price = 10; +}; +class ItemDoc2 { + price = 10; +}; +class ItemDoc3 { + price = 10; +}; +class ItemDoc4 { + price = 10; +}; +class ItemDoc5 { + price = 10; +}; +class ItemDoc6 { + price = 10; +}; +class ItemDoc7 { + price = 10; +}; +class ItemDoc8 { + price = 10; +}; +class ItemVehDoc1 { + price = 10; +}; +class ItemVehDoc2 { + price = 10; +}; +class ItemVehDoc3 { + price = 10; +}; +class ItemVehDoc4 { + price = 10; +}; +class ItemBulb { + price = 10; +}; +class ItemBurlap { + price = 10; +}; +class ItemBriefcaseE { + price = 10; +}; +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; +}; +class ItemPlywoodPack { + price = 100; +}; +class ItemComboLock { + price = 45; +}; diff --git a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_lockVehicle.sqf b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_lockVehicle.sqf index b7b35a03..af00e192 100644 --- a/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_lockVehicle.sqf +++ b/Sources/epoch_server/compile/epoch_vehicle/EPOCH_server_lockVehicle.sqf @@ -32,13 +32,30 @@ if (_vehSlot != "ABORT") then { _isLocked = locked _vehicle in[2, 3]; _driver = driver _vehicle; -// check if player is driver -_isDriver = _player isEqualTo _driver; -// check if player is inside vehicle without driver -_isInsideVehicle = _player in (crew _vehicle); +_crew = []; +{ + // only get alive crew + if (alive _x) then { + _crew pushBack _x; + }; +} forEach (crew _vehicle); + +// if vehicle has a crew and player is not inside vehicle only allow locking if already owner +_logic = if !(_crew isEqualTo []) then { + if (_player in _crew) then { + // allow unlock if player is the driver or is inside the vehicle with out a driver. + (_player isEqualTo _driver || isNull(_driver)) + } else { + // allow only if player is already the owner as they are not inside the occupied vehicle. + (_lockedOwner == _lockOwner) + }; +} else { + // vehicle has no crew, so allow only if: unlocked, is already the owner, vehicle has no owner. + (!_isLocked || _lockedOwner == _lockOwner || _lockedOwner == "-1") +}; // Lockout mech -if (!_isLocked || _lockedOwner == _lockOwner || _lockedOwner == "-1" || _isDriver || (isNull(_driver) && _isInsideVehicle)) then { +if (_logic) then { _value = _this select 1; diff --git a/Sources/epoch_server_settings/configs/loots.h b/Sources/epoch_server_settings/configs/loots.h index 8c287589..27805d14 100644 --- a/Sources/epoch_server_settings/configs/loots.h +++ b/Sources/epoch_server_settings/configs/loots.h @@ -1862,9 +1862,9 @@ class CfgLootTable { { "H_91_EPOCH", "item" }, 1 }, { { "H_92_EPOCH", "item" }, 1 }, { { "H_104_EPOCH", "item" }, 1 }, - { { "wolf_mask_epoch", "item" }, 1 }, - { { "pkin_mask_epoch", "item" }, 1 }, - { { "clown_mask_epoch", "item" }, 1 } + //{ { "wolf_mask_epoch", "item" }, 1 }, + //{ { "pkin_mask_epoch", "item" }, 1 }, + //{ { "clown_mask_epoch", "item" }, 1 } }; };