From b51440d6c13884aa00d1292984a985fb883e8baf Mon Sep 17 00:00:00 2001 From: "[VB]AWOL" Date: Sun, 24 Nov 2013 08:39:55 -0600 Subject: [PATCH] new take option on bags from DayZ CE 1.7.7 #766 --- SQF/dayz_code/Configs/CfgVehicles/Bags.hpp | 48 ++++++++++++++++++++ SQF/dayz_code/actions/object_pickup.sqf | 5 ++ SQF/dayz_code/init/object_BackpackAction.sqf | 14 ++++++ SQF/dayz_epoch_b/stringtable.xml | 47 ++++++++++++++++++- 4 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 SQF/dayz_code/init/object_BackpackAction.sqf diff --git a/SQF/dayz_code/Configs/CfgVehicles/Bags.hpp b/SQF/dayz_code/Configs/CfgVehicles/Bags.hpp index 09892ce68..40c664b50 100644 --- a/SQF/dayz_code/Configs/CfgVehicles/Bags.hpp +++ b/SQF/dayz_code/Configs/CfgVehicles/Bags.hpp @@ -28,6 +28,10 @@ class DZ_Patrol_Pack_EP1: Bag_Base_EP1 model = "\ca\weapons_e\AmmoBoxes\backpack_us_assault_Coyote.p3d"; transportMaxWeapons = 1; transportMaxMagazines = 10; + class eventHandlers + { + init="[(_this select 0),'CfgVehicles','DZ_Patrol_Pack_EP1'] execVM '\z\addons\dayz_code\init\object_BackpackAction.sqf';"; + }; }; class DZ_Assault_Pack_EP1: Bag_Base_EP1 @@ -40,6 +44,10 @@ class DZ_Assault_Pack_EP1: Bag_Base_EP1 model = "\ca\weapons_e\AmmoBoxes\backpack_us_assault.p3d"; transportMaxWeapons = 1; transportMaxMagazines = 12; + class eventHandlers + { + init="[(_this select 0),'CfgVehicles','DZ_Assault_Pack_EP1'] execVM '\z\addons\dayz_code\init\object_BackpackAction.sqf';"; + }; }; class DZ_Czech_Vest_Puch: Bag_Base_EP1 @@ -52,6 +60,10 @@ class DZ_Czech_Vest_Puch: Bag_Base_EP1 scope = 2; transportmaxmagazines = 12; transportmaxweapons = 0; + class eventHandlers + { + init="[(_this select 0),'CfgVehicles','DZ_Czech_Vest_Puch'] execVM '\z\addons\dayz_code\init\object_BackpackAction.sqf';"; + }; }; class DZ_ALICE_Pack_EP1: Bag_Base_EP1 @@ -64,6 +76,10 @@ class DZ_ALICE_Pack_EP1: Bag_Base_EP1 model = "\ca\weapons_e\AmmoBoxes\backpack_tk_alice.p3d"; transportMaxWeapons = 2; transportMaxMagazines = 20; + class eventHandlers + { + init="[(_this select 0),'CfgVehicles','DZ_ALICE_Pack_EP1'] execVM '\z\addons\dayz_code\init\object_BackpackAction.sqf';"; + }; }; class DZ_TK_Assault_Pack_EP1 : Bag_Base_EP1 @@ -76,6 +92,10 @@ class DZ_TK_Assault_Pack_EP1 : Bag_Base_EP1 model = "\ca\weapons_e\AmmoBoxes\backpack_civil_assault.p3d"; transportMaxWeapons = 2; transportMaxMagazines = 22; + class eventHandlers + { + init="[(_this select 0),'CfgVehicles','DZ_TK_Assault_Pack_EP1'] execVM '\z\addons\dayz_code\init\object_BackpackAction.sqf';"; + }; }; class DZ_British_ACU : Bag_Base_EP1 @@ -88,6 +108,10 @@ class DZ_British_ACU : Bag_Base_EP1 icon = "\ca\weapons_e\data\icons\mapIcon_backpack_CA.paa"; transportMaxWeapons = 3; transportMaxMagazines = 30; + class eventHandlers + { + init="[(_this select 0),'CfgVehicles','DZ_British_ACU'] execVM '\z\addons\dayz_code\init\object_BackpackAction.sqf';"; + }; }; class DZ_CivilBackpack_EP1: Bag_Base_EP1 @@ -100,6 +124,10 @@ class DZ_CivilBackpack_EP1: Bag_Base_EP1 model = "\ca\weapons_e\AmmoBoxes\backpack_acr.p3d"; transportMaxWeapons = 4; transportMaxMagazines = 40; + class eventHandlers + { + init="[(_this select 0),'CfgVehicles','DZ_CivilBackpack_EP1'] execVM '\z\addons\dayz_code\init\object_BackpackAction.sqf';"; + }; }; class DZ_Backpack_EP1: Bag_Base_EP1 @@ -112,6 +140,10 @@ class DZ_Backpack_EP1: Bag_Base_EP1 model = "\ca\weapons_e\AmmoBoxes\backpack_us.p3d"; transportMaxWeapons = 5; transportMaxMagazines = 50; + class eventHandlers + { + init="[(_this select 0),'CfgVehicles','DZ_Backpack_EP1'] execVM '\z\addons\dayz_code\init\object_BackpackAction.sqf';"; + }; }; class DZ_LargeGunBag_EP1: Bag_Base_EP1 @@ -124,6 +156,10 @@ class DZ_LargeGunBag_EP1: Bag_Base_EP1 mapsize = 2; transportMaxWeapons = 6; transportMaxMagazines = 60; + class eventHandlers + { + init="[(_this select 0),'CfgVehicles','DZ_LargeGunBag_EP1'] execVM '\z\addons\dayz_code\init\object_BackpackAction.sqf';"; + }; }; class DZ_GunBag_EP1: Bag_Base_EP1 { @@ -135,6 +171,10 @@ class DZ_GunBag_EP1: Bag_Base_EP1 mapsize = 2; transportMaxWeapons = 3; transportMaxMagazines = 35; + class eventHandlers + { + init="[(_this select 0),'CfgVehicles','DZ_GunBag_EP1'] execVM '\z\addons\dayz_code\init\object_BackpackAction.sqf';"; + }; }; class DZ_CompactPack_EP1: Bag_Base_EP1 { @@ -146,6 +186,10 @@ class DZ_CompactPack_EP1: Bag_Base_EP1 model = "\ca\weapons_e\AmmoBoxes\backpack_rpg.p3d"; transportMaxWeapons = 2; transportMaxMagazines = 25; + class eventHandlers + { + init="[(_this select 0),'CfgVehicles','DZ_CompactPack_EP1'] execVM '\z\addons\dayz_code\init\object_BackpackAction.sqf';"; + }; }; class DZ_TerminalPack_EP1: Bag_Base_EP1 { @@ -157,4 +201,8 @@ class DZ_TerminalPack_EP1: Bag_Base_EP1 model = "\ca\weapons_e\AmmoBoxes\backpack_us_AUV"; transportMaxWeapons = 1; transportMaxMagazines = 15; + class eventHandlers + { + init="[(_this select 0),'CfgVehicles','DZ_TerminalPack_EP1'] execVM '\z\addons\dayz_code\init\object_BackpackAction.sqf';"; + }; }; diff --git a/SQF/dayz_code/actions/object_pickup.sqf b/SQF/dayz_code/actions/object_pickup.sqf index 2680b983a..09849ebad 100644 --- a/SQF/dayz_code/actions/object_pickup.sqf +++ b/SQF/dayz_code/actions/object_pickup.sqf @@ -38,7 +38,12 @@ _claimedBy = _holder getVariable["claimed","0"]; if (_claimedBy != _playerID) exitWith {sleep 1; DZE_CanPickup = true; cutText [format[(localize "str_player_beinglooted"),_text] , "PLAIN DOWN"]}; if(_classname isKindOf "Bag_Base_EP1") then { + + _PlayerNear = _holder call dze_isnearest_player; + if (_PlayerNear) exitWith {cutText [localize "str_pickup_limit_4", "PLAIN DOWN"]}; + diag_log("Picked up a bag: " + _classname); + player action ["TakeBag", _holder]; }; // test to see if item still exists just before adding and removing diff --git a/SQF/dayz_code/init/object_BackpackAction.sqf b/SQF/dayz_code/init/object_BackpackAction.sqf new file mode 100644 index 000000000..936a3a67e --- /dev/null +++ b/SQF/dayz_code/init/object_BackpackAction.sqf @@ -0,0 +1,14 @@ +_holder = _this select 0; +_type = _this select 1; +_classname = _this select 2; + +_name = getText (configFile >> _type >> _classname >> "displayName"); + +_actionSet = _holder getVariable["actionSet", false]; + +if (!_actionSet) then { + s_player_holderPickup = _holder addAction [format[(localize "str_init_take"),_name], "\z\addons\dayz_code\actions\object_pickup.sqf",[_type,_classname,_holder], 20, true, true]; + player reveal _holder; + _holder setVariable["actionSet", true]; + +}; \ No newline at end of file diff --git a/SQF/dayz_epoch_b/stringtable.xml b/SQF/dayz_epoch_b/stringtable.xml index ff38970ef..efd6761e6 100644 --- a/SQF/dayz_epoch_b/stringtable.xml +++ b/SQF/dayz_epoch_b/stringtable.xml @@ -646,7 +646,52 @@ %1 est déjà en train d'être pillé par quelqu'un d'autre. %1 už je loupeno někým jiným. - + + You need to be within 3 meters to pickup! + You need to be within 3 meters to pickup! + Чтобы поднять предмет, вы должны быть ближе 3х метров! + ¡Necesitas estar a menos de 3 metros para tomarlo! + You need to be within 3 meters to pickup! + Vous devez être à moins de 3 mètres pour ramasser ! + Aby jste předmět sebrali, musíte být v okolí 3 metrů. + + + You must wait to pickup this item! + You must wait to pickup this item! + Чтобы поднять этот предмет, нужно подождать! + ¡Necesitas esperar para tomar este objeto! + You must wait to pickup this item! + Vous devez attendre pour ramasser l'objet ! + Abyste sebrali předmět, musíte počkat. + + + You may only pickup one item at a time! + You may only pickup one item at a time! + Можно поднимать только один предмет за раз! + ¡Solo puedes tomar un objeto a la vez! + You may only pickup one item at a time! + Vous ne pouvez prendre qu'un objet à la fois ! + Lze sebrat pouze jeden předmět zároveň. + + + Another Player is Near by, Only one player can be within 5 meters of a bag to pickup + Another Player is Near by, Only one player can be within 5 meters of a bag to pickup + Другой игрок рядом! Он должен быть далее 5ти метров от поднимаемого рюкзака + Otro jugador cerca, solo un jugador debe estar a menos de 5 metros de la mochila para tomarla + Another Player is Near by, Only one player can be within 5 meters of a bag to pickup + Un autre joueur se trouve à proximité. Un seul joueur peut fouiller un sac dans un rayon de 5 mètres. + Poblíž je další hráč. Pouze jeden hráč musí být v rozsahu 5 metrů aby jste mohli batoh zvednout + + + Another player is nearby, only one player can be near to perform this action + Ein anderer Spieler in der Nähe ist, kann nur ein Spieler sich in der Nähe, um diese Aktion durchzuführen + Другой игрок рядом, только один игрок может делать это. + Otro jugador que está cerca, sólo un jugador puede estar cerca para realizar esta acción + Another player is nearby, only one player can be near to perform this action + Un autre joueur est à proximité, un seul joueur peut se trouver à proximité pour effectuer cette action + Dalším hráčem je v blízkosti, může být jeden hráč blízko k provedení této akce + + That tent is already being packed. That tent is already being packed. Dieses Zelt wurde bereits vergepackt.