diff --git a/dayz_code/CfgMagazines.hpp b/dayz_code/CfgMagazines.hpp index 779f27880..48446e748 100644 --- a/dayz_code/CfgMagazines.hpp +++ b/dayz_code/CfgMagazines.hpp @@ -119,6 +119,211 @@ class CfgMagazines { }; }; + class Quiver : CA_Magazine + { + scope = public; + ammo = "WoodenArrow"; + count = 6; + descriptionshort = "Small Quiver used with the Crossbow, Max arrows 6."; + displayname = "Quiver"; + initSpeed = 150; + model = "\z\addons\dayz_communityassets\models\quiver"; + picture = "\z\addons\dayz_communityassets\pictures\equip_quiver_ca.paa"; + }; + + class WoodenArrow : CA_Magazine { + scope = public; + displayName = "Arrow"; //$STR_MAG_NAME_3; + model = "\dayz_weapons\models\bolt_gear"; + picture = "\z\addons\dayz_communityassets\pictures\equip_warrow_ca.paa"; + ammo = "WoodenArrow"; + count = 1; + initSpeed = 150; + descriptionShort = "Arrow made out of wood, used with the Crossbow."; //$STR_MAG_DESC_3; + + class ItemActions { + class ReloadMag { + text = "Combine into Quiver"; + script = "spawn player_reloadMag;"; + use[] = {"WoodenArrow","WoodenArrow","WoodenArrow","WoodenArrow","WoodenArrow","WoodenArrow"}; + output[] = {"Quiver"}; + }; + }; + }; + + class ItemSodaEmpty;//External class reference + class ItemSodaCoke; //External class reference + + class ItemSodaCokeEmpty : ItemSodaEmpty{ + model = "\dayz_equip\models\soda_coke_e.p3d"; + picture = "\dayz_equip\textures\equip_soda_empty_ca.paa"; + }; + class ItemSodaPepsiEmpty : ItemSodaEmpty{ + model = "\dayz_equip\models\soda_pepsi_e.p3d"; + picture = "\dayz_equip\textures\equip_soda_empty_ca.paa"; + }; + class ItemSodaMdewEmpty : ItemSodaEmpty{ + model = "\dayz_equip\models\soda_mdew_e.p3d"; + picture = "\dayz_equip\textures\equip_soda_empty_ca.paa"; + }; + + class ItemSodaMtngreen : ItemSodaCoke { + displayName = $STR_ITEMSODA_FULL_CLEAN_CODE_NAME_0; + descriptionShort = $STR_ITEMSODA_FULL_CLEAN_CODE_DESC_0; + model = "z\addons\dayz_communityassets\models\soda_mtngreen_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_mtngreen_clean_full_ca.paa"; + }; + class ItemSodaMtngreenEmpty : ItemSodaEmpty{ + model = "z\addons\dayz_communityassets\models\soda_mtngreen_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_mtngreen_clean_empty_ca.paa"; + //ammo = "SodaCanMtngreen"; + }; + + class ItemSodaR4z0r : ItemSodaCoke { + displayName = $STR_ITEMSODA_FULL_CLEAN_CODE_NAME_1; + descriptionShort = $STR_ITEMSODA_FULL_CLEAN_CODE_DESC_1; + model = "z\addons\dayz_communityassets\models\soda_r4z0r_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_r4z0r_clean_full_ca.paa"; + }; + class ItemSodaR4z0rEmpty : ItemSodaEmpty{ + model = "z\addons\dayz_communityassets\models\soda_r4z0r_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_r4z0r_clean_empty_ca.paa"; + //ammo = "SodaCanMtngreen"; + }; + + class ItemSodaClays : ItemSodaCoke { + displayName = $STR_ITEMSODA_FULL_CLEAN_CODE_NAME_2; + descriptionShort = $STR_ITEMSODA_FULL_CLEAN_CODE_DESC_2; + model = "z\addons\dayz_communityassets\models\soda_clays_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_clays_clean_full_ca.paa"; + }; + class ItemSodaClaysEmpty : ItemSodaEmpty{ + model = "z\addons\dayz_communityassets\models\soda_clays_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_clays_clean_empty_ca.paa"; + //ammo = "SodaCanMtngreen"; + }; + + class ItemSodaSmasht : ItemSodaCoke { + displayName = $STR_ITEMSODA_FULL_CLEAN_CODE_NAME_3; + descriptionShort = $STR_ITEMSODA_FULL_CLEAN_CODE_DESC_3; + model = "z\addons\dayz_communityassets\models\soda_smasht_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_smasht_clean_full_ca.paa"; + }; + class ItemSodaSmashtEmpty : ItemSodaEmpty{ + model = "z\addons\dayz_communityassets\models\soda_smasht_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_smasht_clean_empty_ca.paa"; + //ammo = "SodaCanMtngreen"; + }; + + class ItemSodaDrwaste : ItemSodaCoke { + displayName = $STR_ITEMSODA_FULL_CLEAN_CODE_NAME_4; + descriptionShort = $STR_ITEMSODA_FULL_CLEAN_CODE_DESC_4; + model = "z\addons\dayz_communityassets\models\soda_drwaste_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_drwaste_clean_full_ca.paa"; + }; + class ItemSodaDrwasteEmpty : ItemSodaEmpty{ + model = "z\addons\dayz_communityassets\models\soda_drwaste_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_drwaste_clean_empty_ca.paa"; + //ammo = "SodaCanMtngreen"; + }; +/* + class ItemSodaFranka : ItemSodaCoke { + displayName = $STR_ITEMSODA_FULL_CLEAN_CODE_NAME_5; + descriptionShort = $STR_ITEMSODA_FULL_CLEAN_CODE_DESC_5; + model = "z\addons\dayz_communityassets\models\soda_franka_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_franka_clean_full_ca.paa"; + }; + class ItemSodaFrankaEmpty : ItemSodaEmpty{ + model = "z\addons\dayz_communityassets\models\soda_franka_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_franka_clean_empty_ca"; + //ammo = "SodaCanMtngreen"; + }; +*/ + class ItemSodaLemonade : ItemSodaCoke { + displayName = $STR_ITEMSODA_FULL_CLEAN_CODE_NAME_6; + descriptionShort = $STR_ITEMSODA_FULL_CLEAN_CODE_DESC_6; + model = "z\addons\dayz_communityassets\models\soda_lemonade_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_lemonade_clean_full_ca.paa"; + }; + class ItemSodaLemonadeEmpty : ItemSodaEmpty{ + model = "z\addons\dayz_communityassets\models\soda_lemonade_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_lemonade_clean_empty_ca.paa"; + //ammo = "SodaCanMtngreen"; + }; +/* + class ItemSodaLirik : ItemSodaCoke { + displayName = $STR_ITEMSODA_FULL_CLEAN_CODE_NAME_7; + descriptionShort = $STR_ITEMSODA_FULL_CLEAN_CODE_DESC_7; + model = "z\addons\dayz_communityassets\models\soda_lirik_clean_full.p3d"; + //picture = "\z\addons\dayz_communityassets\pictures\equip_soda_lirik_clean_full_ca.paa"; + }; + class ItemSodaLirikEmpty : ItemSodaEmpty{ + model = "z\addons\dayz_communityassets\models\soda_lirik_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_lirik_clean_empty_ca.paa"; + //ammo = "SodaCanMtngreen"; + }; +*/ + class ItemSodaLvg : ItemSodaCoke { + displayName = $STR_ITEMSODA_FULL_CLEAN_CODE_NAME_8; + descriptionShort = $STR_ITEMSODA_FULL_CLEAN_CODE_DESC_8; + model = "z\addons\dayz_communityassets\models\soda_lvg_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_lvg_clean_full_ca.paa"; + }; + class ItemSodaLvgEmpty : ItemSodaEmpty{ + model = "z\addons\dayz_communityassets\models\soda_lvg_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_lvg_clean_empty_ca.paa"; + //ammo = "SodaCanMtngreen"; + }; + + class ItemSodaMzly : ItemSodaCoke { + displayName = $STR_ITEMSODA_FULL_CLEAN_CODE_NAME_9; + descriptionShort = $STR_ITEMSODA_FULL_CLEAN_CODE_DESC_9; + model = "z\addons\dayz_communityassets\models\soda_mzly_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_mzly_clean_full_ca.paa"; + }; + class ItemSodaMzlyEmpty : ItemSodaEmpty{ + model = "z\addons\dayz_communityassets\models\soda_mzly_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_mzly_clean_empty_ca.paa"; + //ammo = "SodaCanMtngreen"; + }; +/* + class ItemSodaPeppsy : ItemSodaCoke { + displayName = $STR_ITEMSODA_FULL_CLEAN_CODE_NAME_10; + descriptionShort = $STR_ITEMSODA_FULL_CLEAN_CODE_DESC_10; + model = "z\addons\dayz_communityassets\models\soda_peppsy_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_peppsy_clean_full_ca.paa"; + }; + class ItemSodaPeppsyEmpty : ItemSodaEmpty{ + model = "z\addons\dayz_communityassets\models\soda_peppsy_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_peppsy_clean_empty_ca.paa"; + //ammo = "SodaCanMtngreen"; + }; +*/ + class ItemSodaRabbit : ItemSodaCoke { + displayName = $STR_ITEMSODA_FULL_CLEAN_CODE_NAME_11; + descriptionShort = $STR_ITEMSODA_FULL_CLEAN_CODE_DESC_11; + model = "z\addons\dayz_communityassets\models\soda_rabbit_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_rabbit_clean_full_ca.paa"; + }; + class ItemSodaRabbitEmpty : ItemSodaEmpty{ + model = "z\addons\dayz_communityassets\models\soda_rabbit_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_rabbit_clean_empty_ca.paa"; + //ammo = "SodaCanMtngreen"; + + }; +/* + class ItemSodaSacrite : ItemSodaCoke { + displayName = $STR_ITEMSODA_FULL_CLEAN_CODE_NAME_12; + descriptionShort = $STR_ITEMSODA_FULL_CLEAN_CODE_DESC_12; + model = "z\addons\dayz_communityassets\models\soda_sacrite_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_sacrite_clean_full_ca.paa"; + }; + class ItemSodaSacriteEmpty : ItemSodaEmpty{ + model = "z\addons\dayz_communityassets\models\soda_sacrite_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_soda_sacrite_clean_empty_ca.paa"; + //ammo = "SodaCanMtngreen"; + }; +*/ class FoodEdible; class FoodmeatRaw : FoodEdible { scope = public; @@ -150,6 +355,8 @@ class CfgMagazines { class FoodbaconRaw : FoodmeatRaw { displayName = $STR_FOOD_EQIP_CODE_NAME_4; + model = "z\addons\dayz_communityassets\models\bacon_raw.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_bacon_raw_CA.paa"; descriptionShort = $STR_FOOD_EQUIP_CODE_DESC_4; bloodRegen = 150; }; @@ -182,6 +389,8 @@ class CfgMagazines { class FoodbaconCooked : FoodmeatCooked { displayName = $STR_FOODCOOKED_EQIP_CODE_NAME_4; + model = "z\addons\dayz_communityassets\models\bacon_fried.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_bacon_fried_CA.paa"; descriptionShort = $STR_FOODCOOKED_EQUIP_CODE_DESC_4; bloodRegen = 400; }; @@ -195,18 +404,351 @@ class CfgMagazines { descriptionShort = $STR_FOODCOOKED_EQUIP_CODE_DESC_6; bloodRegen = 600; }; + class AngelCookies : FoodEdible { scope = public; count = 1; displayName = $STR_FOODCOOKED_EQIP_CODE_NAME_5; - model = "\z\addons\dayz_communityassets\models\buiscits_box.p3d"; - picture = "\z\addons\dayz_communityassets\pictures\i_buiscit_ca.paa"; + model = "z\addons\dayz_communityassets\models\buiscits_box.p3d"; + picture = "z\addons\dayz_communityassets\pictures\i_buiscit_ca.paa"; descriptionShort = $STR_FOODCOOKED_EQUIP_CODE_DESC_5; bloodRegen = 100; }; + class FoodMRE : FoodEdible { + scope = public; + count = 1; + bloodRegen = 800; + displayName = $STR_FOOD_NAME_MRE; + descriptionShort = $STR_FOOD_DESC_MRE; + model = "z\addons\dayz_communityassets\models\mre.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_mre_CA.paa"; + }; + + class FoodPistachio : FoodEdible { + scope = public; + count = 1; + bloodRegen = 100; + displayName = $STR_FOOD_NAME_PISTACHIO; + descriptionShort = $STR_FOOD_DESC_PISTACHIO; + model = "z\addons\dayz_communityassets\models\pistachio.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_pistachios_CA.paa"; + }; + class FoodNutmix : FoodEdible { + scope = public; + count = 1; + bloodRegen = 100; + displayName = $STR_FOOD_NAME_NUTMIX; + descriptionShort = $STR_FOOD_DESC_NUTMIX; + model = "z\addons\dayz_communityassets\models\nutmix.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_nutmix_CA.paa"; + }; + + class FoodCanGriff : FoodEdible { + scope = public; + count = 1; + bloodRegen = 200; + displayName = $STR_FOOD_NAME_CAN_GRIFF; + descriptionShort = $STR_FOOD_DESC_CAN_GRIFF; + model = "z\addons\dayz_communityassets\models\can_griff_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_griff_clean_full_ca.paa"; + }; + class FoodCanBadguy : FoodEdible { + scope = public; + count = 1; + bloodRegen = 200; + displayName = $STR_FOOD_NAME_CAN_BADGUY; + descriptionShort = $STR_FOOD_DESC_CAN_BADGUY; + model = "z\addons\dayz_communityassets\models\can_badguy_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_badguy_clean_full_ca.paa"; + }; + class FoodCanBoneboy : FoodEdible { + scope = public; + count = 1; + bloodRegen = 200; + displayName = $STR_FOOD_NAME_CAN_BONEBOY; + descriptionShort = $STR_FOOD_DESC_CAN_BONEBOY; + model = "z\addons\dayz_communityassets\models\can_boneboy_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_boneboy_clean_full_ca.paa"; + }; + class FoodCanCorn : FoodEdible { + scope = public; + count = 1; + bloodRegen = 200; + displayName = $STR_FOOD_NAME_CAN_CORN; + descriptionShort = $STR_FOOD_DESC_CAN_CORN; + model = "z\addons\dayz_communityassets\models\can_corn_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_corn_clean_full_ca.paa"; + }; + class FoodCanCurgon : FoodEdible { + scope = public; + count = 1; + bloodRegen = 200; + displayName = $STR_FOOD_NAME_CAN_CURGON; + descriptionShort = $STR_FOOD_DESC_CAN_CURGON; + model = "z\addons\dayz_communityassets\models\can_curgon_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_curgon_clean_full_ca.paa"; + }; + class FoodCanDemon : FoodEdible { + scope = public; + count = 1; + bloodRegen = 200; + displayName = $STR_FOOD_NAME_CAN_DEMON; + descriptionShort = $STR_FOOD_DESC_CAN_DEMON; + model = "z\addons\dayz_communityassets\models\can_demon_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_demon_clean_full_ca.paa"; + }; + class FoodCanFraggleos : FoodEdible { + scope = public; + count = 1; + bloodRegen = 200; + displayName = $STR_FOOD_NAME_CAN_FRAGGLEOS; + descriptionShort = $STR_FOOD_DESC_CAN_FRAGGLEOS; + model = "z\addons\dayz_communityassets\models\can_fraggleos_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_fraggleos_clean_full_ca.paa"; + }; + class FoodCanHerpy : FoodEdible { + scope = public; + count = 1; + bloodRegen = 200; + displayName = $STR_FOOD_NAME_CAN_HERPY; + descriptionShort = $STR_FOOD_DESC_CAN_HERPY; + model = "z\addons\dayz_communityassets\models\can_herpy_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_herpy_clean_full_ca.paa"; + }; + class FoodCanOrlok : FoodEdible { + scope = public; + count = 1; + bloodRegen = 200; + displayName = $STR_FOOD_NAME_CAN_ORLOK; + descriptionShort = $STR_FOOD_DESC_CAN_ORLOK; + model = "z\addons\dayz_communityassets\models\can_orlok_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_orlok_clean_full_ca.paa"; + }; + class FoodCanPowell : FoodEdible { + scope = public; + count = 1; + bloodRegen = 200; + displayName = $STR_FOOD_NAME_CAN_POWELL; + descriptionShort = $STR_FOOD_DESC_CAN_POWELL; + model = "z\addons\dayz_communityassets\models\can_powell_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_powell_clean_full_ca.paa"; + }; + class FoodCanTylers : FoodEdible { + scope = public; + count = 1; + bloodRegen = 200; + displayName = $STR_FOOD_NAME_CAN_TYLERS; + descriptionShort = $STR_FOOD_DESC_CAN_TYLERS; + model = "z\addons\dayz_communityassets\models\can_tylers_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_tylers_clean_full_ca.paa"; + }; + class FoodCanUnlabeled : FoodEdible { + scope = public; + count = 1; + bloodRegen = 200; + displayName = $STR_FOOD_NAME_CAN_UNLABELED; + descriptionShort = $STR_FOOD_DESC_CAN_UNLABELED; + model = "z\addons\dayz_communityassets\models\can_unlabeled_clean_full.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_unlabeled_clean_full_ca.paa"; + }; + + class TrashTinCan; + class FoodCanGriffEmpty : TrashTinCan { + scope = public; + count = 1; + model = "z\addons\dayz_communityassets\models\can_griff_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_griff_clean_empty_ca.paa"; + displayName = $STR_FOOD_NAME_CAN_GRIFF_EMPTY; + descriptionShort = $STR_FOOD_DESC_CAN_GRIFF_EMPTY; + ammo = "TinCan"; + }; + class FoodCanBadguyEmpty : TrashTinCan { + scope = public; + count = 1; + displayName = $STR_FOOD_NAME_CAN_BADGUY_EMPTY; + descriptionShort = $STR_FOOD_DESC_CAN_BADGUY_EMPTY; + model = "z\addons\dayz_communityassets\models\can_badguy_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_badguy_clean_empty_ca.paa"; + ammo = "TinCan"; + }; + class FoodCanBoneboyEmpty : TrashTinCan { + scope = public; + count = 1; + displayName = $STR_FOOD_NAME_CAN_BONEBOY_EMPTY; + descriptionShort = $STR_FOOD_DESC_CAN_BONEBOY_EMPTY; + model = "z\addons\dayz_communityassets\models\can_boneboy_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_boneboy_clean_empty_ca.paa"; + ammo = "TinCan"; + }; + class FoodCanCornEmpty : TrashTinCan { + scope = public; + count = 1; + displayName = $STR_FOOD_NAME_CAN_CORN_EMPTY; + descriptionShort = $STR_FOOD_DESC_CAN_CORN_EMPTY; + model = "z\addons\dayz_communityassets\models\can_corn_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_corn_clean_empty_ca.paa"; + ammo = "TinCan"; + }; + class FoodCanCurgonEmpty : TrashTinCan { + scope = public; + count = 1; + displayName = $STR_FOOD_NAME_CAN_CURGON_EMPTY; + descriptionShort = $STR_FOOD_DESC_CAN_CURGON_EMPTY; + model = "z\addons\dayz_communityassets\models\can_curgon_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_curgon_clean_empty_ca.paa"; + ammo = "TinCan"; + }; + class FoodCanDemonEmpty : TrashTinCan { + scope = public; + count = 1; + displayName = $STR_FOOD_NAME_CAN_DEMON_EMPTY; + descriptionShort = $STR_FOOD_DESC_CAN_DEMON_EMPTY; + model = "z\addons\dayz_communityassets\models\can_demon_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_demon_clean_empty_ca.paa"; + ammo = "TinCan"; + }; + class FoodCanFraggleosEmpty : TrashTinCan { + scope = public; + count = 1; + displayName = $STR_FOOD_NAME_CAN_FRAGGLEOS_EMPTY; + descriptionShort = $STR_FOOD_DESC_CAN_FRAGGLEOS_EMPTY; + model = "z\addons\dayz_communityassets\models\can_fraggleos_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_fraggleos_clean_empty_ca.paa"; + ammo = "TinCan"; + }; + class FoodCanHerpyEmpty : TrashTinCan { + scope = public; + count = 1; + displayName = $STR_FOOD_NAME_CAN_HERPY_EMPTY; + descriptionShort = $STR_FOOD_DESC_CAN_HERPY_EMPTY; + model = "z\addons\dayz_communityassets\models\can_herpy_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_herpy_clean_empty_ca.paa"; + ammo = "TinCan"; + }; + class FoodCanOrlokEmpty : TrashTinCan { + scope = public; + count = 1; + displayName = $STR_FOOD_NAME_CAN_ORLOK_EMPTY; + descriptionShort = $STR_FOOD_DESC_CAN_ORLOK_EMPTY; + model = "z\addons\dayz_communityassets\models\can_orlok_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_orlok_clean_empty_ca.paa"; + ammo = "TinCan"; + }; + class FoodCanPowellEmpty : TrashTinCan { + scope = public; + count = 1; + displayName = $STR_FOOD_NAME_CAN_POWELL_EMPTY; + descriptionShort = $STR_FOOD_DESC_CAN_POWELL_EMPTY; + model = "z\addons\dayz_communityassets\models\can_powell_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_powell_clean_empty_ca.paa"; + ammo = "TinCan"; + }; + class FoodCanTylersEmpty : TrashTinCan { + scope = public; + count = 1; + displayName = $STR_FOOD_NAME_CAN_TYLERS_EMPTY; + descriptionShort = $STR_FOOD_DESC_CAN_TYLERS_EMPTY; + model = "z\addons\dayz_communityassets\models\can_tylers_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_tylers_clean_empty_ca.paa"; + ammo = "TinCan"; + }; + class FoodCanUnlabeledEmpty : TrashTinCan { + scope = public; + count = 1; + displayName = $STR_FOOD_NAME_CAN_UNLABELED_EMPTY; + descriptionShort = $STR_FOOD_DESC_CAN_UNLABELED_EMPTY; + model = "z\addons\dayz_communityassets\models\can_unlabeled_clean_empty.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_can_unlabeled_clean_empty_ca.paa"; + ammo = "TinCan"; + }; + class ItemWaterbottle; class ItemWaterbottleBoiled : ItemWaterbottle { displayName = $STR_ITEMWATERBOTTLEBOILED_CODE_NAME; descriptionShort = $STR_ITEMWATERBOTTLEBOILED_CODE_DESC; }; + class Hatchet_Swing; + class Machete_Swing : Hatchet_Swing { + displayName = "Machete"; + displayNameMagazine = "Machete"; + shortNameMagazine = "Machete"; + ammo = "Machete_Swing_Ammo"; + }; + + class ItemTrashToiletpaper : CA_Magazine { + scope = public; + count = 1; + displayName = $STR_JUNK_NAME_TOILETPAPER; + descriptionShort = $STR_JUNK_DESC_TOILETPAPER; + model = "z\addons\dayz_communityassets\models\toiletpaper.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_toiletpaper_CA.paa"; + type = 256; + }; + class ItemTrashRazor : CA_Magazine { + scope = public; + count = 1; + displayName = $STR_JUNK_NAME_RAZOR; + descriptionShort = $STR_JUNK_DESC_RAZOR; + model = "z\addons\dayz_communityassets\models\razor.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_razor_CA.paa"; + type = 256; + }; + + class 8Rnd_B_Beneli_74Slug; + class 8Rnd_B_Beneli_Pellets; + + class 2Rnd_shotgun_74Slug: 8Rnd_B_Beneli_74Slug + { + displayName="2Rnd. Slug"; + count=2; + descriptionShort="Caliber: 12 gauge
Rounds: 2
Used in: M1014"; + model = "\z\addons\dayz_communityassets\models\2shells_slugshot.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_2shells_slugshot_CA.paa"; + class ItemActions + { + class ReloadMag + { + text="Combine to 8 rounds"; + script="spawn player_reloadMag;"; + use[]= + { + "2Rnd_shotgun_74Slug", + "2Rnd_shotgun_74Slug", + "2Rnd_shotgun_74Slug", + "2Rnd_shotgun_74Slug" + }; + output[]= + { + "8Rnd_B_Beneli_74Slug" + }; + }; + }; + }; + class 2Rnd_shotgun_74Pellets: 8Rnd_B_Beneli_Pellets + { + displayName="2Rnd. Pellets"; + count=2; + descriptionShort="Caliber: 12 gauge
Rounds: 2 Pellets
Used in: M1014"; + model = "\z\addons\dayz_communityassets\models\2shells_pellet.p3d"; + picture = "\z\addons\dayz_communityassets\pictures\equip_2shells_pellet_CA.paa"; + class ItemActions + { + class ReloadMag + { + text="Combine to 8 rounds"; + script="spawn player_reloadMag;"; + use[]= + { + "2Rnd_shotgun_74Pellets", + "2Rnd_shotgun_74Pellets", + "2Rnd_shotgun_74Pellets", + "2Rnd_shotgun_74Pellets" + }; + output[]= + { + "8Rnd_B_Beneli_Pellets" + }; + }; + }; + }; }; \ No newline at end of file diff --git a/dayz_code/CfgWeapons.hpp b/dayz_code/CfgWeapons.hpp index 346ae5d25..310355b8b 100644 --- a/dayz_code/CfgWeapons.hpp +++ b/dayz_code/CfgWeapons.hpp @@ -10,4 +10,242 @@ class CfgWeapons { libtextdesc = "Debug Map - Admin use only"; }; }; + + class ItemCompass: ItemCore { + model="z\addons\dayz_communityassets\models\compass.p3d"; + }; + + class Crossbow; + class Crossbow_DZ : Crossbow { + magazines[] = + { + "Quiver", + "WoodenArrow" + }; + }; + class MeleeWeapon; + class MeleeHatchet: MeleeWeapon + { + scope=2; + autoreload=1; + magazineReloadTime=0; + model="\dayz_weapons\models\Hatchet_weaponized"; + picture="\dayz_equip\textures\equip_hatchet_CA.paa"; + displayName="$STR_EQUIP_NAME_41"; + magazines[]= + { + "Hatchet_Swing" + }; + handAnim[]= + { + "OFP2_ManSkeleton", + "\dayz_weapons\anim\melee_hatchet_holding.rtm" + }; + class ItemActions + { + class Use + { + text="$STR_ACTIONS_CHOPWOOD"; + script="spawn player_chopWood;"; + }; + class Toolbelt + { + text="Add to Toolbelt"; + script="spawn player_addToolbelt;"; + use[]= + { + "MeleeHatchet" + }; + output[]= + { + "ItemHatchet" + }; + }; + class Drop + { + text="Drop Hatchet"; + script="spawn player_dropWeapon;"; + use[]= + { + "Hatchet_Swing" + }; + }; + }; + class Library + { + libTextDesc="$STR_EQUIP_DESC_41"; + }; + descriptionShort="$STR_EQUIP_DESC_41"; + }; + class MeleeCrowbar: MeleeHatchet + { + scope=2; + autoreload=1; + magazineReloadTime=0; + model="\dayz_weapons\models\crowbar_weaponized"; + picture="\dayz_weapons\textures\equip_crowbar_CA.paa"; + displayName="Crowbar"; + magazines[]= + { + "Crowbar_Swing" + }; + class ItemActions + { + class Toolbelt + { + text="Add to Toolbelt"; + script="spawn player_addToolbelt;"; + use[]= + { + "MeleeCrowbar" + }; + output[]= + { + "ItemCrowbar" + }; + }; + class Drop + { + text="Drop Crowbar"; + script="spawn player_dropWeapon;"; + use[]= + { + "Crowbar_Swing" + }; + }; + }; + class Library + { + libTextDesc="A tool consisting of a metal bar with a single curved end and flattened points, often with a small fissure on one or both ends for removing nails."; + }; + descriptionShort="A tool consisting of a metal bar with a single curved end and flattened points, often with a small fissure on one or both ends for removing nails."; + }; + class ItemCrowbar: ItemCore + { + scope=2; + displayName="Crowbar"; + model="\dayz_equip\models\crowbar.p3d"; + picture="\dayz_weapons\textures\equip_crowbar_CA.paa"; + descriptionShort="A tool consisting of a metal bar with a single curved end and flattened points, often with a small fissure on one or both ends for removing nails."; + class ItemActions + { + class Toolbelt + { + text="Remove from Toolbelt"; + script="spawn player_addToolbelt;"; + use[]= + { + "ItemCrowbar" + }; + output[]= + { + "MeleeCrowbar" + }; + }; + }; + }; + class MeleeMachete: MeleeHatchet + { + scope=2; + autoreload=1; + magazineReloadTime=0; + model="\z\addons\dayz_communityassets\models\machete_weaponized.p3d"; + picture="\z\addons\dayz_communityassets\pictures\equip_machete_CA.paa"; + displayName="Machete"; + magazines[]= + { + "Machete_Swing" + }; + class ItemActions + { + class Toolbelt + { + text="Add to Toolbelt"; + script="spawn player_addToolbelt;"; + use[]= + { + "MeleeMachete" + }; + output[]= + { + "ItemMachete" + }; + }; + class Drop + { + text="Drop Machete"; + script="spawn player_dropWeapon;"; + use[]= + { + "Machete_Swing" + }; + }; + }; + class Library + { + libTextDesc=""; + }; + descriptionShort="An agricultural tool turned into a weapon, the Machete may be less versatile than the common hatchet, but it packs a punch."; + }; + class ItemMachete: ItemCore + { + scope=2; + displayName="Machete"; + model="\z\addons\dayz_communityassets\models\machete.p3d"; + picture="\z\addons\dayz_communityassets\pictures\equip_machete_CA.paa"; + descriptionShort="An agricultural tool turned into a weapon, the Machete may be less versatile than the common hatchet, but it packs a punch."; + class ItemActions + { + class Toolbelt + { + text="Remove from Toolbelt"; + script="spawn player_addToolbelt;"; + use[]= + { + "ItemMachete" + }; + output[]= + { + "MeleeMachete" + }; + }; + }; + }; + + class GrenadeLauncher; // External class reference + class Flare : GrenadeLauncher { + class ThrowMuzzle; + class MolotovCocktailMuzzle : ThrowMuzzle { + displayName = "$STR_ACTION_THROW"; + magazines[] = { + "TrashJackDaniels", + "ItemSodaEmpty", + "TrashTinCan", + "FoodCanGriffEmpty", + "FoodCanBadguyEmpty", + "FoodCanBoneboyEmpty", + "FoodCanCornEmpty", + "FoodCanCurgonEmpty", + "FoodCanDemonEmpty", + "FoodCanFraggleosEmpty", + "FoodCanHerpyEmpty", + "FoodCanOrlokEmpty", + "FoodCanPowellEmpty", + "FoodCanTylersEmpty", + "FoodCanUnlabeledEmpty", + "ItemSodaCokeEmpty", + "ItemSodaPepsiEmpty", + "ItemSodaMdewEmpty", + "ItemSodaMtngreenEmpty", + "ItemSodaR4z0rEmpty", + "ItemSodaClaysEmpty", + "ItemSodaSmashtEmpty", + "ItemSodaDrwasteEmpty", + "ItemSodaLemonadeEmpty", + "ItemSodaLvgEmpty", + "ItemSodaMzlyEmpty", + "ItemSodaRabbitEmpty" + }; + }; + }; }; \ No newline at end of file diff --git a/dayz_code/actions/ammo.sqf b/dayz_code/actions/ammo.sqf index 299e83d1c..3da4a6846 100644 --- a/dayz_code/actions/ammo.sqf +++ b/dayz_code/actions/ammo.sqf @@ -1,4 +1,4 @@ -private["_ammoType","_vehicle","_ammo","_weapon","_turret","_text","_array","type"]; +private["_ammoType","_vehicle","_ammo","_weapon","_turret","_text","_array"]; _array = _this select 3; _vehicle = _array select 0; _weapon = _array select 1; diff --git a/dayz_code/actions/boil.sqf b/dayz_code/actions/boil.sqf index afad1f2c8..dde37c569 100644 --- a/dayz_code/actions/boil.sqf +++ b/dayz_code/actions/boil.sqf @@ -1,10 +1,16 @@ -private["_hasbottleitem","_hastinitem","_bottletext","_tin1text","_tin2text","_tintext","_qty","_id"]; +private["_hasbottleitem","_hastinitem","_bottletext","_tin1text","_tin2text","_tintext","_qty","_dis","_sfx"]; player removeAction s_player_boil; s_player_boil = -1; _hasbottleitem = "ItemWaterbottle" in magazines player; -_hastinitem = ("TrashTinCan" in magazines player) or ("ItemSodaEmpty" in magazines player); +_hastinitem = false; +{ + if (_x in magazines player) then { + _hastinitem = true; + }; + +} forEach boil_tin_cans; _bottletext = getText (configFile >> "CfgMagazines" >> "ItemWaterbottle" >> "displayName"); _tin1text = getText (configFile >> "CfgMagazines" >> "TrashTinCan" >> "displayName"); @@ -17,9 +23,14 @@ if (_hasbottleitem and _hastinitem) then { _qty = {_x == "ItemWaterbottle"} count magazines player; if ("ItemWaterbottle" in magazines player) then { player playActionNow "Medic"; - [player,"fillwater",0,false] call dayz_zombieSpeak; - _id = [player,10,true,(getPosATL player)] spawn player_alertZombies; - sleep _qty; + sleep 1; + + _dis=10; + _sfx = "cook"; + [player,_sfx,0,false,_dis] call dayz_zombieSpeak; + [player,_dis,true,(getPosATL player)] spawn player_alertZombies; + + sleep 5; for "_x" from 1 to _qty do { player removeMagazine "ItemWaterbottle"; player addMagazine "ItemWaterbottleBoiled"; diff --git a/dayz_code/actions/build.sqf b/dayz_code/actions/build.sqf index 5170cccdd..017a82a1a 100644 --- a/dayz_code/actions/build.sqf +++ b/dayz_code/actions/build.sqf @@ -1,8 +1,6 @@ private["_location","_isOk","_dir","_classname","_item"]; - _location = player modeltoworld [0,1,0]; _location set [2,0]; - _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; _isWater = (surfaceIsWater _location) or dayz_isSwimming; @@ -19,7 +17,6 @@ _hasbuilditem = _this in magazines player; if (!_hasbuilditem) exitWith {cutText [format[(localize "str_player_31"),_text,"build"] , "PLAIN DOWN"]}; -// Get inital direction of player _dir = getDir player; _offset_x = 0; @@ -83,8 +80,12 @@ if(!_cancel) then { player playActionNow "Medic"; sleep 1; - [player,"repair",0,false] call dayz_zombieSpeak; - _id = [player,50,true,(getPosATL player)] spawn player_alertZombies; + + _dis=20; + _sfx = "repair"; + [player,_sfx,0,false,_dis] call dayz_zombieSpeak; + [player,_dis,true,(getPosATL player)] spawn player_alertZombies; + sleep 5; player allowDamage false; @@ -94,7 +95,9 @@ if(!_cancel) then { cutText [format[localize "str_build_01",_text], "PLAIN DOWN"]; - ["dayzPublishObj",[dayz_characterID,_object,[_dir,_location],_classname]] call callRpcProcedure; +//["dayzPublishObj",[dayz_characterID,_object,[_dir,_location],_classname]] call callRpcProcedure; +dayzPublishObj = [dayz_characterID,_object,[_dir,_location],_classname]; +publicVariable "dayzPublishObj"; sleep 2; player allowDamage true; diff --git a/dayz_code/actions/buy_db.sqf b/dayz_code/actions/buy_db.sqf index 3681e884d..590ac0327 100644 --- a/dayz_code/actions/buy_db.sqf +++ b/dayz_code/actions/buy_db.sqf @@ -10,7 +10,9 @@ _category = (_this select 3) select 1; diag_log format["DEBUG TRADER OBJ: %1", _trader_id]; -["dayzTraderMenu",[_activatingPlayer,_trader_id,_category,_action]] call callRpcProcedure; +//["dayzTraderMenu",[_activatingPlayer,_trader_id,_category,_action]] call callRpcProcedure; +dayzTraderMenu = [_activatingPlayer,_trader_id,_category,_action]; +publicVariableServer "dayzTraderMenu"; waitUntil {!isNil "dayzTraderMenuResult"}; diff --git a/dayz_code/actions/call_zombies.sqf b/dayz_code/actions/call_zombies.sqf index cc9bb3f74..e1dc77c70 100644 --- a/dayz_code/actions/call_zombies.sqf +++ b/dayz_code/actions/call_zombies.sqf @@ -12,10 +12,10 @@ s_player_callzombies = 1; [player,"spotted",0,false] call dayz_zombieSpeak; -_id = [player,50,true,(getPosATL player)] spawn player_alertZombies; +_id = [player,65,true,(getPosATL player)] spawn player_alertZombies; // wait a bit -sleep 15; +sleep 7; // allow menu again s_player_callzombies = -1; diff --git a/dayz_code/actions/cook.sqf b/dayz_code/actions/cook.sqf index ee8985986..f779a287f 100644 --- a/dayz_code/actions/cook.sqf +++ b/dayz_code/actions/cook.sqf @@ -14,8 +14,12 @@ _cookedmeat = meatcooked; _text = getText (configFile >> "CfgMagazines" >> _meatcooked >> "displayName"); _qty = {_x == _meat} count magazines player; player playActionNow "Medic"; - [player,"cook",0,false] call dayz_zombieSpeak; - _id = [player,20,true,(getPosATL player)] spawn player_alertZombies; + + _dis=6; + _sfx = "cook"; + [player,_sfx,0,false,_dis] call dayz_zombieSpeak; + [player,_dis,true,(getPosATL player)] spawn player_alertZombies; + sleep _qty; for "_x" from 1 to _qty do { player removeMagazine _meat; diff --git a/dayz_code/actions/forcesave.sqf b/dayz_code/actions/forcesave.sqf index aa76ad173..79c285787 100644 --- a/dayz_code/actions/forcesave.sqf +++ b/dayz_code/actions/forcesave.sqf @@ -1,3 +1,5 @@ private["_object"]; -["dayzUpdateVehicle",[_this select 3,"all"]] call callRpcProcedure; +//["dayzUpdateVehicle",[_this select 3,"all"]] call callRpcProcedure; +dayzUpdateVehicle = [_this select 3,"all"]; +publicVariable "dayzUpdateVehicle"; diff --git a/dayz_code/actions/gather_meat.sqf b/dayz_code/actions/gather_meat.sqf index 28415ddca..639c41956 100644 --- a/dayz_code/actions/gather_meat.sqf +++ b/dayz_code/actions/gather_meat.sqf @@ -16,7 +16,12 @@ if ((_hasKnife or _hasKnifeBlunt) and !_hasHarvested) then { _text = getText (configFile >> "CfgVehicles" >> _type >> "displayName"); player playActionNow "Medic"; - [player,"gut",0,false] call dayz_zombieSpeak; + + _dis=10; + _sfx = "gut"; + [player,_sfx,0,false,_dis] call dayz_zombieSpeak; + [player,_dis,true,(getPosATL player)] spawn player_alertZombies; + _item setVariable["meatHarvested",true,true]; _qty = 2; @@ -26,8 +31,6 @@ if ((_hasKnife or _hasKnifeBlunt) and !_hasHarvested) then { if (_hasKnifeBlunt) then { _qty = round(_qty / 2); }; - _id = [player,50,true,(getPosATL player)] spawn player_alertZombies; - _array = [_item,_qty]; if (local _item) then { diff --git a/dayz_code/actions/jerry_fill.sqf b/dayz_code/actions/jerry_fill.sqf index e632c89d8..15e2ac266 100644 --- a/dayz_code/actions/jerry_fill.sqf +++ b/dayz_code/actions/jerry_fill.sqf @@ -10,7 +10,13 @@ if ("ItemJerrycanEmpty" in magazines player) then { player removeMagazine "ItemJerrycanEmpty"; player addMagazine "ItemJerrycan"; }; - [player,"refuel",0,false] call dayz_zombieSpeak; + player playActionNow "Medic"; + + _dis=10; + _sfx = "refuel"; + [player,_sfx,0,false,_dis] call dayz_zombieSpeak; + [player,_dis,true,(getPosATL player)] spawn player_alertZombies; + cutText [format[(localize "str_player_09"),_qty], "PLAIN DOWN"]; } else { cutText [(localize "str_player_10") , "PLAIN DOWN"]; diff --git a/dayz_code/actions/list_playerDeaths.sqf b/dayz_code/actions/list_playerDeaths.sqf index 3f60ec8e6..7508804d9 100644 --- a/dayz_code/actions/list_playerDeaths.sqf +++ b/dayz_code/actions/list_playerDeaths.sqf @@ -5,7 +5,9 @@ _activatingPlayer = _this select 1; diag_log format["DEBUG DEATH OBJ: %1", _this select 0]; -["dayzPlayerDeaths",[_activatingPlayer]] call callRpcProcedure; +//["dayzPlayerDeaths",[_activatingPlayer]] call callRpcProcedure; +dayzPlayerDeaths = [_activatingPlayer]; +publicVariableServer "dayzPlayerDeaths"; waitUntil {!isNil "dayzPlayerDeathsResult"}; diff --git a/dayz_code/actions/object_pickup.sqf b/dayz_code/actions/object_pickup.sqf index eed909cf9..4322e881c 100644 --- a/dayz_code/actions/object_pickup.sqf +++ b/dayz_code/actions/object_pickup.sqf @@ -1,4 +1,4 @@ -private["_array","_type","_classname","_holder","_config","_isOk","_muzzles","_playerID","_claimedBy","_text"]; +private["_array","_type","_classname","_holder","_config","_isOk","_muzzles","_playerID","_claimedBy","_text","_control","_dialog","_item","_val","_max","_bolts","_quivers","_quiver","_broken"]; _array = _this select 3; _type = _array select 0; _classname = _array select 1; @@ -9,14 +9,27 @@ _text = getText (configFile >> _type >> _classname >> "displayName"); _holder setVariable["claimed",_playerID,true]; +if(_classname isKindOf "TrapBear") exitwith {deleteVehicle _holder;}; + player playActionNow "PutDown"; if (_classname == "MeleeCrowbar") then { player addMagazine 'crowbar_swing'; -} else { - if (_classname == "MeleeHatchet") then { - player addMagazine 'hatchet_swing'; +}; +if (_classname == "MeleeHatchet") then { + player addMagazine 'hatchet_swing'; +}; +if (_classname == "MeleeMachete") then { + player addMagazine 'Machete_swing'; +}; + + +_broken = false; +if(_classname == "WoodenArrow") then { + if (20 > random 100) then { + _broken = true; }; }; +if (_broken) exitWith { deleteVehicle _holder; cutText [localize "str_broken_arrow", "PLAIN DOWN"] }; sleep 0.25; @@ -32,7 +45,7 @@ _config = (configFile >> _type >> _classname); _isOk = [player,_config] call BIS_fnc_invAdd; if (_isOk) then { deleteVehicle _holder; - if (_classname in ["MeleeHatchet","MeleeCrowbar"]) then { + if (_classname in ["MeleeHatchet","MeleeCrowbar","MeleeMachete"]) then { if (_type == "cfgWeapons") then { _muzzles = getArray(configFile >> "cfgWeapons" >> _classname >> "muzzles"); @@ -49,10 +62,12 @@ if (_isOk) then { cutText [localize "STR_DAYZ_CODE_2", "PLAIN DOWN"]; if (_classname == "MeleeCrowbar") then { player removeMagazine 'crowbar_swing'; - } else { - if (_classname == "MeleeHatchet") then { - player removeMagazine 'hatchet_swing'; - }; + }; + if (_classname == "MeleeHatchet") then { + player removeMagazine 'hatchet_swing'; + }; + if (_classname == "MeleeMachete") then { + player removeMagazine 'Machete_swing'; }; }; diff --git a/dayz_code/actions/player_addToolbelt.sqf b/dayz_code/actions/player_addToolbelt.sqf index 6105ec1d5..d9d89c497 100644 --- a/dayz_code/actions/player_addToolbelt.sqf +++ b/dayz_code/actions/player_addToolbelt.sqf @@ -16,7 +16,7 @@ _create = getArray (_config >> "ItemActions" >> "Toolbelt" >> "output") select _config2 = configFile >> "cfgWeapons" >> _create; //Remove magazines if needed -if (_item in ["MeleeHatchet","MeleeCrowbar"]) then { +if (_item in ["MeleeHatchet","MeleeCrowbar","MeleeMachete"]) then { _magType = ([] + getArray (configFile >> "cfgWeapons" >> _item >> "magazines")) select 0; _meleeNum = ({_x == _magType} count magazines player); for "_i" from 1 to _meleeNum do { @@ -24,18 +24,32 @@ if (_item in ["MeleeHatchet","MeleeCrowbar"]) then { }; }; +if (_item in ["ItemHatchet","ItemCrowbar","ItemMachete"]) then { + switch (primaryWeapon player) do + { + case "MeleeHatchet": { "MeleeHatchet" call player_addToolbelt }; + case "MeleeCrowbar": { "MeleeCrowbar" call player_addToolbelt }; + case "MeleeMachete": { "MeleeMachete" call player_addToolbelt }; + }; +}; + _isOk = [player,_config2] call BIS_fnc_invAdd; + if (_isOk) then { //Remove item player removeWeapon _item; //Add magazines if needed - if (_create in ["MeleeHatchet","MeleeCrowbar"]) then { + if (_create in ["MeleeHatchet","MeleeCrowbar","MeleeMachete"]) then { if (_create == "MeleeCrowbar") then { player addMagazine 'crowbar_swing'; - } else { + }; + if (_create == "MeleeHatchet") then { player addMagazine 'hatchet_swing'; }; + if (_create == "MeleeMachete") then { + player addMagazine 'Machete_swing'; + }; if (_type == "cfgWeapons") then { _muzzles = getArray(configFile >> "cfgWeapons" >> _create >> "muzzles"); _wtype = ((weapons player) select 0); @@ -50,11 +64,15 @@ if (_isOk) then { cutText [localize "STR_DAYZ_CODE_2", "PLAIN DOWN"]; //Add magazines back - if (_item in ["MeleeHatchet","MeleeCrowbar"]) then { + if (_item in ["MeleeHatchet","MeleeCrowbar","MeleeMachete"]) then { if (_item == "MeleeCrowbar") then { player addMagazine 'crowbar_swing'; - } else { + }; + if (_item == "MeleeHatchet") then { player addMagazine 'hatchet_swing'; }; + if (_item == "MeleeMachete") then { + player addMagazine 'Machete_swing'; + }; }; }; diff --git a/dayz_code/actions/player_build.sqf b/dayz_code/actions/player_build.sqf index 9a54d2659..bf5d4d432 100644 --- a/dayz_code/actions/player_build.sqf +++ b/dayz_code/actions/player_build.sqf @@ -86,8 +86,12 @@ if (_hasrequireditem or _bypass) then { player playActionNow "Medic"; sleep 1; - [player,"repair",0,false] call dayz_zombieSpeak; - _id = [player,50,true,(getPosATL player)] spawn player_alertZombies; + + _dis=20; + _sfx = "repair"; + [player,_sfx,0,false,_dis] call dayz_zombieSpeak; + [player,_dis,true,(getPosATL player)] spawn player_alertZombies; + sleep 5; player allowDamage false; @@ -97,8 +101,10 @@ if (_hasrequireditem or _bypass) then { player reveal _object; cutText [format[localize "str_build_01",_text], "PLAIN DOWN"]; - - ["dayzPublishObj",[dayz_characterID,_object,[_dir,_location],_classname]] call callRpcProcedure; + + //["dayzPublishObj",[dayz_characterID,_object,[_dir,_location],_classname]] call callRpcProcedure; + dayzPublishObj = [dayz_characterID,_object,[_dir,_location],_classname]; + publicVariable "dayzPublishObj"; sleep 2; player allowDamage true; diff --git a/dayz_code/actions/player_chopWood.sqf b/dayz_code/actions/player_chopWood.sqf index 84d26194c..7bebb0a74 100644 --- a/dayz_code/actions/player_chopWood.sqf +++ b/dayz_code/actions/player_chopWood.sqf @@ -4,13 +4,16 @@ _item = _this; call gear_ui_init; if (["forest",dayz_surfaceType] call fnc_inString) then { - _result = [player,"PartWoodPile"] call BIS_fnc_invAdd; - if (_result) then { - cutText [localize "str_player_25", "PLAIN DOWN"]; - } else { - cutText [localize "str_player_24", "PLAIN DOWN"]; - }; - _id = [player,20,true,(getPosATL player)] spawn player_alertZombies; + _result = [player,"PartWoodPile"] call BIS_fnc_invAdd; + [player,"chopwood",0,false] call dayz_zombieSpeak; + if (_result) then { + cutText [localize "str_player_25", "PLAIN DOWN"]; + } else { + cutText [localize "str_player_24", "PLAIN DOWN"]; + }; + [player,20,false,(getPosATL player)] spawn player_alertZombies; + player playActionNow "Medic"; + sleep 3; } else { cutText [localize "str_player_23", "PLAIN DOWN"]; }; \ No newline at end of file diff --git a/dayz_code/actions/player_drink.sqf b/dayz_code/actions/player_drink.sqf index a49299122..87aa78ab6 100644 --- a/dayz_code/actions/player_drink.sqf +++ b/dayz_code/actions/player_drink.sqf @@ -1,7 +1,9 @@ -private["_onLadder","_item","_hasdrinkitem","_config","_text","_sfx","_id","_display"]; +private["_onLadder","_itemorignal","_hasdrinkitem","_hasoutput","_config","_text","_sfx","_dis","_id","_itemtodrop","_nearByPile","_item","_display"]; + disableserialization; call gear_ui_init; -_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; + +_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; if (_onLadder) exitWith {cutText [(localize "str_player_21") , "PLAIN DOWN"]}; if (vehicle player != player) exitWith {cutText ["You may not drink while in a vehicle", "PLAIN DOWN"]}; @@ -9,31 +11,60 @@ if (vehicle player != player) exitWith {cutText ["You may not drink while in a v //Force players to wait 3 mins to drink again //if (dayz_lastDrink < 180) exitWith {cutText ["You may not drink, your not thirsty", "PLAIN DOWN"]}; -_item = _this; -_hasdrinkitem = _item in magazines player; +_itemorignal = _this; +_hasdrinkitem = _itemorignal in magazines player; +_hasoutput = _itemorignal in drink_with_output; -_config = configFile >> "CfgMagazines" >> _item; +_config = configFile >> "CfgMagazines" >> _itemorignal; _text = getText (_config >> "displayName"); -_sfx = getText (_config >> "sfx"); + +//getting type of sfx (now just drink od soda open and drink) +_sfx = getText (_config >> "sfx"); if (!_hasdrinkitem) exitWith {cutText [format[(localize "str_player_31"),_text,"drink"] , "PLAIN DOWN"]}; player playActionNow "PutDown"; -player removeMagazine _item; +player removeMagazine _itemorignal; sleep 1; -[player,_sfx,0,false] call dayz_zombieSpeak; -if (_item == "ItemWaterbottle" or _item == "ItemWaterbottleBoiled") then { - player addMagazine "ItemWaterbottleUnfilled"; - if ((random 15 < 1) and (_item == "ItemWaterbottle")) then { - r_player_infected = true; - player setVariable["USEC_infected",true]; - }; - //_id = [player,5,true,(getPosATL player)] spawn player_alertZombies; -} else { - player addMagazine "ItemSodaEmpty"; - _id = [player,10,true,(getPosATL player)] spawn player_alertZombies; +if (["ItemWaterbottle",_itemorignal] call fnc_inString) then { + //low alert and sound radius + _dis=5; + [player,_sfx,0,false,_dis] call dayz_zombieSpeak; + [player,_dis,true,(getPosATL player)] spawn player_alertZombies; + player addMagazine "ItemWaterbottleUnfilled"; }; +if (["ItemSoda",_itemorignal] call fnc_inString) then { + //higher alert and sound radius + _dis=10; + [player,_sfx,0,false,_dis] call dayz_zombieSpeak; + _id = [player,_dis,true,(getPosATL player)] spawn player_alertZombies; +}; + +if (_hasoutput) then{ + // Selecting output + _itemtodrop = drink_output select (drink_with_output find _itemorignal); + + sleep 3; + _nearByPile= nearestObjects [(position player), ["WeaponHolder","WeaponHolderBase"],2]; + if (count _nearByPile ==0) then { + _item = createVehicle ["WeaponHolder", position player, [], 0.0, "CAN_COLLIDE"]; + } else { + _item = _nearByPile select 0; + }; + _item addMagazineCargoGlobal [_itemtodrop,1]; +}; + + + + + +//add infection chance for "ItemWaterbottle", +if ((random 15 < 1) and (_itemorignal == "ItemWaterbottle")) then { + r_player_infected = true; + player setVariable["USEC_infected",true,true]; +}; + player setVariable ["messing",[dayz_hunger,dayz_thirst],true]; dayz_lastDrink = time; diff --git a/dayz_code/actions/player_dropWeapon.sqf b/dayz_code/actions/player_dropWeapon.sqf index b5c06d895..d4fdf4668 100644 --- a/dayz_code/actions/player_dropWeapon.sqf +++ b/dayz_code/actions/player_dropWeapon.sqf @@ -16,6 +16,8 @@ for "_i" from 1 to _meleeNum do { player removeWeapon _item; if (_item == "MeleeHatchet") then {_item = "ItemHatchet";}; +if (_item == "MeleeCrowbar") then {_item = "ItemCrowbar";}; +if (_item == "MeleeMachete") then {_item = "ItemMachete";}; _bag = createVehicle [format["WeaponHolder_%1",_item],getPosATL player,[], 0, "CAN_COLLIDE"]; _bag setdir (getDir player); player reveal _bag; \ No newline at end of file diff --git a/dayz_code/actions/player_eat.sqf b/dayz_code/actions/player_eat.sqf index f6c40eee9..efade61c0 100644 --- a/dayz_code/actions/player_eat.sqf +++ b/dayz_code/actions/player_eat.sqf @@ -1,4 +1,4 @@ -private["_onLadder","_item","_hasfooditem","_rawfood","_cookedfood","_config","_text","_regen","_id","_display"]; +private["_onLadder","_itemorignal","_hasfooditem","_rawfood","_cookedfood","_hasoutput","_config","_text","_regen","_dis","_sfx","_Cookedtime","_itemtodrop","_nearByPile","_item","_display"]; disableserialization; call gear_ui_init; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; @@ -9,46 +9,60 @@ if (vehicle player != player) exitWith {cutText ["You may not eat while in a veh //Force players to wait 3 mins to eat again //if (dayz_lastMeal < 180) exitWith {cutText ["You may not eat, you're already full", "PLAIN DOWN"]}; -_item = _this; -_hasfooditem = _item in magazines player; +_itemorignal = _this; +_hasfooditem = _itemorignal in magazines player; -//_rawfood = _item in ["FoodSteakRaw","FoodmeatRaw","FoodbeefRaw","FoodmuttonRaw","FoodchickenRaw","FoodrabbitRaw","FoodbaconRaw"]; -//_cookedfood = _item in ["FoodSteakCooked","FoodmeatCooked","FoodbeefCooked","FoodmuttonCooked","FoodchickenCooked","FoodrabbitCooked","FoodbaconCooked"]; +_rawfood = _itemorignal in meatraw; +_cookedfood = _itemorignal in meatcooked; +_hasoutput = _itemorignal in food_with_output; _badfood = _item in badfood; -_rawfood = _item in meatraw; -_cookedfood = _item in meatcooked; -_config = configFile >> "CfgMagazines" >> _item; +_config = configFile >> "CfgMagazines" >> _itemorignal; _text = getText (_config >> "displayName"); _regen = getNumber (_config >> "bloodRegen"); if (!_hasfooditem) exitWith {cutText [format[(localize "str_player_31"),_text,"consume"] , "PLAIN DOWN"]}; player playActionNow "PutDown"; -player removeMagazine _item; +player removeMagazine _itemorignal; sleep 1; +_dis=6; +_sfx = "eat"; +[player,_sfx,0,false,_dis] call dayz_zombieSpeak; +[player,_dis,true,(getPosATL player)] spawn player_alertZombies; + + + if (dayz_lastMeal < 3600) then { - if (_item == "FoodSteakCooked") then { + if (_itemorignal == "FoodSteakCooked") then { //_regen = _regen * (10 - (10 max ((time - _Cookedtime) / 3600))); }; }; +if (_hasoutput) then{ + // Selecting output + _itemtodrop = food_output select (food_with_output find _itemorignal); + + sleep 3; + _nearByPile= nearestObjects [(position player), ["WeaponHolder","WeaponHolderBase"],2]; + if (count _nearByPile ==0) then { + _item = createVehicle ["WeaponHolder", position player, [], 0.0, "CAN_COLLIDE"]; + } else { + _item = _nearByPile select 0; + }; + _item addMagazineCargoGlobal [_itemtodrop,1]; +}; + if ( _rawfood and (random 15 < 1)) then { r_player_infected = true; - player setVariable["USEC_infected",true]; + player setVariable["USEC_infected",true,true]; }; if ( _badfood and (random 7 < 1)) then { r_player_infected = true; - player setVariable["USEC_infected",true]; -}; - -[player,"eat",0,false] call dayz_zombieSpeak; - -if (!_rawfood and !_cookedfood) then{ - player addMagazine "TrashTinCan"; + player setVariable["USEC_infected",true,true]; }; r_player_blood = r_player_blood + _regen; @@ -60,13 +74,13 @@ player setVariable ["messing",[dayz_hunger,dayz_thirst],true]; player setVariable["USEC_BloodQty",r_player_blood,true]; player setVariable["medForceUpdate",true]; -["dayzPlayerSave",[player,[],true]] call callRpcProcedure; +//["dayzPlayerSave",[player,[],true]] call callRpcProcedure; +dayzPlayerSave = [player,[],true]; +publicVariable "dayzPlayerSave"; dayz_lastMeal = time; dayz_hunger = 0; -_id = [player,5,true,(getPosATL player)] spawn player_alertZombies; - //Ensure Control is visible _display = uiNamespace getVariable 'DAYZ_GUI_display'; (_display displayCtrl 1301) ctrlShow true; diff --git a/dayz_code/actions/player_flipvehicle.sqf b/dayz_code/actions/player_flipvehicle.sqf index e7b984aac..6861bf7fb 100644 --- a/dayz_code/actions/player_flipvehicle.sqf +++ b/dayz_code/actions/player_flipvehicle.sqf @@ -14,7 +14,8 @@ waitUntil { animationState player != "amovpknlmstpslowwrfldnon_amovpercmstpsrasw sleep 2; //_object setpos _position; _object setvectorup [0,0,1]; -_id = [player,20,true,(getPosATL player)] spawn player_alertZombies; +[player,"scream",0,true] call dayz_zombieSpeak; +[player,20,true,(getPosATL player)] spawn player_alertZombies; sleep 3; diff --git a/dayz_code/actions/player_reloadMags.sqf b/dayz_code/actions/player_reloadMags.sqf index 9c2066591..aeb4c92bc 100644 --- a/dayz_code/actions/player_reloadMags.sqf +++ b/dayz_code/actions/player_reloadMags.sqf @@ -1,44 +1,109 @@ -private["_item"]; +private["_item","_config","_consume","_create","_item_ammo","_consume_magsize","_create_magsize","_consume_type","_slotstart","_slotend","_dialog","_qty_total_ammo","_qty_consume_ammo","_qty_create_ammo","_qty_consume_mags","_qty_create_mags","_qty_free_slots","_control","_i","_mag","_qtynew_create_ammo","_qtynew_consume_ammo","_qtynew_create_mags","_qtynew_consume_mags","_qtynew_consume_mags_full","_qtynew_create_mags_full","_qtynew_consume_ammo_rest","_qtynew_create_ammo_rest","_avaliable_slots"]; + disableSerialization; -_item = _this; -_config = configFile >> "CfgMagazines" >> _item; +call gear_ui_init; -_consume = getArray (_config >> "ItemActions" >> "ReloadMag" >> "use"); -_create = getArray (_config >> "ItemActions" >> "ReloadMag" >> "output"); - -_textConsume = getText(configFile >> "CfgMagazines" >> (_consume select 0) >> "displayName"); -_textCreate = getText(configFile >> "CfgMagazines" >> (_create select 0) >> "displayName"); -//_qtyConsume = getText(configFile >> "CfgMagazines" >> (_consume select 0) >> "count"); -//_qtyCreate = getText(configFile >> "CfgMagazines" >> (_create select 0) >> "count"); +//note - one slot ammo can be used! -_amountNeed = count _consume; -_amountHas = {_x == (_consume select 0)} count magazines player; -_amountMake = count _create; +_item = _this; -_qty = 0; -if (_amountNeed == 1 and _amountMake == 1) then { - _control = uiNamespace getVariable 'uiControl'; - _qty = gearSlotAmmoCount _control; +_config = configFile >> "CfgMagazines" >> _item; + +_consume = getArray (_config >> "ItemActions" >> "ReloadMag" >> "use") select 0; +_create = getArray (_config >> "ItemActions" >> "ReloadMag" >> "output") select 0; + +_item_ammo = gearSlotAmmoCount (uiNamespace getVariable 'uiControl'); + +//add check if weapon can use create (if not - show message) + +player playActionNow "PutDown"; + +_consume_magsize = getNumber(configFile >> "CfgMagazines" >> _consume >> "count"); +_create_magsize = getNumber(configFile >> "CfgMagazines" >> _create >> "count"); + +_consume_type = getNumber(configFile >> "CfgMagazines" >> _consume >> "type"); + +//primary/secondary mags? +_slotstart = 0; +_slotend = 0; +if (_consume_type == 256) then { + _slotstart = 109; + _slotend = 120; +}; +if ( _consume_type == 16) then { + _slotstart = 122; + _slotend = 129; }; -_hasInput = (_amountNeed <= _amountHas); -player playActionNow "PutDown"; -if (_hasInput) then { - //Take Items - { - player removeMagazine _x; - } forEach _consume; - sleep 1; - //Give Items - { - if (_qty > 0) then { - player addMagazine [_x,_qty]; - } else { - player addMagazine _x; - }; - } forEach _create; - cutText [format[(localize "str_player_29"),_amountMake,_textCreate], "PLAIN DOWN"]; +_dialog = findDisplay 106; + +_qty_total_ammo = 0; +_qty_consume_ammo = 0; +_qty_create_ammo = 0; +_qty_consume_mags = 0; +_qty_create_mags = 0; +_qty_free_slots = 0; +for "_i" from _slotstart to _slotend do { + _control =_dialog displayCtrl _i; + _mag = gearSlotData _control; + if (_mag == _consume) then { + _qty_total_ammo = _qty_total_ammo + gearSlotAmmoCount _control; + _qty_consume_ammo = _qty_consume_ammo + gearSlotAmmoCount _control; + _qty_consume_mags = _qty_consume_mags+1; + }; + if (_mag == _create) then { + _qty_total_ammo = _qty_total_ammo + gearSlotAmmoCount _control; + _qty_create_ammo = _qty_create_ammo + gearSlotAmmoCount _control; + _qty_create_mags = _qty_create_mags+1; + }; + if (_mag == "") then { + _qty_free_slots = _qty_free_slots + 1; + }; +}; + +_qtynew_create_ammo = 0; +_qtynew_consume_ammo = 0; +_qtynew_create_mags = 0; +_qtynew_consume_mags = 0; + +_qtynew_consume_mags_full = 0; +_qtynew_create_mags_full = 0; +_qtynew_consume_ammo_rest = 0; +_qtynew_create_ammo_rest = 0; + + +if ( _consume_magsize > _create_magsize) then { + _qtynew_create_ammo = _qty_create_ammo + _item_ammo; + _qtynew_consume_ammo = _qty_consume_ammo - _item_ammo; + _qtynew_create_mags = ceil(_qtynew_create_ammo/_create_magsize); + _qtynew_consume_mags = ceil(_qtynew_consume_ammo/_consume_magsize); } else { - cutText [format[(localize "str_player_28"),_amountNeed,_textConsume], "PLAIN DOWN"]; + _qtynew_create_ammo = _qty_total_ammo; + _qtynew_consume_ammo = 0; +}; + +if ((_qtynew_create_mags + _qtynew_consume_mags) > _avaliable_slots) exitWith { + cutText [localize "STR_DAYZ_CODE_2", "PLAIN DOWN"]; +}; +_qtynew_consume_mags_full = floor(_qtynew_consume_ammo/_consume_magsize); +_qtynew_create_mags_full = floor(_qtynew_create_ammo/_create_magsize); +_qtynew_consume_ammo_rest = _qtynew_consume_ammo - (_qtynew_consume_mags_full*_consume_magsize); +_qtynew_create_ammo_rest = _qtynew_create_ammo - (_qtynew_create_mags_full*_create_magsize); + +//remove all _consume and _create mags (we already have total ammo count) +player removeMagazines _consume; +player removeMagazines _create; + +for "_i" from 1 to _qtynew_consume_mags_full do { + player addMagazine _consume; +}; +if (_qtynew_consume_ammo_rest != 0) then { + player addMagazine [_consume,_qtynew_consume_ammo_rest]; +}; +for "_i" from 1 to _qtynew_create_mags_full do { + player addMagazine _create; +}; +if (_qtynew_create_ammo_rest != 0) then { + player addMagazine [_create,_qtynew_create_ammo_rest]; }; \ No newline at end of file diff --git a/dayz_code/actions/playerstats.sqf b/dayz_code/actions/playerstats.sqf index ea83cabaa..06c4f4c04 100644 --- a/dayz_code/actions/playerstats.sqf +++ b/dayz_code/actions/playerstats.sqf @@ -1,5 +1,5 @@ //Let Zeds know -_id = [player,4,true,(getPosATL player)] spawn player_alertZombies; +[player,4,true,(getPosATL player)] spawn player_alertZombies; //display gui (temp hint) diff --git a/dayz_code/actions/pzombie/pz_attack.sqf b/dayz_code/actions/pzombie/pz_attack.sqf index cbfe2ce0a..f19bc98be 100644 --- a/dayz_code/actions/pzombie/pz_attack.sqf +++ b/dayz_code/actions/pzombie/pz_attack.sqf @@ -19,14 +19,12 @@ _isZombie = _ent isKindOf "zZombie_base"; if (_ent isKindOf "Animal" or _isZombie) then { _ent setDamage 1; } else { - ["usecBreakLegs",[_unit,player]] call broadcastRpcCallAll; + //["usecBreakLegs",[_unit,player]] call broadcastRpcCallAll; + usecBreakLegs = [_unit,player]; + publicVariable "usecBreakLegs"; }; - - - [player,"hit",0,false] call dayz_zombieSpeak; - player switchmove ""; diff --git a/dayz_code/actions/pzombie/pz_feed.sqf b/dayz_code/actions/pzombie/pz_feed.sqf index 7f3593ea2..3c700496b 100644 --- a/dayz_code/actions/pzombie/pz_feed.sqf +++ b/dayz_code/actions/pzombie/pz_feed.sqf @@ -63,7 +63,9 @@ if(!(alive _item)) then { dayz_lastMeal = time; dayz_hunger = 0; - ["dayzPlayerSave",[player,[],true]] call callRpcProcedure; + //["dayzPlayerSave",[player,[],true]] call callRpcProcedure; + dayzPlayerSave = [player,[],true]; + publicVariable "dayzPlayerSave"; [player,"eat",0,false] call dayz_zombieSpeak; @@ -89,6 +91,4 @@ if(!(alive _item)) then { player switchmove ""; }; - - s_player_butcher = -1; \ No newline at end of file diff --git a/dayz_code/actions/refuel.sqf b/dayz_code/actions/refuel.sqf index 438aea9f1..9d61be3b2 100644 --- a/dayz_code/actions/refuel.sqf +++ b/dayz_code/actions/refuel.sqf @@ -15,14 +15,16 @@ player removeMagazine "ItemJerrycan"; player addMagazine "ItemJerrycanEmpty"; player playActionNow "Medic"; -[player,"refuel",0,false] call dayz_zombieSpeak; - -_id = [player,20,true,(getPosATL player)] spawn player_alertZombies; +_dis=10; +_sfx = "refuel"; +[player,_sfx,0,false,_dis] call dayz_zombieSpeak; +[player,_dis,true,(getPosATL player)] spawn player_alertZombies; sleep 6; -//apply newFuel to vehicle on every peer -["dayzSetFuel",[_vehicle,_newFuel]] call broadcastRpcCallAll; +dayzSetFuel = [_vehicle,_newFuel]; +dayzSetFuel spawn local_setFuel; +publicVariable "dayzSetFuel"; cutText [format[localize "str_player_05",_nameType,_canSize], "PLAIN DOWN"]; sleep 1; diff --git a/dayz_code/actions/remove.sqf b/dayz_code/actions/remove.sqf index f9db83232..b26229d8c 100644 --- a/dayz_code/actions/remove.sqf +++ b/dayz_code/actions/remove.sqf @@ -38,6 +38,8 @@ _counter = 0; while {_isOk} do { player playActionNow "Medic"; + _dis=20; + [player,_dis,true,(getPosATL player)] spawn player_alertZombies; r_interrupt = false; _animState = animationState player; @@ -54,7 +56,8 @@ while {_isOk} do { if (_started and !_isMedic) then { r_doLoop = false; _finished = true; - [player,"repair",0,false] call dayz_zombieSpeak; + _sfx = "repair"; + [player,_sfx,0,false,_dis] call dayz_zombieSpeak; }; if (r_interrupt) then { r_doLoop = false; @@ -84,7 +87,11 @@ while {_isOk} do { // Remove only if player waited if (_proceed) then { cutText [format["De-constructing %1.",_objType], "PLAIN DOWN"]; - ["dayzDeleteObj",[_objectID,_objectUID]] call callRpcProcedure; + + //["dayzDeleteObj",[_objectID,_objectUID]] call callRpcProcedure; + dayzDeleteObj = [_objectID,_objectUID]; + publicVariableServer "dayzDeleteObj"; + deleteVehicle _obj; } else { r_interrupt = false; diff --git a/dayz_code/actions/repair.sqf b/dayz_code/actions/repair.sqf index f0cd2f8f3..8b2f2b9fd 100644 --- a/dayz_code/actions/repair.sqf +++ b/dayz_code/actions/repair.sqf @@ -14,7 +14,6 @@ _section = _part in magazines player; _nameType = getText(configFile >> "cfgVehicles" >> _type >> "displayName"); _namePart = getText(configFile >> "cfgMagazines" >> _part >> "displayName"); -{_vehicle removeAction _x} forEach s_player_repairActions;s_player_repairActions = []; s_player_repair_crtl = 1; if (_section and _hasToolbox) then { @@ -30,13 +29,22 @@ if (_section and _hasToolbox) then { //Fix the part _selection = getText(configFile >> "cfgVehicles" >> _type >> "HitPoints" >> _hitpoint >> "name"); //vehicle is owned by whoever is in it, so we have to have each client try and fix it - ["dayzSetFix",[_vehicle,_selection,0],_vehicle] call broadcastRpcCallIfLocal; + //["dayzSetFix",[_vehicle,_selection,0],_vehicle] call broadcastRpcCallIfLocal; + + dayzSetFix = [_vehicle,_selection,0]; + publicVariable "dayzSetFix"; + //if (local _vehicle) then { + dayzSetFix call object_setFixServer; + //}; player playActionNow "Medic"; sleep 1; - [player,"repair",0,false] call dayz_zombieSpeak; - null = [player,50,true,(getPosATL player)] spawn player_alertZombies; + _dis=20; + _sfx = "repair"; + [player,_sfx,0,false,_dis] call dayz_zombieSpeak; + [player,_dis,true,(getPosATL player)] spawn player_alertZombies; + sleep 5; _vehicle setvelocity [0,0,1]; @@ -48,6 +56,8 @@ if (_section and _hasToolbox) then { cutText [format["You need %1 to repair this",_namePart], "PLAIN DOWN"]; }; +{dayz_myCursorTarget removeAction _x} forEach s_player_repairActions;s_player_repairActions = []; +dayz_myCursorTarget = objNull; //check if repaired fully _hitpoints = _vehicle call vehicle_getHitpoints; @@ -62,8 +72,12 @@ _allFixed = true; //update if repaired if (_allFixed) then { _vehicle setDamage 0; - ["dayzUpdateVehicle",[_vehicle,"repair"]] call callRpcProcedure; + //["dayzUpdateVehicle",[_vehicle,"repair"]] call callRpcProcedure; + dayzSetFix = [_vehicle,_selection,0]; + publicVariable "dayzSetFix"; + if (local _vehicle) then { + dayzSetFix call object_setFixServer; + }; }; -dayz_myCursorTarget = objNull; s_player_repair_crtl = -1; \ No newline at end of file diff --git a/dayz_code/actions/salvage.sqf b/dayz_code/actions/salvage.sqf index ee9c8e0d5..b4b957aac 100644 --- a/dayz_code/actions/salvage.sqf +++ b/dayz_code/actions/salvage.sqf @@ -44,7 +44,13 @@ if (_hasToolbox) then { _selection = getText(configFile >> "cfgVehicles" >> _type >> "HitPoints" >> _hitpoint >> "name"); //vehicle is owned by whoever is in it, so we have to have each client try and fix it - ["dayzSetFix",[_vehicle,_selection,1],_vehicle] call broadcastRpcCallIfLocal; + //["dayzSetFix",[_vehicle,_selection,1],_vehicle] call broadcastRpcCallIfLocal; + + dayzSetFix = [_vehicle,_selection,1]; + publicVariable "dayzSetFix"; + //if (local _vehicle) then { + dayzSetFix call object_setFixServer; + //} player playActionNow "Medic"; sleep 1; diff --git a/dayz_code/actions/sell_db.sqf b/dayz_code/actions/sell_db.sqf index a79855a06..a400d4d79 100644 --- a/dayz_code/actions/sell_db.sqf +++ b/dayz_code/actions/sell_db.sqf @@ -10,7 +10,9 @@ _category = (_this select 3) select 1; diag_log format["DEBUG TRADER OBJ: %1", _trader_id]; -["dayzTraderMenu",[_activatingPlayer,_trader_id,_category,_action]] call callRpcProcedure; +//["dayzTraderMenu",[_activatingPlayer,_trader_id,_category,_action]] call callRpcProcedure; +dayzTraderMenu = [_activatingPlayer,_trader_id,_category,_action]; +publicVariableServer "dayzTraderMenu"; waitUntil {!isNil "dayzTraderMenuResult"}; diff --git a/dayz_code/actions/siphonFuel.sqf b/dayz_code/actions/siphonFuel.sqf index e9e6571d8..9e39c2058 100644 --- a/dayz_code/actions/siphonFuel.sqf +++ b/dayz_code/actions/siphonFuel.sqf @@ -24,7 +24,11 @@ if (_newFuel > 0) then { sleep 6; //apply newFuel to vehicle on every peer - ["dayzSetFuel",[_vehicle,_newFuel]] call broadcastRpcCallAll; + //["dayzSetFuel",[_vehicle,_newFuel]] call broadcastRpcCallAll; + + dayzSetFuel = [_vehicle,_newFuel]; + dayzSetFuel spawn local_setFuel; + publicVariable "dayzSetFuel"; cutText [format["%1 has been drained for %2 litres of Fuel",_nameType,_canSize], "PLAIN DOWN"]; sleep 1; diff --git a/dayz_code/actions/tent_pitch.sqf b/dayz_code/actions/tent_pitch.sqf index dbb32daa5..cad75667a 100644 --- a/dayz_code/actions/tent_pitch.sqf +++ b/dayz_code/actions/tent_pitch.sqf @@ -41,9 +41,11 @@ if (!_isOk) then { //wait a bit player playActionNow "Medic"; sleep 1; - [player,"tentunpack",0,false] call dayz_zombieSpeak; - _id = [player,50,true,(getPosATL player)] spawn player_alertZombies; + _dis=20; + _sfx = "tentunpack"; + [player,_sfx,0,false,_dis] call dayz_zombieSpeak; + [player,_dis,true,(getPosATL player)] spawn player_alertZombies; sleep 5; //place tent (local) @@ -57,7 +59,9 @@ if (!_isOk) then { //player setVariable ["tentUpdate",["Land_A_tent",_dir,_location,[dayz_tentWeapons,dayz_tentMagazines,dayz_tentBackpacks]],true]; - ["dayzPublishObj",[dayz_characterID,_tent,[_dir,_location],"TentStorage"]] call callRpcProcedure; + //["dayzPublishObj",[dayz_characterID,_tent,[_dir,_location],"TentStorage"]] call callRpcProcedure; + dayzPublishObj = [dayz_characterID,_tent,[_dir,_location],"TentStorage"]; + publicVariable "dayzPublishObj"; cutText [localize "str_success_tent_pitch", "PLAIN DOWN"]; } else { diff --git a/dayz_code/actions/trade_any_boat.sqf b/dayz_code/actions/trade_any_boat.sqf index cb0e93d79..a7d579281 100644 --- a/dayz_code/actions/trade_any_boat.sqf +++ b/dayz_code/actions/trade_any_boat.sqf @@ -28,8 +28,10 @@ if(_buy_o_sell == "buy") then { if (_qty >= _qty_in) then { - ["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; - + //["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; + dayzTradeObject = [_activatingPlayer,_traderID,_bos]; + publicVariableServer "dayzTradeObject"; + diag_log format["DEBUG Starting to wait for answer: %1", dayzTradeObject]; waitUntil {!isNil "dayzTradeResult"}; @@ -63,7 +65,10 @@ if (_qty >= _qty_in) then { clearWeaponCargoGlobal _veh; clearMagazineCargoGlobal _veh; - ["dayzPublishVeh",[_veh,[_dir,_location],_part_out,false,dayz_playerUID]] call callRpcProcedure; + //["dayzPublishVeh",[_veh,[_dir,_location],_part_out,false,dayz_playerUID]] call callRpcProcedure; + dayzPublishVeh = [_veh,[_dir,_location],_part_out,false,dayz_playerUID]; + publicVariableServer "dayzPublishVeh"; + _veh call fnc_vehicleEventHandler; @@ -78,7 +83,10 @@ if (_qty >= _qty_in) then { _objectID = _obj getVariable ["ObjectID","0"]; _objectUID = _obj getVariable ["ObjectUID","0"]; - ["dayzDeleteObj",[_objectID,_objectUID]] call callRpcProcedure; + //["dayzDeleteObj",[_objectID,_objectUID]] call callRpcProcedure; + dayzDeleteObj = [_objectID,_objectUID]; + publicVariableServer "dayzDeleteObj"; + deleteVehicle _obj; diff --git a/dayz_code/actions/trade_any_vehicle.sqf b/dayz_code/actions/trade_any_vehicle.sqf index 6d5fb5832..caa1c593d 100644 --- a/dayz_code/actions/trade_any_vehicle.sqf +++ b/dayz_code/actions/trade_any_vehicle.sqf @@ -28,7 +28,10 @@ if(_buy_o_sell == "buy") then { if (_qty >= _qty_in) then { - ["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; + //["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; + dayzTradeObject = [_activatingPlayer,_traderID,_bos]; + publicVariableServer "dayzTradeObject"; + diag_log format["DEBUG Starting to wait for answer: %1", dayzTradeObject]; @@ -69,7 +72,9 @@ if (_qty >= _qty_in) then { clearWeaponCargoGlobal _veh; clearMagazineCargoGlobal _veh; - ["dayzPublishVeh",[_veh,[_dir,_location],_part_out,false,dayz_playerUID]] call callRpcProcedure; + //["dayzPublishVeh",[_veh,[_dir,_location],_part_out,false,dayz_playerUID]] call callRpcProcedure; + dayzPublishVeh = [_veh,[_dir,_location],_part_out,false,dayz_playerUID]; + publicVariableServer "dayzPublishVeh"; // check if this will add the needed event handlers to correctly track damage client side _veh call fnc_vehicleEventHandler; @@ -85,7 +90,10 @@ if (_qty >= _qty_in) then { _objectID = _obj getVariable ["ObjectID","0"]; _objectUID = _obj getVariable ["ObjectUID","0"]; - ["dayzDeleteObj",[_objectID,_objectUID]] call callRpcProcedure; + //["dayzDeleteObj",[_objectID,_objectUID]] call callRpcProcedure; + dayzDeleteObj = [_objectID,_objectUID]; + publicVariableServer "dayzDeleteObj"; + deleteVehicle _obj; diff --git a/dayz_code/actions/trade_backpacks.sqf b/dayz_code/actions/trade_backpacks.sqf index 372ad4477..4e3c053c7 100644 --- a/dayz_code/actions/trade_backpacks.sqf +++ b/dayz_code/actions/trade_backpacks.sqf @@ -47,8 +47,10 @@ if (_bulkqty >= 1) then { // increment trader for each for "_x" from 1 to 12 do { - ["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; - + //["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; + dayzTradeObject = [_activatingPlayer,_traderID,_bos]; + publicVariableServer "dayzTradeObject"; + waitUntil {!isNil "dayzTradeResult"}; if(dayzTradeResult == "PASS") then { @@ -108,7 +110,10 @@ if (_bulkqty >= 1) then { if (_qty >= _qty_in) then { - ["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; + //["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; + dayzTradeObject = [_activatingPlayer,_traderID,_bos]; + publicVariableServer "dayzTradeObject"; + diag_log format["DEBUG Starting to wait for answer: %1", dayzTradeObject]; diff --git a/dayz_code/actions/trade_items.sqf b/dayz_code/actions/trade_items.sqf index ac1aa1be7..467a181bf 100644 --- a/dayz_code/actions/trade_items.sqf +++ b/dayz_code/actions/trade_items.sqf @@ -40,8 +40,11 @@ if (_bulkqty >= 1) then { // increment trader for each for "_x" from 1 to 12 do { - ["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; - + //["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; + dayzTradeObject = [_activatingPlayer,_traderID,_bos]; + publicVariableServer "dayzTradeObject"; + + waitUntil {!isNil "dayzTradeResult"}; if(dayzTradeResult == "PASS") then { @@ -113,7 +116,10 @@ if (_bulkqty >= 1) then { // trade all items for "_x" from 1 to _qty do { - ["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; + //["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; + dayzTradeObject = [_activatingPlayer,_traderID,_bos]; + publicVariableServer "dayzTradeObject"; + diag_log format["DEBUG Starting to wait for answer: %1", dayzTradeObject]; diff --git a/dayz_code/actions/trade_weapons.sqf b/dayz_code/actions/trade_weapons.sqf index e00cb0299..f9cf0992a 100644 --- a/dayz_code/actions/trade_weapons.sqf +++ b/dayz_code/actions/trade_weapons.sqf @@ -43,7 +43,9 @@ if (_bulkqty >= 1) then { // increment trader for each for "_x" from 1 to 12 do { - ["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; + //["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; + dayzTradeObject = [_activatingPlayer,_traderID,_bos]; + publicVariableServer "dayzTradeObject"; waitUntil {!isNil "dayzTradeResult"}; @@ -104,7 +106,10 @@ if (_bulkqty >= 1) then { if (_qty >= _qty_in) then { - ["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; + //["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; + dayzTradeObject = [_activatingPlayer,_traderID,_bos]; + publicVariableServer "dayzTradeObject"; + waitUntil {!isNil "dayzTradeResult"}; diff --git a/dayz_code/actions/vault_pitch.sqf b/dayz_code/actions/vault_pitch.sqf index 0b3ee0242..29ef396fd 100644 --- a/dayz_code/actions/vault_pitch.sqf +++ b/dayz_code/actions/vault_pitch.sqf @@ -133,7 +133,10 @@ if(!_cancel) then { _tent setVariable ["characterID",dayz_playerUID,true]; _tent setVariable ["OEMPos",_location,true]; - ["dayzPublishObj",[dayz_playerUID,_tent,[_dir,_location],"VaultStorageLocked"]] call callRpcProcedure; + //["dayzPublishObj",[dayz_playerUID,_tent,[_dir,_location],"VaultStorageLocked"]] call callRpcProcedure; + dayzPublishObj = [dayz_playerUID,_tent,[_dir,_location],"VaultStorageLocked"]; + publicVariableServer "dayzPublishObj"; + cutText ["You have setup your Safe", "PLAIN DOWN"]; diff --git a/dayz_code/actions/water_fill.sqf b/dayz_code/actions/water_fill.sqf index 86057479d..f0cd9a73c 100644 --- a/dayz_code/actions/water_fill.sqf +++ b/dayz_code/actions/water_fill.sqf @@ -54,8 +54,12 @@ if (_canFill) then { player removeMagazine "ItemWaterbottleUnfilled"; player addMagazine "ItemWaterbottle"; }; - [player,"fillwater",0,false] call dayz_zombieSpeak; - _id = [player,10,true,(getPosATL player)] spawn player_alertZombies; + + _dis=5; + _sfx = "fillwater"; + [player,_sfx,0,false,_dis] call dayz_zombieSpeak; + [player,_dis,true,(getPosATL player)] spawn player_alertZombies; + cutText [format[(localize "str_player_01"),_qty], "PLAIN DOWN"]; } else { cutText [(localize "str_player_02") , "PLAIN DOWN"]; diff --git a/dayz_code/cfgAmmo.hpp b/dayz_code/cfgAmmo.hpp index 07a725a32..6f98c1156 100644 --- a/dayz_code/cfgAmmo.hpp +++ b/dayz_code/cfgAmmo.hpp @@ -1,263 +1,13 @@ class CfgAmmo { - delete MissileCore; - delete BombCore; - delete LaserBombCore; - delete RocketCore; - delete ArtilleryRocketCore; - //delete BulletCore; - //delete ShotgunCore; - delete ShellCore; - /* - delete GrenadeCore; - delete TimeBombCore; - delete PipeBombCore; - delete MineCore; - delete FlareCore; - delete SmokeShellCore; - delete FakeAmmo; - delete BulletBase; - delete FlareBase; - delete B_9x18_Ball; - delete B_9x18_SD; - delete B_9x19_Ball; - delete B_9x19_SD; - delete B_45ACP_Ball; - delete B_545x39_Ball; - delete B_545x39_SD; - delete B_556x45_Ball; - delete B_556x45_SD; - delete B_9x39_SP5; - delete B_12Gauge_74Slug; - delete B_762x39_Ball; - delete B_762x51_Ball; - delete B_762x51_3RndBurst; - delete B_762x51_noTracer; - delete B_762x54_Ball; - delete B_762x54_noTracer; - delete B_77x56_Ball; - delete B_127x99_Ball; - delete B_127x99_Ball_noTracer; - delete B_127x107_Ball; - delete B_127x108_Ball; - delete B_127x108_APHE; - delete B_145x115_AP; - */ - delete B_20mm_AP; - delete B_20mm_AA; - delete B_23mm_AA; - delete B_23mm_HE; - delete B_23mm_AP; - delete B_23mm_APHE; - delete B_25mm_HE; - delete B_25mm_HEI; - delete B_25mm_APDS; - delete B_30mm_AP; - delete B_30mmA10_AP; - delete B_30mm_HE; - delete B_30mm_AA; - /* - delete GrenadeBase; - delete G_30mm_HE; - delete G_40mm_HE; - delete F_40mm_White; - delete F_40mm_Green; - delete F_40mm_Red; - delete F_40mm_Yellow; - */ - delete ShellBase; - delete Sh_105_HE; - delete Sh_100_HE; - delete Sh_120_HE; - delete Sh_120_SABOT; - delete Sh_122_HE; - delete Sh_125_HE; - delete Sh_125_SABOT; - delete Sh_85_HE; - delete Sh_85_AP; - //delete RocketBase; - delete G_Camel_HE; - delete R_Hydra_HE; - delete R_57mm_HE; - delete R_80mm_HE; - delete R_S8T_AT; - //delete R_M136_AT; - delete R_RPG18_AT; - delete R_PG7V_AT; - delete R_PG7VL_AT; - delete R_PG7VR_AT; - delete R_OG7_AT; - delete R_PG9_AT; - delete R_OG9_HE; - delete R_SMAW_HEDP; - delete R_SMAW_HEAA; - delete R_GRAD; - delete R_MLRS; - delete MissileBase; - delete M_Javelin_AT; - delete M_Stinger_AA; - delete M_Sidewinder_AA; - delete M_Sidewinder_AA_F35; - delete M_Strela_AA; - delete M_Igla_AA; - delete M_AT5_AT; - delete M_AT13_AT; - delete M_TOW_AT; - delete M_TOW2_AT; - delete M_AT10_AT; - delete M_AT11_AT; - delete M_Hellfire_AT; - delete M_Vikhr_AT; - delete M_Maverick_AT; - delete M_R73_AA; - delete M_Ch29_AT; - delete M_AT2_AT; - delete M_AT6_AT; - delete M_AT9_AT; - delete M_9M311_AA; - delete Bo_GBU12_LGB; - delete Bo_GBU12_LGB_F35; - delete Bo_FAB_250; - delete Bo_Mk82; - /* - delete Grenade; - delete GrenadeHand; - delete GrenadeHandTimedWest; - delete GrenadeHandTimedEast; - delete GrenadeHand_stone; - delete SmokeShell; - delete G_40mm_Smoke; - delete G_40mm_SmokeRed; - delete G_40mm_SmokeGreen; - delete G_40mm_SmokeYellow; - delete SmokeShellRed; - delete SmokeShellGreen; - delete SmokeShellYellow; - delete SmokeShellPurple; - delete SmokeShellBlue; - delete SmokeShellOrange; - delete SmokeShellVehicle; - delete FlareCountermeasure; - delete TimeBomb; - delete PipeBomb; - delete Mine; - delete MineE; - delete FuelExplosion; - delete Laserbeam; - delete HelicopterExploSmall; - delete HelicopterExploBig; - delete SmallSecondary; - delete SmokeLauncherAmmo; - delete FlareLauncherAmmo; - delete ThrownObjects; - delete Melee; - delete Hatchet_Swing_Ammo; - delete Crowbar_Swing_Ammo; - delete SodaCan; - delete TinCan; - delete JackDaniels; - delete LitObject; - delete RoadFlare; - delete ChemLight; - delete ChemGreen; - delete ChemRed; - delete ChemBlue; - delete Bolt; - delete BoltSteel; - delete B_1866_Slug; - */ - delete B_30x113mm_M789_HEDP; - delete ARTY_Sh_Base; - delete ARTY_Flare_Small; - delete ARTY_Flare_Medium; - delete ARTY_Sh_Base_NET; - delete ARTY_Sh_105_NET; - delete ARTY_Sh_105_NET_NOFX; - delete ARTY_Sh_105_LASNET; - delete ARTY_Sh_122_NET; - delete ARTY_Sh_122_NET_NOFX; - delete ARTY_Sh_122_LASNET; - delete ARTY_Sh_81_NET; - delete ARTY_Sh_82_NET; - delete ARTY_Sh_120_NET; - delete ARTY_Sh_227_NET; - delete ARTY_Sh_105_HE; - delete ARTY_Sh_105_WP; - delete ARTY_Sh_105_SADARM; - delete ARTY_Sh_105_LASER; - delete ARTY_Sh_105_ILLUM; - delete ARTY_Sh_105_SMOKE; - delete ARTY_Sh_81_HE; - delete ARTY_Sh_81_WP; - delete ARTY_Sh_81_ILLUM; - delete ARTY_R_227mm_HE_Rocket; - delete ARTY_R_227mm_HE; - delete ARTY_Sh_122_HE; - delete ARTY_Sh_122_WP; - delete ARTY_Sh_122_SADARM; - delete ARTY_Sh_122_LASER; - delete ARTY_Sh_122_ILLUM; - delete ARTY_Sh_122_SMOKE; - delete ARTY_SADARM_PROJO; - delete ARTY_SADARM_NET; - delete ARTY_SADARM_BURST; - delete ARTY_SmokeShellWhite; - delete ARTY_Sh_82_HE; - delete ARTY_Sh_82_WP; - delete ARTY_Sh_82_ILLUM; - delete ARTY_R_120mm_HE_Rocket; - delete ARTY_R_120mm_HE; - delete Warfare82mmMortar; - delete B_86x70_Ball_noTracer; - delete B_127x99_Ball_noTracer_BAF; - delete M_NLAW_AT; - delete Sh_40_HE; - delete Sh_40_SABOT; - delete M_CRV7_AT; - delete M_CRV7_HEPD; - delete M_CRV7_FAT; - delete BAF_ied_v1; - delete BAF_ied_v2; - delete BAF_ied_v3; - delete BAF_ied_v4; - delete B_765x17_Ball; - delete B_762x51_SB_SCAR; - delete Sh_100_HEAT; - delete Sh_105_HESH; - delete Sh_105_APDS; - delete R_MEEWS_HEDP; - delete R_MEEWS_HEAT; - //delete IRStrobeBase; - //delete IRStrobe; - //delete IR_Strobe_Marker; - //delete B_45ACP_noCartridge_Ball; - delete CMflareAmmo; - delete CMflare_Chaff_Ammo; - delete ARTY_Sh_120_HE; - delete Sh_81_HE; - delete Sh_81_WP; - delete Sh_81_ILLUM; - delete Sh_82_HE; - delete Sh_82_WP; - delete Sh_82_ILLUM; - delete Sh_122_WP; - delete Sh_122_SADARM; - delete Sh_122_LASER; - delete Sh_122_ILLUM; - delete Sh_122_SMOKE; - delete Sh_105_WP; - delete Sh_105_SADARM; - delete Sh_105_LASER; - delete Sh_105_ILLUM; - delete Sh_105_SMOKE; - delete 120mmHE_M120; - //delete B_303_Ball; - delete M_47_AT_EP1; - delete PMC_ied_v1; - delete PMC_ied_v2; - delete PMC_ied_v3; - delete PMC_ied_v4; - //delete B_12Gauge_Pellets; - delete G_30mm_HE_heli; - delete B_19mm_HE; - delete B_556x45_Ball_airLock; + class Bolt; + class WoodenArrow : Bolt { + model = "\dayz_weapons\models\bolt"; + hit = 8; + caliber = 0.33; + }; + class Melee; + class Machete_Swing_Ammo : Melee { + hit = 9; + simulation = "shotBullet"; + }; }; diff --git a/dayz_code/cfgLoot.hpp b/dayz_code/cfgLoot.hpp index ab0400e84..5714d3be6 100644 --- a/dayz_code/cfgLoot.hpp +++ b/dayz_code/cfgLoot.hpp @@ -4,11 +4,15 @@ class CfgLoot { "TrashTinCan", "TrashJackDaniels", "ItemSodaEmpty", + "ItemTrashToiletpaper", + "ItemTrashRazor" }, { 1, 0.1, - 0.5 + 0.5, + 0.4, + 0.2 } }; civilian[] = { @@ -51,6 +55,7 @@ class CfgLoot { }; food[] = { { + //trash "TrashTinCan", "TrashJackDaniels", "ItemSodaEmpty", @@ -60,9 +65,13 @@ class CfgLoot { "FoodCanSardines", "FoodCanFrankBeans", "FoodCanPasta", - "ItemBandage" + "FoodCanUnlabeled", + //Bags + "FoodPistachio", + "FoodNutmix" }, { + //trash 0.13, 0.13, 0.13, @@ -72,6 +81,9 @@ class CfgLoot { 0.09, 0.09, 0.09, + 0.06, + //Bags + 0.05, 0.04 } }; @@ -97,7 +109,7 @@ class CfgLoot { "2Rnd_shotgun_74Pellets", "8Rnd_9x18_Makarov", "15Rnd_W1866_Slug", - "BoltSteel", + "WoodenArrow", "HandRoadFlare", "ItemPainkiller", "HandChemGreen", @@ -208,7 +220,8 @@ class CfgLoot { "HandChemGreen", "HandChemBlue", "HandChemRed", - "ItemHeatPack" + "ItemHeatPack", + "FoodMRE" }, { 0.18, @@ -246,7 +259,8 @@ class CfgLoot { 0.02, 0.02, 0.02, - 0.04 + 0.04, + 0.03 } }; policeman[] = { @@ -274,9 +288,10 @@ class CfgLoot { "7Rnd_45ACP_1911", "10x_303", "ItemWaterbottleUnfilled", - "BoltSteel", + "WoodenArrow", "ItemHeatPack", - "TrapBear" + "FoodMRE", + "FoodNutmix" }, { 1, @@ -286,9 +301,12 @@ class CfgLoot { 0.2, 1, 0.2, - 0.01 + 0.04, + 0.1 + } }; + worker[] = { { "TrashTinCan", diff --git a/dayz_code/cfgVehicles.hpp b/dayz_code/cfgVehicles.hpp index b383ffacb..baa4cbd5d 100644 --- a/dayz_code/cfgVehicles.hpp +++ b/dayz_code/cfgVehicles.hpp @@ -299,90 +299,242 @@ class Citizen1; // External class reference transportMaxMagazines = 12; transportmaxbackpacks = 4; class Turrets {}; - class HitPoints { - class HitEngine { - armor = 2.4; - material = -1; - name = "motor"; - passthrough = 0.2; - visual = ""; - }; - class HitBody { - armor = 1; - material = -1; - name = "karoserie"; - passthrough = 1; - visual = ""; - }; - class HitFuel { - armor = 1.3; - material = -1; - name = "palivo"; - passthrough = 0.5; - visual = ""; - }; - class HitLFWheel { - armor = 0.30; - material = -1; - name = "wheel_1_1_steering"; - passthrough = 0.3; - visual = ""; - }; - class HitRFWheel { - armor = 0.30; - material = -1; - name = "wheel_2_1_steering"; - passthrough = 0.3; - visual = ""; - }; - class HitLBWheel { - armor = 0.30; - material = -1; - name = "wheel_1_2_steering"; - passthrough = 0.3; - visual = ""; - }; - class HitRBWheel { - armor = 0.30; - material = -1; - name = "wheel_2_2_steering"; - passthrough = 0.3; - visual = ""; - }; - class HitGlass1 { - armor = 0.4; - material = -1; - name = "glass1"; - passthrough = 0; - visual = "glass1"; - }; - class HitGlass2 { - armor = 0.4; - material = -1; - name = "glass2"; - passthrough = 0; - visual = "glass2"; - }; - class HitGlass3 { - armor = 0.2; - material = -1; - name = "glass3"; - passthrough = 0; - visual = "glass3"; - }; - class HitGlass4 { - armor = 0.2; - material = -1; - name = "glass4"; - passthrough = 0; - visual = "glass4"; - }; - }; class Damage { mat[] = {"ca\wheeled\hmmwv\data\hmmwv_details.rvmat", "Ca\wheeled\HMMWV\data\hmmwv_details_damage.rvmat", "Ca\wheeled\HMMWV\data\hmmwv_details_destruct.rvmat", "ca\wheeled\hmmwv\data\hmmwv_body.rvmat", "Ca\wheeled\HMMWV\data\hmmwv_body_damage.rvmat", "Ca\wheeled\HMMWV\data\hmmwv_body_destruct.rvmat", "ca\wheeled\hmmwv\data\hmmwv_clocks.rvmat", "ca\wheeled\hmmwv\data\hmmwv_clocks.rvmat", "ca\wheeled\data\hmmwv_clocks_destruct.rvmat", "ca\wheeled\HMMWV\data\hmmwv_glass.rvmat", "ca\wheeled\HMMWV\data\hmmwv_glass_Half_D.rvmat", "ca\wheeled\HMMWV\data\hmmwv_glass_Half_D.rvmat", "ca\wheeled\HMMWV\data\hmmwv_glass_in.rvmat", "ca\wheeled\HMMWV\data\hmmwv_glass_in_Half_D.rvmat", "ca\wheeled\HMMWV\data\hmmwv_glass_in_Half_D.rvmat"}; tex[] = {}; }; }; + class RubberBoat; + class PBX: RubberBoat { + cargoaction[] = {"PBX_Cargo01", "PBX_Cargo02", "PBX_Cargo03"}; + crew = ""; + displayname = "PBX"; + driveraction = "PBX_Driver"; + extcameraposition[] = {0, 4, -14}; + faction = "RU"; + icon = "\Ca\water\Data\map_ico\icomap_rubber_CA.paa"; + mapsize = 6; + maxspeed = 65; + model = "\ca\water\PBX"; + picture = "\ca\water\data\ico\pbx_CA.paa"; + scope = 2; + side = 0; + transportsoldier = 3; + typicalcargo[] = {}; + class TransportMagazines {}; + class Library { + libtextdesc = "The PBX is a Combat Rubber Craft very similar to the CRRC in design. It is intended to be used for maritime raids and infiltration, as well as riverine operations."; + }; + class Damage { + mat[] = {"ca\water\data\pbx_engine.rvmat", "ca\water\data\pbx_engine.rvmat", "ca\water\data\pbx_engine_destruct.rvmat", "ca\water\data\pbx_01.rvmat", "ca\water\data\pbx_01.rvmat", "ca\water\data\pbx_01_destruct.rvmat", "ca\water\data\pbx_02.rvmat", "ca\water\data\pbx_02.rvmat", "ca\water\data\pbx_02_destruct.rvmat"}; + tex[] = {}; + }; + transportMaxMagazines = 50; + transportMaxWeapons = 5; + transportMaxBackpacks = 1; + }; + class TT650_Base; + class TT650_Ins: TT650_Base { + crew = ""; + faction = "INS"; + hiddenselectionstextures[] = {"\ca\wheeled3\tt650\data\Yam650_skin1_CO.paa"}; + scope = 2; + side = 0; + typicalcargo[] = {}; + }; + class V3S_Base; + class V3S_Civ: V3S_Base { + crew = ""; + faction = "CIV"; + rarityurban = 0.3; + scope = 2; + side = 3; + typicalcargo[] = {}; + class Library { + libtextdesc = "The V3S is a Czech-made military 6x6 cargo truck capable of carrying cargo up to 5 tons, or up to 3 tons in rough terrain.
This one is a harmless civilian vehicle."; + }; + }; + class SkodaBase; + class car_hatchback: SkodaBase { + armorcrash0[] = {"Ca\sounds\Vehicles\Crash\crash_vehicle_01", 0.707946, 1, 200}; + armorcrash1[] = {"Ca\sounds\Vehicles\Crash\crash_vehicle_02", 0.707946, 1, 200}; + armorcrash2[] = {"Ca\sounds\Vehicles\Crash\crash_vehicle_03", 0.707946, 1, 200}; + armorcrash3[] = {"Ca\sounds\Vehicles\Crash\crash_vehicle_04", 0.707946, 1, 200}; + brakedistance = 10; + buildcrash0[] = {"Ca\sounds\Vehicles\Crash\crash_building_01", 0.707946, 1, 200}; + buildcrash1[] = {"Ca\sounds\Vehicles\Crash\crash_building_02", 0.707946, 1, 200}; + buildcrash2[] = {"Ca\sounds\Vehicles\Crash\crash_building_03", 0.707946, 1, 200}; + buildcrash3[] = {"Ca\sounds\Vehicles\Crash\crash_building_04", 0.707946, 1, 200}; + cargoaction[] = {"Hatchback_Cargo01"}; + cargoiscodriver[] = {1, 0}; + crew = ""; + displayname = "Old hatchback"; + driveraction = "Hatchback_Driver"; + faction = "CIV"; + hiddenselections[] = {"Camo1"}; + hiddenselectionstextures[] = {"\ca\wheeled\data\hatchback_co.paa"}; + icon = "\Ca\wheeled\data\map_ico\icomap_skoda_CA.paa"; + mapsize = 6; + maxspeed = 125; + model = "\ca\Wheeled\car_hatchback"; + picture = "\Ca\wheeled\data\ico\car_hatchback_CA.paa"; + rarityurban = 0.6; + scope = 2; + soundarmorcrash[] = {"ArmorCrash0", 0.25, "ArmorCrash1", 0.25, "ArmorCrash2", 0.25, "ArmorCrash3", 0.25}; + soundbuildingcrash[] = {"buildCrash0", 0.25, "buildCrash1", 0.25, "buildCrash2", 0.25, "buildCrash3", 0.25}; + soundengineoffext[] = {"ca\sounds\vehicles\Wheeled\sedan\ext\ext-sedan-stop-1", 0.398107, 1, 250}; + soundengineoffint[] = {"ca\sounds\vehicles\Wheeled\sedan\int\int-sedan-stop-1", 0.398107, 1}; + soundengineonext[] = {"ca\sounds\vehicles\Wheeled\sedan\ext\ext-sedan-start-1", 0.398107, 1, 250}; + soundengineonint[] = {"ca\sounds\vehicles\Wheeled\sedan\int\int-sedan-start-1", 0.398107, 1}; + soundgear[] = {"", "5.62341e-005", 1}; + soundgetin[] = {"ca\sounds\vehicles\Wheeled\sedan\ext\ext-sedan-getout-1", 0.316228, 1}; + soundgetout[] = {"ca\sounds\vehicles\Wheeled\sedan\ext\ext-sedan-getout-1", 0.316228, 1, 30}; + soundwoodcrash[] = {"woodCrash0", 0.166, "woodCrash1", 0.166, "woodCrash2", 0.166, "woodCrash3", 0.166, "woodCrash4", 0.166, "woodCrash5", 0.166}; + typicalcargo[] = {}; + wheelcircumference = 2.148; + woodcrash0[] = {"Ca\sounds\Vehicles\Crash\crash_mix_wood_01", 0.707946, 1, 200}; + woodcrash1[] = {"Ca\sounds\Vehicles\Crash\crash_mix_wood_02", 0.707946, 1, 200}; + woodcrash2[] = {"Ca\sounds\Vehicles\Crash\crash_mix_wood_03", 0.707946, 1, 200}; + woodcrash3[] = {"Ca\sounds\Vehicles\Crash\crash_mix_wood_04", 0.707946, 1, 200}; + woodcrash4[] = {"Ca\sounds\Vehicles\Crash\crash_mix_wood_05", 0.707946, 1, 200}; + woodcrash5[] = {"Ca\sounds\Vehicles\Crash\crash_mix_wood_06", 0.707946, 1, 200}; + class SoundEvents { + class AccelerationIn { + expression = "(engineOn*(1-camPos))*gmeterZ"; + limit = 0.5; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\sedan\int\int-sedan-acce-1", 0.398107, 1}; + }; + class AccelerationOut { + expression = "(engineOn*camPos)*gmeterZ"; + limit = 0.5; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\sedan\ext\ext-sedan-acce-1", 0.398107, 1, 250}; + }; + }; + class Sounds { + class Engine { + frequency = "(randomizer*0.05+0.95)*rpm"; + sound[] = {"\ca\sounds\Vehicles\Wheeled\sedan\ext\ext-sedan-low-1", 0.398107, 0.9, 300}; + volume = "engineOn*camPos*(rpm factor[0.6, 0.2])"; + }; + class EngineHighOut { + frequency = "(randomizer*0.05+0.95)*rpm"; + sound[] = {"\ca\sounds\Vehicles\Wheeled\sedan\ext\ext-sedan-high-1", 0.398107, 0.8, 380}; + volume = "engineOn*camPos*(rpm factor[0.45, 0.9])"; + }; + class IdleOut { + frequency = 1; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\sedan\ext\ext-sedan-idle-1", 0.281838, 1, 200}; + volume = "engineOn*camPos*(rpm factor[0.3, 0])"; + }; + class TiresRockOut { + frequency = 1; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\Tires\ext\ext-tires-rock2", 0.316228, 1, 30}; + volume = "camPos*rock*(speed factor[2, 20])"; + }; + class TiresSandOut { + frequency = 1; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\Tires\ext\ext-tires-sand2", 0.316228, 1, 30}; + volume = "camPos*sand*(speed factor[2, 20])"; + }; + class TiresGrassOut { + frequency = 1; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\Tires\ext\ext-tires-grass3", 0.316228, 1, 30}; + volume = "camPos*grass*(speed factor[2, 20])"; + }; + class TiresMudOut { + frequency = 1; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\Tires\ext\ext-tires-mud2", 0.316228, 1, 30}; + volume = "camPos*mud*(speed factor[2, 20])"; + }; + class TiresGravelOut { + frequency = 1; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\Tires\ext\ext-tires-gravel2", 0.316228, 1, 30}; + volume = "camPos*gravel*(speed factor[2, 20])"; + }; + class TiresAsphaltOut { + frequency = 1; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\Tires\ext\ext-tires-asphalt3", 0.316228, 1, 30}; + volume = "camPos*asphalt*(speed factor[2, 20])"; + }; + class NoiseOut { + frequency = 1; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\Noises\ext\int-noise3", 0.316228, 1, 30}; + volume = "camPos*(damper0 max 0.04)*(speed factor[0, 8])"; + }; + class EngineLowIn { + frequency = "(randomizer*0.05+0.95)*rpm"; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\sedan\int\int-sedan-low-1", 0.562341, 0.8}; + volume = "((engineOn*thrust) factor[0.65, 0.2])*(1-camPos)"; + }; + class EngineHighIn { + frequency = "(randomizer*0.05+0.95)*rpm"; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\sedan\int\int-sedan-high-1", 0.562341, 0.8}; + volume = "((engineOn*thrust) factor[0.55, 0.95])*(1-camPos)"; + }; + class IdleIn { + frequency = 1; + sound[] = {"\ca\sounds\Vehicles\Wheeled\sedan\int\int-sedan-idle-1", 0.316228, 1}; + volume = "engineOn*(rpm factor[0.3, 0])*(1-camPos)"; + }; + class TiresRockIn { + frequency = 1; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\Tires\int\int-tires-rock2", 0.177828, 1}; + volume = "(1-camPos)*rock*(speed factor[2, 20])"; + }; + class TiresSandIn { + frequency = 1; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\Tires\int\int-tires-sand2", 0.177828, 1}; + volume = "(1-camPos)*sand*(speed factor[2, 20])"; + }; + class TiresGrassIn { + frequency = 1; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\Tires\int\int-tires-grass3", 0.177828, 1}; + volume = "(1-camPos)*grass*(speed factor[2, 20])"; + }; + class TiresMudIn { + frequency = 1; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\Tires\int\int-tires-mud2", 0.177828, 1}; + volume = "(1-camPos)*mud*(speed factor[2, 20])"; + }; + class TiresGravelIn { + frequency = 1; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\Tires\int\int-tires-gravel2", 0.177828, 1}; + volume = "(1-camPos)*gravel*(speed factor[2, 20])"; + }; + class TiresAsphaltIn { + frequency = 1; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\Tires\int\int-tires-asphalt3", 0.177828, 1}; + volume = "(1-camPos)*asphalt*(speed factor[2, 20])"; + }; + class NoiseIn { + frequency = 1; + sound[] = {"\ca\SOUNDS\Vehicles\Wheeled\BUS\int\noise3", 0.177828, 1}; + volume = "(damper0 max 0.04)*(speed factor[0, 8])*(1-camPos)"; + }; + class Movement { + frequency = 1; + sound = "soundEnviron"; + volume = 0; + }; + }; + class Damage { + mat[] = {"ca\wheeled\data\hatchback.rvmat", "ca\wheeled\data\hatchback.rvmat", "ca\wheeled\data\hatchback_destruct.rvmat", "ca\wheeled\data\hatchback.rvmat", "ca\wheeled\data\hatchback.rvmat", "ca\wheeled\data\hatchback_destruct.rvmat", "ca\wheeled\data\detailmapy\auta_skla.rvmat", "ca\wheeled\data\detailmapy\auta_skla_damage.rvmat", "ca\wheeled\data\detailmapy\auta_skla_damage.rvmat", "ca\wheeled\data\detailmapy\auta_skla_in.rvmat", "ca\wheeled\data\detailmapy\auta_skla_in_damage.rvmat", "ca\wheeled\data\detailmapy\auta_skla_in_damage.rvmat"}; + tex[] = {}; + }; + class Library { + libtextdesc = "Civilian Car"; + }; + }; + class UAZ_Unarmed_Base; + class UAZ_CDF: UAZ_Unarmed_Base { + accuracy = 0.3; + crew = ""; + faction = "CDF"; + hiddenselectionstextures[] = {"\ca\wheeled\data\Uaz_main_002_CO.paa"}; + scope = 2; + side = 1; + typicalcargo[] = {}; + }; class MH6J_DZ: AH6_Base_EP1 { scope = 2; @@ -954,27 +1106,6 @@ class Citizen1; // External class reference { displayName = "RHIB (Mk19)"; }; - class RubberBoat: Boat - { - transportMaxMagazines = 50; - transportMaxWeapons = 5; - transportMaxBackpacks = 1; - }; - class Zodiac: RubberBoat - { - displayName = "CRRC"; - }; - class PBX: RubberBoat - { - displayName = "PBX"; - }; - class PBX_ACR: Ship - { - displayName = "PBX"; - transportMaxMagazines = 50; - transportMaxWeapons = 5; - transportMaxBackpacks = 1; - }; class M113Ambul_UN_EP1; class M113Ambul_UN_EP1_DZ: M113Ambul_UN_EP1 { diff --git a/dayz_code/cfgworlds/intro.Chernarus/initIntro.sqf b/dayz_code/cfgworlds/intro.Chernarus/initIntro.sqf new file mode 100644 index 000000000..62262ac04 --- /dev/null +++ b/dayz_code/cfgworlds/intro.Chernarus/initIntro.sqf @@ -0,0 +1,26 @@ +titleCut ["","BLACK FADED",10e10]; + +setViewDistance 3000; +setTerrainGrid 3.125; + +0 fadeMusic 0; +playMusic ["dayz_track_death_1",16]; +5 fadeMusic 0.5; + +_target = [7377,2738,4]; +_position = [8323,2483,33]; + +_camera = "camera" camCreate position player; +_camera cameraEffect ["internal","back"]; + +_camera camPrepareTarget _target; +_camera camPreparePos _position; +_camera camPrepareFov 0.5; +_camera camCommitPrepared 0; + +sleep 0.01; +showCinemaBorder false; + +waitUntil {preloadCamera _position}; + +titleCut ["","BLACK IN",3]; \ No newline at end of file diff --git a/dayz_code/compile/building_spawnLoot.sqf b/dayz_code/compile/building_spawnLoot.sqf index a2b17f996..d45c7b1e1 100644 --- a/dayz_code/compile/building_spawnLoot.sqf +++ b/dayz_code/compile/building_spawnLoot.sqf @@ -1,4 +1,5 @@ private["_obj","_type","_config","_positions","_iPos","_nearBy","_itemType","_itemTypes","_itemChances","_lootChance","_weights","_cntWeights","_index"]; + _obj = _this select 0; _type = typeOf _obj; _config = configFile >> "CfgBuildingLoot" >> _type; @@ -17,6 +18,7 @@ _lootChance = getNumber (_config >> "lootChance"); _index = _weights select _index; _itemType = _itemTypes select _index; [_itemType select 0, _itemType select 1 , _iPos, 0.0] call spawn_loot; + _obj setVariable ["created",(DateToNumber date),true]; }; }; } forEach _positions; \ No newline at end of file diff --git a/dayz_code/compile/building_spawnZombies.sqf b/dayz_code/compile/building_spawnZombies.sqf index e14232280..ab220d294 100644 --- a/dayz_code/compile/building_spawnZombies.sqf +++ b/dayz_code/compile/building_spawnZombies.sqf @@ -1,43 +1,47 @@ -private["_obj","_type","_config","_canLoot","_originalPos","_unitTypes","_min","_max","_num","_clean","_positions","_zombieChance","_rnd","_iPos","_nearBy","_nearByPlayer"];_obj = _this select 0; +private["_obj","_type","_config","_canLoot","_unitTypes","_min","_max","_num","_zombieChance","_rnd","_noPlayerNear","_position","_clean","_positions","_iPos","_nearBy","_nearByPlayer"]; _obj = _this select 0; _type = typeOf _obj; _config = configFile >> "CfgBuildingLoot" >> _type; _canLoot = isClass (_config); -_originalPos = getPosATL _obj; -if (_canLoot and placevault) then { +if (dayz_maxCurrentZeds > dayz_maxZeds) exitwith {}; +if (dayz_CurrentZombies > dayz_maxGlobalZombies) exitwith {}; +if (dayz_spawnZombies > dayz_maxLocalZombies) exitwith {}; + +if (_canLoot) then { //Get zombie class _unitTypes = getArray (_config >> "zombieClass"); _min = getNumber (_config >> "minRoaming"); _max = getNumber (_config >> "maxRoaming"); - //Walking Zombies - _num = round(random _max) min _min; +//Walking Zombies + //_num = round(random _max) min _min; + _num = round(random _max) max _min; _config = configFile >> "CfgBuildingLoot" >> _type; - //Get zombie class +//Get zombie class _zombieChance = getNumber (_config >> "zombieChance"); - _rnd = random 0.5; - _chance = round(random 20); + _rnd = random 1; //if (_rnd < _zombieChance) then { - if ((_chance % 2) == 0) then { - + _noPlayerNear = (count ((getPosATL _obj) nearEntities ["CAManBase",30])) == 0; - + if (_noPlayerNear) then { - - _position = _obj buildingExit 0; - if ((_position select 0) == 0) then { + + //_position = _obj buildingExit 0; + //if ((_position select 0) == 0) then { _position = getPosATL _obj; - }; - - //diag_log ("Class: " + _type + " / Zombies: " + str(_unitTypes) + " / Walking: " + str(_num)); + //}; + + //diag_log ("Class: " + _type + " / Zombies: " + str(_unitTypes) + " / Walking: " + str(_num)); for "_i" from 1 to _num do { - [_position,_unitTypes] call zombie_generate; + [_position,true,_unitTypes] call zombie_generate; }; + }; - }; + //}; + //Add Internal Zombies _clean = {alive _x} count ((getPosATL _obj) nearEntities ["zZombie_Base",(sizeOf _type)]) == 0; if (_clean) then { @@ -48,13 +52,11 @@ if (_canLoot and placevault) then { _rnd = random 1; if (_rnd < _zombieChance) then { _iPos = _obj modelToWorld _x; - - _nearBy = {alive _x} count nearestObjects [_iPos , ["zZombie_Base"],3] > 0; - _nearByPlayer = ({isPlayer _x} count (_iPos nearEntities ["CAManBase",30])) > 0; + _nearBy = {alive _x} count nearestObjects [_iPos, ["zZombie_Base"],1] > 0; + _nearByPlayer = ({isPlayer _x} count (_iPos nearEntities ["CAManBase",30])) > 0; //diag_log ("BUILDING: " + _type + " / " + str(_nearBy) + " / " + str(_nearByPlayer)); - if (!_nearByPlayer and !_nearBy) then { - [_iPos,_unitTypes] call zombie_generate; + [_iPos,true,_unitTypes] call zombie_generate; }; }; } forEach _positions; diff --git a/dayz_code/compile/control_zombieAgent.sqf b/dayz_code/compile/control_zombieAgent.sqf index 693606d4e..d12018495 100644 --- a/dayz_code/compile/control_zombieAgent.sqf +++ b/dayz_code/compile/control_zombieAgent.sqf @@ -42,7 +42,7 @@ while {_isAlive and _isSomeone} do { _targetPos = getPosATL _target; //Move to target _agent moveTo _targetPos; - _agent forceSpeed 6; + _agent forceSpeed 8; sleep 1; }; //LOOP diff --git a/dayz_code/compile/fn_damageActions.sqf b/dayz_code/compile/fn_damageActions.sqf index ac94e5693..07ece2192 100644 --- a/dayz_code/compile/fn_damageActions.sqf +++ b/dayz_code/compile/fn_damageActions.sqf @@ -249,7 +249,7 @@ if ((!_isClose or !_hasPatient) and r_action) then { }; //Pain Effects -if (r_player_inpain and !r_player_unconscious) then { - playSound "breath_1"; - addCamShake [2, 1, 25]; -}; \ No newline at end of file +//if (r_player_inpain and !r_player_unconscious) then { +// playSound "breath_1"; +// addCamShake [2, 1, 25]; +//}; \ No newline at end of file diff --git a/dayz_code/compile/fn_damageHandler.sqf b/dayz_code/compile/fn_damageHandler.sqf index 024f0a749..6ed3fa2d9 100644 --- a/dayz_code/compile/fn_damageHandler.sqf +++ b/dayz_code/compile/fn_damageHandler.sqf @@ -30,7 +30,9 @@ _unitIsPlayer = _unit == player; if (_isPlayer) then { if (_damage > 0.1) then { dayz_canDisconnect = false; - ["dayzDiscoAdd",getPlayerUID player] call callRpcProcedure; + //["dayzDiscoAdd",getPlayerUID player] call callRpcProcedure; + dayzDiscoAdd = getPlayerUID player; + publicVariable "dayzDiscoAdd"; dayz_damageCounter = time; @@ -55,7 +57,9 @@ if (_unitIsPlayer) then { _myKills = 200 - (((player getVariable ["humanKills",0]) / 30) * 100); //Process Morality Hit _humanityHit = -(_myKills * _damage); - ["dayzHumanity",[_source,_humanityHit,30]] call broadcastRpcCallAll; + //["dayzHumanity",[_source,_humanityHit,30]] call broadcastRpcCallAll; + dayzHumanity = [_this select 0,_this select 1,30]; + publicVariable "dayzHumanity"; }; }; }; @@ -96,7 +100,7 @@ if (_hit in USEC_MinorWounds) then { } else { [_unit,_hit,(_damage / 4)] call object_processHit; }; - } else {; + } else { [_unit,_hit,(_damage / 2)] call object_processHit; }; if (_ammo == "") then { @@ -165,7 +169,9 @@ if (_damage > 0.4) then { //0.25 if(!_isPZombie) then { //Create Wound _unit setVariable[_wound,true,true]; - ["usecBleed",[_unit,_wound,_hit]] call broadcastRpcCallAll; + [_unit,_wound,_hit] spawn fnc_usec_damageBleed; + usecBleed = [_unit,_wound,_hit]; + publicVariable "usecBleed"; //Set Injured if not already _isInjured = _unit getVariable["USEC_injured",false]; @@ -180,7 +186,7 @@ if (_damage > 0.4) then { //0.25 if (!_lowBlood) then { _unit setVariable["USEC_lowBlood",true,true]; }; - if (_unitIsPlayer) then { + if (_unitIsPlayer) then { r_player_injured = true; }; }; diff --git a/dayz_code/compile/fn_selfActions.sqf b/dayz_code/compile/fn_selfActions.sqf index 41b7ce218..2939100d1 100644 --- a/dayz_code/compile/fn_selfActions.sqf +++ b/dayz_code/compile/fn_selfActions.sqf @@ -7,6 +7,7 @@ scriptName "Functions\misc\fn_selfActions.sqf"; private["_isPZombie","_vehicle","_inVehicle","_bag","_classbag","_isWater","_hasAntiB","_hasFuelE","_hasRawMeat","_hasKnife","_hasToolbox","_hasTent","_onLadder","_nearLight","_canPickLight","_canDo","_text","_isHarvested","_isVehicle","_isVehicletype","_isMan","_traderType","_ownerID","_isAnimal","_isDog","_isZombie","_isDestructable","_isTent","_isFuel","_isAlive","_canmove","_Unlock","_lock","_allFixed","_hitpoints","_damage","_part","_cmpt","_color","_string","_handle","_trader_id","_category","_buy","_buy2","_buy3","_buy1","_buy4","_buy5","_cantrader","_cantrader1","_buy6","_zparts1","_zparts2","_zparts3","_zparts4","_metals1","_metals2","_metals4","_metals3","_metals5","_dogHandle","_lieDown","_warn"]; _vehicle = vehicle player; +_isPZombie = player isKindOf "PZombie_VB"; _inVehicle = (_vehicle != player); _bag = unitBackpack player; _classbag = typeOf _bag; @@ -15,7 +16,13 @@ _hasAntiB = "ItemAntibiotic" in magazines player; _hasFuelE = "ItemJerrycanEmpty" in magazines player; //boiled Water _hasbottleitem = "ItemWaterbottle" in magazines player; -_hastinitem = ("TrashTinCan" in magazines player) or ("ItemSodaEmpty" in magazines player); +_hastinitem = false; +{ + if (_x in magazines player) then { + _hastinitem = true; + }; + +} forEach boil_tin_cans; _hasKnife = "ItemKnife" in items player; @@ -33,7 +40,7 @@ if (!isNull _nearLight) then { _canDo = (!r_drag_sqf and !r_player_unconscious and !_onLadder); //Grab Flare -if (_canPickLight and !dayz_hasLight) then { +if (_canPickLight and !dayz_hasLight and !_isPZombie) then { if (s_player_grabflare < 0) then { _text = getText (configFile >> "CfgAmmo" >> (typeOf _nearLight) >> "displayName"); s_player_grabflare = player addAction [format[localize "str_actions_medical_15",_text], "\z\addons\dayz_code\actions\flare_pickup.sqf",_nearLight, 1, false, true, "", ""]; @@ -46,7 +53,7 @@ if (_canPickLight and !dayz_hasLight) then { s_player_removeflare = -1; }; -_isPZombie = player isKindOf "PZombie_VB"; + if(_isPZombie) then { //_state = animationState player; //hint str(_state); @@ -59,7 +66,7 @@ if(_isPZombie) then { }; -if (!isNull cursorTarget and !_inVehicle and (player distance cursorTarget < 6)) then { //Has some kind of target +if (!isNull cursorTarget and !_inVehicle and !_isPZombie and (player distance cursorTarget < 6)) then { //Has some kind of target _isHarvested = cursorTarget getVariable["meatHarvested",false]; _isVehicle = cursorTarget isKindOf "AllVehicles"; _isVehicletype = typeOf cursorTarget in ["ATV_US_EP1","ATV_CZ_EP1"]; @@ -76,6 +83,7 @@ if (!isNull cursorTarget and !_inVehicle and (player distance cursorTarget < 6)) _canmove = canmove cursorTarget; _text = getText (configFile >> "CfgVehicles" >> typeOf cursorTarget >> "displayName"); + _rawmeat = meatraw; _hasRawMeat = false; { @@ -84,6 +92,7 @@ if (!isNull cursorTarget and !_inVehicle and (player distance cursorTarget < 6)) }; } forEach _rawmeat; + if (_hasFuelE) then { _isFuel = (cursorTarget isKindOf "Land_Ind_TankSmall") or (cursorTarget isKindOf "Land_fuel_tank_big") or (cursorTarget isKindOf "Land_fuel_tank_stairs") or (cursorTarget isKindOf "Land_fuel_tank_stairs_ep1") or (cursorTarget isKindOf "Land_wagon_tanker") or (cursorTarget isKindOf "Land_fuelstation") or (cursorTarget isKindOf "Land_fuelstation_army"); }; @@ -288,7 +297,7 @@ if (!isNull cursorTarget and !_inVehicle and (player distance cursorTarget < 6)) //Repairing Vehicles - if (_isVehicle and (dayz_myCursorTarget != cursorTarget) and !_isMan and _hasToolbox and (damage cursorTarget < 1)) then { + if ((dayz_myCursorTarget != cursorTarget) and _isVehicle and !_isMan and _hasToolbox and (damage cursorTarget < 1)) then { if (s_player_repair_crtl < 0) then { diff --git a/dayz_code/compile/local_gutObject.sqf b/dayz_code/compile/local_gutObject.sqf index 2df408e79..7e6259190 100644 --- a/dayz_code/compile/local_gutObject.sqf +++ b/dayz_code/compile/local_gutObject.sqf @@ -8,8 +8,6 @@ if (local _animalbody) then { _animalbody addMagazine _rawfoodtype; }; - sleep 1; - [time, _animalbody] spawn { private ["_timer", "_body"]; _timer = _this select 0; @@ -17,7 +15,10 @@ if (local _animalbody) then { while {(count magazines _body >0) and (time - _timer < 300) } do { sleep 5; }; - ["dayzHideBody",_body] call broadcastRpcCallAll; + //["dayzHideBody",_body] call broadcastRpcCallAll; + dayzHideBody = _body; + hideBody _body; // local player + publicVariable "dayzHideBody"; // remote player sleep 5; deleteVehicle _body; true; diff --git a/dayz_code/compile/local_gutObjectZ.sqf b/dayz_code/compile/local_gutObjectZ.sqf index 9fe513339..83aa432ff 100644 --- a/dayz_code/compile/local_gutObjectZ.sqf +++ b/dayz_code/compile/local_gutObjectZ.sqf @@ -1,20 +1,30 @@ private["_item","_qty","_type","_meat","_loop"]; -_item = _this select 0; -_qty = _this select 1; +_item = _zombiebody select 0; +_qty = _zombiebody select 1; _type = typeOf _item; _meat = 0; _loop = true; if (local _item) then { _item addMagazine "ItemZombieParts"; - sleep 2; - _timer = time; - while {_loop} do { - _meat = count magazines _item; - if (_meat == 0) then {_loop = false}; - if ((time - _timer) > 300) then {_loop = false}; - sleep 1; + + + [time, _zombiebody] spawn { + private ["_timer", "_body"]; + _timer = _zombiebody select 0; + _body = _zombiebody select 1; + while {(count magazines _body >0) and (time - _timer < 300) } do { + sleep 5; + }; + //["dayzHideBody",_body] call broadcastRpcCallAll; + dayzHideBody = _body; + hideBody _body; // local player + publicVariable "dayzHideBody"; // remote player + sleep 5; + deleteVehicle _body; + true; }; - ["dayzHideBodyZ",_item] call broadcastRpcCallAll; + + sleep 10; deleteVehicle _item; } else { diff --git a/dayz_code/compile/object_setFixServer.sqf b/dayz_code/compile/object_setFixServer.sqf index 59f48ebf5..a38221fc9 100644 --- a/dayz_code/compile/object_setFixServer.sqf +++ b/dayz_code/compile/object_setFixServer.sqf @@ -9,8 +9,18 @@ if (_selection != "" and local _unit) then { //player sidechat str _damage; _unit setVariable [_strH,_damage,true]; if (_damage == 0) then { - ["dayzUpdateVehicle",[_unit,"repair"]] call callRpcProcedure; + if (isServer) then { + [_unit,"repair"] call server_updateObject + } else { + dayzUpdateVehicle = [_unit,"repair"]; + publicVariable "dayzUpdateVehicle"; + }; } else { - ["dayzUpdateVehicle",[_unit,"damage"]] call callRpcProcedure; + if (isServer) then { + [_unit,"damage"] call server_updateObject + } else { + dayzUpdateVehicle = [_unit,"damage"]; + publicVariable "dayzUpdateVehicle"; + }; }; }; \ No newline at end of file diff --git a/dayz_code/compile/object_setHitServer.sqf b/dayz_code/compile/object_setHitServer.sqf index 98c37cd4a..48d53b11a 100644 --- a/dayz_code/compile/object_setHitServer.sqf +++ b/dayz_code/compile/object_setHitServer.sqf @@ -12,7 +12,9 @@ if ((_selection != "") and local _unit) then { _unit setVariable [_strH,_total,true]; if (_damage >= 1) then { - ["dayzUpdateVehicle",[_unit,"damage"]] call callRpcProcedure; + //["dayzUpdateVehicle",[_unit,"damage"]] call callRpcProcedure; + dayzUpdateVehicle = [_unit,"damage"]; + publicVariable "dayzUpdateVehicle"; }; } else { diff --git a/dayz_code/compile/object_speak.sqf b/dayz_code/compile/object_speak.sqf index 2ae0fbc19..7e65259d3 100644 --- a/dayz_code/compile/object_speak.sqf +++ b/dayz_code/compile/object_speak.sqf @@ -2,8 +2,6 @@ private["_unit","_type","_chance","_rnd","_sound","_local","_dis"]; _unit = _this select 0; _type = _this select 1; _chance = _this select 2; -_local = _this select 3; -_dis = 40; _num = switch (_type) do { default {0}; @@ -23,8 +21,17 @@ _num = switch (_type) do { case "dog_qq": {2}; }; -if (_type in ["shout","hit","attack","scream","breath","spotted"]) then { - _dis = 100; +if (count _this > 4) then { + _dis = _this select 4; + _local = ({isPlayer _x} count (_unit nearEntities ["AllVehicles",_dis]) < 2); +} else { + _local = _this select 3; + + if (_type in ["shout","hit","attack","scream","breath","spotted"]) then { + _dis = 100; + } else { + _dis = 40; + }; }; _isWoman = getText(configFile >> "cfgVehicles" >> (typeOf _unit) >> "TextPlural") == "Women"; diff --git a/dayz_code/compile/player_alertZombies.sqf b/dayz_code/compile/player_alertZombies.sqf index db31714f7..470d35489 100644 --- a/dayz_code/compile/player_alertZombies.sqf +++ b/dayz_code/compile/player_alertZombies.sqf @@ -4,7 +4,15 @@ _unit = _this select 0; _distance = _this select 1; _doRun = _this select 2; _pos = _this select 3; -_listTalk = _pos nearEntities ["zZombie_Base",_distance * 2]; +_listTalk = _pos nearEntities ["zZombie_Base",_distance/2]; + +if ("ItemMap_Debug" in items player) then { + diag_log ("alertzeds Unit: " +str(_unit)); + diag_log ("alertzeds Distance: " +str(_distance/2)); + diag_log ("alertzeds DoRun: " +str(_doRun)); + diag_log ("alertzeds Pos: " +str(_pos)); + diag_log ("alertzeds ListTalk: " +str(_listTalk)); +}; //hint str(_listTalk); diff --git a/dayz_code/compile/player_crossbowBolt.sqf b/dayz_code/compile/player_crossbowBolt.sqf index 22cc08437..0a7d6b5da 100644 --- a/dayz_code/compile/player_crossbowBolt.sqf +++ b/dayz_code/compile/player_crossbowBolt.sqf @@ -2,6 +2,7 @@ private["_unit","_ammo","_audible","_distance","_listTalk","_weapon","_projectil _unit = _this select 0; _weapon = _this select 1; _ammo = _this select 4; +_magazine = _this select 5; _projectile = _this select 6; _projectile = nearestObject [_unit, _ammo]; @@ -9,6 +10,14 @@ _vUp = vectorUp _projectile; _endPos = getPosATL _projectile; _dir = 0; +if (_magazine == "Quiver") then { + _ammo = player ammo "Crossbow_DZ"; + if (_ammo > 0) then { + player removeMagazines "Quiver"; + player addMagazine ["Quiver", _ammo]; + }; +}; + while {alive _projectile} do { _endPos = getPosATL _projectile; _vUp = vectorUp _projectile; @@ -21,7 +30,7 @@ _doLoop = true; _countr = 0; if (_height < 100) then { - _bolt = createVehicle ["BoltSteelF", _endPos, [], 0, "CAN_COLLIDE"]; + _bolt = createVehicle ["WoodenArrowF", _endPos, [], 0, "CAN_COLLIDE"]; _bolt setPosATL _endPos; _bolt setDir (getDir _unit); _bolt setVectorUp _vUp; @@ -35,7 +44,6 @@ if (_height < 100) then { sleep 0.1; }; - if (count _hitArray > 0) then { _hitObject = _hitArray select 0; _hitSelection = _hitArray select 1; diff --git a/dayz_code/compile/player_death.sqf b/dayz_code/compile/player_death.sqf index 3273a07e6..e1a8dd433 100644 --- a/dayz_code/compile/player_death.sqf +++ b/dayz_code/compile/player_death.sqf @@ -13,9 +13,11 @@ if (r_player_infected) then { }; //Send Death Notice -["dayzDeath",[dayz_characterID,0,_body,_playerID,dayz_playerName,_infected]] call callRpcProcedure; +//["dayzDeath",[dayz_characterID,0,_body,_playerID,dayz_playerName,_infected]] call callRpcProcedure; +dayzDeath = [dayz_characterID,0,_body,_playerID,dayz_playerName,_infected]; +publicVariableServer "dayzDeath"; -_id = [player,50,true,getPosATL player] spawn player_alertZombies; +_id = [player,20,true,getPosATL player] spawn player_alertZombies; sleep 0.5; @@ -62,7 +64,9 @@ if (count _array > 0) then { _wait = 0; }; if (!_canHitFree and !_isBandit) then { - ["dayzHumanity",[_source,_humanity,_wait]] call broadcastRpcCallAll; + //["dayzHumanity",[_source,_humanity,_wait]] call broadcastRpcCallAll; + dayzHumanity = [_source,_humanity,_wait]; + publicVariable "dayzHumanity"; }; }; }; diff --git a/dayz_code/compile/player_fired.sqf b/dayz_code/compile/player_fired.sqf index 06d235635..caf682ec5 100644 --- a/dayz_code/compile/player_fired.sqf +++ b/dayz_code/compile/player_fired.sqf @@ -43,14 +43,6 @@ if (_ammo isKindOf "SmokeShell") then { //Check if need to place arrow if (_ammo isKindOf "Bolt") then { _id = _this spawn player_crossbowBolt; - - // Reload animation if more that 1 in mag/pack - _count = player ammo _weapon; - if(_count >= 1) then { - _unit playActionNow "reloadMagazine"; - }; - - }; if (_ammo isKindOf "GrenadeHand") then { @@ -60,14 +52,16 @@ if (_ammo isKindOf "SmokeShell") then { if (_ammo isKindOf "RoadFlare") then { //hint str(_ammo); _projectile = nearestObject [_unit, "RoadFlare"]; - ["dayzRoadFlare",[_projectile,0]] call broadcastRpcCallAll; - + _id = [_projectile,0] spawn object_roadFlare; + dayzRoadFlare = [_projectile,0]; + publicVariable "dayzRoadFlare"; _id = _this spawn player_throwObject; }; if (_ammo isKindOf "ChemLight") then { _projectile = nearestObject [_unit, "ChemLight"]; - ["dayzRoadFlare",[_projectile,1]] call broadcastRpcCallAll; - + _id = [_projectile,1] spawn object_roadFlare; + dayzRoadFlare = [_projectile,1]; + publicVariable "dayzRoadFlare"; _id = _this spawn player_throwObject; }; }; diff --git a/dayz_code/compile/player_gearSet.sqf b/dayz_code/compile/player_gearSet.sqf index 17db1132c..9968fdd65 100644 --- a/dayz_code/compile/player_gearSet.sqf +++ b/dayz_code/compile/player_gearSet.sqf @@ -16,6 +16,9 @@ if (count _inventory > 0) then { _item = _x; _val = -1; }; + + if (_item == "BoltSteel") then { _item = "WoodenArrow" }; // Convert BoltSteel to WoodenArrow + //Is item legal? _isOK = isClass(configFile >> "CfgMagazines" >> _item); if (_isOK) then { @@ -30,6 +33,8 @@ if (count _inventory > 0) then { //Add weapons { + if (_x == "Crossbow") then { _x = "Crossbow_DZ" }; // Convert Crossbow to Crossbow_DZ + //Is item legal? _isOK = isClass(configFile >> "CfgWeapons" >> _x); if (_isOK) then { diff --git a/dayz_code/compile/player_gearSync.sqf b/dayz_code/compile/player_gearSync.sqf index ca5052c13..74d083717 100644 --- a/dayz_code/compile/player_gearSync.sqf +++ b/dayz_code/compile/player_gearSync.sqf @@ -1,7 +1,10 @@ private ["_objects"]; _objects = nearestObjects [getPosATL player, ["Car", "Helicopter", "Motorcycle", "Ship", "TentStorage","VaultStorage"], 10]; { - ["dayzUpdateVehicle",[_x,"gear"]] call callRpcProcedure; + //["dayzUpdateVehicle",[_x,"gear"]] call callRpcProcedure; + dayzUpdateVehicle = [_x,"gear"]; + publicVariable "dayzUpdateVehicle"; + } foreach _objects; private["_dialog","_magazineArray","_control","_item","_val","_max"]; @@ -18,6 +21,7 @@ for "_i" from 109 to 120 do _val = gearSlotAmmoCount _control; _max = getNumber (configFile >> "CfgMagazines" >> _item >> "count"); if (_item != "") then { + if (_item == "BoltSteel") then { _item = "WoodenArrow" }; if (_val != _max) then { _magazineArray set [count _magazineArray,[_item,_val]]; } else { diff --git a/dayz_code/compile/player_humanityMorph.sqf b/dayz_code/compile/player_humanityMorph.sqf index 8204ed619..149add3ab 100644 --- a/dayz_code/compile/player_humanityMorph.sqf +++ b/dayz_code/compile/player_humanityMorph.sqf @@ -46,7 +46,9 @@ if (count _medical > 0) then { //Add Wounds { player setVariable[_x,true,true]; - ["usecBleed",[player,_x,_hit]] call broadcastRpcCallAll; + //["usecBleed",[player,_x,_hit]] call broadcastRpcCallAll; + usecBleed = [player,_x,0]; + publicVariable "usecBleed"; } forEach (_medical select 8); //Add fractures diff --git a/dayz_code/compile/player_onPause.sqf b/dayz_code/compile/player_onPause.sqf index d69701d73..399f49c7b 100644 --- a/dayz_code/compile/player_onPause.sqf +++ b/dayz_code/compile/player_onPause.sqf @@ -10,31 +10,38 @@ private["_display","_btnRespawn","_btnAbort","_timeOut","_timeMax","_isDead"]; _btnAbort ctrlEnable false; _timeOut = 0; _timeMax = 30; + dayz_lastCheckBit = time; if(r_player_dead) exitWith {_btnAbort ctrlEnable true;}; - if(r_fracture_legs) exitWith {_btnRespawn ctrlEnable true;}; + if(r_fracture_legs) exitWith {_btnRespawn ctrlEnable true; _btnAbort ctrlEnable true;}; + //force gear save + if (time - dayz_lastCheckBit > 10) then { + call dayz_forceSave; + }; + while {!isNull _display} do { switch true do { case ({isPlayer _x} count (player nearEntities ["AllVehicles", 6]) > 1) : { _btnAbort ctrlEnable false; - cutText ["Cannot Abort near another player!", "PLAIN DOWN"]; + cutText [format[localize "str_abort_playerclose",_text], "PLAIN DOWN"]; }; - case (_timeOut < _timeMax && count (player nearEntities ["zZombie_Base", 25]) > 0) : { + case (_timeOut < _timeMax && count (player nearEntities ["zZombie_Base", 35]) > 0) : { _btnAbort ctrlEnable false; cutText [format ["Can Abort in %1", (_timeMax - _timeOut)], "PLAIN DOWN"]; - _timeOut = _timeOut + 1; - + //cutText [format[localize "str_abort_zedsclose",_text, "PLAIN DOWN"]; }; case (player getVariable["combattimeout", 0] >= time) : { _btnAbort ctrlEnable false; - cutText ["Cannot Abort while in combat!", "PLAIN DOWN"]; + //cutText ["Cannot Abort while in combat!", "PLAIN DOWN"]; + cutText [format[localize "str_abort_playerincombat",_text], "PLAIN DOWN"]; }; default { _btnAbort ctrlEnable true; - cutText ["", "PLAIN DOWN"]; + cutText ["", "PLAIN DOWN"]; }; }; sleep 1; + _timeOut = _timeOut + 1; }; cutText ["", "PLAIN DOWN"]; \ No newline at end of file diff --git a/dayz_code/compile/player_packTent.sqf b/dayz_code/compile/player_packTent.sqf index 8337c226a..6b322df40 100644 --- a/dayz_code/compile/player_packTent.sqf +++ b/dayz_code/compile/player_packTent.sqf @@ -20,7 +20,12 @@ if(_ownerID == dayz_characterID) then { _dir = direction _obj; _pos = getposATL _obj; - [player,"tentpack",0,false] call dayz_zombieSpeak; + + _dis=20; + _sfx = "tentpack"; + [player,_sfx,0,false,_dis] call dayz_zombieSpeak; + [player,_dis,true,(getPosATL player)] spawn player_alertZombies; + sleep 3; //place tent (local) @@ -34,7 +39,12 @@ if(_ownerID == dayz_characterID) then { _magazines = getMagazineCargo _obj; _backpacks = getBackpackCargo _obj; - ["dayzDeleteObj",[_objectID,_objectUID]] call callRpcProcedure; + //["dayzDeleteObj",[_objectID,_objectUID]] call callRpcProcedure; + dayzDeleteObj = [_objectID,_objectUID]; + publicVariable "dayzDeleteObj"; + if (isServer) then { + dayzDeleteObj call server_deleteObj; + }; deleteVehicle _obj; //Add weapons diff --git a/dayz_code/compile/player_packVault.sqf b/dayz_code/compile/player_packVault.sqf index bedb775d6..704b768c4 100644 --- a/dayz_code/compile/player_packVault.sqf +++ b/dayz_code/compile/player_packVault.sqf @@ -50,7 +50,10 @@ if(_ownerID == dayz_playerUID) then { _backpacks = getBackpackCargo _obj; */ - ["dayzDeleteObj",[_objectID,_objectUID]] call callRpcProcedure; + //["dayzDeleteObj",[_objectID,_objectUID]] call callRpcProcedure; + dayzDeleteObj = [_objectID,_objectUID]; + publicVariableServer "dayzDeleteObj"; + deleteVehicle _obj; diff --git a/dayz_code/compile/player_spawnCheck.sqf b/dayz_code/compile/player_spawnCheck.sqf index e78136447..d0ba0a4c1 100644 --- a/dayz_code/compile/player_spawnCheck.sqf +++ b/dayz_code/compile/player_spawnCheck.sqf @@ -8,13 +8,18 @@ _maxZombies = dayz_maxLocalZombies; _maxWildZombies = 3; _age = -1; - - _nearbyBuildings = []; -_radius = 300; +_radius = 200; _position = getPosATL player; -//_maxZombies = 10; - + +if (_inVehicle) then { + _maxZombies = _maxZombies / 2; +}; +if (_isAir) then { + _maxZombies = 5 +}; + + //diag_log ("Type: " +str(_type)); @@ -23,7 +28,7 @@ _position = getPosATL player; //_nearestCity = nearestLocations [getPos player, _locationstypes, _radius/2]; //_townname = text (_nearestCity select 0); //_nearbytype = type (_nearestCity select 0); -/* +/* switch (_nearbytype) do { case "NameVillage": { //_radius = 250; @@ -35,19 +40,36 @@ switch (_nearbytype) do { }; case "NameCityCapital": { //_radius = 400; - _maxZombies = 50; + _maxZombies = 40; }; }; */ -_spawnZombies = count (_position nearEntities ["zZombie_Base",_radius+100]) < _maxZombies; +_players = _position nearEntities ["AllPlayers",_radius+200]; +dayz_maxGlobalZombies = 40; +{ + dayz_maxGlobalZombies = dayz_maxGlobalZombies + 10; +} foreach _players; +_spawnZombies = _position nearEntities ["zZombie_Base",_radius+100]; +dayz_spawnZombies = 0; +{ + if (local _x) then + { + //diag_log ("Local"); + dayz_spawnZombies = dayz_spawnZombies + 1; + }; +} foreach _spawnZombies; + +dayz_CurrentZombies = count (_position nearEntities ["zZombie_Base",_radius+200]); if ("ItemMap_Debug" in items player) then { deleteMarkerLocal "MaxZeds"; deleteMarkerLocal "Counter"; deleteMarkerLocal "Loot30"; deleteMarkerLocal "Loot120"; + deleteMarkerLocal "Agro80"; + _markerstr = createMarkerLocal ["MaxZeds", _position]; _markerstr setMarkerColorLocal "ColorYellow"; _markerstr setMarkerShapeLocal "ELLIPSE"; @@ -58,8 +80,14 @@ if ("ItemMap_Debug" in items player) then { _markerstr1 setMarkerColorLocal "ColorRed"; _markerstr1 setMarkerShapeLocal "ELLIPSE"; _markerstr1 setMarkerBrushLocal "Border"; - _markerstr1 setMarkerSizeLocal [_radius+100, _radius+100]; + _markerstr1 setMarkerSizeLocal [_radius+100, _radius+100]; + _markerstr2 = createMarkerLocal ["Agro80", _position]; + _markerstr2 setMarkerColorLocal "ColorRed"; + _markerstr2 setMarkerShapeLocal "ELLIPSE"; + _markerstr2 setMarkerBrushLocal "Border"; + _markerstr2 setMarkerSizeLocal [80, 80]; + _markerstr2 = createMarkerLocal ["Loot30", _position]; _markerstr2 setMarkerColorLocal "ColorRed"; _markerstr2 setMarkerShapeLocal "ELLIPSE"; @@ -70,45 +98,68 @@ if ("ItemMap_Debug" in items player) then { _markerstr3 setMarkerColorLocal "ColorBlue"; _markerstr3 setMarkerShapeLocal "ELLIPSE"; _markerstr3 setMarkerBrushLocal "Border"; - _markerstr3 setMarkerSizeLocal [120, 120]; + _markerstr3 setMarkerSizeLocal [120, 120]; + +diag_log ("SpawnWait: " +str(time - dayz_spawnWait)); +diag_log ("LocalZombies: " +str(dayz_spawnZombies) + "/" +str(dayz_maxLocalZombies)); +diag_log ("GlobalZombies: " +str(dayz_CurrentZombies) + "/" +str(dayz_maxGlobalZombies)); +diag_log ("dayz_maxCurrentZeds: " +str(dayz_maxCurrentZeds) + "/" +str(dayz_maxZeds)); + }; -/* -switch (_type) do { - case "Zeds": { - _nearby = nearestObjects [_position, dayz_ZombieBuildings, _radius]; - }; - case "both": { - _nearby = nearestObjects [_position, ["building"], _radius]; - }; - case "Loot": { - _nearby = nearestObjects [_position, dayz_LootBuildings, _radius]; - }; - }; -*/ - -_nearby = nearestObjects [_position, ["building"], _radius]; +_nearby = _position nearObjects ["building",_radius]; _nearbyCount = count _nearby; -if (_nearbyCount < 1) exitwith {}; +if (_nearbyCount < 1) exitwith +{ + if ((dayz_spawnZombies < _maxWildZombies) and !_inVehicle) then { + [_position] call wild_spawnZombies; + }; +}; { _type = typeOf _x; _config = configFile >> "CfgBuildingLoot" >> _type; _canLoot = isClass (_config); _dis = _x distance player; + + //Loot if ((_dis < 120) and (_dis > 30) and _canLoot and !_inVehicle) then { - [_radius, _position, _inVehicle, _dateNow, _age, _locationstypes, _nearestCity] call player_spawnlootCheck; + _looted = (_x getVariable ["looted",-0.1]); + _cleared = (_x getVariable ["cleared",true]); + _dateNow = (DateToNumber date); + _age = (_dateNow - _looted) * 525948; + //diag_log ("SPAWN LOOT: " + _type + " Building is " + str(_age) + " old" ); + if ((_age > 10) and (!_cleared)) then { + _nearByObj = nearestObjects [(getPosATL _x), ["WeaponHolder","WeaponHolderBase"],((sizeOf _type)+5)]; + {deleteVehicle _x} forEach _nearByObj; + _x setVariable ["cleared",true,true]; + _x setVariable ["looted",_dateNow,true]; + }; + if ((_age > 10) and (_cleared)) then { + //Register + _x setVariable ["looted",_dateNow,true]; + //cleanup + _handle = [_x] spawn building_spawnLoot; + waitUntil{scriptDone _handle}; + }; }; + //Zeds if ((time - dayz_spawnWait) > dayz_spawnDelay) then { - if (dayz_spawnZombies < _maxZombies) then { - if (_spawnZombies) then { - //hintSilent format["Spawning %1 / %2
total: %3 ",dayz_spawnZombies,_maxZombies,count (_position nearEntities ["zZombie_Base",_radius+100])]; - [_radius, _position, _inVehicle, _dateNow, _age, _locationstypes, _nearestCity, _maxZombies] call player_spawnzedCheck; + if (dayz_maxCurrentZeds < dayz_maxZeds) then { + if (dayz_CurrentZombies < dayz_maxGlobalZombies) then { + if (dayz_spawnZombies < dayz_maxLocalZombies) then { + //[_radius, _position, _inVehicle, _dateNow, _age, _locationstypes, _nearestCity, _maxZombies] call player_spawnzedCheck; + _zombied = (_x getVariable ["zombieSpawn",-0.1]); + _dateNow = (DateToNumber date); + _age = (_dateNow - _zombied) * 525948; + if (_age > 3) then { + _x setVariable ["zombieSpawn",_dateNow,true]; + [_x] call building_spawnZombies; + }; + } else { + dayz_spawnWait = time; + }; }; - } else { - //hintSilent format["Waiting %1 / %2
total: %3",dayz_spawnZombies,_maxZombies,count (_position nearEntities ["zZombie_Base",_radius+100])]; - dayz_spawnWait = time; - dayz_spawnZombies = 0; }; }; } forEach _nearby; \ No newline at end of file diff --git a/dayz_code/compile/player_spawnzedCheck.sqf b/dayz_code/compile/player_spawnzedCheck.sqf index db02def58..c77d38649 100644 --- a/dayz_code/compile/player_spawnzedCheck.sqf +++ b/dayz_code/compile/player_spawnzedCheck.sqf @@ -9,11 +9,6 @@ _locationstypes = _this select 5; _nearestCity = _this select 6; _maxZombies = _this select 7; -/* -if (_inVehicle) then { - _maxZombies = _maxZombies / 2; -}; -*/ _zombied = (_x getVariable ["zombieSpawn",-0.1]); _dateNow = (DateToNumber date); diff --git a/dayz_code/compile/player_updateGui.sqf b/dayz_code/compile/player_updateGui.sqf index c082f8ace..746284c64 100644 --- a/dayz_code/compile/player_updateGui.sqf +++ b/dayz_code/compile/player_updateGui.sqf @@ -128,6 +128,8 @@ if (_foodVal < 0.2) then { if (_tempVal > 0.8) then { //TeeChange _ctrlTemp call player_guiControlFlash; +} else { + _ctrlTemp ctrlShow true; }; if (r_player_injured) then { diff --git a/dayz_code/compile/player_zombieAttack.sqf b/dayz_code/compile/player_zombieAttack.sqf index 8b706ec85..2f6c6dd8f 100644 --- a/dayz_code/compile/player_zombieAttack.sqf +++ b/dayz_code/compile/player_zombieAttack.sqf @@ -32,8 +32,17 @@ if (_vehicle != player) then { _damage = random 0.08; _chance = round(random 12); + if ((_chance % 4) == 0) then { + _openVehicles = ["ATV_Base_EP1", "Motorcycle", "Bicycle"]; + { + if (_vehicle isKindOf _x) exitWith { + player action ["eject", _vehicle]; + }; + } forEach _openVehicles; + }; + if ((_wound == "Glass1") or (_wound == "Glass2") or (_wound == "Glass3") or (_wound == "Glass4") or (_wound == "Glass5") or (_wound == "Glass6")) then { - [_unit,"hit",2,true] call dayz_zombieSpeak; + [_unit,"hit",4,false] call dayz_zombieSpeak; _strH = "hit_" + (_wound); _dam = _vehicle getVariable [_strH,0]; _total = (_dam + _damage); @@ -42,9 +51,6 @@ if (_vehicle != player) then { //["dayzHitV",[_vehicle, _wound,_total, _unit,"zombie"]] call broadcastRpcCallAll; if (_total >= 1) then { - if ((_chance % 4) == 0) then { - if ((_vehicle isKindOf "ATV_Base_EP1") or (_vehicle isKindOf "Motorcycle")) then { player action ["eject", _vehicle] }; - }; if (r_player_blood < (r_player_bloodTotal * 0.8)) then { _cnt = count (DAYZ_woundHit select 1); _index = floor (random _cnt); @@ -61,14 +67,20 @@ if (_vehicle != player) then { [player, _wound, _damage, _unit,"zombie"] call fnc_usec_damageHandler; //dayzHit = [player,_wound, _damage, _unit,"zombie"]; //publicVariable "dayzHit"; - [_unit,"hit",2,true] call dayz_zombieSpeak; + [_unit,"hit",2,false] call dayz_zombieSpeak; } else { - ["dayzHitV",[_vehicle, _wound,_total, _unit,"zombie"]] call broadcastRpcCallAll; + //["dayzHitV",[_vehicle, _wound, _total, _unit,"zombie"]] call broadcastRpcCallAll; + dayzHitV = [_vehicle, _wound, _total, _unit,"zombie"]; + publicVariable "dayzHitV"; }; }; } else { //Did he hit? - if ((_unit distance player) <= 3) then { + //_currentAnim = animationState _unit; + //diag_log ("Animation state: " +(_currentAnim)); + //"amovpercmstpsnonwnondnon", + _attackanimations = ["zombiestandingattack1","zombiestandingattack2","zombiestandingattack3","zombiestandingattack4","zombiestandingattack5","zombiestandingattack6","zombiestandingattack7","zombiestandingattack8","zombiestandingattack9","zombiestandingattack10","zombiefeed1","zombiefeed2","zombiefeed3","zombiefeed4","zombiefeed5"]; + if (((_unit distance player) <= 3) and ((animationState _unit) in _attackanimations)) then { //check LOS private[]; _tPos = (getPosASL _vehicle); @@ -78,32 +90,24 @@ if (_vehicle != player) then { //LOS check _cantSee = [_unit,_vehicle] call dayz_losCheck; if (!_cantSee) then { - if (_type == "dog") then { - _cnt = count (DAYZ_woundHit_dog select 1); + if (r_player_blood < (r_player_bloodTotal * 0.8)) then { + _cnt = count (DAYZ_woundHit select 1); _index = floor (random _cnt); - _index = (DAYZ_woundHit_dog select 1) select _index; - _wound = (DAYZ_woundHit_dog select 0) select _index; - _damage = 0.3 + random (1.0); + _index = (DAYZ_woundHit select 1) select _index; + _wound = (DAYZ_woundHit select 0) select _index; } else { - if (r_player_blood < (r_player_bloodTotal * 0.8)) then { - _cnt = count (DAYZ_woundHit select 1); - _index = floor (random _cnt); - _index = (DAYZ_woundHit select 1) select _index; - _wound = (DAYZ_woundHit select 0) select _index; - } else { - _cnt = count (DAYZ_woundHit_ok select 1); - _index = floor (random _cnt); - _index = (DAYZ_woundHit_ok select 1) select _index; - _wound = (DAYZ_woundHit_ok select 0) select _index; - }; - _damage = 0.1 + random (1.2); + _cnt = count (DAYZ_woundHit_ok select 1); + _index = floor (random _cnt); + _index = (DAYZ_woundHit_ok select 1) select _index; + _wound = (DAYZ_woundHit_ok select 0) select _index; }; + _damage = 0.1 + random (1.2); //diag_log ("START DAM: Player Hit on " + _wound + " for " + str(_damage)); [player, _wound, _damage, _unit,"zombie"] call fnc_usec_damageHandler; //dayzHit = [player,_wound, _damage, _unit,"zombie"]; //publicVariable "dayzHit"; - [_unit,"hit",2,true] call dayz_zombieSpeak; + [_unit,"hit",2,false] call dayz_zombieSpeak; } else { /* _isZombieInside = [_unit,_building] call fnc_isInsideBuilding; @@ -113,7 +117,7 @@ if (_vehicle != player) then { [player, _wound, _damage, _unit,"zombie"] call fnc_usec_damageHandler; //dayzHit = [player,_wound, _damage, _unit,"zombie"]; //publicVariable "dayzHit"; - [_unit,"hit",2,true] call dayz_zombieSpeak; + [_unit,"hit",2,false] call dayz_zombieSpeak; }; */ }; diff --git a/dayz_code/compile/player_zombieCheck.sqf b/dayz_code/compile/player_zombieCheck.sqf index 4eee53e26..68589551e 100644 --- a/dayz_code/compile/player_zombieCheck.sqf +++ b/dayz_code/compile/player_zombieCheck.sqf @@ -1,28 +1,23 @@ private["_listTalk","_isZombie","_group","_eyeDir","_attacked","_continue","_type","_chance","_last","_audial","_distance","_refObj","_list","_scaleMvmt","_scalePose","_scaleLight","_anim","_activators","_nearFire","_nearFlare","_scaleAlert","_inAngle","_scaler","_initial","_tPos","_zPos","_cantSee"]; _refObj = vehicle player; -_listTalk = (position _refObj) nearEntities ["zZombie_Base",200]; +_listTalk = (getPos _refObj) nearEntities ["zZombie_Base",80]; _pHeight = (getPosATL _refObj) select 2; _attacked = false; -_multiplier = 1; +//_multiplier = 1; + +//Old System { _continue = true; - - if (typeOf _x == "DZ_Fin" || typeOf _x == "DZ_Pastor") then { _type = "dog"; } else { _type = "zombie"; }; - //check if untamed dog; - if (_type == "dog") then { - _multiplier = 2; - if ((_x getVariable ["characterID", "0"] == "0") || (_x getVariable ["state", "passive"] == "passive") || (_x getVariable ["characterID", "0"] == dayz_characterID)) then { - _continue = false; - }; - }; - + _type = "zombie"; + _targets = _group getVariable ["targets",[]]; + if (alive _x && _continue) then { private["_dist"]; _dist = (_x distance _refObj); _group = _x; - _chance = 1; + _chance = 1; if ((_x distance player < dayz_areaAffect) and !(animationState _x == "ZombieFeed")) then { if (_type == "zombie") then { [_x,"attack",(_chance),true] call dayz_zombieSpeak; }; //perform an attack @@ -31,50 +26,43 @@ _multiplier = 1; _delta = _pHeight - _entHeight; if ( ((time - _last) > 1) and ((_delta < 1.5) and (_delta > -1.5)) ) then { zedattack = [_x, _type] spawn player_zombieAttack; - _x setVariable["lastAttack",time]; + _x setVariable["lastAttack",time]; }; _attacked = true; } else { if (_type == "zombie") then { - if (speed _x < 4) then { - [_x,"idle",(_chance + 4),true] call dayz_zombieSpeak; - } else { - [_x,"chase",(_chance + 3),true] call dayz_zombieSpeak; + if (speed _x < 4) then { + [_x,"idle",(_chance + 4),true] call dayz_zombieSpeak; + } else { + [_x,"chase",(_chance + 3),true] call dayz_zombieSpeak; }; }; }; + //Noise Activation - _targets = _group getVariable ["targets",[]]; if (!(_refObj in _targets)) then { if (_dist < DAYZ_disAudial) then { if (DAYZ_disAudial > 80) then { - _targets set [count _targets, driver _refObj]; - _group setVariable ["targets",_targets,true]; + if (!(_refObj in _targets)) then { + _targets set [count _targets, driver _refObj]; + _group setVariable ["targets",_targets,true]; + }; } else { - _chance = [_x,_dist,DAYZ_disAudial] call dayz_losChance; - //diag_log ("Visual Detection: " + str([_x,_dist]) + " " + str(_chance)); - if ((random 1) < _chance) then { - _cantSee = [_x,_refObj] call dayz_losCheck; - if (!_cantSee) then { + if (_dist < (DAYZ_disAudial / 2)) then { + if (!(_refObj in _targets)) then { _targets set [count _targets, driver _refObj]; _group setVariable ["targets",_targets,true]; - } else { - if (_dist < (DAYZ_disAudial / 2)) then { - _targets set [count _targets, driver _refObj]; - _group setVariable ["targets",_targets,true]; - }; }; }; }; }; }; //Sight Activation - _targets = _group getVariable ["targets",[]]; if (!(_refObj in _targets)) then { if (_dist < DAYZ_disVisual) then { - _chance = [_x,_dist,DAYZ_disVisual] call dayz_losChance; - //diag_log ("Visual Detection: " + str([_x,_dist]) + " " + str(_chance)); - if ((random 1) < _chance) then { + //_chance = [_x,_dist,DAYZ_disVisual] call dayz_losChance; + //diag_log ("Visual Detection: m" + str([_x,_dist]) + " " + str(_chance)); + //if ((random 1) < _chance) then { //diag_log ("Chance Detection"); _tPos = (getPosASL _refObj); _zPos = (getPosASL _x); @@ -82,21 +70,236 @@ _multiplier = 1; _eyeDir = direction _x; _inAngle = [_zPos,_eyeDir,30,_tPos] call fnc_inAngleSector; if (_inAngle) then { - //diag_log ("In Angle"); //LOS check _cantSee = [_x,_refObj] call dayz_losCheck; //diag_log ("LOS Check: " + str(_cantSee)); if (!_cantSee) then { //diag_log ("Within LOS! Target"); - _targets set [count _targets, driver _refObj]; - _group setVariable ["targets",_targets,true]; + if (!(_refObj in _targets)) then { + _targets set [count _targets, driver _refObj]; + _group setVariable ["targets",_targets,true]; + }; }; }; + //}; + }; + }; + }; + //diag_log ("Targets Array: " +str(_targets)); +} forEach _listTalk; + + +// New Systems +/* +{ + _continue = true; + _type = "zombie"; + _targets = _group getVariable ["targets",[]]; + +if (alive _x and _continue) then + { + if (local _x) then + { + private["_dist"]; + _dist = (_x distance _refObj); + + _chance = 1; + if ((_dist < dayz_areaAffect) and !(animationState _x == "ZombieFeed")) then + { + if (_type == "zombie") then { [_x,"attack",(_chance),true] call dayz_zombieSpeak; }; + //perform an attack + _last = _x getVariable["lastAttack",0]; + _entHeight = (getPosATL _x) select 2; + _delta = _pHeight - _entHeight; + if ( ((time - _last) > 1) and ((_delta < 1.5) and (_delta > -1.5)) ) then + { + [_x, _type] spawn player_zombieAttack; + _x setVariable["lastAttack",time]; + }; + _attacked = true; + } + else + { + if (_type == "zombie") then + { + if (speed _x < 4) then + { + [_x,"idle",(_chance + 4),true] call dayz_zombieSpeak; + } + else + { + [_x,"chase",(_chance + 3),true] call dayz_zombieSpeak; + }; + }; + }; + //Noise Activation + _target = _x getVariable ["target",[]]; + if (!(_refObj in _target)) then + { + if (_dist < DAYZ_disAudial) then + { + if (DAYZ_disAudial > 80) then + { + _target set [count _target,(driver _refObj)]; + _x setVariable ["target",_target]; + } + else + { + // _chance = [_x,_dist,DAYZ_disAudial] call dayz_losChance; + //diag_log ("Visual Detection: " + str([_x,_dist]) + " " + str(_chance)); + // if ((random 1) < _chance) then { + _cantSee = [_x,_refObj] call dayz_losCheck; + if (!_cantSee) then + { + _target set [count _target,(driver _refObj)]; + _x setVariable ["target",_target]; + } + else + { + if (_dist < (DAYZ_disAudial / 2)) then + { + _target set [count _target,(driver _refObj)]; + _x setVariable ["target",_target]; + }; + }; + //}; + }; + }; + }; + //Sight Activation + _target = _x getVariable ["target",[]]; + if (!(_refObj in _target)) then + { + if (_dist < DAYZ_disVisual) then + { + _chance = [_x,_dist,DAYZ_disVisual] call dayz_losChance; + //diag_log ("Visual Detection: " + str([_x,_dist]) + " " + str(_chance)); + //if ((random 1) < _chance) then { + //diag_log ("Chance Detection"); + _tPos = (getPosASL _refObj); + _zPos = (getPosASL _x); + //_eyeDir = _x call dayz_eyeDir; + _eyeDir = direction _x; + _inAngle = [_zPos,_eyeDir,30,_tPos] call fnc_inAngleSector; + if (_inAngle) then + { + //diag_log ("In Angle"); + //LOS check + _cantSee = [_x,_refObj] call dayz_losCheck; + //diag_log ("LOS Check: " + str(_cantSee)); + if (!_cantSee) then + { + _target set [count _target,(driver _refObj)]; + _x setVariable ["target",_target]; + }; + }; + //}; + }; + }; + } + else + { + private["_dist"]; + _dist = (_x distance _refObj); + + _chance = 1; + if ((_x distance player < dayz_areaAffect) and !(animationState _x == "ZombieFeed")) then + { + if (_type == "zombie") then { [_x,"attack",(_chance),true] call dayz_zombieSpeak; }; + //perform an attack + _last = _x getVariable["lastAttack",0]; + _entHeight = (getPosATL _x) select 2; + _delta = _pHeight - _entHeight; + if ( ((time - _last) > 1) and ((_delta < 1.5) and (_delta > -1.5)) ) then + { + [_x, _type] spawn player_zombieAttack; + _x setVariable["lastAttack",time]; + }; + _attacked = true; + } + else + { + if (_type == "zombie") then + { + if (speed _x < 4) then + { + [_x,"idle",(_chance + 4),true] call dayz_zombieSpeak; + } + else + { + [_x,"chase",(_chance + 3),true] call dayz_zombieSpeak; + }; + }; + }; + //Noise Activation + _targets = _x getVariable ["targets",[]]; + if (!(_refObj in _targets)) then + { + if (_dist < DAYZ_disAudial) then + { + if (DAYZ_disAudial > 80) then + { + _targets set [count _targets,(driver _refObj)]; + _x setVariable ["targets",_targets,true]; + } + else + { + //_chance = [_x,_dist,DAYZ_disAudial] call dayz_losChance; + //diag_log ("Visual Detection: " + str([_x,_dist]) + " " + str(_chance)); + //if ((random 1) < _chance) then { + _cantSee = [_x,_refObj] call dayz_losCheck; + if (!_cantSee) then + { + _targets set [count _targets,(driver _refObj)]; + _x setVariable ["targets",_targets,true]; + } + else + { + if (_dist < (DAYZ_disAudial / 2)) then + { + _targets set [count _targets,(driver _refObj)]; + _x setVariable ["targets",_targets,true]; + }; + }; + //}; + }; + }; + }; + //Sight Activation + _targets = _x getVariable ["targets",[]]; + if (!(_refObj in _targets)) then + { + if (_dist < DAYZ_disVisual) then + { + //_chance = [_x,_dist,DAYZ_disVisual] call dayz_losChance; + //diag_log ("Visual Detection: " + str([_x,_dist]) + " " + str(_chance)); + //if ((random 1) < _chance) then { + //diag_log ("Chance Detection"); + _tPos = (getPosASL _refObj); + _zPos = (getPosASL _x); + //_eyeDir = _x call dayz_eyeDir; + _eyeDir = direction _x; + _inAngle = [_zPos,_eyeDir,30,_tPos] call fnc_inAngleSector; + if (_inAngle) then + { + //diag_log ("In Angle"); + //LOS check + _cantSee = [_x,_refObj] call dayz_losCheck; + //diag_log ("LOS Check: " + str(_cantSee)); + if (!_cantSee) then + { + //diag_log ("Within LOS! Target"); + _targets set [count _targets,(driver _refObj)]; + _x setVariable ["targets",_targets,true]; + }; + }; + //}; }; }; }; }; } forEach _listTalk; +*/ if (_attacked) then { if (r_player_unconscious) then { diff --git a/dayz_code/compile/spawn_loot.sqf b/dayz_code/compile/spawn_loot.sqf index 06a60dc12..bd6ee1b1f 100644 --- a/dayz_code/compile/spawn_loot.sqf +++ b/dayz_code/compile/spawn_loot.sqf @@ -1,8 +1,9 @@ -+private["_iItem","_iClass","_iPos","_radius","_itemTypes","_index","_item","_qty","_max","_tQty","_canType","_weights","_cntWeights","_dateNow"]; +private["_iItem","_iClass","_iPos","_radius","_itemTypes","_index","_item","_qty","_max","_tQty","_canType","_weights","_cntWeights","_dateNow"]; _iItem = _this select 0; _iClass = _this select 1; _iPos = _this select 2; _radius = _this select 3; + switch (_iClass) do { default { //Item is food, add random quantity of cans along with an item (if exists) @@ -32,6 +33,7 @@ switch (_iClass) do { _item addWeaponCargoGlobal [_iItem,1]; _mags = [] + getArray (configFile >> "cfgWeapons" >> _iItem >> "magazines"); if ((count _mags) > 0) then { + if (_mags select 0 == "Quiver") then { _mags set [0, "WoodenArrow"] }; // Prevent spawning a Quiver _item addMagazineCargoGlobal [(_mags select 0), (round(random 2))]; }; }; diff --git a/dayz_code/compile/vehicle_handleDamage.sqf b/dayz_code/compile/vehicle_handleDamage.sqf index 54fa82c2d..dc3bcefec 100644 --- a/dayz_code/compile/vehicle_handleDamage.sqf +++ b/dayz_code/compile/vehicle_handleDamage.sqf @@ -23,7 +23,13 @@ if (_dam < 1 ) then { _unit setVariable [_strH,_total,true]; if ( !_needUpdate ) then { _unit setVariable ["needUpdate",true,true]; - ["dayzUpdateVehicle",[_unit,"damage"]] call callRpcProcedure; + //["dayzUpdateVehicle",[_unit,"damage"]] call callRpcProcedure; + if (isServer) then { + [_unit, "damage"] call server_updateObject; + } else { + dayzUpdateVehicle = [_unit,"damage"]; + publicVariable "dayzUpdateVehicle"; + }; }; }; }; diff --git a/dayz_code/compile/vehicle_handleKilled.sqf b/dayz_code/compile/vehicle_handleKilled.sqf index 03b2a5a4c..38def0e99 100644 --- a/dayz_code/compile/vehicle_handleKilled.sqf +++ b/dayz_code/compile/vehicle_handleKilled.sqf @@ -9,7 +9,13 @@ _hitPoints = _unit call vehicle_getHitpoints; _unit setVariable [_selection, 1, true]; } forEach _hitPoints; -["dayzUpdateVehicle",[_unit, "damage", true]] call callRpcProcedure; +//["dayzUpdateVehicle",[_unit, "damage"]] call callRpcProcedure; +if (isServer) then { + [_unit, "killed"] call server_updateObject; +} else { + dayzUpdateVehicle = [_unit, "killed"]; + publicVariable "dayzUpdateVehicle"; +}; _unit removeAllEventHandlers "HandleDamage"; _unit removeAllEventHandlers "Killed"; diff --git a/dayz_code/compile/wild_spawnZombies.sqf b/dayz_code/compile/wild_spawnZombies.sqf index 8f006632b..663f8a676 100644 --- a/dayz_code/compile/wild_spawnZombies.sqf +++ b/dayz_code/compile/wild_spawnZombies.sqf @@ -1,10 +1,5 @@ private["_position","_doLoiter","_unitTypes","_isNoone","_loot","_array","_agent","_type","_radius","_method","_nearByPlayer","_attempt","_myDest","_newDest","_lootType"]; -_position = _this select 0; -_maxZombies = _this select 1; - -_totalzeds = dayz_spawnZombies; - -diag_log ("totalzeds" +str"_totalzeds"); +_player = _this select 0; _unitTypes = []+ getArray (configFile >> "CfgBuildingLoot" >> "Default" >> "zombieClass"); _doLoiter = true; @@ -14,18 +9,13 @@ _agent = objNull; _type = _unitTypes call BIS_fnc_selectRandom; -diag_log ("Wild Loaded"); - //Create the Group and populate it //diag_log ("Spawned: " + _type); _radius = 40; _method = "NONE"; -_nearByPlayer = ({isPlayer _x} count (_position nearEntities ["CAManBase",30])) > 0; +_position = [_player,120,200,10,0,0,0] call BIS_fnc_findSafePos; -if (_nearByPlayer) then { - _position = [_position,55,100,10,0,0,0] call BIS_fnc_findSafePos; -}; _agent = createAgent [_type, _position, [], _radius, _method]; if (_doLoiter) then { @@ -41,9 +31,6 @@ if (random 1 > 0.7) then { _agent setUnitPos "Middle"; }; -//diag_log ("CREATED: " + str(_agent)); - - if (isNull _agent) exitWith { dayz_spawnZombies = dayz_spawnZombies - 1; }; @@ -71,6 +58,4 @@ if (_rnd > 0.3) then { }; //Start behavior -_id = [_position,_agent] execFSM "\z\AddOns\dayz_code\system\zombie_agent.fsm"; - -diag_log ("Wild Ended"); \ No newline at end of file +_id = [_position,_agent] execFSM "\z\AddOns\dayz_code\system\zombie_agent.fsm"; \ No newline at end of file diff --git a/dayz_code/compile/zombie_findTargetAgent.sqf b/dayz_code/compile/zombie_findTargetAgent.sqf index 9f68d0af6..f3640e04f 100644 --- a/dayz_code/compile/zombie_findTargetAgent.sqf +++ b/dayz_code/compile/zombie_findTargetAgent.sqf @@ -1,35 +1,45 @@ private["_agent","_target","_targets","_targetDis","_c","_man","_manDis","_targets","_agent","_agentheight","_nearEnts","_rnd","_assigned","_range","_objects"]; _agent = _this; _target = objNull; +/* +_local = []; +_remote = []; +*/ _targets = []; _targetDis = []; -_range = 300; +_range = 120; _manDis = 0; +_refobj = vehicle player; -_targets = _agent getVariable ["targets",[]]; /* -//Search for fires -if (count _targets == 0) then { - _fires = nearestObjects [_agent,["Land_Fire"],_range]; - { - private["_dis"]; - _dis = _x distance _agent; - _rnd = random 1; - if ((_dis < _range) and (inflamed _x) and !(_x in _targets) and (_rnd < 0.5)) then { - _targets set [count _targets,_x]; - _targetDis set [count _targetDis,_dis]; - }; - } forEach _fires; +_local = _agent getVariable ["target",[]]; +//diag_log ("Local is: " + str(_local)); +_remote = _agent getVariable ["targets",[]]; +//diag_log ("Remote is: " + str(_remote)); + +if (count _remote == 0) then +{ + _targets = _local; + //diag_log ("Targets is: " + str(_targets)); +} +else +{ + _targets = _local + _remote; + //diag_log ("Local + Remote targets is: " + str(_targets)); }; */ +_targets = _agent getVariable ["targets",[]]; + if (isNil "_targets") exitWith {}; //Search for objects -if (count _targets == 0) then { - _objects = nearestObjects [_agent,["ThrownObjects","GrenadeHandTimedWest","SmokeShell"],_range]; +if (count _targets == 0) then +{ + _objects = nearestObjects [_agent,["ThrownObjects","GrenadeHandTimedWest","SmokeShell"],50]; { private["_dis"]; - if (!(_x in _targets)) then { + if (!(_x in _targets)) then + { _targets set [count _targets,_x]; _targetDis set [count _targetDis,_dis]; }; @@ -37,28 +47,37 @@ if (count _targets == 0) then { }; //Find best target -if (count _targets > 0) then { +if (count _targets > 0) then +{ _man = _targets select 0; _manDis = _man distance _agent; - //diag_log (str(_man) + str(_manDis)); { private["_dis"]; _dis = _x distance _agent; - if (_dis < _manDis) then { + if (_dis < _manDis) then + { _man = _x; _manDis = _dis; }; - if (_x isKindOf "SmokeShell") then { + if (_dis > _range) then + { + _targets = _targets - [_x]; + }; + if (_x isKindOf "SmokeShell") then + { _man = _x; _manDis = _dis; }; } forEach _targets; + _target = _man; }; //Check if too far -if (_manDis > _range) then { +if (_manDis > _range) then +{ _targets = _targets - [_target]; _target = objNull; }; -_target; \ No newline at end of file + +_target diff --git a/dayz_code/compile/zombie_generate.sqf b/dayz_code/compile/zombie_generate.sqf index 9f958f8e2..9fa8e387c 100644 --- a/dayz_code/compile/zombie_generate.sqf +++ b/dayz_code/compile/zombie_generate.sqf @@ -1,9 +1,13 @@ private["_position","_doLoiter","_unitTypes","_isNoone","_loot","_array","_agent","_type","_radius","_method","_nearByPlayer","_attempt","_myDest","_newDest","_lootType"]; _position = _this select 0; -_unitTypes = _this select 1; -_doLoiter = true; +_doLoiter = _this select 1; +_unitTypes = _this select 2; -_isNoone = {isPlayer _x} count (_position nearEntities ["CAManBase",30]) == 0; +if (dayz_maxCurrentZeds > dayz_maxZeds) exitwith {}; +if (dayz_CurrentZombies > dayz_maxGlobalZombies) exitwith {}; +if (dayz_spawnZombies > dayz_maxLocalZombies) exitwith {}; + +_isNoone = {isPlayer _x} count (_position nearEntities [["AllVehicles","CAManBase"],30]) == 0; _loot = ""; _array = []; _agent = objNull; @@ -27,13 +31,6 @@ if (_doLoiter) then { //diag_log ("Spawned: " + str([_type, _position, [], _radius, _method])); _agent = createAgent [_type, _position, [], _radius, _method]; -/* -if(!(_agent == objNull)) then { - dayzSpawnZed = [_agent]; - publicVariableServer "dayzSpawnZed"; -}; -*/ - if (_doLoiter) then { _agent setPosATL _position; //_agent setVariable ["doLoiter",true,true]; @@ -45,31 +42,38 @@ dayz_spawnZombies = dayz_spawnZombies + 1; //diag_log ("CREATE INFECTED: " + str(_this)); _position = getPosATL _agent; -_nearByPlayer = ({isPlayer _x} count (_position nearEntities ["CAManBase",30])) > 0; +_nearByPlayer = ({isPlayer _x} count (_position nearEntities [["AllVehicles","CAManBase"],30]) > 0); if (random 1 > 0.7) then { _agent setUnitPos "Middle"; }; //diag_log ("CREATED: " + str(_agent)); - - - +if (_nearByPlayer) then { + deleteVehicle _agent; +}; +/* //_agent setVariable["host",player,true]; -if (_doLoiter) then { +if (!_doLoiter) then { + _agent setPosATL _position; + _agent setDir round(random 180); + if (_nearByPlayer) then { + deleteVehicle _agent; + }; +} else { if (_nearByPlayer) then { _attempt = 0; while {_nearByPlayer} do { _position = [_position,0,20,10,0,20,0] call BIS_fnc_findSafePos; _agent setPos _position; - _nearByPlayer = ({isPlayer _x} count (_position nearEntities ["CAManBase",30])) > 0; + _nearByPlayer = ({isPlayer _x} count (_position nearEntities ["CAManBase",30]) > 0); _attempt = _attempt + 1; if (_attempt > 10) exitWith {}; }; _agent setPos _position; }; }; - +*/ if (isNull _agent) exitWith { dayz_spawnZombies = dayz_spawnZombies - 1; }; @@ -89,7 +93,6 @@ if (_rnd > 0.3) then { _array = []+ getArray (configFile >> "cfgLoot" >> getText(_lootType)); if (count _array > 0) then { _loot = _array call BIS_fnc_selectRandomWeighted; - //diag_log ("Zed Loot: " +(_loot)); if(!isNil "_array") then { _agent addMagazine _loot; }; diff --git a/dayz_code/compile/zombie_loiter.sqf b/dayz_code/compile/zombie_loiter.sqf index 7ab163347..ffaf607c8 100644 --- a/dayz_code/compile/zombie_loiter.sqf +++ b/dayz_code/compile/zombie_loiter.sqf @@ -2,13 +2,26 @@ private["_unit","_originalPos","_pos"]; _unit = _this select 0; _originalPos = _this select 1; _pos = getPosATL _unit; +_playerpos = getPos player; if (count _this > 2) then { _pos = _this select 2; } else { //_unit enableAI "MOVE"; //_unit enableAI "ANIM"; + + _chance = round(random 12); + if ((_chance % 4) == 0) then { + //_Offset = [0,0,0]; + //_playerworldPos = _playerpos modelToWorld _Offset; + _pos = [_playerpos,30,120,4,0,5,0] call BIS_fnc_findSafePos; + } else { _pos = [_originalPos,10,90,4,0,5,0] call BIS_fnc_findSafePos; + }; + + if (_unit distance player > 250) then { + _pos = [_playerpos,120,200,4,0,5,0] call BIS_fnc_findSafePos; + }; }; if(isNull group _unit) then { diff --git a/dayz_code/config.cpp b/dayz_code/config.cpp index ca0cbcd79..809b6a9d2 100644 --- a/dayz_code/config.cpp +++ b/dayz_code/config.cpp @@ -22,6 +22,13 @@ class CfgPatches { requiredVersion = 0.1; requiredAddons[] = {"dayz_equip","dayz_weapons","CAMisc3","CABuildingParts","CABuildingParts_Signs","CAStructuresHouse","CAStructuresLand_Ind_Stack_Big","CAStructures_Misc_Powerlines","CAStructures","CABuildings","CABuildings2","Ind_MalyKomin","CAStructures_A_CraneCon","CAStructures_Mil","CAStructures_Nav","CAStructures_Rail","A_Crane_02","A_TVTower","CAStructures_Railway","CAStructuresHouse","CAStructuresHouse_HouseBT"}; }; + class DZ_DebriefingRemoved + { + units[] = {}; + weapons[] = {}; + requiredVersion = 0.1; + requiredAddons[] = {"CAUI"}; + }; }; class CfgMods { @@ -33,10 +40,36 @@ class CfgMods hidePicture = 0; hideName = 0; action = "http://www.dayzepoch.com"; - version = "0.98"; + version = "0.981"; hiveVersion = 0.96; //0.93 }; + class DZ_InitWorld + { + units[] = {}; + weapons[] = {}; + requiredVersion = 0.1; + requiredAddons[] = {"Chernarus"}; + }; }; + + +class CfgMissions +{ + class Cutscenes + { + class ChernarusIntro1 + { + directory = "z\addons\dayz_code\cfgworlds\intro.Chernarus"; + }; + }; +}; + +class CfgWorlds +{ + initWorld = "Chernarus"; + demoWorld = "Chernarus"; +}; + class CfgAddons { access = 1; @@ -57,11 +90,11 @@ class CfgAISkill { aimingshake[] = {0, 0, 1, 1}; aimingspeed[] = {0, 0, 1, 1}; commanding[] = {0, 0, 1, 1}; - courage[] = {0, 0, 1, 1}; + courage[] = {0, 1, 1, 1}; endurance[] = {0, 0, 1, 1}; general[] = {0, 0, 1, 1}; reloadspeed[] = {0, 0, 1, 1}; - spotdistance[] = {0, 0, 1, 1}; + spotdistance[] = {0, 0, 1, 0.6}; spottime[] = {0, 0, 1, 1}; }; @@ -72,6 +105,7 @@ class CfgInGameUI cueColor[] = {0,0,0,0}; }; + class MPTable { color[] = {0,0,0,0}; //{0.7,0.7,0.7,1}; @@ -183,6 +217,7 @@ class RscStructuredTextGUI: RscStructuredText #include "CfgMagazines.hpp" #include "cfgLoot.hpp" #include "CfgMarkers.hpp" +#include "CfgAmmo.hpp" class CfgSurvival { class Inventory { @@ -399,15 +434,17 @@ class CfgBuildingLoot { { "LeeEnfield","weapon" }, { "revolver_EP1","weapon" }, - {"DZ_Patrol_Pack_EP1","object"}, //8 {"DZ_Assault_Pack_EP1","object"}, // 12 {"DZ_Czech_Vest_Puch","object"}, // 12-0 + {"DZ_ALICE_Pack_EP1","object"}, // 16 + {"DZ_TK_Assault_Pack_EP1","object"}, // 16 + {"DZ_British_ACU","object"}, // 18 { "Winchester1866","weapon" }, { "WeaponHolder_ItemTent","object" }, { "","military" }, { "","trash" }, - { "Crossbow","weapon" }, + {"Crossbow_DZ","weapon"}, { "Binocular","weapon" }, { "PartWoodPile","magazine" }, { "Skin_Camo1_DZ","magazine" }, @@ -435,9 +472,11 @@ class CfgBuildingLoot { 2, 0.06, 0.04, - 0.04, //8 - 0.01, //12 - 0.03, //12-0 + 0.05, //12 + 0.04, // 12-0 + 0.02, //16 + 0.02, //16 + 0.01, //18 0.01, 0.01, 0.03, @@ -450,10 +489,10 @@ class CfgBuildingLoot { 0.08, 0.03, 0.01, - 0.01, - 0.01, - 0.01, - 0.01, + 0.02, + 0.03, + 0.02, + 0.02, 0.05, }; }; @@ -517,11 +556,12 @@ class CfgBuildingLoot { { "LeeEnfield","weapon" }, { "Winchester1866","weapon" }, { "","trash" }, - { "Crossbow","weapon" }, + {"Crossbow_DZ","weapon"}, { "PartWoodPile","magazine" }, { "WeaponHolder_ItemHatchet","object" }, { "MR43","weapon" }, - {"TrapBear","magazine"} + {"TrapBear","magazine"}, + {"WeaponHolder_ItemMachete"} }; itemChance[] = { 0.06, @@ -534,7 +574,8 @@ class CfgBuildingLoot { 0.11, 0.17, 0.06, - 0.01 + 0.01, + 0.03 }; }; class Supermarket: Default { @@ -556,15 +597,17 @@ class CfgBuildingLoot { { "LeeEnfield","weapon" }, { "revolver_EP1","weapon" }, - {"DZ_Patrol_Pack_EP1","object"}, //8 {"DZ_Assault_Pack_EP1","object"}, // 12 {"DZ_Czech_Vest_Puch","object"}, // 12-0 + {"DZ_ALICE_Pack_EP1","object"}, // 16 + {"DZ_TK_Assault_Pack_EP1","object"}, // 16 + {"DZ_British_ACU","object"}, // 18 { "Winchester1866","weapon" }, { "WeaponHolder_ItemTent","object" }, { "","food" }, { "","trash" }, - { "Crossbow","weapon" }, + {"Crossbow_DZ","weapon"}, { "Binocular","weapon" }, { "PartWoodPile","magazine" }, {"MR43","weapon"} @@ -581,9 +624,11 @@ class CfgBuildingLoot { 0.05, 0.01, 0.01, - 0.04, //8 - 0.01, //12 - 0.03, // 12-0 + 0.05, //12 + 0.04, // 12-0 + 0.02, //16 + 0.02, //16 + 0.01, //18 0.01, 0.01, 0.3, @@ -609,8 +654,7 @@ class CfgBuildingLoot { { "BAF_AS50_scoped","weapon" }, { "Mk_48_DZ","weapon" }, { "M249_DZ","weapon" }, - //{"BAF_L85A2_RIS_CWS","weapon"}, - {"BAF_L85A2_RIS_Holo","weapon"}, + {"BAF_L85A2_RIS_SUSAT","weapon"}, { "DMR","weapon" }, { "","military" }, { "","medical" }, @@ -641,7 +685,7 @@ class CfgBuildingLoot { 0.01, //{"BAF_AS50_scoped","weapon"}, 0.03, //{"Mk_48_DZ","weapon"}, 0.05, //{"M249_DZ","weapon"}, - 0.01, //{"BAF_L85A2_RIS_CWS","weapon"}, BAF_L85A2_RIS_Holo + 0.01, //{"BAF_L85A2_RIS_SUSAT","weapon"}, 0.06, //{"DMR","weapon"}, 1, //{"","military"}, 0.5, //{"","medical"}, @@ -675,12 +719,9 @@ class HeliCrash_No50s: Default { {"bizon_silenced","weapon"}, {"M14_EP1","weapon"}, {"FN_FAL_ANPVS4","weapon"}, -// {"M107_DZ","weapon"}, -// {"BAF_AS50_scoped","weapon"}, {"Mk_48_DZ","weapon"}, {"M249_DZ","weapon"}, - //{"BAF_L85A2_RIS_CWS","weapon"}, - {"BAF_L85A2_RIS_Holo","weapon"}, + {"BAF_L85A2_RIS_SUSAT","weapon"}, {"DMR","weapon"}, {"","military"}, {"","medical"}, @@ -702,11 +743,9 @@ class HeliCrash_No50s: Default { 0.05, //{"bizon_silenced","weapon"}, 0.05, //{"M14_EP1","weapon"}, 0.02, //{"FN_FAL_ANPVS4","weapon"}, -// 0.02, //{"m107","weapon"}, -// 0.01, //{"BAF_AS50_scoped","weapon"}, 0.03, //{"Mk_48_DZ","weapon"}, 0.05, //{"M249_DZ","weapon"}, - 0.01, //{"BAF_L85A2_RIS_CWS","weapon"}, BAF_L85A2_RIS_Holo + 0.01, //{"BAF_L85A2_RIS_SUSAT","weapon"}, 0.06, //{"DMR","weapon"}, 1, //{"","military"}, 0.5, //{"","medical"}, @@ -789,7 +828,8 @@ class HeliCrash_No50s: Default { { "ItemEtool","weapon" }, {"ItemSandbag","magazine"}, {"Sa58P_EP1","weapon"}, - {"Sa58V_EP1","weapon"} + {"Sa58V_EP1","weapon"}, + {"BAF_L85A2_RIS_Holo","weapon"} }; itemChance[] = { 0.05, @@ -830,7 +870,8 @@ class HeliCrash_No50s: Default { 0.05, 0.02, 0.03, - 0.03 + 0.03, + 0.01 }; }; class MilitarySpecial: Default { @@ -970,6 +1011,36 @@ class HeliCrash_No50s: Default { 0.01, }; }; + class Hunting: Default { + zombieChance = 0.4; + minRoaming = 1; + maxRoaming = 3; + zombieClass[] = {"z_hunter","z_hunter","z_hunter"}; + lootChance = 1; + lootPos[] = {}; + itemType[] = { + {"ItemMap","weapon"}, + {"ItemFlashlight","generic"}, + {"ItemKnife","generic"}, + {"ItemMatchbox","generic"}, + {"Crossbow_DZ","weapon"}, + {"","military"}, + {"WeaponHolder_ItemMachete", "object"}, + {"huntingrifle","weapon"}, + {"","hunter"} + }; + itemChance[] = { + 0.08, + 0.05, + 0.04, + 0.06, + 0.03, + 2.00, + 0.03, + 0.04, + 3.00 + }; + }; class Church: Residential { minRoaming = 1; maxRoaming = 3; @@ -1224,7 +1295,7 @@ class HeliCrash_No50s: Default { maxRoaming = 3; lootPos[] = {}; }; // Qty: 83 - class Land_Misc_deerstand: Military { + class Land_Misc_deerstand: Hunting { zombieChance = 0.3; lootChance = 0.5; maxRoaming = 3; diff --git a/dayz_code/init/compiles.sqf b/dayz_code/init/compiles.sqf index 16b358a74..1188d878f 100644 --- a/dayz_code/init/compiles.sqf +++ b/dayz_code/init/compiles.sqf @@ -60,7 +60,7 @@ if (!isDedicated) then { zombie_findTargetAgent = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\zombie_findTargetAgent.sqf"; zombie_loiter = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\zombie_loiter.sqf"; //Server compile, used for loiter behaviour zombie_generate = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\zombie_generate.sqf"; //Server compile, used for loiter behaviour - + wild_spawnZombies = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\wild_spawnZombies.sqf"; //Server compile, used for loiter behaviour // dog_findTargetAgent = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\dog_findTargetAgent.sqf"; @@ -234,7 +234,7 @@ if (!isDedicated) then { _dikCode = _this select 1; _handled = false; if (_dikCode in (actionKeys "GetOver")) then { - + if (player isKindOf "PZombie_VB") exitWith { //player action ["sitDown", player]; player switchAction "sitDown"; @@ -242,37 +242,21 @@ if (!isDedicated) then { //player switchMove "AmovPercMstpSnonWnonDnon"; diag_log "Saved player zombie from animation lockup?"; }; - - DoRE = ({isPlayer _x} count (player nearEntities ["AllVehicles",500]) > 1); - if (canRoll && animationState player in ["amovpercmrunslowwrfldf","amovpercmrunsraswrfldf","amovpercmevaslowwrfldf","amovpercmevasraswrfldf"]) then { - canRoll = false; - null = [] spawn { - if (DoRE) then { - [nil, player, rSWITCHMOVE,"ActsPercMrunSlowWrflDf_FlipFlopPara"] call RE; - } else { - player switchMove "ActsPercMrunSlowWrflDf_FlipFlopPara"; - }; - sleep 0.3; - player setVelocity [(velocity player select 0) + 1.5 * sin direction player, (velocity player select 1) + 1.5 * cos direction player, (velocity player select 2) + 4]; - sleep 1; - canRoll = true; + if (!r_fracture_legs and (time - dayz_lastCheckBit > 4)) then { + _inBuilding = [player] call fnc_isInsideBuilding; + _nearbyObjects = nearestObjects[getPosATL player, ["TentStorage", "Hedgehog_DZ", "Sandbag1_DZ","TrapBear","Wire_cat1"], 8]; + if (!_inBuilding and (count _nearbyObjects == 0)) then { + dayz_lastCheckBit = time; + call player_CombatRoll; }; - _handled = true; }; }; //if (_dikCode == 57) then {_handled = true}; // space //if (_dikCode in actionKeys 'MoveForward' or _dikCode in actionKeys 'MoveBack') then {r_interrupt = true}; - if ("ItemMap_Debug" in items player) then { - if (_dikCode == 88) then //SCROLL LOCK + if (_dikCode == 210) then //SCROLL LOCK { _nill = execvm "\z\addons\dayz_code\actions\playerstats.sqf"; }; - } else { - if (_dikCode == 70) then //SCROLL LOCK - { - _nill = execvm "\z\addons\dayz_code\actions\playerstats.sqf"; - }; - }; if (_dikCode in actionKeys "MoveLeft") then {r_interrupt = true}; if (_dikCode in actionKeys "MoveRight") then {r_interrupt = true}; if (_dikCode in actionKeys "MoveForward") then {r_interrupt = true}; @@ -294,9 +278,11 @@ if (!isDedicated) then { dayz_lastCheckBit = time; [player,15,false,(getPosATL player)] spawn player_alertZombies; }; - - - if ((_dikCode == 0x38 or _dikCode == 0xB8) and (time - dayz_lastCheckBit > 10)) then { + if (_dikCode in actionKeys "User20" and (time - dayz_lastCheckBit > 5)) then { + dayz_lastCheckBit = time; + _nill = execvm "\z\addons\dayz_code\actions\playerstats.sqf"; + }; + if ((_dikCode == 0x3E or _dikCode == 0x0F or _dikCode == 0xD3) and (time - dayz_lastCheckBit > 10)) then { dayz_lastCheckBit = time; call dayz_forceSave; }; @@ -308,6 +294,25 @@ if (!isDedicated) then { _handled }; + player_CombatRoll = { + DoRE = ({isPlayer _x} count (player nearEntities ["AllVehicles",100]) > 1); + if (canRoll && animationState player in ["amovpercmrunslowwrfldf","amovpercmrunsraswrfldf","amovpercmevaslowwrfldf","amovpercmevasraswrfldf"]) then { + canRoll = false; + null = [] spawn { + if (DoRE) then { + [nil, player, rSWITCHMOVE, "ActsPercMrunSlowWrflDf_FlipFlopPara"] call RE; + } else { + player switchMove "ActsPercMrunSlowWrflDf_FlipFlopPara"; + }; + sleep 0.3; + player setVelocity [(velocity player select 0) + 1.5 * sin direction player, (velocity player select 1) + 1.5 * cos direction player, (velocity player select 2) + 4]; + sleep 1; + canRoll = true; + }; + _handled = true; + }; + }; + player_serverModelChange = { private["_object","_model"]; _object = _this select 0; diff --git a/dayz_code/init/object_pickupAction.sqf b/dayz_code/init/object_pickupAction.sqf index c77a56720..5245f4691 100644 --- a/dayz_code/init/object_pickupAction.sqf +++ b/dayz_code/init/object_pickupAction.sqf @@ -2,6 +2,58 @@ private["_holder","_type","_classname","_name"]; _holder = _this select 0; _type = _this select 1; _classname = _this select 2; + _name = getText (configFile >> _type >> _classname >> "displayName"); -null = _holder addAction [format[(localize "STR_DAYZ_CODE_1"),_name], "\z\addons\dayz_code\actions\object_pickup.sqf",[_type,_classname,_holder], 20, true, true]; -player reveal _holder; \ No newline at end of file + +actionMonitor = { + private["_holder","_type","_classname","_name","_action","_distance","_run","_timeout"]; + _holder = _this select 0; + _type = _this select 1; + _classname = _this select 2; + _name = _this select 3; + + _action = -1; + _distance = player distance _holder; + _run = true; + _timeout = 2; + + while { _run } do { + if (alive _holder) then { + _distance = player distance _holder; + // Add action to player + if ((_distance < 1.75) and (_action == -1)) then { + _action = player addAction [format[(localize "STR_DAYZ_CODE_1"),_name], "\z\addons\dayz_code\actions\object_pickup.sqf",[_type,_classname,_holder], 20, true, true]; + player reveal _holder; + _timeout = 0.3; + }; + // Remove action from player + if ((_distance >= 1.75) and (_action != -1)) then { + player removeAction _action; + _action = -1; + _timeout = 2; + }; + // Stop the loop and fall back to old code + if (_distance > 100) then { + null = _holder addAction [format[(localize "STR_DAYZ_CODE_1"),_name], "\z\addons\dayz_code\actions\object_pickup.sqf",[_type,_classname,_holder], 20, true, true]; + player reveal _holder; + _run = false; + _timeout = 0; + }; + } else { + if (_action != -1) then { + player removeAction _action; + _action = -1; + }; + _timeout = 0; + _run = false; + }; + sleep _timeout; + }; +}; + +if (_classname == "WoodenArrow") then { + [_holder,_type,_classname,_name] spawn actionMonitor; +} else { + null = _holder addAction [format[(localize "STR_DAYZ_CODE_1"),_name], "\z\addons\dayz_code\actions\object_pickup.sqf",[_type,_classname,_holder], 20, true, true]; + player reveal _holder; +}; \ No newline at end of file diff --git a/dayz_code/init/publicEH.sqf b/dayz_code/init/publicEH.sqf index 694ebcae9..f3a945c55 100644 --- a/dayz_code/init/publicEH.sqf +++ b/dayz_code/init/publicEH.sqf @@ -1,84 +1,62 @@ -rpcCodeVarName = { format["%1_code",_this] }; -rpcDirectCall = { call compile format["[%1,%2] call %3;",str(_this),_this,_this call rpcCodeVarName]; }; +//Medical Event Handlers +"norrnRaLW" addPublicVariableEventHandler {[_this select 1] execVM "\z\addons\dayz_code\medical\publicEH\load_wounded.sqf"}; +"norrnRLact" addPublicVariableEventHandler {[_this select 1] execVM "\z\addons\dayz_code\medical\load\load_wounded.sqf"}; +"norrnRDead" addPublicVariableEventHandler {[_this select 1] execVM "\z\addons\dayz_code\medical\publicEH\deadState.sqf"}; +"usecBleed" addPublicVariableEventHandler {_id = (_this select 1) spawn fnc_usec_damageBleed}; +"usecBandage" addPublicVariableEventHandler {(_this select 1) call player_medBandage}; +"usecInject" addPublicVariableEventHandler {(_this select 1) call player_medInject}; +"usecEpi" addPublicVariableEventHandler {(_this select 1) call player_medEpi}; +"usecTransfuse" addPublicVariableEventHandler {(_this select 1) call player_medTransfuse}; +"usecMorphine" addPublicVariableEventHandler {(_this select 1) call player_medMorphine}; +"usecPainK" addPublicVariableEventHandler {(_this select 1) call player_medPainkiller}; +"dayzHit" addPublicVariableEventHandler {(_this select 1) call fnc_usec_damageHandler}; +"dayzHitV" addPublicVariableEventHandler {(_this select 1) call fnc_usec_damageVehicle}; +"dayzHideBody" addPublicVariableEventHandler {hideBody (_this select 1)}; +"dayzGutBody" addPublicVariableEventHandler {(_this select 1) spawn local_gutObject}; +"dayzGutBodyZ" addPublicVariableEventHandler {(_this select 1) spawn local_gutObjectZ}; +"dayzDelLocal" addPublicVariableEventHandler {(_this select 1) call object_delLocal}; +"dayzVehicleInit" addPublicVariableEventHandler {(_this select 1) call fnc_vehicleEventHandler}; +"dayzHumanity" addPublicVariableEventHandler {(_this select 1) spawn player_humanityChange}; +"dayz_serverObjectMonitor" addPublicVariableEventHandler {dayz_serverObjectMonitor = dayz_safety}; +"usecBreakLegs" addPublicVariableEventHandler {(_this select 1) call player_breaklegs}; -//run on all clients -broadcastRpcCallAll = { - private["_name","_val"]; - _name = _this select 0; - _val = _this select 1; - call compile format["%1 = _val;",_name]; //set the value locally - _name call rpcDirectCall; //call on this client - publicVariable _name; //call on other clients -}; +//Both -//run on client which has the object ownership -broadcastRpcCallIfLocal = { - private["_name","_val","_reqObj"]; - _name = _this select 0; - _val = _this select 1; - _reqObj = _this select 2; - - call compile format["%1 = _val;",_name]; //set the value locally - if (local _reqObj) then { - _name call rpcDirectCall; //call on this client - } else { - publicVariable _name; //call on other clients - } -}; - -//only run on server -callRpcProcedure = { - private["_name","_val"]; - _name = _this select 0; - _val = _this select 1; - call compile format["%1 = _val;",_name]; //set the value locally - if (isServer) then { - _name call rpcDirectCall; //call here since we are the server - } else { - publicVariableServer _name; //call on the sever - }; -}; - -//register client->client rpc -registerBroadcastRpc = { - private["_name","_code"]; - _name = _this select 0; - _code = _this select 1; - - call compile format["%1 = _code;",_name call rpcCodeVarName]; //set the global var containing the EH code - _name addPublicVariableEventHandler _code; -}; - -//both -["dayzSetFuel", { (_this select 1) call local_setFuel; } ] call registerBroadcastRpc; -["dayzSetFix", { (_this select 1) call object_setFixServer; } ] call registerBroadcastRpc; -["dayzSetDate", { setDate (_this select 1); } ] call registerBroadcastRpc; -["dayzGutBody", { (_this select 1) call local_gutObject; } ] call registerBroadcastRpc; -["dayzGutBodyZ", { (_this select 1) call local_gutObjectZ; } ] call registerBroadcastRpc; -//EHs that setVariable "medForceUpdate" need to run on the server too -["usecMorphine", { (_this select 1) call player_medMorphine; } ] call registerBroadcastRpc; -["usecBandage", { (_this select 1) call player_medBandage; } ] call registerBroadcastRpc; -["usecEpi", { (_this select 1) call player_medEpi; } ] call registerBroadcastRpc; -["usecTransfuse", { (_this select 1) call player_medTransfuse; } ] call registerBroadcastRpc; -["usecPainK", { (_this select 1) call player_medPainkiller; } ] call registerBroadcastRpc; -//BIS_Effects_Burn is empty on the server anyway, but this EH is called -["dayzFire", { (_this select 1) spawn BIS_Effects_Burn; } ] call registerBroadcastRpc; -["usecBreakLegs", { (_this select 1) call player_breaklegs; } ] call registerBroadcastRpc; - -//server only +//Server only if (isServer) then { - call compile preprocessFileLineNumbers "\z\addons\dayz_server\init\publicEH_server.sqf"; + "dayzDeath" addPublicVariableEventHandler {_id = (_this select 1) spawn server_playerDied}; + "dayzDiscoAdd" addPublicVariableEventHandler {dayz_disco set [count dayz_disco,(_this select 1)];}; + "dayzDiscoRem" addPublicVariableEventHandler {dayz_disco = dayz_disco - [(_this select 1)];}; + "dayzPlayerSave" addPublicVariableEventHandler {_id = (_this select 1) spawn server_playerSync;}; + "dayzPublishObj" addPublicVariableEventHandler {(_this select 1) call server_publishObj}; + "dayzUpdateVehicle" addPublicVariableEventHandler {_id = (_this select 1) spawn server_updateObject}; + "dayzLogin" addPublicVariableEventHandler {_id = (_this select 1) spawn server_playerLogin}; + "dayzLogin2" addPublicVariableEventHandler {(_this select 1) call server_playerSetup}; + "dayzPlayerMorph" addPublicVariableEventHandler {(_this select 1) call server_playerMorph}; + "dayzUpdate" addPublicVariableEventHandler {_id = (_this select 1) spawn dayz_processUpdate}; + "dayzLoginRecord" addPublicVariableEventHandler {_id = (_this select 1) spawn dayz_recordLogin}; + "dayzCharSave" addPublicVariableEventHandler {_id = (_this select 1) spawn server_playerSync}; + //Checking + "dayzSetFuel" addPublicVariableEventHandler {(_this select 1) spawn local_setFuel}; + "dayzSetFix" addPublicVariableEventHandler {(_this select 1) call object_setFixServer}; + "dayzDeleteObj" addPublicVariableEventHandler {(_this select 1) spawn server_deleteObj}; + "atp" addPublicVariableEventHandler { _array = _this select 1; diag_log format["TELEPORT REVERT: %1 (%2) from %3 to %4 now at %5", _array select 0, _array select 1, _array select 2, _array select 3, _array select 4];}; + + // Dayz epoch custom + "dayzPublishVeh" addPublicVariableEventHandler {(_this select 1) spawn server_publishVeh}; + "dayzTradeObject" addPublicVariableEventHandler {(_this select 1) spawn server_tradeObj}; + "dayzTraderMenu" addPublicVariableEventHandler {(_this select 1) spawn server_traders}; + "dayzPlayerDeaths" addPublicVariableEventHandler {(_this select 1) spawn server_deaths}; }; -//clients only +//Client only if (!isDedicated) then { - ["norrnRaLW", { [_this select 1] execVM "\z\addons\dayz_code\medical\publicEH\load_wounded.sqf"; }] call registerBroadcastRpc; - ["norrnRLact", { [_this select 1] execVM "\z\addons\dayz_code\medical\load\load_wounded.sqf"; } ] call registerBroadcastRpc; - ["usecBleed", { (_this select 1) spawn fnc_usec_damageBleed; } ] call registerBroadcastRpc; - ["dayzHideBody", { hideBody (_this select 1); } ] call registerBroadcastRpc; - ["dayzHumanity", { (_this select 1) spawn player_humanityChange; } ] call registerBroadcastRpc; - ["dayzHitV", { (_this select 1) call fnc_usec_damageVehicle; } ] call registerBroadcastRpc; - ["dayzFlies", { (_this select 1) call spawn_flies; } ] call registerBroadcastRpc; - ["dayzRoadFlare", { (_this select 1) spawn object_roadFlare; } ] call registerBroadcastRpc; - ["norrnRaDrag", { [_this select 1] execVM "\z\addons\dayz_code\medical\publicEH\animDrag.sqf"; } ] call registerBroadcastRpc; + "dayzSetDate" addPublicVariableEventHandler {setDate (_this select 1)}; + //"dayzFlies" addPublicVariableEventHandler {(_this select 1) call spawn_flies}; + "dayzRoadFlare" addPublicVariableEventHandler {(_this select 1) spawn object_roadFlare}; + "norrnRaDrag" addPublicVariableEventHandler {[_this select 1] execVM "\z\addons\dayz_code\medical\publicEH\animDrag.sqf"}; + "norrnRnoAnim" addPublicVariableEventHandler {[_this select 1] execVM "\z\addons\dayz_code\medical\publicEH\noAnim.sqf"}; + "changeCharacter" addPublicVariableEventHandler {(_this select 1) call player_serverModelChange}; + "dayzSwitch" addPublicVariableEventHandler {(_this select 1) call server_switchPlayer}; + "dayzFire" addPublicVariableEventHandler {nul=(_this select 1) spawn BIS_Effects_Burn}; }; \ No newline at end of file diff --git a/dayz_code/init/variables.sqf b/dayz_code/init/variables.sqf index b4344e3ac..568e0a14d 100644 --- a/dayz_code/init/variables.sqf +++ b/dayz_code/init/variables.sqf @@ -49,10 +49,128 @@ pz_villager3 = "pz_villager3"; pz_priest = "pz_priest"; //Cooking -meatraw = ["FoodSteakRaw","FoodmeatRaw","FoodbeefRaw","FoodmuttonRaw","FoodchickenRaw","FoodrabbitRaw","FoodbaconRaw"]; -meatcooked = ["FoodSteakCooked","FoodmeatCooked","FoodbeefCooked","FoodmuttonCooked","FoodchickenCooked","FoodrabbitCooked","FoodbaconCooked"]; +meatraw = [ + "FoodSteakRaw", + "FoodmeatRaw", + "FoodbeefRaw", + "FoodmuttonRaw", + "FoodchickenRaw", + "FoodrabbitRaw", + "FoodbaconRaw" +]; +meatcooked = [ + "FoodSteakCooked", + "FoodmeatCooked", + "FoodbeefCooked", + "FoodmuttonCooked", + "FoodchickenCooked", + "FoodrabbitCooked", + "FoodbaconCooked" +]; +//Eating +no_output_food = ["FoodMRE", "FoodPistachio", "FoodNutmix","FoodBioMeat"]+meatcooked+meatraw; + + badfood = ["FoodBioMeat"]; +food_with_output=[ + "FoodCanBakedBeans", + "FoodCanSardines", + "FoodCanFrankBeans", + "FoodCanPasta", + "FoodCanGriff", + "FoodCanBadguy", + "FoodCanBoneboy", + "FoodCanCorn", + "FoodCanCurgon", + "FoodCanDemon", + "FoodCanFraggleos", + "FoodCanHerpy", + "FoodCanOrlok", + "FoodCanPowell", + "FoodCanTylers", + "FoodCanUnlabeled" +]; + +food_output = [ + "TrashTinCan", + "TrashTinCan", + "TrashTinCan", + "TrashTinCan", + "FoodCanGriffEmpty", + "FoodCanBadguyEmpty", + "FoodCanBoneboyEmpty", + "FoodCanCornEmpty", + "FoodCanCurgonEmpty", + "FoodCanDemonEmpty", + "FoodCanFraggleosEmpty", + "FoodCanHerpyEmpty", + "FoodCanOrlokEmpty", + "FoodCanPowellEmpty", + "FoodCanTylersEmpty", + "FoodCanUnlabeledEmpty" +]; +//Drinking +no_output_drink = ["ItemWaterbottle", "ItemWaterbottleBoiled"]; +drink_with_output = [ + "ItemSoda", //just to define item for ItemSodaEmpty + "ItemSodaCoke", + "ItemSodaPepsi", + "ItemSodaMdew", + "ItemSodaMtngreen", + "ItemSodaR4z0r", + "ItemSodaClays", + "ItemSodaSmasht", + "ItemSodaDrwaste", + "ItemSodaLemonade", + "ItemSodaLvg", + "ItemSodaMzly", + "ItemSodaRabbit" +]; +drink_output = [ + "ItemSodaEmpty", + "ItemSodaCokeEmpty", + "ItemSodaPepsiEmpty", + "ItemSodaMdewEmpty", + "ItemSodaMtngreenEmpty", + "ItemSodaR4z0rEmpty", + "ItemSodaClaysEmpty", + "ItemSodaSmashtEmpty", + "ItemSodaDrwasteEmpty", + "ItemSodaLemonadeEmpty", + "ItemSodaLvgEmpty", + "ItemSodaMzlyEmpty", + "ItemSodaRabbitEmpty" +]; +boil_tin_cans = [ + "TrashTinCan", + "FoodCanGriffEmpty", + "FoodCanBadguyEmpty", + "FoodCanBoneboyEmpty", + "FoodCanCornEmpty", + "FoodCanCurgonEmpty", + "FoodCanDemonEmpty", + "FoodCanFraggleosEmpty", + "FoodCanHerpyEmpty", + "FoodCanOrlokEmpty", + "FoodCanPowellEmpty", + "FoodCanTylersEmpty", + "FoodCanUnlabeledEmpty", + "ItemSodaEmpty", + "ItemSodaCokeEmpty", + "ItemSodaPepsiEmpty", + "ItemSodaMdewEmpty", + "ItemSodaMtngreenEmpty", + "ItemSodaR4z0rEmpty", + "ItemSodaClaysEmpty", + "ItemSodaSmashtEmpty", + "ItemSodaDrwasteEmpty", + "ItemSodaLemonadeEmpty", + "ItemSodaLvgEmpty", + "ItemSodaMzlyEmpty", + "ItemSodaRabbitEmpty" +]; + dayz_combatLog = ""; canRoll = true; @@ -260,7 +378,9 @@ dayzPlayerDeaths = []; //DayZ settings dayz_dawn = 6; dayz_dusk = 18; -dayz_maxAnimals = 5; +if(isNil "dayz_maxAnimals") then { + dayz_maxAnimals = 5; +}; DAYZ_agentnumber = 0; dayz_animalDistance = 800; dayz_zSpawnDistance = 1000; @@ -269,6 +389,15 @@ if(isNil "dayz_maxLocalZombies") then { dayz_maxLocalZombies = 40; }; +if(isNil "dayz_maxGlobalZombies") then { + dayz_maxGlobalZombies = 30; +}; + +if(isNil "dayz_maxZeds") then { + dayz_maxZeds = 500; +}; + + dayz_spawnPos = getPosATL player; //init global arrays for Loot Chances @@ -355,6 +484,10 @@ if(!isDedicated) then { dayz_lootDelay = 3; dayz_lootWait = -300; dayz_spawnZombies = 0; + //used to count global zeds around players + dayz_CurrentZombies = 0; + //Used to limit overall zed counts + dayz_maxCurrentZeds = 0; dayz_inVehicle = false; dayz_Magazines = []; dayzGearSave = false; diff --git a/dayz_code/medical/bandage.sqf b/dayz_code/medical/bandage.sqf index 9260ebb56..713fa189e 100644 --- a/dayz_code/medical/bandage.sqf +++ b/dayz_code/medical/bandage.sqf @@ -34,14 +34,17 @@ while {r_doLoop} do { r_doLoop = false; if (_finished) then { - ["usecBandage",[_unit,player]] call broadcastRpcCallAll; + //["usecBandage",[_unit,player]] call broadcastRpcCallAll; + usecBandage = [_unit,player]; + publicVariable "usecBandage"; if (_unit == player) then { //Self Healing _id = [player,player] execVM "\z\addons\dayz_code\medical\publicEH\medBandaged.sqf"; dayz_sourceBleeding = objNull; } else { - ["dayzHumanity",[player,20]] call dayzHumanity_code; + //dayzHumanity = [player,20]; + [player,20] call player_humanityChange; }; {_unit setVariable[_x,false,true];} forEach USEC_woundHit; diff --git a/dayz_code/medical/drag.sqf b/dayz_code/medical/drag.sqf index 702e92f40..be493898c 100644 --- a/dayz_code/medical/drag.sqf +++ b/dayz_code/medical/drag.sqf @@ -24,7 +24,9 @@ sleep 2; //unconscious unit assumes dragging posture //public EH -["norrnRaDrag",_dragee] call broadcastRpcCallAll; +//["norrnRaDrag",_dragee] call broadcastRpcCallAll; + norrnRaDrag = [_dragee]; + publicVariable "norrnRaDrag"; _dragee attachto [_unit,[0.1, 1.01, 0]]; sleep 0.02; diff --git a/dayz_code/medical/epinephrine.sqf b/dayz_code/medical/epinephrine.sqf index 6d77c01eb..7fa8868dd 100644 --- a/dayz_code/medical/epinephrine.sqf +++ b/dayz_code/medical/epinephrine.sqf @@ -12,7 +12,9 @@ if (!_isDead) then { _unit setVariable ["NORRN_unconscious", false, true]; _unit setVariable ["USEC_isCardiac",false,true]; sleep 5; - ["usecEpi",[_unit,player,"ItemEpinephrine"]] call broadcastRpcCallAll; + //["usecEpi",[_unit,player,"ItemEpinephrine"]] call broadcastRpcCallAll; + usecEpi = [_unit,player,"ItemEpinephrine"]; + publicVariable "usecEpi"; }; r_action = false; \ No newline at end of file diff --git a/dayz_code/medical/init_medical.sqf b/dayz_code/medical/init_medical.sqf index 5d47db28a..218ac4186 100644 --- a/dayz_code/medical/init_medical.sqf +++ b/dayz_code/medical/init_medical.sqf @@ -51,6 +51,13 @@ while {true} do { [] spawn fnc_usec_playerBleed; //publicizes the blood value at regular intervals [] spawn fnc_med_publicBlood; }; + + //Handle player infection + if ((r_player_infected) and (!r_player_handler)) then { + r_player_handler = true; + sleep 1; + [] spawn fnc_med_publicBlood; + }; //Add player actions [] call fnc_usec_damageActions; diff --git a/dayz_code/medical/load/load_act.sqf b/dayz_code/medical/load/load_act.sqf index 3b78e631b..4651f8679 100644 --- a/dayz_code/medical/load/load_act.sqf +++ b/dayz_code/medical/load/load_act.sqf @@ -20,7 +20,9 @@ if ((_vcl emptyPositions "cargo") > 0) then _dragger switchMove ""; _wounded setVariable ["NORRN_LoadVcl", _vcl, true]; sleep 1; - ["norrnRLact",_wounded] call broadcastRpcCallAll; + //["norrnRLact",_wounded] call broadcastRpcCallAll; + norrnRLact = [_wounded]; + publicVariable "norrnRLact"; player removeAction NORRN_dropAction; }else{ diff --git a/dayz_code/medical/load/load_wounded.sqf b/dayz_code/medical/load/load_wounded.sqf index 36fa62e38..f2ed71a39 100644 --- a/dayz_code/medical/load/load_wounded.sqf +++ b/dayz_code/medical/load/load_wounded.sqf @@ -14,7 +14,9 @@ _wounded setVariable ["NORRN_unit_dragged", true, true]; _wounded assignAsCargo _vcl; _wounded moveInCargo _vcl; sleep 1; -["norrnRALW",_wounded] call broadcastRpcCallAll; +//["norrnRALW",_wounded] call broadcastRpcCallAll; + norrnRALW = [_wounded]; + publicVariable "norrnRALW"; if (local _wounded) then { diff --git a/dayz_code/medical/load_wounded.sqf b/dayz_code/medical/load_wounded.sqf index 0e1b61d9c..ec32fd63a 100644 --- a/dayz_code/medical/load_wounded.sqf +++ b/dayz_code/medical/load_wounded.sqf @@ -16,7 +16,9 @@ _wounded setVariable ["NORRN_unit_dragged", true, true]; _wounded assignAsCargo _vcl; _wounded moveInCargo _vcl; sleep 1; -["norrnRALW",_wounded] call broadcastRpcCallAll; +//["norrnRALW",_wounded] call broadcastRpcCallAll; + norrnRALW = [_wounded]; + publicVariable "norrnRALW"; if (local _wounded) then { diff --git a/dayz_code/medical/morphine.sqf b/dayz_code/medical/morphine.sqf index a2f096cc8..17f121642 100644 --- a/dayz_code/medical/morphine.sqf +++ b/dayz_code/medical/morphine.sqf @@ -38,12 +38,15 @@ if (_finished) then { //Self Healing _id = [player,player] execVM "\z\addons\dayz_code\medical\publicEH\medMorphine.sqf"; } else { - ["dayzHumanity",[player,50]] call dayzHumanity_code; + //dayzHumanity = [player,50]; + [player,50] call player_humanityChange; }; player removeMagazine "ItemMorphine"; - ["usecMorphine",[_unit,player]] call broadcastRpcCallAll; + //["usecMorphine",[_unit,player]] call broadcastRpcCallAll; + usecMorphine = [_unit,player]; + publicVariable "usecMorphine"; } else { r_interrupt = false; [objNull, player, rSwitchMove,""] call RE; diff --git a/dayz_code/medical/painkiller.sqf b/dayz_code/medical/painkiller.sqf index 49497ae6b..bfdadd052 100644 --- a/dayz_code/medical/painkiller.sqf +++ b/dayz_code/medical/painkiller.sqf @@ -15,11 +15,14 @@ if (_unit == player) then { //Self Healing _id = [player,player] execVM "\z\addons\dayz_code\medical\publicEH\medPainkiller.sqf"; } else { - ["dayzHumanity",[player,20]] call dayzHumanity_code; + //dayzHumanity = [player,20]; + [player,20] call player_humanityChange; }; player removeMagazine "ItemPainkiller"; sleep 1; //clear the healed player's vision -["usecPainK",[_unit,player]] call broadcastRpcCallAll; +//["usecPainK",[_unit,player]] call broadcastRpcCallAll; + usecPainK = [_unit,player]; + publicVariable "usecPainK"; diff --git a/dayz_code/medical/publicEH/medTransfuse.sqf b/dayz_code/medical/publicEH/medTransfuse.sqf index 809104a92..59741f5a1 100644 --- a/dayz_code/medical/publicEH/medTransfuse.sqf +++ b/dayz_code/medical/publicEH/medTransfuse.sqf @@ -17,7 +17,7 @@ if (_unit == player) then { if (_TransfusionInfection) then { r_player_infected = true; - player setVariable["USEC_infected",true]; + player setVariable["USEC_infected",true,true]; }; //Ensure Control is visible diff --git a/dayz_code/medical/setup_functions_med.sqf b/dayz_code/medical/setup_functions_med.sqf index 3c9d923e1..3ec1bb886 100644 --- a/dayz_code/medical/setup_functions_med.sqf +++ b/dayz_code/medical/setup_functions_med.sqf @@ -119,7 +119,7 @@ fnc_usec_self_removeActions = { }; fnc_med_publicBlood = { - while {r_player_injured and r_player_blood > 0} do { + while {(r_player_injured or r_player_infected) and r_player_blood > 0} do { player setVariable["USEC_BloodQty",r_player_blood,true]; player setVariable["medForceUpdate",true]; sleep 5; diff --git a/dayz_code/medical/transfusion.sqf b/dayz_code/medical/transfusion.sqf index 7a2fda237..8194e3098 100644 --- a/dayz_code/medical/transfusion.sqf +++ b/dayz_code/medical/transfusion.sqf @@ -41,9 +41,12 @@ if (_finished) then { _unit setVariable["LastTransfusion",time,true]; _unit setVariable["USEC_lowBlood",false,true]; player removeMagazine "ItemBloodbag"; - ["usecTransfuse",[_unit,player]] call broadcastRpcCallAll; + //["usecTransfuse",[_unit,player]] call broadcastRpcCallAll; + usecTransfuse = [_unit,player]; + publicVariable "usecTransfuse"; - ["dayzHumanity",[player,250]] call dayzHumanity_code; + //dayzHumanity = [player,250]; + [player,250] call player_humanityChange; } else { r_interrupt = false; player switchMove ""; diff --git a/dayz_code/rscTitles.hpp b/dayz_code/rscTitles.hpp index ae6c31f91..fd610f97b 100644 --- a/dayz_code/rscTitles.hpp +++ b/dayz_code/rscTitles.hpp @@ -43,6 +43,49 @@ class RscDisplayStart }; }; +class RscDisplayDebriefing: RscStandardDisplay +{ + class controls + { + delete Debriefing_MissionTitle; + delete CA_MissionTitle; + delete CA_TextVotingTimeLeft; + delete CA_MissionResult; + delete CA_DebriefingInfo; + delete CA_DebriefingTextGroup; + delete CA_DebriefingObjectivesGroup; + delete CA_DebriefingStatsGroup; + delete ButtonStatistics; + delete ButtonRetry; + //delete ButtonContinue; + }; + class ControlsBackground + { + delete Mainback; + }; +}; +class RscDisplayMissionFail: RscStandardDisplay +{ + class controls + { + delete Debriefing_MissionTitle; + delete CA_MissionTitle; + delete CA_TextVotingTimeLeft; + delete CA_MissionResult; + delete CA_DebriefingInfo; + delete CA_DebriefingTextGroup; + delete CA_DebriefingObjectivesGroup; + delete CA_DebriefingStatsGroup; + delete BRetry; + //delete BAbort; + }; + class ControlsBackground + { + delete Mainback; + }; +}; + + class CA_TextLanguage; class RscXListBox; @@ -68,35 +111,91 @@ class RscDisplayGameOptions }; }; }; +class RscShortcutButton; +class RscShortcutButtonMain; class RscDisplayMain : RscStandardDisplay { class controlsBackground { - class Mainback; + class Mainback : RscPicture { + idc = 1104; + x = "SafeZoneX + 0.04"; + y = "SafeZoneY + 0.03"; + w = 0.627451; + h = 1.000000; + text = "\ca\ui\data\ui_mainmenu_background_ca.paa"; + }; class CA_ARMA2 : RscPicture { text = "z\addons\dayz_code\gui\dayz_logo_ca.paa"; }; }; - onLoad = "((_this select 0) displayCtrl 138) ctrlEnable false;"; - class controls { class CA_Version; class DAYZ_Version : CA_Version { idc = -1; - text = "DayZ Epoch 0.98 (1.7.5.1)"; + text = "DayZ Epoch 0.981 (1.7.6.1)"; y = "(SafeZoneH + SafeZoneY) - (1 - 0.95)"; }; - class CA_TitleMainMenu; - class CA_SinglePlayer; - class CA_MP; - class CA_Options; - class CA_PlayerProfile; - class CA_Expansions; - class CA_Exit; + delete CA_TitleMainMenu; + delete CA_SinglePlayer; + class CA_PlayerName : RscText { + idc = 109; + style = 256; + colorbackground[] = {0.1, 0.1, 0.1, 0}; + x = "SafeZoneX + 0.15"; + y = "SafeZoneY + 0.06"; + w = 0.5; + h = 0.05; + }; + class CA_MP : RscShortcutButtonMain { + idc = 105; + x = "SafeZoneX + 0.05"; + y = "SafeZoneY + 0.15"; + toolTip = $STR_TOOLTIP_MAIN_MULTIPLAYER; + text = $STR_CA_MAIN_MULTI; + + class KeyHints { + class A { + key = 0x00050000 + 0; + hint = ""; + }; + }; + }; + class CA_Options : RscShortcutButtonMain { + x = "SafeZoneX + 0.05"; + y = "SafeZoneY + 0.30"; + }; + class CA_PlayerProfile : RscShortcutButtonMain { + x = "SafeZoneX + 0.05"; + y = "SafeZoneY + 0.45"; + }; + class CA_Expansions : RscShortcutButtonMain { + x = "SafeZoneX + 0.05"; + y = "SafeZoneY + 0.60"; + }; + class CA_Exit : RscShortcutButtonMain { + x = "SafeZoneX + 0.05"; + y = "SafeZoneY + 0.75"; + }; + }; +}; +//Remove Diary +class RscDisplayDiary { + idd = 129; + movingEnable = 0; + + class Controls { + delete Diary; + delete DiaryIndex; + delete B_Quit; + delete B_Add; + delete DiaryPage; + delete DiaryTitle; + delete DiaryBackground; }; }; @@ -171,7 +270,7 @@ class RscDisplayGear { idd = 106; enableDisplay = 1; - onUnload = "call player_gearSync;"; + onUnload = "call player_gearSync; call dayz_forceSave;"; class controls { class CA_Filter_Icon: RscPicture diff --git a/dayz_code/stringtable.xml b/dayz_code/stringtable.xml index 097de5942..7238d88d8 100644 --- a/dayz_code/stringtable.xml +++ b/dayz_code/stringtable.xml @@ -9,6 +9,7 @@ DEAN HALL PRESENTA DEAN HALL PRESENTEERT DEAN HALL VOUS PRESENTE + DEAN HALL UVÁDÍ A USECFORCE PRODUCTION @@ -18,24 +19,27 @@ UNA PRODUCCIÓN DE USECFORCE EEN USECFORCE PRODUCTIE UNE PRODUCTION USECFORCE + V PRODUKCI S USECFORCE - On 12 March 2013, a prion disease\nand spreads among the worlds population\ntriggering a global pandemic - On 12 March 2013, a prion disease\nand spreads among the worlds population\ntriggering a global pandemic - Am 12. März 2013 breitet sich\neine Prionenkrankheit unter der Weltbevölkerung aus\nund löst eine globale Pandemie aus + On 12 March 2013, a prion disease\n spreads among the worlds population\ntriggering a global pandemic + On 12 March 2013, a prion disease\n spreads among the worlds population\ntriggering a global pandemic + Am 12. März 2013 breitet sich\neine Prionenkrankheit unter der Weltbevölkerung aus\nund verursacht eine globale Pandemie 12 марта 2013 г., прионное заболевание\nраспространяется среди населения всего земного шара,\nвызывая общую пандемию El 12 de Marzo de 2012, una enfermedad priónica\nse propaga entre la población mundial\ndesencadenando una pandemia global Op 12 maart 2013 brak er een\nprionziekte uit onder de wereldbevolking\nmet als gevolg een\nwereldwijde pandemie Le 12 Mars 2013, une maladie à prions\n se répand parmi la population mondiale\ndéclenchant une pandémie globale + 12. března roku 2013, prionové neštěstí\nse rozšířilo po celém světě\na vyvolalo celosvětovou pandemii The disease causes proteins in the brain to be replaced with prions ceasing regular function The disease causes proteins in the brain to be replaced with prions ceasing regular function - Durch die Krankheit werden Proteine im Gehirn durch Prionen ersetzt, wodurch das Gehirn aussetzt + Durch die Krankheit werden Proteine im Gehirn durch Prionen ersetzt, normale Gehirnfunktionen werden ausgeschaltet Болезнь вызывает изменения протеинов головного мозга, заменяя их прионами, влияющими на основные функции La enfermedad provoca que las proteinas del cerebro sean reemplazadas con priones dejando de funcionar regularmente De ziekte vervangt proteïnen in het brein met prions, waardoor het brein niet meer naar behoren functioneert La maladie entraîne le remplacement des protéines dans le cerveau \npar des prions, qui cessent alors leurs fonctions normales + Onemocnění způsobí, že bílkoviny v mozku jsou nahrazeny priony a mozek přestává fungovat. Most people progress to dementia and then death as the brain is replaced with ineffective sludge @@ -45,6 +49,7 @@ La mayoría de la gente se volvía loca y luego moría como resultado de que su cerebro era reemplazado por algo ineficiente. Het grootste deel van de bevolking begint hierdoor te leiden aan dementie, en zal spoedig daarna sterven, omdat het brein wordt vervangen met drab La plupart des gens deviennent déments puis meurent \nalors que leurs cellules nerveuses sont remplacées par une matière inefficace + Většinu lidí postihne demence a následně i smrt, mozek je totiž nahrazen neefektivní hmotou. 86% of the worlds population die @@ -54,42 +59,47 @@ El 86% de la población mundial muere. 86% van de wereldbevolking komt te overlijden 86% de la population mondiale meurt + 86% světové populace umírá Some survive with the disease in a chronic state.\nLacking regular brain function, they are scarely human. They are unable to communicate,\ndriven by insatiable desire for violence, and attracted to the scent of those uninfected Some survive with the disease in a chronic state.\nLacking regular brain function, they are scarely human. They are unable to communicate,\ndriven by insatiable desire for violence, and attracted to the scent of those uninfected - Einige überleben, mit der Krankheit in einem chronischen Zustand.\nOhne normale Gehirnaktivität sind sie kaum als Menschen zu bezeichnen. Sie können nicht kommunizieren.\nSie werden von einem unstillbaren Durst nach Gewalt getrieben und der Geruch der uninfizierten zieht sie an. + Einige überleben mit der Krankheit in einem chronischen Zustand.\nOhne normale Gehirnaktivität sind sie kaum als Menschen zu bezeichnen. Sie können nicht kommunizieren,\nwerden von einem unstillbaren Verlangen nach Gewalt getrieben und der Geruch der uninfizierten zieht sie an. Некоторые выживают с заболеванием в хронической стадии.\nНо в виду отсутствия основных функций головного мозга, они вряд ли остались людьми. Они не в состоянии общаться,\nдвижимые ненасытной жаждой насилия, и влекомые запахом неинфицированных Algunos sobreviven a la enfermedad en un estado crónico.\nCarecen de una función cerebral normal, son humanos aterradores. No son capaces de comunicarse,\nimpulsados por un deseo insaciable de violencia y atraidos por el olor de los no infectados. Enkelen overleven de ziekte in een chronische staat.\nZonder enige reguliere breinactiviteit zijn ze niet mens te noemen. Ze kunnen niet communiceren,\n en worden gedreven door een onlesbaar verlangen naar geweld, en aangetrokken door de geur van niet-geïnfecteerde overlevenden Quelques uns survivent dans un état chronique de la maladie.\nManquants de fonctions cérébrales normales, ils sont à peine humains.\nIls sont inaptes à communiquer, conduits par un désir insatiable \nde violence et attirés par l'odeur de ceux qui ne sont pas infectés. + Někteří přežijí, ale jsou v chronickém stavu.\nChybějí jim základní mozkové funkce, ztěží jsou to lidé. Jsou neschopni komunikovat,\nřízeni násilím a touhou po těch, kteří nejsou infikovani. Society crumbles as the pandemic spreads rapidly Society crumbles as the pandemic spreads rapidly - Die Gesellschaft bricht durch die Verbreitung der Pandemie zusammen + Die Gesellschaft bricht zusammen während die Krankheit sich rasch ausbreitet Общество распадается с быстрым распространением пандемии. La sociedad se desmorona a la vez que la pandemia se propaga rápidamente. De samenleving valt uit elkaar, en de pandemie verspreidt zich snel La société s'écroule alors que la pandémie s'étend rapidement + Jak se pandemie šíří, společnost se rozpadá. You are one of the 2% who are not infected yet You are one of the 2% who are not infected yet - Du bist einer der 2% noch nicht infizierten Menschen + Sie sind einer der 2% noch nicht infizierten Menschen Вы один из 2%, которые еще не инфицированы Eres parte del 2% que aún no esta infectado. Jij bent één van de 2% die nog niet is geïnfecteerd Vous êtes l'un des 2% qui ne sont pas encore infectés + Jsi jeden z těch 2% lidí, kteří se ještě nenakazili. THIS IS YOUR STORY THIS IS YOUR STORY - DIES IST DEINE GESCHICHTE + DIES IST IHRE GESCHICHTE ЭТО ВАША ИСТОРИЯ ESTA ES TU HISTORIA DIT IS JOUW VERHAAL CECI EST VOTRE HISTOIRE + TOHLE JE TVŮJ PŘÍBĚH Directed by @@ -99,6 +109,7 @@ Dirigida por Geregisseerd door Dirigé par + Režie Scientific Consultant @@ -108,6 +119,7 @@ Consultor Científico Wetenschappelijk Consultant Consultant scientifique + Vědecký konzulant @@ -118,6 +130,7 @@ Productor Producent Producteur + Producent Marketing @@ -127,6 +140,7 @@ Marketing Marketing Marketing + Marketing Music @@ -136,6 +150,7 @@ Música Muziek Musique + Hudba Animation @@ -145,26 +160,29 @@ Animación Animaties Animation + Animace - + Take %1 Take %1 - %1 nehmen + %1 aufnehmen Взять %1 Tomar %1 Neem %1 Prendre %1 + Vezmi %1 You do not have enough room in your inventory You do not have enough room in your inventory - Du hast nicht genug Platz in deinem Inventar + Sie haben nicht genug Platz in Ihrem Inventar У вас не хватает места в инвентаре. No tienes espacio suficiente en tu inventario. Je hebt niet voldoende ruimte in je inventaris Vous n'avez pas assez de place dans votre inventaire. + Ve vašem inventáři není dostatek místa. Loading Character Data. Please wait. @@ -174,161 +192,179 @@ Cargando datos del personaje. Por favor espere. Karakterdata aan het laden. Even geduld. Chargement des données du personnage. Veuillez patienter. + Načítám data postavy. Prosím čekejte. - + You have cooked %1 %2 You have cooked %1 %2 - Du hast %1 %2 gekocht + Sie haben %1 %2 gekocht Вы приготовили: %1 %2 Cocinaste %1 %2 Je hebt %1 %2 gekookt Vous avez cuit %1 %2 + Upekl jsi %1 %2 Your tent has been packed Your tent has been packed - Du hast dein Zelt eingepackt + Ihr Zelt wurde verpackt Ваша палатка свернута. Su carpa se ha embalado Je tent is ingepakt Votre tente a été repliée. + Tvůj stan byl zabalen. You cannot pack this tent, it is not yours You cannot pack this tent, it is not yours - Du kannst dieses Zelt nicht einpacken, da es nicht deins ist + Sie können dieses Zelt nicht verpacken, da es nicht Ihnen gehört Вы не можете свернуть эту палатку, так как она не ваша. No puedes embalar esta carpa ya que no es tuya. Je kunt deze tent niet inpakken, hij is niet van jou Vous ne pouvez pas replier cette tente, elle ne vous appartient pas. + Tento stan nemůžeš zabalit, jelikož není tvůj. You have pitched your tent You have pitched your tent - Du hast dein Zelt aufgebaut + Sie haben Ihr Zelt aufgebaut Вы установили палатку. Asentaste tu carpa. Je hebt je tent opgezet Vous avez installé votre tente. + Postavil jsi stan. You cannot place a Tent here. The area must be flat, and free of other objects You cannot place a Tent here. The area must be flat, and free of other objects - Du kannst hier kein Zelt aufbauen. Der Untergrund muss flach und frei sein + Sie können hier kein Zelt aufbauen. Der Untergrund muss flach und frei von Hindernissen sein Палатку нужно ставить на ровную поверхность, без объектов поблизости. No puedes asentar tu carpa aquí. El área debe ser plana y libre de otros objetos. Je kunt hier geen tent plaatsen. Het gebied moet plat en vrij van andere objecten zijn Vous ne pouvez pas placer de tente ici. Le sol doit être plat et libre de tout autre objet. + Stan zde nelze postavit. Plocha musí být rovná a být dostatečně velká. You have consumed a %1 You have consumed a %1 - Du hast ein(e) %1 verbraucht + Sie haben ein(e) %1 verbraucht Вы употребили: %1 Consumiste: %1 Je hebt %1 genuttigd Vous avez consommé un(e) %1 + Snědl jsi %1 You have created a fireplace You have created a fireplace - Du hast ein Feuer gemacht - Вы развели костер. + Sie haben eine Feuerstelle angelegt + Вы подготовили костер. Creaste una fogata Je hebt een kampvuur gemaakt Vous avez créé un feu de camp. + Vytvořil jsi ohniště. You have constructed a %1 You have constructed a %1 - Du hast eine(n) %1 gebaut + Sie haben eine(n) %1 aufgebaut Вы построили %1. Construiste un %1 Je hebt een %1 opgebouwd Vous avez construit un(e) %1 + Postavil jsi %1 You have failed to build %1. You have failed to build %1. - You have failed to build %1. + Aufbau von %1 gescheitert. You have failed to build %1. Fallaste al contruir un %1. You have failed to build %1. Vous n'avez pas réussi à contruire %1. + Při stavbě %1 došlo k chybě. You cannot make a fireplace here. The area must be flat, and free of other objects You cannot make a fireplace here. The area must be flat, and free of other objects - Du kannst hier kein Feuer machen. Der Untergrund muss flach und frei sein + Sie können hier kein Feuer machen. Der Untergrund muss flach und frei von Hindernissen sein Костер нужно разводить на ровной поверхности, без объектов поблизости. No puedes hacer una fogata aquí. El área debe ser plana y libre de otros objetos. Je kunt hier geen kampvuur maken. Het gebied moet plat en vrij van andere objecten zijn Vous ne pouvez pas faire de feu de camp ici. Le sol doit être plat et libre de tout autre objet. + Ohniště zde nelze postavit. Plocha musí být rovná a dostatečně velká. Fireplace has been removed Fireplace has been removed - Die Feuerstelle wurde zerstört + Die Feuerstelle wurde entfernt Костер убран. La fogata fue removida. Het kampvuur is verwijderd Le feu de camp a été retiré. + Ohniště bylo odstraněno. %1 has been gutted, %2 meat steaks now on the carcass %1 has been gutted, %2 meat steaks now on the carcass - Du hast %1 ausgenommen, %2 Stücke Fleisch sind im Kadaver + %1 wurde ausgeweidet, %2 Stücke Fleisch befinden sich nun im Kadaver Вы разделали: %1. Доступно кусков мяса: %2 Un %1 fue achurado, dejando %2 trozos de carne en el cuerpo. Je hebt %1 opengesneden. Er bevinden zich %2 biefstukken op het karkas %1 a été découpé, %2 morceaux de viande sont maintenant dans la carcasse. + %1 bylo vykucháno, %2 syrových steaků lze najít v mrtvole. You are being healed You are being healed - Du wirst geheilt + Sie werden geheilt Вас лечат. Fuiste curado. Je wordt genezen Vous recevez des soins + Jste uzdravováni. You have filled %1 bottles with water You have filled %1 bottles with water - Du hast %1 Flasche(n) mit Wasser gefüllt + Sie haben %1 Flasche(n) mit Wasser gefüllt Наполнено фляжек с водой: %1 Llenaste %1 cantimplora(s) con agua Je hebt %1 flessen gevuld met water Vous avez rempli %1 bouteille(s) avec de l'eau. + Naplnil jsi %1 lahví vodou. You have no empty water bottles You have no empty water bottles - Du hast keine leeren Wasserflaschen + Sie haben keine leeren Wasserflaschen У вас нет пустых фляжек. No tienes cantimploras vacías Je hebt geen lege waterflessen Vous n'avez aucune bouteille vide. + Nemáš žádné prázdné láhve na vodu. You need a %1 to repair this You need a %1 to repair this - Du brauchst ein(e) %1, um das zu reparieren + Sie benötigen ein(e) %1, um das zu reparieren Чтобы это починить, вам нужно: %1 Necesitas %1 para reparar esto. Je hebt een %1 nodig om dit te repareren Vous avez besoin d'un(e) %1 pour réparer ceci. + Potřebuješ %1 abys tohle opravil. You have successfully attached the %1 on the %2 You have successfully attached the %1 on the %2 - Du hast erfolgreich ein(e) %1 an %2 angebracht + Sie haben erfolgreich ein(e) %1 an %2 angebracht Вы успешно установили %1 на %2. Fijaste correctamente el %1 al %2 Je hebt met succes een %1 geplaatst op de %2 Vous avez réussi à placer le %1 sur le %2 + Úspěšně jsi připevnil %1 k %2 %1 has been filled with %2 litres of Fuel @@ -338,6 +374,7 @@ El %1 fue cargado con %2 litros de combustible. %1 is bijgetankt met %2 liter benzine %1 a été rempli avec %2 litres de carburant. + %1 bylo doplněno %2 litrů paliva. Day @@ -347,87 +384,97 @@ Día Dag Jour + Den You last ate %2 minutes, and drank %3 minutes ago You last ate %2 minutes, and drank %3 minutes ago - Du hast zuletzt vor %2 Minuten gegessen und vor %3 Minuten getrunken + Sie haben zuletzt vor %2 Minuten gegessen und vor %3 Minuten getrunken Последний раз вы ели %2 мин. назад, пили - %3 мин. назад. Tu última comida fue hace %2 minutos y bebida hace %3 minutos Je hebt %2 minuten geleden gegeten en %3 minuten geleden gedronken Vous avez mangé il y a %2 minutes et bu il y a %3 minutes. + Naposledy jsi jedl před %2 minutami a pil před %3 minutami. %1 Food and %2 water was used since your last login %1 Food and %2 water was used since your last login - Seit deinem letzten Login hast du %1 Einheiten Essen und %2 Flaschen Wasser verbraucht + Seit Ihrem letzten Login haben Sie %1 Einheiten Essen und %2 Flaschen Wasser verbraucht С момента вашего последнего входа в игру вы съели еды: %1 и выпили воды: %2 %1 Comidas y %2 Aguas fueron usadas desde tu ultimo ingreso Sinds de laatste keer dat je hebt ingelogd heb je %1 voedsel en %2 water genuttigd %1 Nourriture(s) et %2 boisson(s) ont été utilisés depuis votre dernière connection. + %1 jídla a %2 vody bylo spotřebováno od vašeho posledního přihlášení. You have filled %1 jerrycans with fuel You have filled %1 jerrycans with fuel - Du hast %1 Kanister mit Treibstoff gefüllt + Sie haben %1 Kanister mit Treibstoff gefüllt Наполнено топливом канистр: %1 Llenaste %2 bidones con combustible Je hebt %1 jerrycans met brandstof gevuld Vous avez rempli %1 jerrican(s) avec du carburant. + Naplnil jsi palivem %1 kanystrů You have no empty jerry cans You have no empty jerry cans - Du hast keine leeren Kanister + Sie haben keine leeren Kanister У вас нет пустых канистр. No tienes bidones vacíos Je hebt geen lege jerrycans Vous n'avez pas de jerrican vide. + Nemáš žádné prázdné kanystry. You need to sit in the driver seat before you can repair this vehicle You need to sit in the driver seat before you can repair this vehicle - Sie müssen im Fahrersitz sitzen um dieses Fahrzeug reparieren zu können. + Sie müssen sich auf den Fahrersitz setzen bevor Sie dieses Fahrzeug reparieren können Для ремонта требуется занять место водителя хотя бы раз. Necesitas sentarte en el asiento del conductor antes de arreglar este vehículo. Je moet in de bestuurdersstoel zitten om dit voertuig te repareren Vous devez vous asseoir à la place du conducteur avant de pouvoir réparer ce véhicule. + Je nutné si nejdříve sednout na místo řidiče abys mohl opravit toto vozidlo. Please go to Player Selection Screen to continue in game Please go to Player Selection Screen to continue in game - Bitte gehe in die Rollenverteilung um weiterspielen zu können + Bitte gehen Sie in die Spielerauswahl um weiterspielen zu können Пожалуйста, выйдите в окно выбора игрока, чтобы продолжить игру Por favor ve a la Pantalla de Selección de Jugador para continuar en el juego. Ga alsjeblieft naar het rollenverdelingsscherm on verder te spelen Veuillez aller à l'Ecran de Sélection de Joueur pour continuer à jouer + Pokud chcete pokračovat ve hře, prosím vraťe se na obrazovku s výběrem rolí. Waiting for character to create Waiting for character to create - Warte darauf, einen neuen Charakter um zu erstellen + Warten auf Charaktererstellung Пожалуйста, выйдите в окно выбора игрока чтобы продолжить игру Esperando a que el personaje sea creado Wachten tot het karakter is aangemaakt En attente de la création du personnage + Čekám na vytvoření postavy. Retrying to Authenticate Retrying to Authenticate - Versuche erneut zu Authentifizieren + Erneuter Authentifizierungsversuch Попытка аутентификации Volviendo a Autentificar Authenticatie opnieuw proberen Nouvelle tentative d'Authentification + Opakuji ověřování Requesting Authentication Requesting Authentication - Empfange Authentifizierung + Authentifizierung beantragt Запрос аутентификации Solicitando Autentificación Authenticatie aan het aanvragen Demande d'Authentification + Odesílám požadevek pro ověření Waiting for server response @@ -437,262 +484,331 @@ Esperando la respuesta del servidor Wachten op serverantwoord Attente de la réponse du serveur + Čekám na odpověď serveru Server responded, creating character Server responded, creating character - Server antwortete, erstelle Charakter + Server antwortet, erstelle Charakter Получен ответ от сервера. Идет создание персонажа El servidor respondió, creando personaje Server heeft geantwoord, karakter aan het maken Réponse du serveur, création du personnage + Spojení navázáno, vytvářím postavu You are running an incorrect version of DAYZ_CODE, please download this file from dayzmod.com/downloads (You are running version %1 and the server is running version %2) You are running an incorrect version of DAYZ_CODE, please download this file from dayzmod.com/downloads (You are running version %1 and the server is running version %2) - Du hast eine falsche Version von DAYZ_CODE, bitte lade dir die neuste Version von www.dayzmod.com/downloads runter - Вы используете неверную версию DAYZ_CODE, пожалуйста, скачайте данный файл с dayzmod.com/downloads (Ваша версия %1, версия на сервере %2) - Estas ejecutando una versión incorrecta de DAYZ_CODE, por favor descarga este archivo desde dayzmod.com/downloads (Estas ejecutando la versión %1 y el servidor %2) + Sie haben eine falsche Version von DAYZ_CODE, bitte laden Sie sich neuste Version von www.dayzmod.com/downloads runter + Вы используете неверную версию DAYZ_CODE. Пожалуйста, скачайте нужный файл с dayzmod.com/downloads (Ваша версия %1, версия на сервере %2) + Estás ejecutando una versión incorrecta de DAYZ_CODE, por favor descarga este archivo desde dayzmod.com/downloads (Estas ejecutando la versión %1 y el servidor %2) Je gebruikt een incorrecte versie van DAYZ_CODE, download dit bestand alsjeblieft van dayzmod.com/downloads (Je gebruikt versie %1, en de server gebruikt versie %2) Vous utilisez une version incorrecte de DAYZ_CODE, veuillez télécharger ce fichier depuis dayzmod.com/downloads (Vous utilisez la version %1 et le serveur utilise la version %2) + Máte nesprávnou verzi DAYZ_CODE, stáhněte si prosím aktuální soubor z dayzmod.com/downloads (Vaše verze je %1 a na serveru běží verze %2) + + + You must be near a water-source such as a pond or well to refill your water bottles + You must be near a water-source such as a pond or well to refill your water bottles + Sie müssen in der nähe einer Wasserquelle wie einem Teich oder Brunnen sein um Wasserflaschen zu füllen + Вы должны находиться возле водоема или источника воды, чтобы наполнить свои фляги. + Necesitas estar cerca de una fuente de agua como un pozo para rellenar tu cantimplora + Je moet in de buurt van een waterbron zijn, zoals een meer of pomp, om je waterflessen bij te vullen + Vous devez être à côté d'une source d'eau comme un bassin ou un puits pour remplir vos bouteilles d'eau. + Pro plnění láhve na vodu je nutné být poblíž studny nebo rybníka. + + + You cannot do this while you are on a ladder + You cannot do this while you are on a ladder + Sie können dies nicht tun, während Sie an einer Leiter sind + Вы не можете этого делать, пока поднимаетесь по лестнице. + No puedes hacer esto mientras estás en una escalera + Je kunt deze actie op een ladder niet uitvoeren + Vous ne pouvez pas faire cela en étant sur une échelle. + Akci nelze provést, jelikož jste na žebříku. + + + You must have wood in your inventory in order to create a fireplace + You must have wood in your inventory in order to create a fireplace + Sie benötigen Holz im Inventar, um eine Feuerstelle anzulegen + Для разведения костра у вас должны быть дрова. + Debes tener leña en tu inventario para poder crear una fogata. + Je moet hout in je inventaris hebben om een kampvuur te maken + Vous devez avoir du bois dans votre inventaire pour pouvoir faire un feu de camp. + Pro vytvoření ohniště je nutné mít v inventáři dřevo. + + + You must be in a forest and close to a tree to harvest wood. + You must be in a forest and close to a tree to harvest wood. + Sie müssen in einem Wald in der Nähe eines Baums sein, um Holz zu sammeln. + Вы должны находится в лесу и подойти к дереву, чтобы нарубить дров. + Debes estar en el bosque y cerca de un árbol para recoger leña. + Je moet in een bos en in de buurt van een boom zijn om hout te hakken. + Vous devez être en forêt et proche d'un arbre pour couper du bois. + Pro získání dřeva musíš být v lese blízko stromu. + + + You do not have enough room in your inventory to do that. + You do not have enough room in your inventory to do that. + Sie haben nicht genug Platz in Ihrem Inventar um das zu tun. + У вас недостаточно места в инвентаре. + No tienes espacio suficiente en tu inventario para hacer eso. + Je hebt onvoldoende ruimte in je inventaris om die actie uit te voeren + Vous n'avez pas assez de place dans votre inventaire pour faire cela. + Pro tuto akci nemáš dostatek místa v inventáři. + + + A pile of wood has been successfully added to your inventory. + A pile of wood has been successfully added to your inventory. + Ein Holzstoß wurde erfolgreich Ihrem Inventar hinzugefügt. + Дрова добавлены в ваш инвентарь. + Una pila de leña se agregó correctamente a tu inventario. + Er is brandhout toegevoegd aan je inventaris. + Une pile de bois a été ajoutée à votre inventaire avec succès. + Hromádka dřeva byla úspěšně přidána do tvého inventáře. + + + You cannot do this while you are in the water. + You cannot do this while you are in the water. + Sie können dies nicht tun, während Sie sich im Wasser befinden.. + Это действие невозможно пока вы в воде. + No puedes hacer esto mientras estás en el agua. + Je kunt deze actie niet in het water uitvoeren + Vous ne pouvez pas faire cela lorsque vous êtes dans l'eau. + Tuto akci nelze provést pokud jste ve vodě. + + + You have applied a heatpack to your body successfully. + You have applied a heatpack to your body successfully. + Sie haben ein Wärmpflaster an Ihrem Körper angebracht. + Вы успешно применили на вашем теле согревающий комплект. + Aplicaste correctamente un paquete de calor a tu cuerpo. + Je hebt met succes een heatpack op je lichaam gebruikt. + Vous avez utilisé un heatpack avec succès. + Aplikace heatpacku proběhla úspěšně. + + + You cannot reload that combination, you need %1 %2 magazines. + You cannot reload that combination, you need %1 %2 magazines. + Sie können diese Kombination nicht nachladen, Sie benötigen %1 %2 Magazine. + Вы не можете перезарядить эту комбинацию. Вам необходимо иметь магазины %1 %2. + No puedes recargar esa combinación, necesitas %1 cargadores de %2 + Je kan die combinatie niet herladen, je hebt %1 %2 magazijnen nodig. + Vous ne pouvez pas recharger cette combinaison, vous avez besoin de %1 %2 chargeur(s). + Tuto kombinaci nelze provést, potřebujete zásobníky %1 %2. + + + You have successfully reloaded %1 %2 magazines. + You have successfully reloaded %1 %2 magazines. + Sie haben erfolgreich %1 %2 Magazine nachgeladen. + Магазины %1 %2 перезаряжены. + Recargaste correctamente %1 cargadores de %2. + Je hebt met succes %1 %2 magazijnen herladen. + Vous avez rechargé %1 %2 chargeur(s) avec succès. + Úspěšně jsi nabil zásobníky %1 %2. + + + %1 must be on your person to move it to/from your toolbelt. + %1 must be on your person to move it to/from your toolbelt. + %1 muss in ihrem Inventar sein um es aus/in ihren Werkzeuggürtel zu packen. + Для перемещения с/на пояс, предмет %1 должен быть у вас. + %1 debe estar en tu persona para moverlo hacia/desde el cinturon. + Je moet %1 op je persoon hebben om het van/naar je gereedschapsriem te verplaatsen + %1 doit être sur vous pour pouvoir le déplacer de/vers votre ceinture à outils. + TO DECIDE + + + %1 must be in your main inventory to %2 it. + %1 must be in your main inventory to %2 it. + %1 muss sich in Ihrem Inventar befinden um es zu %2. + Предмет %1 должен находиться в основном инвентаре чтобы %2 его. + %1 debe estar en tu inventario principal para: %2 + %1 moet zich in je hoofdinventaris bevinden om het te %2. + %1 doit être dans votre inventaire principal pour pouvoir le %2 + %1 musí být ve tvém hlavním inventáři pro %2. + + + %1 is already being looted by someone else. + %1 is already being looted by someone else. + %1 wird bereits von jemand anderem geplündert. + %1 уже кто-то обыскивает. + %1 ya fue saqueado por alguien más. + %1 wordt al door iemand anders opgepakt. + %1 est déjà en train d'être pillé par quelqu'un d'autre. + %1 už je loupeno někým jiným. + + + That tent is already being packed. + That tent is already being packed. + Dieses Zelt wurde bereits vergepackt. + Эту палатку уже упаковывают. + Esta carpa ya fue embalada. + Die tent wordt al ingepakt. + Cette tente est déjà en train d'être repliée. + Stan už byl zabalen. - - You must be near a water-source such as a pond or well to refill your water bottles - You must be near a water-source such as a pond or well to refill your water bottles - Du musst in der nähe einer Wasserquelle wie z.B. einem Teich sein um deine Wasserflasche zu füllen - Вы должны находиться возле водоема или источника воды, чтобы наполнить свои фляги. - Necesitas estar cerca de una fuente de agua como un pozo para rellenar tu cantimplora - Je moet in de buurt van een waterbron zijn, zoals een meer of pomp, om je waterflessen bij te vullen - Vous devez être à côté d'une source d'eau comme un bassin ou un puits pour remplir vos bouteilles d'eau. - - - You cannot do this while you are on a ladder - You cannot do this while you are on a ladder - Du kannst das nicht tun, während du an einer Leiter bist - Вы не можете этого делать, пока поднимаетесь по лестнице. - No puedes hacer esto mientras estás en una escalera - Je kunt deze actie op een ladder niet uitvoeren - Vous ne pouvez pas faire cela en étant sur une échelle. - - - You must have wood in your inventory in order to create a fireplace - You must have wood in your inventory in order to create a fireplace - Du brauchst Holz in deinem Inventar, um ein Feuer zu machen - Для разведения костра у вас должны быть дрова. - Debes tener leña en tu inventario para poder crear una fogata. - Je moet hout in je inventaris hebben om een kampvuur te maken - Vous devez avoir du bois dans votre inventaire pour pouvoir faire un feu de camp. - - - You must be in a forest and close to a tree to harvest wood. - You must be in a forest and close to a tree to harvest wood. - Sie müssen in einem Wald und nah an einem Baum sein, um Holz zu hacken. - Вы должны находится в лесу и подойти к дереву, чтобы нарубить дров. - Debes estar en el bosque y cerca de un árbol para recoger leña. - Je moet in een bos en in de buurt van een boom zijn om hout te hakken. - Vous devez être en forêt et proche d'un arbre pour couper du bois. - - - You do not have enough room in your inventory to do that. - You do not have enough room in your inventory to do that. - Sie haben nicht genug Platz in Ihrem Inventar um das zu tun. - У вас недостаточно места в инвентаре. - No tienes espacio suficiente en tu inventario para hacer eso. - Je hebt onvoldoende ruimte in je inventaris om die actie uit te voeren - Vous n'avez pas assez de place dans votre inventaire pour faire cela. - - - A pile of wood has been successfully added to your inventory. - A pile of wood has been successfully added to your inventory. - Ein Holzstoß wurde erfolgreich Ihrem Inventar hinzugefügt. - Дрова добавлены в ваш инвентарь. - Una pila de leña se agregó correctamente a tu inventario. - Er is brandhout toegevoegd aan je inventaris. - Une pile de bois a été ajoutée à votre inventaire avec succès. - - - You cannot do this while you are in the water. - You cannot do this while you are in the water. - Sie können dies nicht tun, während Sie im Wasser sind. - Это действие невозможно пока вы в воде. - No puedes hacer esto mientras estás en el agua. - Je kunt deze actie niet in het water uitvoeren - Vous ne pouvez pas faire cela lorsque vous êtes dans l'eau. - - - You have applied a heatpack to your body successfully. - You have applied a heatpack to your body successfully. - Sie haben das Heatpack erfolgreich appliziert - Вы успешно применили на вашем теле согревающий комплект. - Aplicaste correctamente un paquete de calor a tu cuerpo. - Je hebt met succes een heatpack op je lichaam gebruikt. - Vous avez utilisé un heatpack avec succès. - - - You cannot reload that combination, you need %1 %2 magazines. - You cannot reload that combination, you need %1 %2 magazines. - Sie können diese Munition nicht kombinieren, sie brauchen %1 %2 Magazine. - Вы не можете перезарядить эту комбинацию. Вам необходимо иметь магазины %1 %2. - No puedes recargar esa combinación, necesitas %1 cargadores de %2 - Je kan die combinatie niet herladen, je hebt %1 %2 magazijnen nodig. - Vous ne pouvez pas recharger cette combinaison, vous avez besoin de %1 %2 chargeur(s). - - - You have successfully reloaded %1 %2 magazines. - You have successfully reloaded %1 %2 magazines. - Sie haben erfolgreich %1 %2 Magazine hergestellt. - Магазины %1 %2 перезаряжены. - Recargaste correctamente %1 cargadores de %2. - Je hebt met succes %1 %2 magazijnen herladen. - Vous avez rechargé %1 %2 chargeur(s) avec succès. - - - %1 must be on your person to move it to/from your toolbelt. - %1 must be on your person to move it to/from your toolbelt. - %1 muss in ihrem Inventar sein um es aus/in ihren Werkzeuggürtel zu packen. - Для перемещения с/на пояс, предмет %1 должен быть у вас. - %1 debe estar en tu persona para moverlo hacia/desde el cinturon. - Je moet %1 op je persoon hebben om het van/naar je gereedschapsriem te verplaatsen - %1 doit être sur vous pour pouvoir le déplacer de/vers votre ceinture à outils. - - - %1 must be in your main inventory to %2 it. - %1 must be in your main inventory to %2 it. - %1 must be in your main inventory to %2 it. - Предмет %1 должен находиться в основном инвентаре чтобы %2 его. - %1 debe estar en tu inventario principal para: %2 - %1 moet zich in je hoofdinventaris bevinden om het te %2. - %1 doit être dans votre inventaire principal pour pouvoir le %2 - - - %1 is already being looted by someone else. - %1 is already being looted by someone else. - %1 wurde von einer anderen Person gelooted. - %1 уже кто-то обыскивает. - %1 ya fue saqueado por alguien más. - %1 wordt al door iemand anders opgepakt. - %1 est déjà en train d'être pillé par quelqu'un d'autre. - - - That tent is already being packed. - That tent is already being packed. - Dieses Zelt wurde bereits eingepackt. - Эту палатку уже упаковывают. - Esta carpa ya fue embalada. - Die tent wordt al ingepakt. - Cette tente est déjà en train d'être repliée. - His name was %1, it appears he died from %2 His name was %1, it appears he died from %2 - Sein Name war %1, er ist durch %2 gestorben + Sein Name war %1, anscheinend starb er %2 Его звали %1, похоже что он умер от %2 Su nombre era %1, y aparentemente murió por %2 Zijn naam was %1, het lijkt dat hij is gestorven aan %2 Son nom était %1, il semble qu'il soit mort d' %2 + Jeho jméno bylo %1, vypadá to, že je mrtvý od %2 a gunshot to the head a gunshot to the head - einen Schuss in den Kopf + durch einen Schuss in den Kopf попадания пули в голову un disparo en la cabeza een kogel in het hoofd une balle dans la tête + střela do hlavy a high calibre gunshot a high calibre gunshot - eine Großkalibrige Schrotflinte + an einer großkalibrigen Schusswunde попадания пули большого калибра un disparo de alto calibre een schot van hoog kaliber un tir de gros calibre + vysoko rážní střelba blood loss blood loss - hohen Blutverlust + durch hohen Blutverlust потери крови perdida de sangre bloedverlies une hémorragie + krev ztracena dehydration dehydration - dehydration + an Dehydrierung обезвоживания deshidratación uitdroging une déshydratation + dehydratace starvation starvation - verhungern + durch Verhungern голода falta de comida uithongering inanition + vyhladovění combat logging combat logging - combat logging + weil er im Kampf ausgeloggt ist выхода из игры в режиме боя huir de combate uitloggen tijdens een gevechtssituatie une déco en combat + odhlášen z boje an unknown cause an unknown cause - einen unbekannten Grund + ohne erkennbare Ursache неизвестной причины causas desconocidas een onbekende oorzaak une cause inconnue + neznámá příčina + + + Cannot Abort near another player! + Cannot Abort near another player! + Sie können nicht nahe eines anderen Spielers ausloggen! + Нельзя выходить находясь рядом с другим игроком! + ¡No puedes abortar cerca de otros jugadores! + Cannot Abort near another player! + Vous ne pouvez pas vous déconnecter a proximité d'autres joueurs + Hru nelze opustit pokud jste blízko jiného hráče! + + + Can Abort in %1 + Can Abort in %1 + Logout in %1 + Выход будет доступен через %1 + Puedes abortar en %1 + Can Abort in %1 + Vous pourrez vous déconnecter dans #1 + Hru lze opustit za %1 + + + Cannot Abort while in combat! + Cannot Abort while in combat! + Sie können nicht im Kampf ausloggen! + Нельзя выходить в бою! + ¡No puedes abortar en combate! + Cannot Abort while in combat! + Vous ne pouvez pas vous déconnecter en combat! + Hru nelze opustit, pokud jste v boji! + + + Arrow was broken and cannot be used again + Arrow was broken and cannot be used again + Arrow was broken and cannot be used again + Arrow was broken and cannot be used again + La flecha se rompió y no puede usarse nuevamente + Arrow was broken and cannot be used again + La flèche a été brisée et ne peut plus être utilisée. + Šipka byla zlomena a nemůže být použita znovu + + + + + SELECT YOUR GENDER + SELECT YOUR GENDER + Wählen Sie Ihr Geschlecht + Выберите свой пол + SELECCIONE SU GÉNERO + KIES JE GESLACHT + SELECTIONNEZ VOTRE GENRE + VYBER SI POHLAVÍ + + + Please select the gender you wish to play as. Your gender will be bound to this unique character and cannot be changed until you die. + Please select the gender you wish to play as. Your gender will be bound to this unique character and cannot be changed until you die. + Bitte wählen Sie das Geschlecht aus, mit dem Sie Spielen wollen. Ihr Geschlecht wird an diesen einzigartigen Charakter gebunden und kann nicht geändert werden, bis Sie sterben. + Пожалуйста, выберите пол вашего персонажа. Учтите, вы не сможете изменить его в течении игры, до тех пор, пока не погибнете. + Por favor selecciona el género con el que deseas jugar. Tu género se enlazará a tu personaje y solo podrá ser cambiado cuando mueras. + Kies alsjeblieft het geslacht waarmee je wilt spelen. Je geslacht zal gebonden zijn aan dit unieke karakter, en kan niet gewijzigd worden tot je komt te overlijden. + Veuillez sélectionner le genre que vous voulez jouer. Votre genre sera lié à ce personnage unique et sera définitif jusqu'à la mort de ce dernier. + Vyberte si prosím pohlaví, za které si přejete hrát. Vaše pohlaví bude přiřazeno k unikátní postavě a dokud neumřete, nelze pohlaví změnit. + + + MALE + MALE + Männlich + Мужчина + MASCULINO + MAN + HOMME + MUŽ + + + FEMALE + FEMALE + Weiblich + Женщина + FEMENINO + VROUW + FEMME + ŽENA - - - SELECT YOUR GENDER - SELECT YOUR GENDER - Wählen Sie Ihr Geschlecht - Выберите свой пол - SELECCIONE SU GÉNERO - KIES JE GESLACHT - SELECTIONNEZ VOTRE GENRE - - - Please select the gender you wish to play as. Your gender will be bound to this unique character and cannot be changed until you die. - Please select the gender you wish to play as. Your gender will be bound to this unique character and cannot be changed until you die. - Bitte wählen Sie das Geschlecht aus, mit dem sie Spielen wollen. Ihr Geschlecht wird an diesen einzigartigen Charakter gebunden und kann nicht geändert werden, bis sie sterben. - Пожалуйста, выберите пол вашего персонажа. Учтите, вы не сможете изменить его в течении игры, до тех пор, пока не погибнете. - Por favor selecciona el género con el que deseas jugar. Tu género se enlazará a tu personaje y solo podrá ser cambiado cuando mueras. - Kies alsjeblieft het geslacht waarmee je wilt spelen. Je geslacht zal gebonden zijn aan dit unieke karakter, en kan niet gewijzigd worden tot je komt te overlijden. - Veuillez sélectionner le genre que vous voulez jouer. Votre genre sera lié à ce personnage unique et sera définitif jusqu'à la mort de ce dernier. - - - MALE - MALE - Männlich - Мужчина - MASCULINO - MAN - HOMME - - - FEMALE - FEMALE - Weiblich - Женщина - FEMENINO - VROUW - FEMME - - Take Antibiotics @@ -702,6 +818,7 @@ Tomar Antibióticos Antibiotica innemen Prendre des Antibiotiques + Vzít si Antibiotika Gut Animal @@ -711,42 +828,57 @@ Achurar Animal Dier opensnijden Découper l'Animal + Vykuchat zvíře Cook Meat Cook Meat Fleisch zubereiten Приготовить мясо - Cocinar la Carne + Cocinar Carne Biefstuk koken Cuire la Viande + Upéct maso Boil Water Boil Water Wasser kochen - Вскипятить воду - Hervir el Agua + Прокипятить воду + Hervir Agua koge vand faire bouillir l'eau + Převařit vodu + + Throw + Throw + Throw + Бросить + Arrojar + Throw + Jeter + Throw + Remove fireplace Remove fireplace - Feuerplatz zerstören + Feuerstelle entfernen Убрать костер Remover fogata Kampvuur verwijderen Retirer le Feu de camp + Odstranit ohniště Pack Tent Pack Tent - Zelt einpacken + Zelt verpacken Упаковать палатку Embalar Carpa Tent inpakken Replier la Tente + Zabalit stan Drink Water @@ -756,24 +888,27 @@ Tomar Agua Water drinken Boire de l'Eau + Vypít vodu Fill Water Fill Water - Wasser abfüllen + Wasser einfüllen Наполнить фляжки Llenar con Agua Water bijvullen - Remplir d'Eau + Remplir d'Eau + Doplnit vodu Fill Jerrycan Fill Jerrycan - Benzinkanister füllen + Benzinkanister auffüllen Наполнить канистры Llenar Bidones Jerrycan bijvullen Remplir le(s) Jerrican(s) + Naplnit kanystr Drag Body @@ -783,6 +918,7 @@ Arrastrar Cuerpo Lichaam slepen Traîner le Corps + Táhnout tělo Check Pulse @@ -792,6 +928,7 @@ Tomar Pulso Hartslag controleren Contrôler le Pouls + Zkontrolovat puls Load patient into %1 @@ -801,6 +938,7 @@ Colocar paciente en %1 Patient in %1 laden Charger le patient dans %1 + Naložit pacienta do %1 Bandage Wounds @@ -810,6 +948,7 @@ Vendar Heridas Wonden verbinden Bander les Blessures + Obvázat zranění Give Epinephrine @@ -819,6 +958,7 @@ Dar Epinefrina Adrenaline injecteren Donner de l'Epinéphrine + Dát Epinefrin Give Morphine @@ -827,7 +967,8 @@ Сделать укол морфия Dar Morfina Morfine injecteren - Donner de la Morphine + Donner de la Morphine + Dát Morfium Give Painkillers @@ -837,6 +978,7 @@ Dar Analgésicos Pijnstillers geven Donner des Antidouleurs + Dát Prášky proti bolesti Give Blood Transfusion @@ -846,6 +988,7 @@ Dar Transfusión de Sangre Bloedtransfusie geven Donner une Transfusion de Sang + Dát Krevní transfúzi <t %2>Repair %1</t> @@ -855,6 +998,7 @@ <t %2>Reparar %1</t> <t %2>Repareren %1</t> <t %2>Réparer %1</t> + <t %2>Opravit %1</t> Refuel %1 @@ -864,24 +1008,27 @@ Reabastecer %1 Brandstof bijvullen %1 Remettre du carburant dans %1 + Doplnit palivo %1 Issue %1 Issue %1 - %1 ausrüsten + %1 einladen Установить %1 Problema %1 %1 uitrusten Problème %1 + Problém %1 Packup %1 Packup %1 - %1 einpacken + %1 demontieren Разобрать %1 Empaquetar %1 %1 inpakken Empaqueter %1 + Zabalit %1 Upgrade %1 @@ -891,6 +1038,7 @@ Mejorar %1 %1 upgraden Améliorer %1 + Vylepšit %1 Unload patients from %1 @@ -900,6 +1048,7 @@ Descargar pacientes del %1 Patiënten uit %1 laden Décharger le(s) patient(s) de %1 + Vyložit pacienty z %1 Pickup %1 @@ -909,6 +1058,7 @@ Tomar %1 %1 oppakken Ramasser %1 + Zvednout %1 Drop %1 @@ -918,6 +1068,7 @@ Dejar %1 %1 laten vallen Lâcher %1 + Odhodit %1 Extinguish %1 @@ -927,15 +1078,17 @@ Extinguir %1 %1 blussen Eteindre %1 + Uhasit %1 You cannot perform another blood transfusion so fast You cannot perform another blood transfusion so fast - You cannot perform another blood transfusion so fast - You cannot perform another blood transfusion so fast + Sie können so schnell keine weitere Bluttransfusion durchführen + Нельзя так часто переливать кровь! No puedes realizar otra transfución de sangre tan rápido. You cannot perform another blood transfusion so fast Vous ne pouvez pas faire d'autre transfusion de sang aussi rapidement + Nelze znovu provést krevní transfúzi tak rychle po sobě. Study Body @@ -945,6 +1098,7 @@ Estudiar Cuerpo Lichaam bestuderen Examiner le corps + Prozkoumat tělo Build %1 @@ -954,6 +1108,7 @@ Construir %1 %1 opbouwen Construire %1 + Postavit %1 Remove %1 @@ -963,6 +1118,7 @@ Remover %1 %1 verwijderen Enlever %1 + Odstranit %1 Save %1 @@ -972,33 +1128,37 @@ Guardar %1 %1 opslaan Sauvegarder %1 + Uložit %1 Turn Over %1 Turn Over %1 - Turn Over %1 - Turn Over %1 + %1 wenden + Перевернуть %1 Voltear %1 Turn Over %1 Retourner %1 + Otočit %1 Enable Stats Enable Stats - Enable Stats - Enable Stats + Statistik aktiveren + Показать статистику Activar Estadísticas Enable Stats Activer les Stats + Zapnout statistiky Sleep Sleep - Sleep - Sleep + Schlafen + Поспать Dormir Sleep Dormir + Spát Bandit @@ -1008,422 +1168,1309 @@ Bandido Bandiet Bandit + Bandita Tame Dog Tame Dog - zahmen Hund + Hund zähmen Приручить собаку Domesticar Perro Tame Dog Apprivoiser le Chien + Ochočit psa Move To Move To - Move To + Dorthin bewegen Иди туда Mover a Move To Aller à + Přesunout do Dog: %1 Dog: %1 - Dog: %1 - Dog: %1 + Hund: %1 + Собака: %1 Perro: %1 Dog: %1 Chien: %1 + Pes: %1 Call Dog Call Dog - Call Dog + Hund herbeirufen Позвать собаку Llamar Perro Call Dog Appeler le Chien + Zavolat psa Feed Dog Feed Dog - Feed Dog - Позвать собаку + Hund füttern + Накормить собаку Alimentar Perro Feed Dog Nourrir le Chien + Nakrmit psa Water Dog Water Dog - Water Dog - Позвать собаку + Wasser anbieten + Напоить собаку Hidratar Perro Water Dog Donner à boire au Chien + Dát psovi napít Dog: Sit Dog: Sit - Dog: Sit - Позвать собаку + Hund: Sitz + Собака: Сидеть! Perro: Sentado Dog: Sit Chien: S'asseoir + Psí příkaz: Sednout Dog: Lie Down Dog: Lie Down - Dog: Lie Down - Позвать собаку + Hund: Hinlegen + Собака: Лежать! Perro: Acostado Dog: Lie Down Chien : Couché + Psí příkaz: Lehnout Dog: Track Dog: Track - Dog: Track - Позвать собаку + Hund: Verfolgen + Собака: Искать! Perro: Rastrear Dog: Track Chien: Pister + Psí příkaz: stopuj Dog: Bark Dog: Bark - Dog: Bark - Позвать собаку + Hund: Bellen + Собака: Голос! Perro: Ladrar Dog: Bark Chien: Aboyer + Psí příkaz: Stěkej Dog: %1 Dog: %1 - Dog: %1 - Позвать собаку + Hund: %1 + Собака: %1 Perro: %1 Dog: %1 Chien: %1 + Psí příkaz: %1 Dog: Follow Dog: Follow - Dog: Follow - Позвать собаку + Hund: Folgen + Собака: Ко мне! Perro: Seguir Dog: Follow Chien: Suivre + Psí příkaz: Sleduj Box of Wet Matches Box of Wet Matches - Box of Wet Matches - Box of Wet Matches + Feuchte Streichholzschachtel + Коробка промокших спичек Caja de Fósforos Mojada Box of Wet Matches Boîte d'Allumettes mouillées + Krabička mokrých zápalek Box of wet matches. Box of wet matches. - Box of wet matches. - Box of wet matches. + Feuchte Streichholzschachtel. + Коробка промокших спичек. Caja de fósforos mojada. Box of wet matches. Boîte d'Allumettes mouillées. + Krabička plná mokrých zápalek. Blunt Hatchet Blunt Hatchet - Blunt Hatchet - Blunt Hatchet + Stumpfe Axt + Затупившийся топор Hacha Desafilada Blunt Hatchet Hache émoussée + Tupá sekera - Your Hatchet appears to be too bunt to be used. - Your Hatchet appears to be too bunt to be used. - Your Hatchet appears to be too bunt to be used. - Your Hatchet appears to be too bunt to be used. + Your Hatchet appears to be too blunt to be used. + Your Hatchet appears to be too blunt to be used. + Ihre Axt scheint zu stumpf zu sein, um sie zu verwenden. + Ваш топор слишком туп, чтобы его использовать. Tu hacha parece estar muy desafilada para ser usada. - Your Hatchet appears to be too bunt to be used. + Your Hatchet appears to be too blunt to be used. Votre Hache semble être trop émoussée pour l'utiliser + Vypadá to, že tvá sekera je příliž tupá na to, aby se dala použít. Blunt Knife Blunt Knife - Blunt Knife - Blunt Knife + Stumpfes Messer + Затупившийся нож Cuchillo Desafilado Blunt Knife Couteau émoussé + Tupý nůž - Your Knife appears to be too bunt. - Your Knife appears to be too bunt. - Your Knife appears to be too bunt. - Your Knife appears to be too bunt. + Your Knife appears to be too blunt. + Your Knife appears to be too blunt. + Ihr Messer scheint zu stumpf zu sein. + Ваш нож слишком туп, чтобы его использовать. Tu cuchillo parece estar muy desafilado. - Your Knife appears to be too bunt. + Your Knife appears to be too blunt. Votre couteau semble trop émoussé + Vypadá to, že tvůj nůž je příliš tupý. Raw Meat Raw Meat - Raw Meat - Ñûðîå ìÿñî + Rohes Fleisch + Сырое мясо Carne Cruda Raw Meat Viande Crue + Syrové maso Raw Meat to be used for sustainment, should be cooked prior to safe eating. Raw Meat to be used for sustainment, should be cooked prior to safe eating. - Raw Meat to be used for sustainment, should be cooked prior to safe eating. - Ñûðîå ìÿñî. Áóäåò âêóñíåå è áåçîïàñíåå, åñëè åãî ïðèãîòîâèòü. + Rohes Fleisch für den Verzehr, sollte sicherheitshalber vorher gekocht werden. + Сырое мясо. Будет вкуснее и безопаснее, если его приготовить. Carne Cruda que se utilizará para sobrevivir, debería cocinarse primero. Raw Meat to be used for sustainment, should be cooked prior to safe eating. La viande Crue peut être consommée mais devrait être cuite pour la manger en toute sécurité. + Kvůli bezpečnosti by mělo být syrové maso nejdříve upečeno. Mutton Raw Mutton Raw - Mutton Raw - Mutton Raw + Rohes Hammelfleisch + Ягнятина Cordero Crudo BMutton Raw Mouton Cru + Jehněčí maso - Goat Meat to be used for sustainment, must be cooked prior to eating. - Goat Meat to be used for sustainment, must be cooked prior to eating. - Goat Meat to be used for sustainment, must be cooked prior to eating. - Goat Meat to be used for sustainment, must be cooked prior to eating. + Goat Meat to be used for sustainment, should be cooked prior to safe eating. + Goat Meat to be used for sustainment, should be cooked prior to safe eating. + Ziegenfleisch für den Verzehr, muss vorher gekocht werden. + Ягнятина. Будет вкуснее и безопаснее, если ее приготовить. Carne de Cordero que se utilizará para sobrevivir, debería cocinarse primero. Goat Meat to be used for sustainment, must be cooked prior to eating. La Viande de Chèvre peut être consommée mais doit être cuite avant de pouvoir la manger. + Kvůli bezpečnosti by mělo být maso z kozy nejdříve upečeno. Raw Chicken Leg Raw Chicken Leg - Raw Chicken Leg - Raw Chicken Leg + Rohe Hühnchenkeule + Куриный окорочек Pata de Pollo Cruda Raw Chicken Leg Cuisse de Poulet crue + Syrová kuřecí noha - Chicken Leg to be used for sustainment, must be cooked prior to eating. - Chicken Leg to be used for sustainment, must be cooked prior to eating. - Chicken Leg to be used for sustainment, must be cooked prior to eating. - Chicken Leg to be used for sustainment, must be cooked prior to eating. + Chicken Leg to be used for sustainment, should be cooked prior to safe eating. + Chicken Leg to be used for sustainment, should be cooked prior to safe eating. + Hühnchenkeule für den Verzehr, muss vorher gekocht werden. + Сырой куриный окорочек. Будет вкуснее и безопаснее, если его приготовить. Pata de Pollo que se utilizará para sobrevivir, debería cocinarse primero. - Chicken Leg to be used for sustainment, must be cooked prior to eating. + Chicken Leg to be used for sustainment, should be cooked prior to safe eating. La Cuisse de Poulet crue peut être consommée mais doit être cuite avant de pouvoir la manger. + Kvůli bezpečnosti by měla být kuřecí nožka nejdříve upečena. Rabbit Raw Rabbit Raw - Rabbit Raw - Rabbit Raw + Rohes Kaninchen + Кролик Conejo Crudo Rabbit Raw Lapin cru + Králičí maso - Rabbit to be used for sustainment, must be cooked prior to eating. - Rabbit to be used for sustainment, must be cooked prior to eating. - Rabbit to be used for sustainment, must be cooked prior to eating. - Rabbit to be used for sustainment, must be cooked prior to eating. + Rabbit to be used for sustainment, should be cooked prior to safe eating. + Rabbit to be used for sustainment, should be cooked prior to safe eating. + Kaninchenfleisch für den Verzehr, muss vorher gekocht werden. + Кролик. Будет вкуснее и безопаснее, если его приготовить. Conejo que se utilizará para sobrevivir, debería cocinarse primero. - Rabbit to be used for sustainment, must be cooked prior to eating. + Rabbit to be used for sustainment, should be cooked prior to safe eating. Le Lapin cru peut être consommé mais doit être cuit avant de le manger. + Kvůli bezpečnosti by mělo být králičí maso nejdříve upečeno. Raw Bacon Raw Bacon - Raw Bacon - Raw Bacon + Roher Speck + Бекон Costillar de Cerdo Crudo Raw Bacon Bacon cru + Syrová slanina - Bacon to be used for sustainment, must be cooked prior to eating. - Bacon to be used for sustainment, must be cooked prior to eating. - Bacon to be used for sustainment, must be cooked prior to eating. - Bacon to be used for sustainment, must be cooked prior to eating. + Bacon to be used for sustainment, should be cooked prior to safe eating. + Bacon to be used for sustainment, should be cooked prior to safe eating. + Speck für den Verzehr, muss vorher gekocht werden. + Бекон. Будет вкуснее и безопаснее, если его приготовить. Costillar de Cerdo que se utilizará para sobrevivir, debería cocinarse primero. Bacon to be used for sustainment, must be cooked prior to eating. Le Bacon cru peut être consommé mais doit être cuit avant de le manger. - + Kvůli bezpečnosti by měla být slanina nejdříve upečena. + Raw Beef Raw Beef - Raw Beef - Ãîâÿäèíà + Rohes Rindfleisch + Говядина Churrasco Crudo Raw Beef Boeuf Cru + Syrové hovězí maso Beef to be used for sustainment, should be cooked prior to safe eating. Beef to be used for sustainment, should be cooked prior to safe eating. - Beef to be used for sustainment, should be cooked prior to safe eating. - Ãîâÿäèíà. Áóäåò âêóñíåå è áåçîïàñíåå, åñëè åå ïðèãîòîâèòü. + Rindfleisch für den Verzehr, muss vorher gekocht werden. + Говядина. Будет вкуснее и безопаснее, если ее приготовить. Currasco que se utilizará para sobrevivir, debería cocinarse primero. Beef to be used for sustainment, should be cooked prior to safe eating. Le Boeuf Cru peut être consommé mais doit être cuit avant de le manger. + Kvůli bezpečnosti by mělo být syrové hovězí maso nejdříve upečeno. Cooked Meat Cooked Meat - Cooked Meat - Æàðåíîå ìÿñî + Gekochtes Fleisch + Жареное мясо Carce Cocinada Cooked Meat Viande Cuite + Upečené maso Cooked Meat to be used for sustainment. Cooked Meat to be used for sustainment. - Cooked Meat to be used for sustainment. - Æàðåíîå ìÿñî, ãîòîâàÿ ê óïîòðåáëåíèþ. + Gekochtes Fleisch, für den Verzehr geeignet. + Жареное мясо, готовая к употреблению. Carne Cocinada que se utilizará para sobrevivir. Cooked Meat to be used for sustainment. La Viande Cuite peut être consommée. + Upečené maso může být snězeno abyste přežili. Cooked Mutton Cooked Mutton - Cooked Mutton - Cooked Mutton + Gekochtes Hammelfleisch + Жареная ягнятина Cordero Cocinado Cooked Mutton Mouton Cuit + Upečené jehněčí Goat Meat to be used for sustainment. Goat Meat to be used for sustainment. - Goat Meat to be used for sustainment. - Goat Meat to be used for sustainment. + Ziegenfleisch, für den Verzehr geeignet. + Жареная ягнятина, готовая к употреблению. Carne de Cordero que se utilizará para sobrevivir. Goat Meat to be used for sustainment. La Viande de Chèvre peut être consommée. + Upečené jehněčí může být snězeno abyste přežili. Chicken Leg Chicken Leg - Chicken Leg - Chicken Leg + Hühnchenkeule + Жареный куриный окрочек Pata de Pollo Chicken Leg Cuisse de Poulet + Kuřecí nožka Chicken Leg to be used for sustainment. Chicken Leg to be used for sustainment. - Chicken Leg to be used for sustainment. - Chicken Leg to be used for sustainment. + Hühnchenkeule, für den Verzehr geeignet. + Жареный куриный окрочек, готовый к употреблению. Pata de Pollo que se utilizará para sobrevivir. Chicken Leg to be used for sustainment. La cuisse de poulet peut être consommée. + Kuřecí noha může být snězena abyste přežili. Rabbit Rabbit - Rabbit - Rabbit + Kaninchen + Жареный кролик Conejo Rabbit Lapin + Králík Rabbit to be used for sustainmen. Rabbit to be used for sustainment. - Rabbit to be used for sustainment. - Rabbit to be used for sustainment. + Kaninchen, für den Verzehr geeignet. + Жареный кролик, готовый к употреблению. Conejo que se utilizará para sobrevivir. Rabbit to be used for sustainment. Le Lapin peut être consommé. + Králík může být snězen abyste přežili. Bacon Bacon - Bacon - Bacon + Speck + Готовый бекон Costillar de Cerdo Bacon Bacon + Slanina Bacon to be used for sustainment. Bacon to be used for sustainment. - Bacon to be used for sustainment. - Bacon to be used for sustainment. + Speck, für den Verzehr geeignet. + Бекон, готовый к употреблению. Costillar de Cerdo que se utilizará para sobrevivir. Bacon to be used for sustainment. Le Bacon peut être consommé. + Slanina může býst snězena abyste přežili. Angel Cookies Angel Cookies - Angel Cookies - Angel Cookies + Engelskekse + Печеньки! Galletitas de Ángel Angel Cookies Cookies d'Ange + Sušenky Angel - - Beefsteak - Beefsteak - Beefsteak + + Angel Cookies to boost your moral up! + Angel Cookies to boost your moral up! + Engelskekse, um Ihre Moral zu heben! + Печенюшки для поднятия настроения! + Galletitas de Ángel que levantan tu moral + Angel Cookies to boost your moral up! + Cookies d'Ange pour remonter votre moral! + Sušenky Angle vylepší vaší morálku! + + + Beefsteak + Beefsteak + Rindersteak Бифштекс Churrasco Beefsteak Bifteck - - - Angel Cookies to boost your moral up! - Angel Cookies to boost your moral up! - Angel Cookies to boost your moral up! - Angel Cookies to boost your moral up! - Galletitas de Ángel que levantan tu moral - Angel Cookies to boost your moral up! - Cookies d'Ange pour remonter votre moral! + Hovězí maso - - Beefsteak to be used for sustainment. - Beefsteak to be used for sustainment. - Beefsteak to be used for sustainment. + + Beefsteak to be used for sustainment. + Beefsteak to be used for sustainment. + Rindersteak, für den Verzehr geeignet. Бифштекс, готовый к употреблению. Churrasco que se utilizará para sobrevivir. Beefsteak to be used for sustainment. Le Bifteck peut être consommé. - + Biftek může být snězen abyste přežili. + Water Bottle (Boiled) Water Bottle (Boiled) - Water Bottle (Boiled) - Ôëÿæêà êèïÿ÷åíîé âîäû + Wasserflasche (Abgekocht) + Фляжка кипяченой воды Cantimplora con Agua Hervida Water Bottle (Boiled) Bouteille d'eau (Bouillie) + Láhev vody (převařená) A bottle of boiled water that has been filled and can be consumed. - A bottle of boiledwater that has been filled and can be consumed. - Eine Flasche mit abgekochten Wasser. - Бутылка boiledwater, который был заполнен и можно употреблять. + A bottle of boiled water that has been filled and can be consumed. + Eine Flasche abgekochtes Wasser, abgefüllt und für den Verzehr geeignet. + Фляжка кипяченой воды. Пригодна для питья. Una cantimplora llena con agua hervida y que puede consumirse. Een fles boiledwater dat is gevuld en kan worden geconsumeerd. Une bouteille a été remplie d'eau bouillie qui peut être consommée. + Plná láhev převařené vody, která může být vypita. + + + Soda + Soda + Soda + Газировка + Gaseosa + Soda + Soda + Soda + + + A clean, unopened can of Mountain Green. The long distance running simulator enthusiast's soda of choice. + A clean, unopened can of Mountain Green. The long distance running simulator enthusiast's soda of choice. + A clean, unopened can of Mountain Green. The long distance running simulator enthusiast's soda of choice. + Чистая, закрытая банка "Mountain Green". Выбор марафонцев. + Una limpia y cerrada lata de Mountain Green. Gaseosa elejida por el simulador entusiasta de correr grandes distancias. + A clean, unopened can of Mountain Green. The long distance running simulator enthusiast's soda of choice. + Une canette intacte de "Mountain Green". Le soda préféré des amateurs de simulateur de course longue distance. + Čistá a ještě neotevřená plechovka Mountain Green. Dobrá volba na dlouhou cestu. + + + Soda + Soda + Soda + Газировка + Gaseosa + Soda + Soda + Soda + + + A clean, unopened can of R4Z0R soda. They stopped selling these years ago! + A clean, unopened can of R4Z0R soda. They stopped selling these years ago! + A clean, unopened can of R4Z0R soda. They stopped selling these years ago! + Чистая, закрытая банка "R4Z0R". Уже давно исчезли перестали продаваться! + Una limpia y cerrada lata de gaseosa R4Z0R. Dejaron de venderlas hace años. + A clean, unopened can of R4Z0R soda. They stopped selling these years ago! + Une canette intacte de soda "R4Z0R". Ils ont arrêté de les vendre il y a des années !. + Čistá a ještě neotevřená plechovka sodovky R4Z0R. Před mnoho lety ji přestali prodávat! + + + Soda (Iced Tea) + Soda (Iced Tea) + Soda (Iced Tea) + Напиток (Iced Tea) + Gaseosa (Té Helado) + Soda (Iced Tea) + Soda (Iced Tea) + Soda (Iced Tea) + + + A clean, unopened can of Long's island iced tea. + A clean, unopened can of Long's island iced tea. + A clean, unopened can of Long's island iced tea. + Чистая, закрытая банка холодного чая. + Una limpia y cerrada lata de té helado Long's island. + A clean, unopened can of Long's island iced tea. + Une canette intacte d'iced tea de Long's Island. + Čistá a ještě neotevřená plechovka ledového čaje Long's island. + + + Soda (Grape) + Soda (Grape) + Soda (Grape) + Газировка (Grape) + Gaseosa (Grape) + Soda (Grape) + Soda (Grape) + Soda (Grape) + + + A clean, unopened can of Smasht grape soda. + A clean, unopened can of Smasht grape soda. + A clean, unopened can of Smasht grape soda. + Чистая, закрытая банка гейпфруктового "Smasht". + Una limpia y cerrada lata de gaseosa de uva Smasht. + A clean, unopened can of Smasht grape soda. + Une canette intacte de soda au raisin "Smasht". + Čistá a ještě neotevřená plechovka grepové sody Smasht. + + + Soda (Cola) + Soda (Cola) + Soda (Cola) + Газировка (Cola) + Gaseosa (Cola) + Soda (Cola) + Soda (Cola) + Soda (Cola) + + + A clean, unopened can of Dr. Wasteland soda. + A clean, unopened can of Dr. Wasteland soda. + A clean, unopened can of Dr. Wasteland soda. + Чистая, закрытая банка "Dr. Wasteland". + Una limpia y cerrada lata de gaseosa Dr. Wasteland. + A clean, unopened can of Dr. Wasteland soda. + Une canette intacte de soda "Dr. Wasteland". + Čistá a ještě neotevřená plechovka sodovky Dr. Wateland. + + + Soda (Orange) + Soda (Orange) + Soda (Orange) + Газировка (Orange) + Gaseosa (Orange) + Soda (Orange) + Soda (Orange) + Soda (Orange) + + + A clean, unopened can of Franka orange soda. + A clean, unopened can of Franka orange soda. + A clean, unopened can of Franka orange soda. + Чистая, закрытая банка апельсиновой "Franka". + Una limpia y cerrada lata de gaseosa de naranja Franka. + A clean, unopened can of Franka orange soda. + Une canette intacte de soda à l'orange "Franka". + Čistá a ještě neotevřená plechovka sodovky Franka orange. + + + Soda (Lemonade) + Soda (Lemonade) + Soda (Lemonade) + Газировка (Lemonade) + Gaseosa (Limonada) + Soda (Lemonade) + Soda (Limonade) + Soda (Limonáda) + + + A clean, unopened can of Mikhail Made Lemonade. Made by Mikhail. + A clean, unopened can of Mikhail Made Lemonade. Made by Mikhail. + A clean, unopened can of Mikhail Made Lemonade. Made by Mikhail. + Чистая, закрытая банка лимонада. Производства "Mikhail". + Una limpia y cerrada lata de limonada Mikhail. + A clean, unopened can of Mikhail Made Lemonade. Made by Mikhail. + Une canette intacte de limonade à la Mikhail. Fabriqué par Mikhail. + Čistá a ještě neotevřená plechovka Mikhail Made limonády. Vytvořeno Mikhailem. + + + Soda (Cola) + Soda (Cola) + Soda (Cola) + Газировка (Cola) + Fernet con Coca + Soda (Cola) + Soda (Cola) + Soda (Cola) + + + A clean, unopened can of Lirikola. An o7 brand. + A clean, unopened can of Lirikola. An o7 brand. + A clean, unopened can of Lirikola. An o7 brand. + Чистая, закрытая банка "Lirikola". Бренд "o7". + Una limpia y cerrada botella de Fernet "Lirikola" y CocaCola. + A clean, unopened can of Lirikola. An o7 brand. + Une canette intacte de "Lirikola". 7 ans d'âge. + Čistá a ještě neotevřená plechovka Lirikoly. o7 série. + + + Soda (Root Beer) + Soda (Root Beer) + Soda (Root Beer) + Пиво (Root Beer) + Cerveza de Raíz + Soda (Root Beer) + Bière (Root Beer) + Pivo (Root Beer) + + + A clean, unopened can of LVG root beer. + A clean, unopened can of LVG root beer. + A clean, unopened can of LVG root beer. + Чистая, закрытая банка пива "LVG root". + Una limpia y cerrada lata de cerveza de raíz LVG. + A clean, unopened can of LVG root beer. + Une canette intacte de bière "LVG root". + Čistá a ještě neotevřená plechovka piva LVG root. + + + Soda + Soda + Soda + Газировка + Gaseosa + Soda + Soda + Soda + + + A clean, unopened can of mZLY yZLY soda. + A clean, unopened can of mZLY yZLY soda. + A clean, unopened can of mZLY yZLY soda. + Чистая, закрытая банка "mZLY yZLY". + Una limpia y cerrada lata de gaseosa mZLY yZLY. + A clean, unopened can of mZLY yZLY soda. + Une canette intacte de soda "mZLY yZLY". + Čistá a ještě neotevřená plechovka mZLY yZLY sody. + + + Soda (Cola) + Soda (Cola) + Soda (Cola) + Газировка (Cola) + Gaseosa (Cola) + Soda (Cola) + Soda (Cola) + Soda (Cola) + + + A clean, unopened can of Peppsy soda. + A clean, unopened can of Peppsy soda. + A clean, unopened can of Peppsy soda. + Чистая, закрытая банка "Peppsy". + Una limpia y cerrada lata de gaseosa Peppsy. + A clean, unopened can of Peppsy soda. + Une canette intacte de soda "Peppsy". + Čistá a ještě neotevřená plechovka Peppsy sody. + + + Beer + Beer + Beer + Пиво + Cerveza + Beer + Bière + Pivo + + + A clean, unopened can of Rabbitman beer. + A clean, unopened can of Rabbitman beer. + A clean, unopened can of Rabbitman beer. + Чистая, закрытая банка пива "Rabbitman". + Una limpia y cerrada lata de cerveza Rabbitman. + A clean, unopened can of Rabbitman beer. + Une canette intacte de bière "Rabbitman". + Čistá a ještě neotevřená plechovka piva Rabbitman. + + + Soda + Soda + Soda + Газировка + Gaseosa + Soda + Soda + Soda + + + A clean, unopened can of Sacrite soda. + A clean, unopened can of Sacrite soda. + A clean, unopened can of Sacrite soda. + Чистая, закрытая банка "Sacrite". + Una limpia y cerrada lata de gaseosa Sacrite. + A clean, unopened can of Sacrite soda. + Une canette intacte de soda "Sacrite". + Čistá a ještě neotevřená plechovka Sacrite sody. + + + MRE + MRE + Feldration + Cухпай + MRE + MRE + MRE + MRE + + + Meal Ready-to-Eat + Meal Ready-to-Eat + MRE Feldration + упаковка сухого пайка. + Ración de combate. Carne lista para consumirse. + Meal Ready-to-Eat + Repas prêt à manger + Meal Ready-to-Eat + + + Pistachios + Pistachios + Pistazien + Фисташки + Pistachos + Pistachios + Pistaches + Pistachios + + + A pack of pistachios, roasted and salted. + A pack of pistachios, roasted and salted. + Eine Packung Pistazien, geröstet und gesalzen. + Пакет соленых, обжареных фисташек. + Una caja de pistachos, tostados y salados. + A pack of pistachios, roasted and salted. + Un paquet de pistaches, grillées et salées. + A pack of pistachios, roasted and salted. + + + Trail Mix + Trail Mix + Studentenfutter + Фруктово-ореховый микс + CerealMix + Trail Mix + Assortiment de fruits secs + Trail Mix + + + A pack of Papa's Original Trail Mix, with 12 different fruits and nuts. + A pack of Papa's Original Trail Mix, with 12 different fruits and nuts. + A pack of Papa's Original Trail Mix, with 12 different fruits and nuts. + Упаковка сушеных фруктов и орешков "Papa", 12 разных видов. + Una cada de CerealMix Original con 12 frutas y anillos diferentes. + A pack of Papa's Original Trail Mix, with 12 different fruits and nuts. + Un paquet d'assortiment de fruits secs "Papa", avec 12 fruits et noix différents. + A pack of Papa's Original Trail Mix, with 12 different fruits and nuts. + + + Can (Beans) + Can (Beans) + Can (Beans) + Банка черных бобов + Lata de Frijoles + Can (Beans) + Boîte (Haricots) + Can (Beans) + + + A clean, unopened can of Griff's black beans. + A clean, unopened can of Griff's black beans. + A clean, unopened can of Griff's black beans. + Чистая, закрытая банка черных бобов "Griff". + Una limpia y cerrada lata de frijoles negros "Griff". + A clean, unopened can of Griff's black beans. + Une boîte intacte d'haricots noirs "Griff". + A clean, unopened can of Griff's black beans. + + + Tin Can + Tin Can + Tin Can + Жестянка + Lata + Tin Can + Boîte en fer-blanc + Tin Can + + + An empty can of Griff's black beans. + An empty can of Griff's black beans. + An empty can of Griff's black beans. + Пустая банка от черных бобов "Griff". + Una lata vacia de frijoles negros "Griff". + An empty can of Griff's black beans. + Une boîte vide d'haricots noirs "Griff". + An empty can of Griff's black beans. + + + Can (Peaches) + Can (Peaches) + Can (Peaches) + Банка персиков + Lata de Duraznos + Can (Peaches) + Boîte (Pêches) + Can (Peaches) + + + A clean, unopened can of Bad Guy's ubiquitous peach slices. + A clean, unopened can of Bad Guy's ubiquitous peach slices. + A clean, unopened can of Bad Guy's ubiquitous peach slices. + Чистая, закрытая банка нарезанных персиков "Bad Guy". + Una limpia y cerrada lata de duraznos en rodajas "Bad Guy". + A clean, unopened can of Bad Guy's ubiquitous peach slices. + Une boîte intacte de pêches en morceaux de "Bad Guy". + A clean, unopened can of Bad Guy's ubiquitous peach slices. + + + Tin Can + Tin Can + Tin Can + Жестянка + Lata + Tin Can + Boîte en fer-blanc + Tin Can + + + An empty can of Bad Guy's ubiquitous peach slices. + An empty can of Bad Guy's ubiquitous peach slices. + An empty can of Bad Guy's ubiquitous peach slices. + Пустая банка от персиков "Bad Guy". + Una lata vacía de duraznos en rodajas "Bad Guy". + An empty can of Bad Guy's ubiquitous peach slices. + Une boîte vide de pêches en morceaux "Bad Guy". + An empty can of Bad Guy's ubiquitous peach slices. + + + Can (Ravioli) + Can (Ravioli) + Can (Ravioli) + Банка равиоли + Lata de Ravioles + Can (Ravioli) + Boîte (Raviolis) + Can (Ravioli) + + + A clean, unopened can of Chef Boneboy ravioli. + A clean, unopened can of Chef Boneboy ravioli. + A clean, unopened can of Chef Boneboy ravioli. + Чистая, закрытая банка равиоли "Chef Boneboy". + Una limpia y cerrada lata de ravioles "Chef Boneboy". + A clean, unopened can of Chef Boneboy ravioli. + Une boîte intacte de raviolis "Chef Boneboy". + A clean, unopened can of Chef Boneboy ravioli. + + + Tin Can + Tin Can + Tin Can + Жестянка + Lata + Tin Can + Boîte en fer-blanc + Tin Can + + + An empty can of Chef Boneboy ravioli. + An empty can of Chef Boneboy ravioli. + An empty can of Chef Boneboy ravioli. + Пустая банка от равиоли "Chef Boneboy". + Una lata vacía de ravioles "Chef Boneboy". + An empty can of Chef Boneboy ravioli. + Une boîte vide de raviolis "Chef Boneboy". + An empty can of Chef Boneboy ravioli. + + + Can (Corn) + Can (Corn) + Can (Corn) + Банка кукурузы + Lata de Maíz + Can (Corn) + Boîte (Maïs) + Can (Corn) + + + A clean, unopened can of Conrad's whole kernel corn. + A clean, unopened can of Conrad's whole kernel corn. + A clean, unopened can of Conrad's whole kernel corn. + Чистая, закрытая банка кукурузы "Conrad". + Una limpia y cerrada lata de granos de maíz enteros "Conrad". + A clean, unopened can of Conrad's whole kernel corn. + Une boîte intacte de maïs en grains "Conrad". + A clean, unopened can of Conrad's whole kernel corn. + + + Tin Can + Tin Can + Tin Can + Жестянка + Lata + Tin Can + Boîte en fer-blanc + Tin Can + + + An empty can of Conrad's whole kernel corn. + An empty can of Conrad's whole kernel corn. + An empty can of Conrad's whole kernel corn. + Пустая банка от кукурузы "Conrad". + Una lata vacía de granos de maíz enteros "Conrad". + An empty can of Conrad's whole kernel corn. + Une boîte vide de maïs en grains "Conrad". + An empty can of Conrad's whole kernel corn. + + + Can (Soup) + Can (Soup) + Can (Soup) + Банка супа + Lata de Sopa + Can (Soup) + Boîte (Soupe) + Can (Soup) + + + A clean, unopened can of Curgon's chicken noodle soup. + A clean, unopened can of Curgon's chicken noodle soup. + A clean, unopened can of Curgon's chicken noodle soup. + Чистая, закрытая банка куринного супа "Curgon". + Una limpia y cerrada lata de sopa de pollo con fideos "Curgon". + A clean, unopened can of Curgon's chicken noodle soup. + Une boîte intacte de soupe de nouilles au poulet "Curgon". + A clean, unopened can of Curgon's chicken noodle soup. + + + Tin Can + Tin Can + Tin Can + Жестянка + Lata + Tin Can + Boîte en fer-blanc + Tin Can + + + An empty can of Curgon's chicken noodle soup. + An empty can of Curgon's chicken noodle soup. + An empty can of Curgon's chicken noodle soup. + Пустая банка от супа "Curgon". + Una lata vacía de sopa de pollo con fideos "Curgon". + An empty can of Curgon's chicken noodle soup. + Une boîte vide de soupe de nouilles au poulet "Curgon". + An empty can of Curgon's chicken noodle soup. + + + Can (Beans) + Can (Beans) + Can (Beans) + Банка зеленого горошка + Lata de Frijoles + Can (Beans) + Boîte (Haricots) + Can (Beans) + + + A clean, unopened can of Demon Groves green beans. + A clean, unopened can of Demon Groves green beans. + A clean, unopened can of Demon Groves green beans. + Чистая, закрытая банка зеленого горошка "Demon Groves". + Una limpia y cerrada lata de frijoles verdes "Demon Groves". + A clean, unopened can of Demon Groves green beans. + Une boîte intacte d'haricots verts "Demon Groves". + A clean, unopened can of Demon Groves green beans. + + + Tin Can + Tin Can + Tin Can + Жестянка + Lata + Tin Can + Boîte en fer-blanc + Tin Can + + + An empty can of Demon Groves green beans. + An empty can of Demon Groves green beans. + An empty can of Demon Groves green beans. + Пустая банка от зеленого горошка "Demon Groves". + Una lata vacía de frijoles verdes "Demon Groves". + An empty can of Demon Groves green beans. + Une boîte vide d'haricots verts "Demon Groves". + An empty can of Demon Groves green beans. + + + Can (Spaghetti) + Can (Spaghetti) + Can (Spaghetti) + Банка спагетти + Lata de Spaghetti + Can (Spaghetti) + Boîte (Spaghettis) + Can (Spaghetti) + + + A clean, unopened can of FraggleOs spaghetti. + A clean, unopened can of FraggleOs spaghetti. + A clean, unopened can of FraggleOs spaghetti. + Чистая, закрытая банка спагетти "FraggleOs". + Una limpia y cerrada lata de spaghetti "FraggleOs". + A clean, unopened can of FraggleOs spaghetti. + Une boîte intacte de spaghettis "FraggleOs". + A clean, unopened can of FraggleOs spaghetti. + + + Tin Can + Tin Can + Tin Can + Жестянка + Lata + Tin Can + Boîte en fer-blanc + Tin Can + + + An empty can of FraggleOs spaghetti. + An empty can of FraggleOs spaghetti. + An empty can of FraggleOs spaghetti. + Пустая банка от спагетти "FraggleOs". + Una lata vacía de spaghetti "FraggleOs". + An empty can of FraggleOs spaghetti. + Une boîte vide de spaghettis "FraggleOs". + An empty can of FraggleOs spaghetti. + + + Can (Muffins) + Can (Muffins) + Can (Muffins) + Банка кексиков + Lata de Magdalenas + Can (Muffins) + Boîte (Muffins) + Can (Muffins) + + + A clean, unopened can of Herpy Dooves canned muffins. + A clean, unopened can of Herpy Dooves canned muffins. + A clean, unopened can of Herpy Dooves canned muffins. + Чистая, закрытая банка кексиков "Herpy Dooves". + Una limpia y cerrada lata de magdalenas "Herpy Dooves". + A clean, unopened can of Herpy Dooves canned muffins. + Une boîte intacte de muffins en conserve "Herpy Dooves". + A clean, unopened can of Herpy Dooves canned muffins. + + + Tin Can + Tin Can + Tin Can + Жестянка + Lata + Tin Can + Boîte en fer-blanc + Tin Can + + + An empty can of Herpy Dooves canned muffins. + An empty can of Herpy Dooves canned muffins. + An empty can of Herpy Dooves canned muffins. + Пустая банка от кексиков "Herpy Dooves". + Una lata vacía de magdalenas "Herpy Dooves". + An empty can of Herpy Dooves canned muffins. + Une boîte vide de muffins en conserve "Herpy Dooves". + An empty can of Herpy Dooves canned muffins. + + + Can (Fruit) + Can (Fruit) + Can (Fruit) + Банка компота + Ensalada de Frutas + Can (Fruit) + Boîte (Fruits) + Can (Fruit) + + + A clean, unopened can of Orlok mixed fruit. + A clean, unopened can of Orlok mixed fruit. + A clean, unopened can of Orlok mixed fruit. + Чистая, закрытая банка фруктового компота "Orlok". + Una limpia y cerrada lata de ensaladas de frutas "Orlok". + A clean, unopened can of Orlok mixed fruit. + Une boîte intacte de fruits mixés "Orlok". + A clean, unopened can of Orlok mixed fruit. + + + Tin Can + Tin Can + Tin Can + Жестянка + Lata + Tin Can + Boîte en fer-blanc + Tin Can + + + An empty can of Orlok mixed fruit. + An empty can of Orlok mixed fruit. + An empty can of Orlok mixed fruit. + Пустая банка от фруктового компота "Orlok". + Una lata vacía de ensalada de frutas "Orlok". + An empty can of Orlok mixed fruit. + Une boîte vide de fruits mixés "Orlok". + An empty can of Orlok mixed fruit. + + + Can (Chowder) + Can (Chowder) + Can (Chowder) + Банка похлебки + Sopa de Pescado + Can (Chowder) + Boîte (Soupe de palourdes) + Can (Chowder) + + + A clean, unopened can of Powell's New England clam chowder. + A clean, unopened can of Powell's New England clam chowder. + A clean, unopened can of Powell's New England clam chowder. + Чистая, закрытая банка похлебки из моллюсков "Powell's New England". + Una limpia y cerrada lata de sopa de pescados "Powell's New England". + A clean, unopened can of Powell's New England clam chowder. + Une boîte intacte de soupe de palourdes de "Powell's New England". + A clean, unopened can of Powell's New England clam chowder. + + + Tin Can + Tin Can + Tin Can + Жестянка + Lata + Tin Can + Boîte en fer-blanc + Tin Can + + + An empty can of Powell's New England clam chowder. + An empty can of Powell's New England clam chowder. + An empty can of Powell's New England clam chowder. + Пустая банка от похлебки "Powell's New England". + Una lata vacía de sopa de pescado "Powell's New England". + An empty can of Powell's New England clam chowder. + Une boîte vide de soupe de palourde de "Powell's New England". + An empty can of Powell's New England clam chowder. + + + Can (Beans) + Can (Beans) + Can (Beans) + Банка фасоли + Lata de Frijoles + Can (Beans) + Boîte (Haricots) + Can (Beans) + + + A clean, unopened can of Tyler's delicious kidney beans. + A clean, unopened can of Tyler's delicious kidney beans. + A clean, unopened can of Tyler's delicious kidney beans. + Чистая, закрытая банка деликатесной фасоли "Tyler". + Una limpia y cerrada lata de deliciosos frijoles rojos "Tyler". + A clean, unopened can of Tyler's delicious kidney beans. + Une boîte intacte de délicieux haricots nains "Tyler". + A clean, unopened can of Tyler's delicious kidney beans. + + + Tin Can + Tin Can + Tin Can + Жестянка + Lata + Tin Can + Boîte en fer-blanc + Tin Can + + + An empty can of Tyler's delicious kidney beans. + An empty can of Tyler's delicious kidney beans. + An empty can of Tyler's delicious kidney beans. + Пустая банка от фасоли "Tyler". + Una lata vacía de frijoles rojos "Tyler". + An empty can of Tyler's delicious kidney beans. + Une boîte vide de délicieux haricots nains "Tyler". + An empty can of Tyler's delicious kidney beans. + + + Can (Unknown) + Can (Unknown) + Can (Unknown) + Банка с чем-то + Lata Desconocida + Can (Unknown) + Boîte (Inconnu) + Can (Unknown) + + + A clean, unopened tin can. The label is missing. + A clean, unopened tin can. The label is missing. + A clean, unopened tin can. The label is missing. + Чистая, закрытая банка непонятно с чем. Наклейка утеряна. + Una limpia y cerrada lata sin etiqueta. + A clean, unopened tin can. The label is missing. + Une boîte intacte. L'étiquette est manquante. + A clean, unopened tin can. The label is missing. + + + Tin Can + Tin Can + Tin Can + Жестянка + Lata + Tin Can + Boîte en fer-blanc + Tin Can + + + An empty tin can. + An empty tin can. + An empty tin can. + Пустая банка от чего-то. + Una lata vacía. + An empty tin can. + Boîte en fer-blanc vide. + An empty tin can. + + + Toilet paper + Toilet paper + Toilettenpapier + Туалетная бумага + Papel Higiénico + Toilet paper + Papier toilette + Toilet paper + + + A roll of toilet paper. + A roll of toilet paper. + Eine Rolle Toilettenpapier. + Рулон туалетной бумаги. Может быть весьма полезным в определенных ситуациях. + Un rollo de papel higiénico. + A roll of toilet paper. + Un rouleau de papier toilette. + A roll of toilet paper. + + + Razor + Razor + Rasiermesser + Опасная бритва + Navaja + Razor + Razor + Razor + + + An old-fashioned cut-throat razor with a rounded French point. + An old-fashioned cut-throat razor with a rounded French point. + Ein altmodisches Rasiermesser mit französischem Rundkopf. + Старомодная опасная бритва. + Una vieja navaja con una punta francesa redondeada. + An old-fashioned cut-throat razor with a rounded French point. + An old-fashioned cut-throat razor with a rounded French point. + An old-fashioned cut-throat razor with a rounded French point. diff --git a/dayz_code/system/antihack.sqf b/dayz_code/system/antihack.sqf new file mode 100644 index 000000000..01c76a410 --- /dev/null +++ b/dayz_code/system/antihack.sqf @@ -0,0 +1,47 @@ +/* + Anti-Teleport + Created By Razor + Refactored By Alby +*/ + +private["_curpos","_lastpos","_curheight","_lastheight","_terrainHeight","_curtime","_lasttime","_distance","_difftime","_speed","_topSpeed"]; + +waitUntil {vehicle player == player}; + +_lastpos = getPosATL (vehicle player); +_lastheight = (ATLtoASL _lastpos) select 2; +_lasttime = time; + +while {alive player} do +{ + _curpos = getPosATL (vehicle player); + _curheight = (ATLtoASL _curpos) select 2; + _curtime = time; + _distance = _lastpos distance _curpos; + _difftime = (_curtime - _lasttime) max 0.001; + _speed = _distance / _difftime; + _topSpeed = 10; + + if (vehicle player != player) then { + _topSpeed = getNumber (configFile >> "CfgVehicles" >> typeOf (vehicle player) >> "maxSpeed"); + }; + + _terrainHeight = getTerrainHeightASL [_curpos select 0, _curpos select 1]; + + //diag_log format["DEBUG: terrain: %1 current: %2", _terrainHeight, _curheight]; + //diag_log format["DEBUG: all: %1 player: %2 fall: %3 terrain: %4", !((vehicle player == player) && (_curheight < _lastheight) && ((_curheight - _terrainHeight) > 1)), (vehicle player == player), (_curheight < _lastheight), (_curheight - _terrainHeight) > 1]; + + _debug = getMarkerPos "respawn_west"; + if ((_speed > _topSpeed) && (alive player) && ((driver (vehicle player) == player) or (isNull (driver (vehicle player)))) && (_debug distance _lastpos > 3000) && !((vehicle player == player) && (_curheight < _lastheight) && ((_curheight - _terrainHeight) > 1))) then { + (vehicle player) setpos _lastpos; + atp = [name player, dayz_characterID, _lastpos, _curPos, getPosATL player]; + publicVariableServer "atp"; + } else { + + _lastpos = _curpos; + _lastheight = _curheight; + }; + + _lasttime = _curtime; + sleep 0.5; +}; \ No newline at end of file diff --git a/dayz_code/system/player_monitor.fsm b/dayz_code/system/player_monitor.fsm index f22d4bdd2..e368a49ed 100644 --- a/dayz_code/system/player_monitor.fsm +++ b/dayz_code/system/player_monitor.fsm @@ -285,8 +285,13 @@ class FSM " _temp = round(player getVariable [""temperature"",100]);" \n " _currentState = [_currentWpn,_currentAnim,_temp];" \n " " \n - " //[""dayzCharDisco"",[dayz_characterID,_playerPos,[weapons player,_magazineArray],[typeOf (unitbackpack player),getWeaponCargo (unitbackpack player),getMagazineCargo (unitbackpack player)],_medical,_currentState,_currentModel]] call callRpcProcedure;" \n - " //diag_log str(dayzCharDisco); " \n + " dayz_Magazines = _magazineArray;" \n + " dayzPlayerSave = [player,dayz_Magazines,false];" \n + " publicVariableServer ""dayzPlayerSave"";" \n + " " \n + " if (isServer) then {" \n + " dayzPlayerSave call server_playerSync;" \n + " };" \n "" \n " dayz_lastSave = time;" \n " dayz_Magazines = [];" \n @@ -423,7 +428,11 @@ class FSM "" \n "_msg = [];" \n "" \n - "[""dayzLogin"",[_playerUID,player]] call callRpcProcedure;" \n + "//[""dayzLogin"",[_playerUID,player]] call callRpcProcedure;" \n + "" \n + "dayzLogin = [_playerUID,player];" \n + "publicVariable ""dayzLogin"";" \n + "" \n "dayzPlayerLogin = [];" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -484,7 +493,6 @@ class FSM "" \n "if (_model == ""Survivor1_DZ"") then {" \n " _model = ""Survivor2_DZ"";" \n - " diag_log (""PLOGIN: Model was default, loading as survivor"");" \n "};" \n "" \n "_isHack = false;" \n @@ -616,6 +624,7 @@ class FSM " };" \n " _countr = 0;" \n " {" \n + " if (_x == ""Crossbow"") then { _x = ""Crossbow_DZ"" };" \n " dayz_myBackpack addWeaponCargoGlobal [_x,(_backpackWpnQtys select _countr)];" \n " _countr = _countr + 1;" \n " } forEach _backpackWpnTypes;" \n @@ -623,6 +632,7 @@ class FSM " //Magazines" \n " _countr = 0;" \n " {" \n + " if (_x == ""BoltSteel"") then { _x = ""WoodenArrow"" }; // Convert BoltSteel to WoodenArrow" \n " dayz_myBackpack addMagazineCargoGlobal [_x,(_backpackMagQty select _countr)];" \n " _countr = _countr + 1;" \n " } forEach _backpackMagTypes;" \n @@ -646,7 +656,10 @@ class FSM "};" \n "" \n "dayzPlayerLogin2 = [];" \n - "[""dayzLogin2"",[_charID,player,_playerUID]] call callRpcProcedure;" \n + "//[""dayzLogin2"",[_charID,player,_playerUID]] call callRpcProcedure;" \n + "" \n + "dayzLogin2 = [_charID,player,_playerUID];" \n + "publicVariable ""dayzLogin2"";" \n "" \n "dayz_loadScreenMsg = ""Requesting Character data from server"";" \n "progressLoadingScreen 0.8;" \n @@ -963,12 +976,15 @@ class FSM " };" \n "};" \n "" \n - "if (_currentWpn == ""MeleeCrowbar"") then {" \n + "if (player hasWeapon ""MeleeCrowbar"") then {" \n " player addMagazine 'crowbar_swing';" \n "};" \n - "if (_currentWpn == ""MeleeHatchet"") then {" \n + "if (player hasWeapon ""MeleeHatchet"") then {" \n " player addMagazine 'hatchet_swing';" \n "};" \n + "if (player hasWeapon ""MeleeMachete"") then {" \n + " player addMagazine 'machete_swing';" \n + "};" \n "" \n "reload player;" \n "" \n @@ -1097,6 +1113,7 @@ class FSM " sleep 8;" \n " };" \n "};" \n + "" \n "dayz_locationCheck = [] spawn {" \n " while {true} do {" \n " call stream_locationCheck;" \n @@ -1109,6 +1126,16 @@ class FSM " sleep 2;" \n " };" \n "};" \n + "" \n + "dayz_Totalzedscheck = [] spawn {" \n + " while {true} do {" \n + " dayz_maxCurrentZeds = {alive _x} count entities ""zZombie_Base"";" \n + " sleep 60;" \n + " };" \n + "};" \n + "//Removed for now" \n + "[] execVM ""\z\addons\dayz_code\system\antihack.sqf"";" \n + "" \n "// TODO: questionably" \n "{ _x call fnc_vehicleEventHandler; } forEach vehicles;" \n "" \n @@ -1143,7 +1170,10 @@ class FSM init = /*%FSM*/"dayzGearSave = true;" \n "dayz_myPosition = getPosATL player;" \n "" \n - "[""dayzLoginRecord"",[_playerUID,_charID,0]] call callRpcProcedure;" \n + "//[""dayzLoginRecord"",[_playerUID,_charID,0]] call callRpcProcedure;" \n + "" \n + "dayzLoginRecord = [_playerUID,_charID,0];" \n + "publicVariable ""dayzLoginRecord"";" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links diff --git a/dayz_code/system/player_spawn_2.sqf b/dayz_code/system/player_spawn_2.sqf index 934bd4593..842d13ae1 100644 --- a/dayz_code/system/player_spawn_2.sqf +++ b/dayz_code/system/player_spawn_2.sqf @@ -105,9 +105,9 @@ while {true} do { */ //Has infection? - if (r_player_infected) then { - [player,"cough",8,true] call dayz_zombieSpeak; - }; + //if (r_player_infected) then { + // [player,"cough",8,false] call dayz_zombieSpeak; + //}; //Record Check _lastUpdate = time - dayZ_lastPlayerUpdate; @@ -156,7 +156,7 @@ while {true} do { _rnd = random 1; if (_rnd > 0.7) then { r_player_infected = true; - player setVariable["USEC_infected",true]; + //player setVariable["USEC_infected",true]; }; }; }; @@ -167,21 +167,37 @@ while {true} do { _rnd = random 1; if (_rnd > 0.95) then { r_player_infected = true; - player setVariable["USEC_infected",true]; + //player setVariable["USEC_infected",true]; }; }; }; }; }; - //If has infection reduce blood + //If has infection reduce blood cough and add shake if (r_player_infected) then { + if !(player getVariable["USEC_infected",false]) then { + player setVariable["USEC_infected",true,true]; + }; + + _rnd = ceil (random 8); + [player,"cough",_rnd,false,9] call dayz_zombieSpeak; + + if (_rnd < 3) then { + addCamShake [2, 1, 25]; + }; if (r_player_blood > 3000) then { r_player_blood = r_player_blood - 3; player setVariable["USEC_BloodQty",r_player_blood]; }; }; + //Pain Shake Effects + if (r_player_inpain and !r_player_unconscious) then { + playSound "breath_1"; + addCamShake [2, 1, 25]; + }; + //Hunger Effect _foodVal = dayz_statusArray select 0; _thirstVal = dayz_statusArray select 1; @@ -220,7 +236,9 @@ while {true} do { if ((time - dayz_damageCounter) > 180) then { if (!r_player_unconscious) then { dayz_canDisconnect = true; - ["dayzDiscoRem",getPlayerUID player] call callRpcProcedure; + //["dayzDiscoRem",getPlayerUID player] call callRpcProcedure; + dayzDiscoRem = getPlayerUID player; + publicVariable "dayzDiscoRem"; //Ensure Control is hidden _display = uiNamespace getVariable 'DAYZ_GUI_display'; @@ -233,8 +251,15 @@ while {true} do { //Save Checker if (dayz_unsaved) then { if ((time - dayz_lastSave) > _saveTime) then { - ["dayzPlayerSave",[player,dayz_Magazines,false]] call callRpcProcedure; + //["dayzPlayerSave",[player,dayz_Magazines,false]] call callRpcProcedure; + dayzPlayerSave = [player,dayz_Magazines,false]; + publicVariableServer "dayzPlayerSave"; + + if (isServer) then { + dayzPlayerSave call server_playerSync; + }; + dayz_lastSave = time; dayz_Magazines = []; }; @@ -252,26 +277,6 @@ while {true} do { //dayz_playerTrigger attachTo [_refObj,[0,0,0]]; //dayz_playerTrigger setTriggerArea [_size,_size,0,false]; - if (dayzDebug) then { - //Debug Info - _headShots = player getVariable["headShots",0]; - _kills = player getVariable["zombieKills",0]; - _killsH = player getVariable["humanKills",0]; - _killsB = player getVariable["banditKills",0]; - _humanity = player getVariable["humanity",0]; - _zombies = count entities "zZombie_Base"; - _zombiesA = {alive _x} count entities "zZombie_Base"; - //_groups = count allGroups; - //_dead = count allDead; - //dayz_zombiesLocal = {local _x} count entities "zZombie_Base"; - //_loot = count allMissionObjects "WeaponHolder"; - //_wrecks = count allMissionObjects "Wreck_Base"; - //_lootL = {local _x} count allMissionObjects "WeaponHolder"; - //_speed = (_vel distance [0,0,0]); - - hintSilent format["DEBUG MONITOR: \n\nZombies Killed: %1\nHeadshots: %2\nMurders: %10\nBandits Killed: %12\nBlood: %4\nZombies (alive/total): %15/%8\nName: %14\nHumanity: %11",_kills,_headShots,_speed,r_player_blood,round(dayz_temperatur),r_player_infected,dayz_inside,_zombies,_lastSave,_killsH,round(_humanity),_killsB,_freeTarget,dayz_playerName,_zombiesA]; - }; - // If in combat, display counter and restrict logout _startcombattimer = player getVariable["startcombattimer",0]; if (_startcombattimer == 1) then { diff --git a/dayz_code/system/zombie_agent.fsm b/dayz_code/system/zombie_agent.fsm index 327b7ecd4..2d65b0d83 100644 --- a/dayz_code/system/zombie_agent.fsm +++ b/dayz_code/system/zombie_agent.fsm @@ -1,108 +1,141 @@ /*%FSM*/ /*%FSM*/ /* -item0[] = {"init",0,250,-300.000000,-250.000000,-200.000000,-200.000000,0.000000,"init"}; -item1[] = {"End",1,250,50.000000,-250.000000,150.000000,-200.000000,0.000000,"End"}; -item2[] = {"Not_Alive",4,218,0.000000,300.000000,100.000000,350.000000,5.000000,"Not" \n "Alive"}; -item3[] = {"Nobody_Near",4,218,0.000000,375.000000,100.000000,425.000000,4.000000,"Nobody" \n "Near"}; -item4[] = {"loiter",4,218,-300.000000,0.000000,-200.000000,50.000000,0.000000,"loiter"}; -item5[] = {"Loiter",2,250,-300.000000,75.000000,-200.000000,125.000000,0.000000,"Loiter"}; -item6[] = {"In_Position",4,218,-175.000000,75.000000,-75.000000,125.000000,1.000000,"In Position"}; -item7[] = {"",7,210,-29.000042,321.000000,-20.999958,329.000000,0.000000,""}; -item8[] = {"",7,210,-29.000042,395.999939,-20.999958,404.000061,0.000000,""}; -item9[] = {"true",8,218,-300.000000,-175.000000,-200.000000,-125.000000,0.000000,"true"}; -item10[] = {"Begin",2,250,-300.000000,-100.000000,-200.000000,-50.000000,0.000000,"Begin"}; -item11[] = {"",7,210,-254.000046,-29.000004,-245.999954,-20.999996,0.000000,""}; -item12[] = {"",7,210,-204.000046,146.000000,-195.999954,154.000000,0.000000,""}; -item13[] = {"Has_Target",4,218,-150.000000,225.000000,-50.000000,275.000000,1.000000,"Has" \n "Target"}; -item14[] = {"Chase",2,250,-150.000000,300.000000,-50.000000,350.000000,0.000000,"Chase"}; -item15[] = {"",7,210,-29.000006,146.000000,-20.999996,154.000000,0.000000,""}; -item16[] = {"",7,210,-29.000006,196.000000,-20.999996,204.000000,0.000000,""}; -item17[] = {"",7,210,-104.000000,196.000000,-95.999992,204.000000,0.000000,""}; -item18[] = {"Time_Check",4,218,-425.000000,75.000000,-325.000000,125.000000,0.000000,"Time" \n "Check"}; -item19[] = {"Time_Check",4,218,-275.000000,300.000000,-175.000000,350.000000,0.000000,"Time" \n "Check"}; -item20[] = {"No_Target",4,218,-275.000000,375.000000,-175.000000,425.000000,3.000000,"No" \n "Target"}; -item21[] = {"",7,210,-479.000000,396.000000,-471.000000,404.000000,0.000000,""}; -item22[] = {"",7,210,-479.000000,146.000000,-471.000000,154.000000,0.000000,""}; -item23[] = {"",7,210,133.499985,321.000000,141.500000,329.000000,0.000000,""}; -item24[] = {"",7,210,133.500000,396.000000,141.500000,404.000000,0.000000,""}; -item25[] = {"Cleanup_",2,250,-25.000000,50.000000,75.000000,100.000000,0.000000,"Cleanup?"}; -item26[] = {"nobody_around",4,218,50.000000,-50.000000,150.000000,0.000000,0.000000,"nobody" \n "around"}; -item27[] = {"",7,210,-104.000023,396.000000,-95.999992,404.000000,0.000000,""}; -item28[] = {"cant_see",4,218,-275.000000,450.000000,-175.000000,500.000000,2.000000,"cant" \n "see"}; -item29[] = {"Finish_Move",2,250,-275.000000,525.000000,-175.000000,575.000000,0.000000,"Finish" \n "Move"}; -item30[] = {"finished",4,218,-425.000000,525.000000,-325.000000,575.000000,1.000000,"finished"}; -item31[] = {"",7,210,-479.000000,546.000000,-471.000000,554.000000,0.000000,""}; -item32[] = {"",7,210,-29.000002,546.000000,-20.999998,554.000000,0.000000,""}; -item33[] = {"",7,210,-304.000000,146.000000,-296.000000,154.000000,0.000000,""}; -item34[] = {"someone_here",4,218,-200.000000,-50.000000,-100.000000,0.000000,0.000000,"someone" \n "here"}; -item35[] = {"too_long",4,218,-425.000000,600.000000,-325.000000,650.000000,0.000000,"too long"}; -item36[] = {"",7,210,-229.000000,621.000000,-221.000000,629.000000,0.000000,""}; -item37[] = {"",7,210,-479.000000,621.000000,-471.000000,629.000000,0.000000,""}; -item38[] = {"Reset_Targeting",2,250,-525.000000,325.000000,-425.000000,375.000000,0.000000,"Reset" \n "Targeting"}; -item39[] = {"No_target",4,218,-525.000000,250.000000,-425.000000,300.000000,0.000000,"No target"}; -item40[] = {"",7,210,-104.000000,471.000000,-95.999992,479.000000,0.000000,""}; -item41[] = {"player_check",4,218,-425.000000,0.000000,-325.000000,50.000000,0.000000,"player" \n "check"}; -item42[] = {"is_Dedicated",4,218,-125.000000,-250.000000,-25.000000,-200.000000,5.000000,"is" \n "Dedicated"}; -item43[] = {"Not_Alive",4,4314,-75.000000,-50.000000,25.000000,0.000000,0.000000,"Not" \n "Alive"}; -link0[] = {0,9}; -link1[] = {0,42}; -link2[] = {2,23}; -link3[] = {3,24}; -link4[] = {4,5}; -link5[] = {5,6}; -link6[] = {5,12}; -link7[] = {5,18}; -link8[] = {5,41}; -link9[] = {6,5}; -link10[] = {7,2}; -link11[] = {7,8}; -link12[] = {8,3}; -link13[] = {9,10}; -link14[] = {10,11}; -link15[] = {11,4}; -link16[] = {12,15}; -link17[] = {12,17}; -link18[] = {13,14}; -link19[] = {14,7}; -link20[] = {14,19}; -link21[] = {14,27}; -link22[] = {15,16}; -link23[] = {16,7}; -link24[] = {17,13}; -link25[] = {18,5}; -link26[] = {19,14}; -link27[] = {20,21}; -link28[] = {21,38}; -link29[] = {22,33}; -link30[] = {23,25}; -link31[] = {24,23}; -link32[] = {25,26}; -link33[] = {25,34}; -link34[] = {25,43}; -link35[] = {26,1}; -link36[] = {27,20}; -link37[] = {27,40}; -link38[] = {28,29}; -link39[] = {29,30}; -link40[] = {29,32}; -link41[] = {29,36}; -link42[] = {30,31}; -link43[] = {31,21}; -link44[] = {32,8}; -link45[] = {33,5}; -link46[] = {34,5}; -link47[] = {35,37}; -link48[] = {36,35}; -link49[] = {37,31}; -link50[] = {38,39}; -link51[] = {39,22}; -link52[] = {40,28}; -link53[] = {41,5}; -link54[] = {42,1}; -link55[] = {43,25}; -globals[] = {25.000000,1,0,0,0,640,480,1,102,6316128,1,-650.021484,334.182983,700.299500,-373.567780,944,1030,1}; -window[] = {2,-1,-1,-32000,-32000,841,130,1338,130,3,962}; +item0[] = {"init",0,250,-75.000000,-250.000000,25.000000,-200.000000,0.000000,"init"}; +item1[] = {"End",1,250,175.000000,-250.000000,275.000000,-200.000000,0.000000,"End"}; +item2[] = {"wait",4,218,-75.000000,0.000000,25.000000,50.000000,0.000000,"wait"}; +item3[] = {"Looking_for_Targ",2,250,-75.000000,75.000000,25.000000,125.000000,0.000000,"Looking for" \n "Target"}; +item4[] = {"Not_Alive",4,218,0.000000,300.000000,100.000000,350.000000,5.000000,"Not" \n "Alive"}; +item5[] = {"Nobody_Near",4,218,0.000000,375.000000,100.000000,425.000000,4.000000,"Nobody" \n "Near"}; +item6[] = {"loiter",4,218,-325.000000,0.000000,-225.000000,50.000000,0.000000,"loiter"}; +item7[] = {"Loiter",2,250,-325.000000,75.000000,-225.000000,125.000000,0.000000,"Loiter"}; +item8[] = {"In_Position",4,218,-200.000000,75.000000,-100.000000,125.000000,1.000000,"In Position"}; +item9[] = {"",7,210,-29.000042,321.000000,-20.999958,329.000000,0.000000,""}; +item10[] = {"",7,210,-29.000042,395.999939,-20.999958,404.000061,0.000000,""}; +item11[] = {"true",8,218,-75.000000,-175.000000,25.000000,-125.000000,0.000000,"true"}; +item12[] = {"Begin",2,250,-75.000000,-100.000000,25.000000,-50.000000,0.000000,"Begin"}; +item13[] = {"",7,210,-29.000006,-29.000004,-20.999996,-20.999996,0.000000,""}; +item14[] = {"",7,210,-279.000061,-29.000004,-270.999969,-20.999996,0.000000,""}; +item15[] = {"",7,210,-254.000046,146.000000,-245.999954,154.000000,0.000000,""}; +item16[] = {"Has_Target",4,218,-150.000000,225.000000,-50.000000,275.000000,1.000000,"Has" \n "Target"}; +item17[] = {"Chase",2,4346,-150.000000,300.000000,-50.000000,350.000000,0.000000,"Chase"}; +item18[] = {"Time_Check",4,218,50.000000,75.000000,150.000000,125.000000,0.000000,"Time" \n "Check"}; +item19[] = {"",7,210,-29.000006,146.000000,-20.999996,154.000000,0.000000,""}; +item20[] = {"",7,210,-29.000006,196.000000,-20.999996,204.000000,0.000000,""}; +item21[] = {"",7,210,-104.000000,196.000000,-95.999992,204.000000,0.000000,""}; +item22[] = {"Time_Check",4,218,-450.000000,75.000000,-350.000000,125.000000,0.000000,"Time" \n "Check"}; +item23[] = {"Time_Check",4,218,-275.000000,300.000000,-175.000000,350.000000,0.000000,"Time" \n "Check"}; +item24[] = {"No_Target",4,218,-275.000000,375.000000,-175.000000,425.000000,3.000000,"No" \n "Target"}; +item25[] = {"",7,210,-479.000000,396.000000,-471.000000,404.000000,0.000000,""}; +item26[] = {"",7,210,-479.000000,146.000000,-471.000000,154.000000,0.000000,""}; +item27[] = {"",7,210,221.000000,321.000000,229.000000,329.000000,0.000000,""}; +item28[] = {"",7,210,221.000000,396.000000,229.000000,404.000000,0.000000,""}; +item29[] = {"Cleanup_",2,250,175.000000,200.000000,275.000000,250.000000,0.000000,"Cleanup?"}; +item30[] = {"nobody_around",4,218,175.000000,-25.000000,275.000000,25.000000,0.000000,"nobody" \n "around"}; +item31[] = {"",7,210,-104.000023,396.000000,-95.999992,404.000000,0.000000,""}; +item32[] = {"cant_see",4,218,-275.000000,450.000000,-175.000000,500.000000,2.000000,"cant" \n "see"}; +item33[] = {"Finish_Move",2,250,-275.000000,525.000000,-175.000000,575.000000,0.000000,"Finish" \n "Move"}; +item34[] = {"finished",4,218,-425.000000,525.000000,-325.000000,575.000000,1.000000,"finished"}; +item35[] = {"",7,210,-479.000000,546.000000,-471.000000,554.000000,0.000000,""}; +item36[] = {"",7,210,-29.000002,546.000000,-20.999998,554.000000,0.000000,""}; +item37[] = {"",7,210,-304.000000,146.000000,-296.000000,154.000000,0.000000,""}; +item38[] = {"someone_here",4,218,300.000000,200.000000,400.000000,250.000000,0.000000,"someone" \n "here"}; +item39[] = {"wait",2,250,300.000000,125.000000,400.000000,175.000000,0.000000,"wait"}; +item40[] = {"time_up",4,218,300.000000,-25.000000,400.000000,25.000000,0.000000,"time" \n "up"}; +item41[] = {"",7,210,346.000000,95.999992,354.000000,104.000000,0.000000,""}; +item42[] = {"",7,210,221.000000,96.000008,229.000000,103.999977,0.000000,""}; +item43[] = {"Time_Check",4,218,425.000000,125.000000,525.000000,175.000000,0.000000,"Time" \n "Check"}; +item44[] = {"",7,210,346.000000,-79.000000,354.000000,-71.000000,0.000000,""}; +item45[] = {"",7,210,221.000000,-79.000000,229.000000,-71.000000,0.000000,""}; +item46[] = {"too_long",4,218,-425.000000,600.000000,-325.000000,650.000000,0.000000,"too long"}; +item47[] = {"",7,210,-229.000000,621.000000,-221.000000,629.000000,0.000000,""}; +item48[] = {"",7,210,-479.000000,621.000000,-471.000000,629.000000,0.000000,""}; +item49[] = {"Reset_Targeting",2,250,-525.000000,325.000000,-425.000000,375.000000,0.000000,"Reset" \n "Targeting"}; +item50[] = {"true",8,218,-525.000000,250.000000,-425.000000,300.000000,0.000000,"true"}; +item51[] = {"deleted",4,218,425.000000,-25.000000,525.000000,25.000000,0.000000,"deleted"}; +item52[] = {"",7,210,471.000000,-79.000000,479.000000,-71.000000,0.000000,""}; +item53[] = {"",7,210,471.000000,95.999977,479.000000,104.000023,0.000000,""}; +item54[] = {"",7,210,-104.000000,471.000000,-95.999992,479.000000,0.000000,""}; +item55[] = {"player_check",4,218,-450.000000,0.000000,-350.000000,50.000000,0.000000,"player" \n "check"}; +item56[] = {"player_check",4,218,50.000000,0.000000,150.000000,50.000000,0.000000,"player" \n "check"}; +item57[] = {"is_Dedicated",4,218,50.000000,-250.000000,150.000000,-200.000000,5.000000,"is" \n "Dedicated"}; +link0[] = {0,11}; +link1[] = {0,57}; +link2[] = {2,3}; +link3[] = {3,18}; +link4[] = {3,19}; +link5[] = {3,56}; +link6[] = {4,27}; +link7[] = {5,28}; +link8[] = {6,7}; +link9[] = {7,8}; +link10[] = {7,15}; +link11[] = {7,22}; +link12[] = {7,55}; +link13[] = {8,7}; +link14[] = {9,4}; +link15[] = {9,10}; +link16[] = {10,5}; +link17[] = {11,12}; +link18[] = {12,13}; +link19[] = {13,2}; +link20[] = {13,14}; +link21[] = {14,6}; +link22[] = {15,19}; +link23[] = {16,17}; +link24[] = {17,9}; +link25[] = {17,23}; +link26[] = {17,31}; +link27[] = {18,3}; +link28[] = {19,20}; +link29[] = {20,9}; +link30[] = {20,21}; +link31[] = {21,16}; +link32[] = {22,7}; +link33[] = {23,17}; +link34[] = {24,25}; +link35[] = {25,49}; +link36[] = {26,37}; +link37[] = {27,29}; +link38[] = {28,27}; +link39[] = {29,38}; +link40[] = {29,42}; +link41[] = {30,45}; +link42[] = {31,24}; +link43[] = {31,54}; +link44[] = {32,33}; +link45[] = {33,34}; +link46[] = {33,36}; +link47[] = {33,47}; +link48[] = {34,35}; +link49[] = {35,25}; +link50[] = {36,10}; +link51[] = {37,7}; +link52[] = {38,39}; +link53[] = {39,41}; +link54[] = {39,43}; +link55[] = {40,44}; +link56[] = {41,40}; +link57[] = {41,42}; +link58[] = {41,53}; +link59[] = {42,30}; +link60[] = {43,39}; +link61[] = {44,45}; +link62[] = {45,1}; +link63[] = {46,48}; +link64[] = {47,46}; +link65[] = {48,35}; +link66[] = {49,50}; +link67[] = {50,26}; +link68[] = {51,52}; +link69[] = {52,44}; +link70[] = {53,51}; +link71[] = {54,32}; +link72[] = {55,7}; +link73[] = {56,3}; +link74[] = {57,1}; +globals[] = {25.000000,1,0,0,0,640,480,1,98,6316128,1,-816.896851,494.402466,582.355469,-218.549896,984,601,1}; +window[] = {2,-1,-1,-32000,-32000,912,132,1340,132,3,1001}; *//*%FSM*/ class FSM { @@ -164,6 +197,92 @@ class FSM }; }; /*%FSM*/ + /*%FSM*/ + class Looking_for_Targ + { + name = "Looking_for_Targ"; + init = /*%FSM*/"_isAlive = alive _agent;" \n + "_target = _agent call zombie_findTargetAgent;" \n + "_timeN = time;" \n + "" \n + "_newDest = _agent getVariable [""myDest"",getposATL _agent];" \n + "if (!isNil ""_newDest"") then {" \n + " if (_newDest distance _myDest > 0) then {" \n + " _myDest = _newDest;" \n + " _agent moveTo _myDest;" \n + " _agent forceSpeed 2;" \n + " };" \n + "};" \n + "" \n + "//diag_log (""Zombie "" + str(_agent) + "" Wait "");"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class Not_Alive + { + priority = 5.000000; + to="Cleanup_"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!_isAlive"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Nobody_Near + { + priority = 4.000000; + to="Cleanup_"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!_isSomeone"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Has_Target + { + priority = 1.000000; + to="Chase"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!(isNull _target)"/*%FSM*/; + action=/*%FSM*/"//Leader cries out" \n + "if (_isSomeone) then {" \n + " [_agent,""spotted"",0,false] call dayz_zombieSpeak;" \n + "};" \n + "if (!_hasMoved) then {" \n + " _agent setVariable[""doLoiter"",true,true];" \n + "};" \n + "_countr = 0;" \n + "_losCheck = 0;" \n + "_cantSee = false;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class player_check + { + priority = 0.000000; + to="Looking_for_Targ"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(time - _entityTime) > 30"/*%FSM*/; + action=/*%FSM*/"_entityTime = time;" \n + "" \n + "_list = (getposATL _agent) nearEntities [[""CAManBase"",""AllVehicles""],300];" \n + "_isSomeone = ({isPlayer _x} count _list) > 0;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Time_Check + { + priority = 0.000000; + to="Looking_for_Targ"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(time - _timeN) > 1"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ /*%FSM*/ class Loiter { @@ -171,17 +290,14 @@ class FSM init = /*%FSM*/"_isAlive = alive _agent;" \n "_target = _agent call zombie_findTargetAgent;" \n "" \n - "_agent setBehaviour ""SAFE"";" \n - "_agent setCombatMode ""BLUE"";" \n "_agent forceSpeed 2;" \n - "_agent setSkill 0;" \n "" \n "_newDest = _agent getVariable [""myDest"",getposATL _agent];" \n "if (!isNil ""_newDest"") then {" \n " if (_newDest distance _myDest > 0) then {" \n " _myDest = _newDest;" \n " _agent moveTo _myDest;" \n - "// _agent forceSpeed 2;" \n + " _agent forceSpeed 2;" \n " };" \n "};" \n "" \n @@ -226,15 +342,11 @@ class FSM condition=/*%FSM*/"!(isNull _target)"/*%FSM*/; action=/*%FSM*/"//Leader cries out" \n "if (_isSomeone) then {" \n - " [_agent,""spotted"",2,true] call dayz_zombieSpeak;" \n + " [_agent,""spotted"",0,false] call dayz_zombieSpeak;" \n "};" \n "if (!_hasMoved) then {" \n " _agent setVariable[""doLoiter"",true,true];" \n "};" \n - "" \n - "//Enable combat timer." \n - "//_target setVariable[""startcombattimer"", 1, true];" \n - "" \n "_countr = 0;" \n "_losCheck = 0;" \n "_cantSee = false;"/*%FSM*/; @@ -246,7 +358,7 @@ class FSM priority = 1.000000; to="Loiter"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_agent distance (_agent getVariable [""myDest"",getposATL _agent]) < 10"/*%FSM*/; + condition=/*%FSM*/"_agent distance (_agent getVariable [""myDest"",getposATL _agent]) < 3"/*%FSM*/; action=/*%FSM*/"[_agent,_position] call zombie_loiter;" \n "_myDest = _agent getVariable [""myDest"",getposATL _agent];" \n ""/*%FSM*/; @@ -292,8 +404,11 @@ class FSM "" \n "_hasMoved = _doLoiter;" \n "" \n - "" \n "_agent disableAI ""FSM"";" \n + "_agent setBehaviour ""CARELESS"";" \n + "_agent setCombatMode ""RED"";" \n + "_agent setSkill 0;" \n + "" \n "_newDest = getPosATL _agent;" \n "_timeN = time;" \n "" \n @@ -330,6 +445,16 @@ class FSM action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ + /*%FSM*/ + class wait + { + priority = 0.000000; + to="Looking_for_Targ"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!_hasMoved"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ }; }; /*%FSM*/ @@ -338,7 +463,6 @@ class FSM { name = "Chase"; init = /*%FSM*/"_timeN = time;" \n - "_vehicle = (getPosATL vehicle player);" \n "" \n "if (speed _agent < 0.1) then {_countr = _countr + 1} else {_countr = 0};" \n "_target = _agent call zombie_findTargetAgent;" \n @@ -347,21 +471,12 @@ class FSM "" \n "" \n "//Move to target" \n - "" \n - "_agent setBehaviour ""CARELESS"";" \n - "_agent setCombatMode ""RED"";" \n "_agent moveTo _targetPos;" \n - "_agent forceSpeed 6;" \n + "_agent forceSpeed 10;" \n "" \n - "" \n - "//if (_agent distance player > 15) then {" \n - "// _cantSee = [_agent,_target] call dayz_losCheck;" \n - "//};" \n - "" \n - "//Check if LOS" \n "if (_losCheck == 2) then {" \n " _losCheck = 0;" \n - "_cantSee = [_agent,_target] call dayz_losCheck;" \n + " _cantSee = [_agent,_target] call dayz_losCheck;" \n "};" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -413,7 +528,7 @@ class FSM priority = 0.000000; to="Chase"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(time - _timeN) > 2"/*%FSM*/; + condition=/*%FSM*/"(time - _timeN) > 1"/*%FSM*/; action=/*%FSM*/"_losCheck = _losCheck + 1;"/*%FSM*/; }; /*%FSM*/ @@ -424,33 +539,13 @@ class FSM class Cleanup_ { name = "Cleanup_"; - init = /*%FSM*/"_list = (getposATL _agent) nearEntities [[""CAManBase"",""AllVehicles""],400];" \n - "_isSomeone = ({isPlayer _x} count _list) > 0;" \n + init = /*%FSM*/"_waitStart = time;" \n "" \n - "_waitStart = time;"/*%FSM*/; + "_list = (getposATL _agent) nearEntities [[""CAManBase"",""AllVehicles""],300];" \n + "_isSomeone = ({isPlayer _x} count _list) > 0;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { - /*%FSM*/ - class someone_here - { - priority = 0.000000; - to="Loiter"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_isSomeone && _isAlive"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class Not_Alive - { - priority = 0.000000; - to="Cleanup_"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_isSomeone && !_isAlive && (time - _waitStart) > 60"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ /*%FSM*/ class nobody_around { @@ -461,6 +556,16 @@ class FSM action=/*%FSM*/"dayz_spawnZombies = dayz_spawnZombies - 1;"/*%FSM*/; }; /*%FSM*/ + /*%FSM*/ + class someone_here + { + priority = 0.000000; + to="wait"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"_isSomeone"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ }; }; /*%FSM*/ @@ -491,7 +596,7 @@ class FSM priority = 1.000000; to="Reset_Targeting"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"_agent distance _targetPos < 3"/*%FSM*/; + condition=/*%FSM*/"_agent distance _targetPos < 1"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ @@ -508,14 +613,65 @@ class FSM }; }; /*%FSM*/ + /*%FSM*/ + class wait + { + name = "wait"; + init = /*%FSM*/"_list = (getposATL _agent) nearEntities [[""CAManBase"",""AllVehicles""],300];" \n + "_isSomeone = ({isPlayer _x} count _list) > 0;" \n + "" \n + "_timeN = time;"/*%FSM*/; + precondition = /*%FSM*/""/*%FSM*/; + class Links + { + /*%FSM*/ + class time_up + { + priority = 0.000000; + to="End"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(time - _waitStart) > 300"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class nobody_around + { + priority = 0.000000; + to="End"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"!_isSomeone"/*%FSM*/; + action=/*%FSM*/"dayz_spawnZombies = dayz_spawnZombies - 1;"/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class deleted + { + priority = 0.000000; + to="End"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"isNull _agent;"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class Time_Check + { + priority = 0.000000; + to="wait"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"(time - _timeN) > 30"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + }; + }; + /*%FSM*/ /*%FSM*/ class Reset_Targeting { name = "Reset_Targeting"; - init = /*%FSM*/"_isAlive = alive _agent;" \n - "_target = _agent call zombie_findTargetAgent;" \n - "" \n - "if (!isNull _target) then {" \n + init = /*%FSM*/"if (!isNull _target) then {" \n " _targetPos = getPosATL _target;" \n " _agent setVariable [""myDest"",_targetPos];" \n " _agent moveTo _targetPos;" \n @@ -527,13 +683,13 @@ class FSM precondition = /*%FSM*/""/*%FSM*/; class Links { - /*%FSM*/ - class No_target + /*%FSM*/ + class true { priority = 0.000000; to="Loiter"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(isNull _target)"/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ diff --git a/dayz_communityassets/$PBOPREFIX$ b/dayz_communityassets/$PBOPREFIX$ new file mode 100644 index 000000000..438a62e8b --- /dev/null +++ b/dayz_communityassets/$PBOPREFIX$ @@ -0,0 +1 @@ +z\addons\dayz_communityassets \ No newline at end of file diff --git a/dayz_communityassets/config.cpp b/dayz_communityassets/config.cpp new file mode 100644 index 000000000..3891f30fe --- /dev/null +++ b/dayz_communityassets/config.cpp @@ -0,0 +1,8 @@ +class CfgPatches { + class dayz_communityassets { + units[] = {}; + weapons[] = {}; + requiredVersion = 0.1; + requiredAddons[] = {"dayz_code"}; + }; +}; \ No newline at end of file diff --git a/dayz_communityassets/icons/Readme.txt b/dayz_communityassets/icons/Readme.txt new file mode 100644 index 000000000..52b9bb3f3 --- /dev/null +++ b/dayz_communityassets/icons/Readme.txt @@ -0,0 +1 @@ +Just a placeholder \ No newline at end of file diff --git a/dayz_communityassets/models/2shells_pellet.p3d b/dayz_communityassets/models/2shells_pellet.p3d new file mode 100644 index 000000000..d40ad2679 Binary files /dev/null and b/dayz_communityassets/models/2shells_pellet.p3d differ diff --git a/dayz_communityassets/models/2shells_slugshot.p3d b/dayz_communityassets/models/2shells_slugshot.p3d new file mode 100644 index 000000000..8b4b7f4df Binary files /dev/null and b/dayz_communityassets/models/2shells_slugshot.p3d differ diff --git a/dayz_communityassets/models/Readme.txt b/dayz_communityassets/models/Readme.txt new file mode 100644 index 000000000..52b9bb3f3 --- /dev/null +++ b/dayz_communityassets/models/Readme.txt @@ -0,0 +1 @@ +Just a placeholder \ No newline at end of file diff --git a/dayz_communityassets/models/bacon_fried.p3d b/dayz_communityassets/models/bacon_fried.p3d new file mode 100644 index 000000000..37596752e Binary files /dev/null and b/dayz_communityassets/models/bacon_fried.p3d differ diff --git a/dayz_communityassets/models/bacon_raw.p3d b/dayz_communityassets/models/bacon_raw.p3d new file mode 100644 index 000000000..6986161e7 Binary files /dev/null and b/dayz_communityassets/models/bacon_raw.p3d differ diff --git a/dayz_communityassets/models/can_badguy_clean_empty.p3d b/dayz_communityassets/models/can_badguy_clean_empty.p3d new file mode 100644 index 000000000..cc93c2cb3 Binary files /dev/null and b/dayz_communityassets/models/can_badguy_clean_empty.p3d differ diff --git a/dayz_communityassets/models/can_badguy_clean_full.p3d b/dayz_communityassets/models/can_badguy_clean_full.p3d new file mode 100644 index 000000000..e47ce66f8 Binary files /dev/null and b/dayz_communityassets/models/can_badguy_clean_full.p3d differ diff --git a/dayz_communityassets/models/can_boneboy_clean_empty.p3d b/dayz_communityassets/models/can_boneboy_clean_empty.p3d new file mode 100644 index 000000000..f95726794 Binary files /dev/null and b/dayz_communityassets/models/can_boneboy_clean_empty.p3d differ diff --git a/dayz_communityassets/models/can_boneboy_clean_full.p3d b/dayz_communityassets/models/can_boneboy_clean_full.p3d new file mode 100644 index 000000000..1a9dfc113 Binary files /dev/null and b/dayz_communityassets/models/can_boneboy_clean_full.p3d differ diff --git a/dayz_communityassets/models/can_corn_clean_empty.p3d b/dayz_communityassets/models/can_corn_clean_empty.p3d new file mode 100644 index 000000000..09928c127 Binary files /dev/null and b/dayz_communityassets/models/can_corn_clean_empty.p3d differ diff --git a/dayz_communityassets/models/can_corn_clean_full.p3d b/dayz_communityassets/models/can_corn_clean_full.p3d new file mode 100644 index 000000000..cbb99c698 Binary files /dev/null and b/dayz_communityassets/models/can_corn_clean_full.p3d differ diff --git a/dayz_communityassets/models/can_curgon_clean_empty.p3d b/dayz_communityassets/models/can_curgon_clean_empty.p3d new file mode 100644 index 000000000..b7600936e Binary files /dev/null and b/dayz_communityassets/models/can_curgon_clean_empty.p3d differ diff --git a/dayz_communityassets/models/can_curgon_clean_full.p3d b/dayz_communityassets/models/can_curgon_clean_full.p3d new file mode 100644 index 000000000..0b5de0073 Binary files /dev/null and b/dayz_communityassets/models/can_curgon_clean_full.p3d differ diff --git a/dayz_communityassets/models/can_demon_clean_empty.p3d b/dayz_communityassets/models/can_demon_clean_empty.p3d new file mode 100644 index 000000000..746c860be Binary files /dev/null and b/dayz_communityassets/models/can_demon_clean_empty.p3d differ diff --git a/dayz_communityassets/models/can_demon_clean_full.p3d b/dayz_communityassets/models/can_demon_clean_full.p3d new file mode 100644 index 000000000..9307de076 Binary files /dev/null and b/dayz_communityassets/models/can_demon_clean_full.p3d differ diff --git a/dayz_communityassets/models/can_fraggleos_clean_empty.p3d b/dayz_communityassets/models/can_fraggleos_clean_empty.p3d new file mode 100644 index 000000000..a2d5a3a81 Binary files /dev/null and b/dayz_communityassets/models/can_fraggleos_clean_empty.p3d differ diff --git a/dayz_communityassets/models/can_fraggleos_clean_full.p3d b/dayz_communityassets/models/can_fraggleos_clean_full.p3d new file mode 100644 index 000000000..84b035c24 Binary files /dev/null and b/dayz_communityassets/models/can_fraggleos_clean_full.p3d differ diff --git a/dayz_communityassets/models/can_griff_clean_empty.p3d b/dayz_communityassets/models/can_griff_clean_empty.p3d new file mode 100644 index 000000000..e4f93ac86 Binary files /dev/null and b/dayz_communityassets/models/can_griff_clean_empty.p3d differ diff --git a/dayz_communityassets/models/can_griff_clean_full.p3d b/dayz_communityassets/models/can_griff_clean_full.p3d new file mode 100644 index 000000000..a9c116342 Binary files /dev/null and b/dayz_communityassets/models/can_griff_clean_full.p3d differ diff --git a/dayz_communityassets/models/can_herpy_clean_empty.p3d b/dayz_communityassets/models/can_herpy_clean_empty.p3d new file mode 100644 index 000000000..5b215d756 Binary files /dev/null and b/dayz_communityassets/models/can_herpy_clean_empty.p3d differ diff --git a/dayz_communityassets/models/can_herpy_clean_full.p3d b/dayz_communityassets/models/can_herpy_clean_full.p3d new file mode 100644 index 000000000..cdd506e1d Binary files /dev/null and b/dayz_communityassets/models/can_herpy_clean_full.p3d differ diff --git a/dayz_communityassets/models/can_orlok_clean_empty.p3d b/dayz_communityassets/models/can_orlok_clean_empty.p3d new file mode 100644 index 000000000..a3e433ae6 Binary files /dev/null and b/dayz_communityassets/models/can_orlok_clean_empty.p3d differ diff --git a/dayz_communityassets/models/can_orlok_clean_full.p3d b/dayz_communityassets/models/can_orlok_clean_full.p3d new file mode 100644 index 000000000..fea7d52d5 Binary files /dev/null and b/dayz_communityassets/models/can_orlok_clean_full.p3d differ diff --git a/dayz_communityassets/models/can_powell_clean_empty.p3d b/dayz_communityassets/models/can_powell_clean_empty.p3d new file mode 100644 index 000000000..164d711b2 Binary files /dev/null and b/dayz_communityassets/models/can_powell_clean_empty.p3d differ diff --git a/dayz_communityassets/models/can_powell_clean_full.p3d b/dayz_communityassets/models/can_powell_clean_full.p3d new file mode 100644 index 000000000..6b3fc331f Binary files /dev/null and b/dayz_communityassets/models/can_powell_clean_full.p3d differ diff --git a/dayz_communityassets/models/can_tylers_clean_empty.p3d b/dayz_communityassets/models/can_tylers_clean_empty.p3d new file mode 100644 index 000000000..cf409688e Binary files /dev/null and b/dayz_communityassets/models/can_tylers_clean_empty.p3d differ diff --git a/dayz_communityassets/models/can_tylers_clean_full.p3d b/dayz_communityassets/models/can_tylers_clean_full.p3d new file mode 100644 index 000000000..8d05cfb56 Binary files /dev/null and b/dayz_communityassets/models/can_tylers_clean_full.p3d differ diff --git a/dayz_communityassets/models/can_unlabeled_clean_empty.p3d b/dayz_communityassets/models/can_unlabeled_clean_empty.p3d new file mode 100644 index 000000000..f9939173d Binary files /dev/null and b/dayz_communityassets/models/can_unlabeled_clean_empty.p3d differ diff --git a/dayz_communityassets/models/can_unlabeled_clean_full.p3d b/dayz_communityassets/models/can_unlabeled_clean_full.p3d new file mode 100644 index 000000000..efad9c992 Binary files /dev/null and b/dayz_communityassets/models/can_unlabeled_clean_full.p3d differ diff --git a/dayz_communityassets/models/compass.p3d b/dayz_communityassets/models/compass.p3d new file mode 100644 index 000000000..6afc87f24 Binary files /dev/null and b/dayz_communityassets/models/compass.p3d differ diff --git a/dayz_communityassets/models/machete.p3d b/dayz_communityassets/models/machete.p3d new file mode 100644 index 000000000..54e1826a8 Binary files /dev/null and b/dayz_communityassets/models/machete.p3d differ diff --git a/dayz_communityassets/models/machete_weaponized.p3d b/dayz_communityassets/models/machete_weaponized.p3d new file mode 100644 index 000000000..b9b9d6639 Binary files /dev/null and b/dayz_communityassets/models/machete_weaponized.p3d differ diff --git a/dayz_communityassets/models/mre.p3d b/dayz_communityassets/models/mre.p3d new file mode 100644 index 000000000..c7f038cc4 Binary files /dev/null and b/dayz_communityassets/models/mre.p3d differ diff --git a/dayz_communityassets/models/nutmix.p3d b/dayz_communityassets/models/nutmix.p3d new file mode 100644 index 000000000..8ed1472a6 Binary files /dev/null and b/dayz_communityassets/models/nutmix.p3d differ diff --git a/dayz_communityassets/models/pistachio.p3d b/dayz_communityassets/models/pistachio.p3d new file mode 100644 index 000000000..98f00be37 Binary files /dev/null and b/dayz_communityassets/models/pistachio.p3d differ diff --git a/dayz_communityassets/models/quiver.p3d b/dayz_communityassets/models/quiver.p3d new file mode 100644 index 000000000..65a0674ee Binary files /dev/null and b/dayz_communityassets/models/quiver.p3d differ diff --git a/dayz_communityassets/models/razor.p3d b/dayz_communityassets/models/razor.p3d new file mode 100644 index 000000000..9131dc67f Binary files /dev/null and b/dayz_communityassets/models/razor.p3d differ diff --git a/dayz_communityassets/models/soda_clays_clean_empty.p3d b/dayz_communityassets/models/soda_clays_clean_empty.p3d new file mode 100644 index 000000000..385d26416 Binary files /dev/null and b/dayz_communityassets/models/soda_clays_clean_empty.p3d differ diff --git a/dayz_communityassets/models/soda_clays_clean_full.p3d b/dayz_communityassets/models/soda_clays_clean_full.p3d new file mode 100644 index 000000000..3f6f0cc30 Binary files /dev/null and b/dayz_communityassets/models/soda_clays_clean_full.p3d differ diff --git a/dayz_communityassets/models/soda_drwaste_clean_empty.p3d b/dayz_communityassets/models/soda_drwaste_clean_empty.p3d new file mode 100644 index 000000000..8a33a255d Binary files /dev/null and b/dayz_communityassets/models/soda_drwaste_clean_empty.p3d differ diff --git a/dayz_communityassets/models/soda_drwaste_clean_full.p3d b/dayz_communityassets/models/soda_drwaste_clean_full.p3d new file mode 100644 index 000000000..80fe4f4bc Binary files /dev/null and b/dayz_communityassets/models/soda_drwaste_clean_full.p3d differ diff --git a/dayz_communityassets/models/soda_franka_clean_empty.p3d b/dayz_communityassets/models/soda_franka_clean_empty.p3d new file mode 100644 index 000000000..6b723d027 Binary files /dev/null and b/dayz_communityassets/models/soda_franka_clean_empty.p3d differ diff --git a/dayz_communityassets/models/soda_franka_clean_full.p3d b/dayz_communityassets/models/soda_franka_clean_full.p3d new file mode 100644 index 000000000..980723b39 Binary files /dev/null and b/dayz_communityassets/models/soda_franka_clean_full.p3d differ diff --git a/dayz_communityassets/models/soda_lemonade_clean_empty.p3d b/dayz_communityassets/models/soda_lemonade_clean_empty.p3d new file mode 100644 index 000000000..d657194c9 Binary files /dev/null and b/dayz_communityassets/models/soda_lemonade_clean_empty.p3d differ diff --git a/dayz_communityassets/models/soda_lemonade_clean_full.p3d b/dayz_communityassets/models/soda_lemonade_clean_full.p3d new file mode 100644 index 000000000..f53a04be5 Binary files /dev/null and b/dayz_communityassets/models/soda_lemonade_clean_full.p3d differ diff --git a/dayz_communityassets/models/soda_lirik_clean_empty.p3d b/dayz_communityassets/models/soda_lirik_clean_empty.p3d new file mode 100644 index 000000000..5938464c9 Binary files /dev/null and b/dayz_communityassets/models/soda_lirik_clean_empty.p3d differ diff --git a/dayz_communityassets/models/soda_lirik_clean_full.p3d b/dayz_communityassets/models/soda_lirik_clean_full.p3d new file mode 100644 index 000000000..55f4d04c9 Binary files /dev/null and b/dayz_communityassets/models/soda_lirik_clean_full.p3d differ diff --git a/dayz_communityassets/models/soda_lvg_clean_empty.p3d b/dayz_communityassets/models/soda_lvg_clean_empty.p3d new file mode 100644 index 000000000..75542421c Binary files /dev/null and b/dayz_communityassets/models/soda_lvg_clean_empty.p3d differ diff --git a/dayz_communityassets/models/soda_lvg_clean_full.p3d b/dayz_communityassets/models/soda_lvg_clean_full.p3d new file mode 100644 index 000000000..37be514c4 Binary files /dev/null and b/dayz_communityassets/models/soda_lvg_clean_full.p3d differ diff --git a/dayz_communityassets/models/soda_mtngreen_clean_empty.p3d b/dayz_communityassets/models/soda_mtngreen_clean_empty.p3d new file mode 100644 index 000000000..db3d18fff Binary files /dev/null and b/dayz_communityassets/models/soda_mtngreen_clean_empty.p3d differ diff --git a/dayz_communityassets/models/soda_mtngreen_clean_full.p3d b/dayz_communityassets/models/soda_mtngreen_clean_full.p3d new file mode 100644 index 000000000..1d02019f5 Binary files /dev/null and b/dayz_communityassets/models/soda_mtngreen_clean_full.p3d differ diff --git a/dayz_communityassets/models/soda_mzly_clean_empty.p3d b/dayz_communityassets/models/soda_mzly_clean_empty.p3d new file mode 100644 index 000000000..a99538f3a Binary files /dev/null and b/dayz_communityassets/models/soda_mzly_clean_empty.p3d differ diff --git a/dayz_communityassets/models/soda_mzly_clean_full.p3d b/dayz_communityassets/models/soda_mzly_clean_full.p3d new file mode 100644 index 000000000..d0e87562e Binary files /dev/null and b/dayz_communityassets/models/soda_mzly_clean_full.p3d differ diff --git a/dayz_communityassets/models/soda_peppsy_clean_empty.p3d b/dayz_communityassets/models/soda_peppsy_clean_empty.p3d new file mode 100644 index 000000000..c13c500da Binary files /dev/null and b/dayz_communityassets/models/soda_peppsy_clean_empty.p3d differ diff --git a/dayz_communityassets/models/soda_peppsy_clean_full.p3d b/dayz_communityassets/models/soda_peppsy_clean_full.p3d new file mode 100644 index 000000000..854ac9baa Binary files /dev/null and b/dayz_communityassets/models/soda_peppsy_clean_full.p3d differ diff --git a/dayz_communityassets/models/soda_r4z0r_clean_empty.p3d b/dayz_communityassets/models/soda_r4z0r_clean_empty.p3d new file mode 100644 index 000000000..52791bfc7 Binary files /dev/null and b/dayz_communityassets/models/soda_r4z0r_clean_empty.p3d differ diff --git a/dayz_communityassets/models/soda_r4z0r_clean_full.p3d b/dayz_communityassets/models/soda_r4z0r_clean_full.p3d new file mode 100644 index 000000000..681501c8c Binary files /dev/null and b/dayz_communityassets/models/soda_r4z0r_clean_full.p3d differ diff --git a/dayz_communityassets/models/soda_rabbit_clean_empty.p3d b/dayz_communityassets/models/soda_rabbit_clean_empty.p3d new file mode 100644 index 000000000..0f346e8ad Binary files /dev/null and b/dayz_communityassets/models/soda_rabbit_clean_empty.p3d differ diff --git a/dayz_communityassets/models/soda_rabbit_clean_full.p3d b/dayz_communityassets/models/soda_rabbit_clean_full.p3d new file mode 100644 index 000000000..c49fd32b5 Binary files /dev/null and b/dayz_communityassets/models/soda_rabbit_clean_full.p3d differ diff --git a/dayz_communityassets/models/soda_sacrite_clean_empty.p3d b/dayz_communityassets/models/soda_sacrite_clean_empty.p3d new file mode 100644 index 000000000..a8786f84d Binary files /dev/null and b/dayz_communityassets/models/soda_sacrite_clean_empty.p3d differ diff --git a/dayz_communityassets/models/soda_sacrite_clean_full.p3d b/dayz_communityassets/models/soda_sacrite_clean_full.p3d new file mode 100644 index 000000000..312377561 Binary files /dev/null and b/dayz_communityassets/models/soda_sacrite_clean_full.p3d differ diff --git a/dayz_communityassets/models/soda_smasht_clean_empty.p3d b/dayz_communityassets/models/soda_smasht_clean_empty.p3d new file mode 100644 index 000000000..aaeec16c2 Binary files /dev/null and b/dayz_communityassets/models/soda_smasht_clean_empty.p3d differ diff --git a/dayz_communityassets/models/soda_smasht_clean_full.p3d b/dayz_communityassets/models/soda_smasht_clean_full.p3d new file mode 100644 index 000000000..2a208b198 Binary files /dev/null and b/dayz_communityassets/models/soda_smasht_clean_full.p3d differ diff --git a/dayz_communityassets/models/toiletpaper.p3d b/dayz_communityassets/models/toiletpaper.p3d new file mode 100644 index 000000000..2b6328986 Binary files /dev/null and b/dayz_communityassets/models/toiletpaper.p3d differ diff --git a/dayz_communityassets/pictures/Readme.txt b/dayz_communityassets/pictures/Readme.txt new file mode 100644 index 000000000..52b9bb3f3 --- /dev/null +++ b/dayz_communityassets/pictures/Readme.txt @@ -0,0 +1 @@ +Just a placeholder \ No newline at end of file diff --git a/dayz_communityassets/pictures/equip_2shells_pellet_CA.paa b/dayz_communityassets/pictures/equip_2shells_pellet_CA.paa new file mode 100644 index 000000000..bf3e1628f Binary files /dev/null and b/dayz_communityassets/pictures/equip_2shells_pellet_CA.paa differ diff --git a/dayz_communityassets/pictures/equip_2shells_slugshot_CA.paa b/dayz_communityassets/pictures/equip_2shells_slugshot_CA.paa new file mode 100644 index 000000000..b55afd911 Binary files /dev/null and b/dayz_communityassets/pictures/equip_2shells_slugshot_CA.paa differ diff --git a/dayz_communityassets/pictures/equip_bacon_fried_CA.paa b/dayz_communityassets/pictures/equip_bacon_fried_CA.paa new file mode 100644 index 000000000..0f1e61999 Binary files /dev/null and b/dayz_communityassets/pictures/equip_bacon_fried_CA.paa differ diff --git a/dayz_communityassets/pictures/equip_bacon_raw_CA.paa b/dayz_communityassets/pictures/equip_bacon_raw_CA.paa new file mode 100644 index 000000000..804fe0a2b Binary files /dev/null and b/dayz_communityassets/pictures/equip_bacon_raw_CA.paa differ diff --git a/dayz_communityassets/pictures/equip_can_badguy_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_can_badguy_clean_empty_ca.paa new file mode 100644 index 000000000..8a70c1795 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_badguy_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_badguy_clean_full_ca.paa b/dayz_communityassets/pictures/equip_can_badguy_clean_full_ca.paa new file mode 100644 index 000000000..6320afd21 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_badguy_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_boneboy_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_can_boneboy_clean_empty_ca.paa new file mode 100644 index 000000000..d253d6c2a Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_boneboy_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_boneboy_clean_full_ca.paa b/dayz_communityassets/pictures/equip_can_boneboy_clean_full_ca.paa new file mode 100644 index 000000000..02b4ea911 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_boneboy_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_corn_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_can_corn_clean_empty_ca.paa new file mode 100644 index 000000000..ee11a926b Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_corn_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_corn_clean_full_ca.paa b/dayz_communityassets/pictures/equip_can_corn_clean_full_ca.paa new file mode 100644 index 000000000..0dbca0d63 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_corn_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_curgon_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_can_curgon_clean_empty_ca.paa new file mode 100644 index 000000000..0d15a1e77 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_curgon_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_curgon_clean_full_ca.paa b/dayz_communityassets/pictures/equip_can_curgon_clean_full_ca.paa new file mode 100644 index 000000000..beff369ea Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_curgon_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_demon_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_can_demon_clean_empty_ca.paa new file mode 100644 index 000000000..cc0b6eab7 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_demon_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_demon_clean_full_ca.paa b/dayz_communityassets/pictures/equip_can_demon_clean_full_ca.paa new file mode 100644 index 000000000..2a1c3c737 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_demon_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_fraggleos_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_can_fraggleos_clean_empty_ca.paa new file mode 100644 index 000000000..483fc947d Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_fraggleos_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_fraggleos_clean_full_ca.paa b/dayz_communityassets/pictures/equip_can_fraggleos_clean_full_ca.paa new file mode 100644 index 000000000..8205c4199 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_fraggleos_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_griff_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_can_griff_clean_empty_ca.paa new file mode 100644 index 000000000..aea44f25e Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_griff_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_griff_clean_full_ca.paa b/dayz_communityassets/pictures/equip_can_griff_clean_full_ca.paa new file mode 100644 index 000000000..875a1c2c8 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_griff_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_herpy_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_can_herpy_clean_empty_ca.paa new file mode 100644 index 000000000..98ef46ac9 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_herpy_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_herpy_clean_full_ca.paa b/dayz_communityassets/pictures/equip_can_herpy_clean_full_ca.paa new file mode 100644 index 000000000..6bf565ec6 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_herpy_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_orlok_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_can_orlok_clean_empty_ca.paa new file mode 100644 index 000000000..2d4e43d1f Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_orlok_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_orlok_clean_full_ca.paa b/dayz_communityassets/pictures/equip_can_orlok_clean_full_ca.paa new file mode 100644 index 000000000..340145a46 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_orlok_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_powell_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_can_powell_clean_empty_ca.paa new file mode 100644 index 000000000..abf87cdb1 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_powell_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_powell_clean_full_ca.paa b/dayz_communityassets/pictures/equip_can_powell_clean_full_ca.paa new file mode 100644 index 000000000..1c16176af Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_powell_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_tylers_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_can_tylers_clean_empty_ca.paa new file mode 100644 index 000000000..3f69544e2 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_tylers_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_tylers_clean_full_ca.paa b/dayz_communityassets/pictures/equip_can_tylers_clean_full_ca.paa new file mode 100644 index 000000000..6ae82a41c Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_tylers_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_unlabeled_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_can_unlabeled_clean_empty_ca.paa new file mode 100644 index 000000000..dcb0c4101 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_unlabeled_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_can_unlabeled_clean_full_ca.paa b/dayz_communityassets/pictures/equip_can_unlabeled_clean_full_ca.paa new file mode 100644 index 000000000..162b187a7 Binary files /dev/null and b/dayz_communityassets/pictures/equip_can_unlabeled_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_machete_CA.paa b/dayz_communityassets/pictures/equip_machete_CA.paa new file mode 100644 index 000000000..a04db5ec4 Binary files /dev/null and b/dayz_communityassets/pictures/equip_machete_CA.paa differ diff --git a/dayz_communityassets/pictures/equip_mre_CA.paa b/dayz_communityassets/pictures/equip_mre_CA.paa new file mode 100644 index 000000000..a1302aacf Binary files /dev/null and b/dayz_communityassets/pictures/equip_mre_CA.paa differ diff --git a/dayz_communityassets/pictures/equip_nutmix_ca.paa b/dayz_communityassets/pictures/equip_nutmix_ca.paa new file mode 100644 index 000000000..64c4f26fb Binary files /dev/null and b/dayz_communityassets/pictures/equip_nutmix_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_pistachios_CA.paa b/dayz_communityassets/pictures/equip_pistachios_CA.paa new file mode 100644 index 000000000..c7387c64a Binary files /dev/null and b/dayz_communityassets/pictures/equip_pistachios_CA.paa differ diff --git a/dayz_communityassets/pictures/equip_quiver_ca.paa b/dayz_communityassets/pictures/equip_quiver_ca.paa new file mode 100644 index 000000000..527ecac02 Binary files /dev/null and b/dayz_communityassets/pictures/equip_quiver_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_razor_CA.paa b/dayz_communityassets/pictures/equip_razor_CA.paa new file mode 100644 index 000000000..a97a46be9 Binary files /dev/null and b/dayz_communityassets/pictures/equip_razor_CA.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_clays_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_soda_clays_clean_empty_ca.paa new file mode 100644 index 000000000..0340f5ed3 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_clays_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_clays_clean_full_ca.paa b/dayz_communityassets/pictures/equip_soda_clays_clean_full_ca.paa new file mode 100644 index 000000000..bf74227a8 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_clays_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_drwaste_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_soda_drwaste_clean_empty_ca.paa new file mode 100644 index 000000000..15d498940 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_drwaste_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_drwaste_clean_full_ca.paa b/dayz_communityassets/pictures/equip_soda_drwaste_clean_full_ca.paa new file mode 100644 index 000000000..dfa6a06bc Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_drwaste_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_franka_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_soda_franka_clean_empty_ca.paa new file mode 100644 index 000000000..374259efd Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_franka_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_franka_clean_full_ca.paa b/dayz_communityassets/pictures/equip_soda_franka_clean_full_ca.paa new file mode 100644 index 000000000..9c7c5e103 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_franka_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_lemonade_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_soda_lemonade_clean_empty_ca.paa new file mode 100644 index 000000000..c15580027 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_lemonade_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_lemonade_clean_full_ca.paa b/dayz_communityassets/pictures/equip_soda_lemonade_clean_full_ca.paa new file mode 100644 index 000000000..ddf7b8a62 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_lemonade_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_lirik_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_soda_lirik_clean_empty_ca.paa new file mode 100644 index 000000000..f212afcca Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_lirik_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_lirik_clean_full_ca.paa b/dayz_communityassets/pictures/equip_soda_lirik_clean_full_ca.paa new file mode 100644 index 000000000..272ec46c7 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_lirik_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_lvg_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_soda_lvg_clean_empty_ca.paa new file mode 100644 index 000000000..ee0dcc5aa Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_lvg_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_lvg_clean_full_ca.paa b/dayz_communityassets/pictures/equip_soda_lvg_clean_full_ca.paa new file mode 100644 index 000000000..4344f8149 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_lvg_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_mtngreen_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_soda_mtngreen_clean_empty_ca.paa new file mode 100644 index 000000000..d2c5bd14e Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_mtngreen_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_mtngreen_clean_full_ca.paa b/dayz_communityassets/pictures/equip_soda_mtngreen_clean_full_ca.paa new file mode 100644 index 000000000..b0ee633f0 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_mtngreen_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_mzly_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_soda_mzly_clean_empty_ca.paa new file mode 100644 index 000000000..48702ebc3 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_mzly_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_mzly_clean_full_ca.paa b/dayz_communityassets/pictures/equip_soda_mzly_clean_full_ca.paa new file mode 100644 index 000000000..3be23853d Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_mzly_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_peppsy_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_soda_peppsy_clean_empty_ca.paa new file mode 100644 index 000000000..60c7c4bdb Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_peppsy_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_peppsy_clean_full_ca.paa b/dayz_communityassets/pictures/equip_soda_peppsy_clean_full_ca.paa new file mode 100644 index 000000000..c405c9043 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_peppsy_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_r4z0r_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_soda_r4z0r_clean_empty_ca.paa new file mode 100644 index 000000000..eecf96089 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_r4z0r_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_r4z0r_clean_full_ca.paa b/dayz_communityassets/pictures/equip_soda_r4z0r_clean_full_ca.paa new file mode 100644 index 000000000..52fe4db1a Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_r4z0r_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_rabbit_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_soda_rabbit_clean_empty_ca.paa new file mode 100644 index 000000000..4e026f246 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_rabbit_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_rabbit_clean_full_ca.paa b/dayz_communityassets/pictures/equip_soda_rabbit_clean_full_ca.paa new file mode 100644 index 000000000..213b84204 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_rabbit_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_sacrite_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_soda_sacrite_clean_empty_ca.paa new file mode 100644 index 000000000..133d6a9aa Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_sacrite_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_sacrite_clean_full_ca.paa b/dayz_communityassets/pictures/equip_soda_sacrite_clean_full_ca.paa new file mode 100644 index 000000000..399afcc77 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_sacrite_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_smasht_clean_empty_ca.paa b/dayz_communityassets/pictures/equip_soda_smasht_clean_empty_ca.paa new file mode 100644 index 000000000..ff91a0911 Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_smasht_clean_empty_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_soda_smasht_clean_full_ca.paa b/dayz_communityassets/pictures/equip_soda_smasht_clean_full_ca.paa new file mode 100644 index 000000000..af158772f Binary files /dev/null and b/dayz_communityassets/pictures/equip_soda_smasht_clean_full_ca.paa differ diff --git a/dayz_communityassets/pictures/equip_toiletpaper_CA.paa b/dayz_communityassets/pictures/equip_toiletpaper_CA.paa new file mode 100644 index 000000000..09ed57781 Binary files /dev/null and b/dayz_communityassets/pictures/equip_toiletpaper_CA.paa differ diff --git a/dayz_communityassets/pictures/equip_warrow_ca.paa b/dayz_communityassets/pictures/equip_warrow_ca.paa new file mode 100644 index 000000000..c77920f08 Binary files /dev/null and b/dayz_communityassets/pictures/equip_warrow_ca.paa differ diff --git a/dayz_communityassets/textures/2shells_pellet.rvmat b/dayz_communityassets/textures/2shells_pellet.rvmat new file mode 100644 index 000000000..5b16d170b --- /dev/null +++ b/dayz_communityassets/textures/2shells_pellet.rvmat @@ -0,0 +1,32 @@ +ambient[] = {1, 1, 1, 1}; +diffuse[] = {1, 1, 1, 1}; +forcedDiffuse[] = {0, 0, 0, 0}; +emmisive[] = {0, 0, 0, 1}; +specular[] = {1, 1, 1, 1}; +specularPower = 200; +PixelShaderID = "NormalMapSpecularMap"; +VertexShaderID = "NormalMap"; + +class Stage1 { + texture = "z\addons\dayz_communityassets\textures\2shells_slugshot_nohq.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; + +class Stage2 { + texture = "z\addons\dayz_communityassets\textures\2shells_slugshot_smdi.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; diff --git a/dayz_communityassets/textures/2shells_pellet_CO.paa b/dayz_communityassets/textures/2shells_pellet_CO.paa new file mode 100644 index 000000000..dd22f8f1b Binary files /dev/null and b/dayz_communityassets/textures/2shells_pellet_CO.paa differ diff --git a/dayz_communityassets/textures/2shells_pellet_nohq.paa b/dayz_communityassets/textures/2shells_pellet_nohq.paa new file mode 100644 index 000000000..711ff1c2e Binary files /dev/null and b/dayz_communityassets/textures/2shells_pellet_nohq.paa differ diff --git a/dayz_communityassets/textures/2shells_pellet_smdi.paa b/dayz_communityassets/textures/2shells_pellet_smdi.paa new file mode 100644 index 000000000..7e172ca1d Binary files /dev/null and b/dayz_communityassets/textures/2shells_pellet_smdi.paa differ diff --git a/dayz_communityassets/textures/2shells_slugshot.rvmat b/dayz_communityassets/textures/2shells_slugshot.rvmat new file mode 100644 index 000000000..5b16d170b --- /dev/null +++ b/dayz_communityassets/textures/2shells_slugshot.rvmat @@ -0,0 +1,32 @@ +ambient[] = {1, 1, 1, 1}; +diffuse[] = {1, 1, 1, 1}; +forcedDiffuse[] = {0, 0, 0, 0}; +emmisive[] = {0, 0, 0, 1}; +specular[] = {1, 1, 1, 1}; +specularPower = 200; +PixelShaderID = "NormalMapSpecularMap"; +VertexShaderID = "NormalMap"; + +class Stage1 { + texture = "z\addons\dayz_communityassets\textures\2shells_slugshot_nohq.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; + +class Stage2 { + texture = "z\addons\dayz_communityassets\textures\2shells_slugshot_smdi.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; diff --git a/dayz_communityassets/textures/2shells_slugshot_CO.paa b/dayz_communityassets/textures/2shells_slugshot_CO.paa new file mode 100644 index 000000000..05a5854f3 Binary files /dev/null and b/dayz_communityassets/textures/2shells_slugshot_CO.paa differ diff --git a/dayz_communityassets/textures/2shells_slugshot_nohq.paa b/dayz_communityassets/textures/2shells_slugshot_nohq.paa new file mode 100644 index 000000000..d540959d8 Binary files /dev/null and b/dayz_communityassets/textures/2shells_slugshot_nohq.paa differ diff --git a/dayz_communityassets/textures/2shells_slugshot_smdi.paa b/dayz_communityassets/textures/2shells_slugshot_smdi.paa new file mode 100644 index 000000000..3db7af242 Binary files /dev/null and b/dayz_communityassets/textures/2shells_slugshot_smdi.paa differ diff --git a/dayz_communityassets/textures/Readme.txt b/dayz_communityassets/textures/Readme.txt new file mode 100644 index 000000000..52b9bb3f3 --- /dev/null +++ b/dayz_communityassets/textures/Readme.txt @@ -0,0 +1 @@ +Just a placeholder \ No newline at end of file diff --git a/dayz_communityassets/textures/bacon_fried.rvmat b/dayz_communityassets/textures/bacon_fried.rvmat new file mode 100644 index 000000000..f9beec6ba --- /dev/null +++ b/dayz_communityassets/textures/bacon_fried.rvmat @@ -0,0 +1,32 @@ +ambient[] = {1, 1, 1, 1}; +diffuse[] = {1, 1, 1, 1}; +forcedDiffuse[] = {0, 0, 0, 0}; +emmisive[] = {0, 0, 0, 1}; +specular[] = {1, 1, 1, 1}; +specularPower = 200; +PixelShaderID = "NormalMapSpecularMap"; +VertexShaderID = "NormalMap"; + +class Stage1 { + texture = "z\addons\dayz_communityassets\textures\bacon_fried_nohq.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; + +class Stage2 { + texture = "z\addons\dayz_communityassets\textures\bacon_fried_smdi.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; diff --git a/dayz_communityassets/textures/bacon_fried_CO.paa b/dayz_communityassets/textures/bacon_fried_CO.paa new file mode 100644 index 000000000..214bfad73 Binary files /dev/null and b/dayz_communityassets/textures/bacon_fried_CO.paa differ diff --git a/dayz_communityassets/textures/bacon_fried_nohq.paa b/dayz_communityassets/textures/bacon_fried_nohq.paa new file mode 100644 index 000000000..c6af95489 Binary files /dev/null and b/dayz_communityassets/textures/bacon_fried_nohq.paa differ diff --git a/dayz_communityassets/textures/bacon_fried_smdi.paa b/dayz_communityassets/textures/bacon_fried_smdi.paa new file mode 100644 index 000000000..0a29d459f Binary files /dev/null and b/dayz_communityassets/textures/bacon_fried_smdi.paa differ diff --git a/dayz_communityassets/textures/bacon_raw.rvmat b/dayz_communityassets/textures/bacon_raw.rvmat new file mode 100644 index 000000000..8823b4e42 --- /dev/null +++ b/dayz_communityassets/textures/bacon_raw.rvmat @@ -0,0 +1,32 @@ +ambient[] = {1, 1, 1, 1}; +diffuse[] = {1, 1, 1, 1}; +forcedDiffuse[] = {0, 0, 0, 0}; +emmisive[] = {0, 0, 0, 1}; +specular[] = {1, 1, 1, 1}; +specularPower = 200; +PixelShaderID = "NormalMapSpecularMap"; +VertexShaderID = "NormalMap"; + +class Stage1 { + texture = "z\addons\dayz_communityassets\textures\bacon_raw_nohq.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; + +class Stage2 { + texture = "z\addons\dayz_communityassets\textures\bacon_raw_smdi.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; diff --git a/dayz_communityassets/textures/bacon_raw_CO.paa b/dayz_communityassets/textures/bacon_raw_CO.paa new file mode 100644 index 000000000..d1884d4e3 Binary files /dev/null and b/dayz_communityassets/textures/bacon_raw_CO.paa differ diff --git a/dayz_communityassets/textures/bacon_raw_nohq.paa b/dayz_communityassets/textures/bacon_raw_nohq.paa new file mode 100644 index 000000000..35aaa5de1 Binary files /dev/null and b/dayz_communityassets/textures/bacon_raw_nohq.paa differ diff --git a/dayz_communityassets/textures/bacon_raw_smdi.paa b/dayz_communityassets/textures/bacon_raw_smdi.paa new file mode 100644 index 000000000..eba156cd5 Binary files /dev/null and b/dayz_communityassets/textures/bacon_raw_smdi.paa differ diff --git a/dayz_communityassets/textures/can_badguy_clean_co.paa b/dayz_communityassets/textures/can_badguy_clean_co.paa new file mode 100644 index 000000000..e443e571e Binary files /dev/null and b/dayz_communityassets/textures/can_badguy_clean_co.paa differ diff --git a/dayz_communityassets/textures/can_boneboy_clean_co.paa b/dayz_communityassets/textures/can_boneboy_clean_co.paa new file mode 100644 index 000000000..a74533999 Binary files /dev/null and b/dayz_communityassets/textures/can_boneboy_clean_co.paa differ diff --git a/dayz_communityassets/textures/can_clean_super.rvmat b/dayz_communityassets/textures/can_clean_super.rvmat new file mode 100644 index 000000000..ed142a0af --- /dev/null +++ b/dayz_communityassets/textures/can_clean_super.rvmat @@ -0,0 +1,77 @@ +ambient[] = {1, 1, 1, 1}; +diffuse[] = {0.501961, 0.501961, 0.501961, 1}; +forcedDiffuse[] = {0, 0, 0, 0}; +emmisive[] = {0, 0, 0, 1}; +specular[] = {0.101961, 0.101961, 0.101961, 0.88}; +specularPower = 450; +PixelShaderID = "Super"; +VertexShaderID = "Super"; +class Stage1 +{ + texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,NOHQ)"; + uvSource="tex"; + class uvTransform + { + aside[]={1,0,0}; + up[]={0,1,0}; + dir[]={0,0,0}; + pos[]={0,0,0}; + }; +}; +class Stage2 +{ + texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)"; + uvSource = "tex"; + + class uvTransform { + aside[] = {10, 0, 0}; + up[] = {0, 10, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; +class Stage3 +{ + texture = "#(argb,8,8,3)color(0,0,0,0,MC)"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; +class Stage4 +{ + texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,AS)"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; +class Stage5 +{ + texture="z\addons\dayz_communityassets\textures\can_mat_clean_smdi.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; +class Stage6 { + texture = "#(ai,64,128,1)fresnel(4.01,2.86)"; + uvSource = "none"; +}; +class Stage7 +{ + texture = "ca\data\env_land_co.paa"; + uvSource = "none"; +}; diff --git a/dayz_communityassets/textures/can_corn_clean_co.paa b/dayz_communityassets/textures/can_corn_clean_co.paa new file mode 100644 index 000000000..e8622c87c Binary files /dev/null and b/dayz_communityassets/textures/can_corn_clean_co.paa differ diff --git a/dayz_communityassets/textures/can_curgon_clean_co.paa b/dayz_communityassets/textures/can_curgon_clean_co.paa new file mode 100644 index 000000000..8389d1a4c Binary files /dev/null and b/dayz_communityassets/textures/can_curgon_clean_co.paa differ diff --git a/dayz_communityassets/textures/can_demon_clean_co.paa b/dayz_communityassets/textures/can_demon_clean_co.paa new file mode 100644 index 000000000..7a3b60145 Binary files /dev/null and b/dayz_communityassets/textures/can_demon_clean_co.paa differ diff --git a/dayz_communityassets/textures/can_derpy_clean_co.paa b/dayz_communityassets/textures/can_derpy_clean_co.paa new file mode 100644 index 000000000..82f0bbe7a Binary files /dev/null and b/dayz_communityassets/textures/can_derpy_clean_co.paa differ diff --git a/dayz_communityassets/textures/can_fraggleos_clean_co.paa b/dayz_communityassets/textures/can_fraggleos_clean_co.paa new file mode 100644 index 000000000..86357d366 Binary files /dev/null and b/dayz_communityassets/textures/can_fraggleos_clean_co.paa differ diff --git a/dayz_communityassets/textures/can_griff_clean_co.paa b/dayz_communityassets/textures/can_griff_clean_co.paa new file mode 100644 index 000000000..442afbdf9 Binary files /dev/null and b/dayz_communityassets/textures/can_griff_clean_co.paa differ diff --git a/dayz_communityassets/textures/can_herpy_clean_co.paa b/dayz_communityassets/textures/can_herpy_clean_co.paa new file mode 100644 index 000000000..9cc1ff87f Binary files /dev/null and b/dayz_communityassets/textures/can_herpy_clean_co.paa differ diff --git a/dayz_communityassets/textures/can_mat_clean_smdi.paa b/dayz_communityassets/textures/can_mat_clean_smdi.paa new file mode 100644 index 000000000..7ef053d25 Binary files /dev/null and b/dayz_communityassets/textures/can_mat_clean_smdi.paa differ diff --git a/dayz_communityassets/textures/can_orlok_clean_co.paa b/dayz_communityassets/textures/can_orlok_clean_co.paa new file mode 100644 index 000000000..87ba2c227 Binary files /dev/null and b/dayz_communityassets/textures/can_orlok_clean_co.paa differ diff --git a/dayz_communityassets/textures/can_powell_clean_co.paa b/dayz_communityassets/textures/can_powell_clean_co.paa new file mode 100644 index 000000000..52ec6f6c3 Binary files /dev/null and b/dayz_communityassets/textures/can_powell_clean_co.paa differ diff --git a/dayz_communityassets/textures/can_tylers_clean_co.paa b/dayz_communityassets/textures/can_tylers_clean_co.paa new file mode 100644 index 000000000..e6e732563 Binary files /dev/null and b/dayz_communityassets/textures/can_tylers_clean_co.paa differ diff --git a/dayz_communityassets/textures/can_unlabeled_clean_co.paa b/dayz_communityassets/textures/can_unlabeled_clean_co.paa new file mode 100644 index 000000000..7dfa2c5e4 Binary files /dev/null and b/dayz_communityassets/textures/can_unlabeled_clean_co.paa differ diff --git a/dayz_communityassets/textures/compass.rvmat b/dayz_communityassets/textures/compass.rvmat new file mode 100644 index 000000000..e348f31c8 --- /dev/null +++ b/dayz_communityassets/textures/compass.rvmat @@ -0,0 +1,32 @@ +ambient[] = {1, 1, 1, 1}; +diffuse[] = {1, 1, 1, 1}; +forcedDiffuse[] = {0, 0, 0, 0}; +emmisive[] = {0, 0, 0, 1}; +specular[] = {1, 1, 1, 1}; +specularPower = 200; +PixelShaderID = "NormalMapSpecularMap"; +VertexShaderID = "NormalMap"; + +class Stage1 { + texture = "z\addons\dayz_communityassets\textures\compass_nohq.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; + +class Stage2 { + texture = "z\addons\dayz_communityassets\textures\compass_smdi.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; diff --git a/dayz_communityassets/textures/compass_co.paa b/dayz_communityassets/textures/compass_co.paa new file mode 100644 index 000000000..e4e5f131e Binary files /dev/null and b/dayz_communityassets/textures/compass_co.paa differ diff --git a/dayz_communityassets/textures/compass_nohq.paa b/dayz_communityassets/textures/compass_nohq.paa new file mode 100644 index 000000000..f1d580bc3 Binary files /dev/null and b/dayz_communityassets/textures/compass_nohq.paa differ diff --git a/dayz_communityassets/textures/compass_smdi.paa b/dayz_communityassets/textures/compass_smdi.paa new file mode 100644 index 000000000..5e23e165b Binary files /dev/null and b/dayz_communityassets/textures/compass_smdi.paa differ diff --git a/dayz_communityassets/textures/equip_quiver_CA.paa b/dayz_communityassets/textures/equip_quiver_CA.paa new file mode 100644 index 000000000..527ecac02 Binary files /dev/null and b/dayz_communityassets/textures/equip_quiver_CA.paa differ diff --git a/dayz_communityassets/textures/equip_warrow_ca.paa b/dayz_communityassets/textures/equip_warrow_ca.paa new file mode 100644 index 000000000..c77920f08 Binary files /dev/null and b/dayz_communityassets/textures/equip_warrow_ca.paa differ diff --git a/dayz_communityassets/textures/machete.rvmat b/dayz_communityassets/textures/machete.rvmat new file mode 100644 index 000000000..8b975686c --- /dev/null +++ b/dayz_communityassets/textures/machete.rvmat @@ -0,0 +1,32 @@ +ambient[] = {1, 1, 1, 1}; +diffuse[] = {1, 1, 1, 1}; +forcedDiffuse[] = {0, 0, 0, 0}; +emmisive[] = {0, 0, 0, 1}; +specular[] = {1, 1, 1, 1}; +specularPower = 200; +PixelShaderID = "NormalMapSpecularMap"; +VertexShaderID = "NormalMap"; + +class Stage1 { + texture = "z\addons\dayz_communityassets\textures\machete_nohq.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; + +class Stage2 { + texture = "z\addons\dayz_communityassets\textures\machete_smdi.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; diff --git a/dayz_communityassets/textures/machete_CO.paa b/dayz_communityassets/textures/machete_CO.paa new file mode 100644 index 000000000..87c8aa130 Binary files /dev/null and b/dayz_communityassets/textures/machete_CO.paa differ diff --git a/dayz_communityassets/textures/machete_nohq.paa b/dayz_communityassets/textures/machete_nohq.paa new file mode 100644 index 000000000..350e4958f Binary files /dev/null and b/dayz_communityassets/textures/machete_nohq.paa differ diff --git a/dayz_communityassets/textures/machete_smdi.paa b/dayz_communityassets/textures/machete_smdi.paa new file mode 100644 index 000000000..991f59693 Binary files /dev/null and b/dayz_communityassets/textures/machete_smdi.paa differ diff --git a/dayz_communityassets/textures/mre.rvmat b/dayz_communityassets/textures/mre.rvmat new file mode 100644 index 000000000..97faea0b1 --- /dev/null +++ b/dayz_communityassets/textures/mre.rvmat @@ -0,0 +1,32 @@ +ambient[] = {1, 1, 1, 1}; +diffuse[] = {1, 1, 1, 1}; +forcedDiffuse[] = {0, 0, 0, 0}; +emmisive[] = {0, 0, 0, 1}; +specular[] = {1, 1, 1, 1}; +specularPower = 200; +PixelShaderID = "NormalMapSpecularMap"; +VertexShaderID = "NormalMap"; + +class Stage1 { + texture = "z\addons\dayz_communityassets\textures\mre_nohq.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; + +class Stage2 { + texture = "z\addons\dayz_communityassets\textures\mre_smdi.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; diff --git a/dayz_communityassets/textures/mre_CO.paa b/dayz_communityassets/textures/mre_CO.paa new file mode 100644 index 000000000..7143ab12c Binary files /dev/null and b/dayz_communityassets/textures/mre_CO.paa differ diff --git a/dayz_communityassets/textures/mre_nohq.paa b/dayz_communityassets/textures/mre_nohq.paa new file mode 100644 index 000000000..094a14861 Binary files /dev/null and b/dayz_communityassets/textures/mre_nohq.paa differ diff --git a/dayz_communityassets/textures/mre_smdi.paa b/dayz_communityassets/textures/mre_smdi.paa new file mode 100644 index 000000000..e2b95a767 Binary files /dev/null and b/dayz_communityassets/textures/mre_smdi.paa differ diff --git a/dayz_communityassets/textures/nutmix.rvmat b/dayz_communityassets/textures/nutmix.rvmat new file mode 100644 index 000000000..ce4efb4ac --- /dev/null +++ b/dayz_communityassets/textures/nutmix.rvmat @@ -0,0 +1,32 @@ +ambient[] = {1, 1, 1, 1}; +diffuse[] = {1, 1, 1, 1}; +forcedDiffuse[] = {0, 0, 0, 0}; +emmisive[] = {0, 0, 0, 1}; +specular[] = {1, 1, 1, 1}; +specularPower = 200; +PixelShaderID = "NormalMapSpecularMap"; +VertexShaderID = "NormalMap"; + +class Stage1 { + texture = "z\addons\dayz_communityassets\textures\nutmix_nohq.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; + +class Stage2 { + texture = "z\addons\dayz_communityassets\textures\nutmix_smdi.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; diff --git a/dayz_communityassets/textures/nutmix_co.paa b/dayz_communityassets/textures/nutmix_co.paa new file mode 100644 index 000000000..0007d10aa Binary files /dev/null and b/dayz_communityassets/textures/nutmix_co.paa differ diff --git a/dayz_communityassets/textures/nutmix_nohq.paa b/dayz_communityassets/textures/nutmix_nohq.paa new file mode 100644 index 000000000..70e6e3284 Binary files /dev/null and b/dayz_communityassets/textures/nutmix_nohq.paa differ diff --git a/dayz_communityassets/textures/nutmix_smdi.paa b/dayz_communityassets/textures/nutmix_smdi.paa new file mode 100644 index 000000000..b048a387b Binary files /dev/null and b/dayz_communityassets/textures/nutmix_smdi.paa differ diff --git a/dayz_communityassets/textures/pistachio.rvmat b/dayz_communityassets/textures/pistachio.rvmat new file mode 100644 index 000000000..59df56a58 --- /dev/null +++ b/dayz_communityassets/textures/pistachio.rvmat @@ -0,0 +1,32 @@ +ambient[] = {1, 1, 1, 1}; +diffuse[] = {1, 1, 1, 1}; +forcedDiffuse[] = {0, 0, 0, 0}; +emmisive[] = {0, 0, 0, 1}; +specular[] = {1, 1, 1, 1}; +specularPower = 200; +PixelShaderID = "NormalMapSpecularMap"; +VertexShaderID = "NormalMap"; + +class Stage1 { + texture = "z\addons\dayz_communityassets\textures\pistachio_nohq.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; + +class Stage2 { + texture = "z\addons\dayz_communityassets\textures\pistachio_smdi.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; diff --git a/dayz_communityassets/textures/pistachio_co.paa b/dayz_communityassets/textures/pistachio_co.paa new file mode 100644 index 000000000..2d725c45e Binary files /dev/null and b/dayz_communityassets/textures/pistachio_co.paa differ diff --git a/dayz_communityassets/textures/pistachio_nohq.paa b/dayz_communityassets/textures/pistachio_nohq.paa new file mode 100644 index 000000000..627771ed2 Binary files /dev/null and b/dayz_communityassets/textures/pistachio_nohq.paa differ diff --git a/dayz_communityassets/textures/pistachio_smdi.paa b/dayz_communityassets/textures/pistachio_smdi.paa new file mode 100644 index 000000000..49a9e54a5 Binary files /dev/null and b/dayz_communityassets/textures/pistachio_smdi.paa differ diff --git a/dayz_communityassets/textures/quiver.rvmat b/dayz_communityassets/textures/quiver.rvmat new file mode 100644 index 000000000..a6a4cd170 --- /dev/null +++ b/dayz_communityassets/textures/quiver.rvmat @@ -0,0 +1,13 @@ +ambient[]={1,1,1,1}; +diffuse[]={1,1,1,1}; +forcedDiffuse[]={0,0,0,0}; +emmisive[]={0,0,0,1}; +specular[]={0,0,0,1}; +specularPower=1; +PixelShaderID="Normal"; +VertexShaderID="Basic"; +class Stage0 +{ + texture="z\addons\dayz_communityassets\textures\quiver_CO.paa"; + uvSource="tex"; +}; diff --git a/dayz_communityassets/textures/quiver_CO.paa b/dayz_communityassets/textures/quiver_CO.paa new file mode 100644 index 000000000..2772780d4 Binary files /dev/null and b/dayz_communityassets/textures/quiver_CO.paa differ diff --git a/dayz_communityassets/textures/quiver_nohq.paa b/dayz_communityassets/textures/quiver_nohq.paa new file mode 100644 index 000000000..88790e3aa Binary files /dev/null and b/dayz_communityassets/textures/quiver_nohq.paa differ diff --git a/dayz_communityassets/textures/razor.rvmat b/dayz_communityassets/textures/razor.rvmat new file mode 100644 index 000000000..827c393d9 --- /dev/null +++ b/dayz_communityassets/textures/razor.rvmat @@ -0,0 +1,32 @@ +ambient[] = {1, 1, 1, 1}; +diffuse[] = {1, 1, 1, 1}; +forcedDiffuse[] = {0, 0, 0, 0}; +emmisive[] = {0, 0, 0, 1}; +specular[] = {1, 1, 1, 1}; +specularPower = 200; +PixelShaderID = "NormalMapSpecularMap"; +VertexShaderID = "NormalMap"; + +class Stage1 { + texture = "z\addons\dayz_communityassets\textures\razor_nohq.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; + +class Stage2 { + texture = "z\addons\dayz_communityassets\textures\razor_smdi.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; diff --git a/dayz_communityassets/textures/razor_co.paa b/dayz_communityassets/textures/razor_co.paa new file mode 100644 index 000000000..60363a7ff Binary files /dev/null and b/dayz_communityassets/textures/razor_co.paa differ diff --git a/dayz_communityassets/textures/razor_nohq.paa b/dayz_communityassets/textures/razor_nohq.paa new file mode 100644 index 000000000..239b356c5 Binary files /dev/null and b/dayz_communityassets/textures/razor_nohq.paa differ diff --git a/dayz_communityassets/textures/razor_smdi.paa b/dayz_communityassets/textures/razor_smdi.paa new file mode 100644 index 000000000..f29d2520c Binary files /dev/null and b/dayz_communityassets/textures/razor_smdi.paa differ diff --git a/dayz_communityassets/textures/soda_clays_clean_co.paa b/dayz_communityassets/textures/soda_clays_clean_co.paa new file mode 100644 index 000000000..c3db58c48 Binary files /dev/null and b/dayz_communityassets/textures/soda_clays_clean_co.paa differ diff --git a/dayz_communityassets/textures/soda_clean_super.rvmat b/dayz_communityassets/textures/soda_clean_super.rvmat new file mode 100644 index 000000000..74cc9a1b2 --- /dev/null +++ b/dayz_communityassets/textures/soda_clean_super.rvmat @@ -0,0 +1,77 @@ +ambient[] = {1, 1, 1, 1}; +diffuse[] = {0.501961, 0.501961, 0.501961, 1}; +forcedDiffuse[] = {0, 0, 0, 0}; +emmisive[] = {0, 0, 0, 1}; +specular[] = {0.101961, 0.101961, 0.101961, 0.88}; +specularPower = 450; +PixelShaderID = "Super"; +VertexShaderID = "Super"; +class Stage1 +{ + texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,NOHQ)"; + uvSource="tex"; + class uvTransform + { + aside[]={1,0,0}; + up[]={0,1,0}; + dir[]={0,0,0}; + pos[]={0,0,0}; + }; +}; +class Stage2 +{ + texture = "#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)"; + uvSource = "tex"; + + class uvTransform { + aside[] = {10, 0, 0}; + up[] = {0, 10, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; +class Stage3 +{ + texture = "#(argb,8,8,3)color(0,0,0,0,MC)"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; +class Stage4 +{ + texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,AS)"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; +class Stage5 +{ + texture="z\addons\dayz_communityassets\textures\soda_mat_clean_SMDI.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; +class Stage6 { + texture = "#(ai,64,128,1)fresnel(4.01,2.86)"; + uvSource = "none"; +}; +class Stage7 +{ + texture = "ca\data\env_land_co.paa"; + uvSource = "none"; +}; diff --git a/dayz_communityassets/textures/soda_drwaste_clean_co.paa b/dayz_communityassets/textures/soda_drwaste_clean_co.paa new file mode 100644 index 000000000..51e51c0ba Binary files /dev/null and b/dayz_communityassets/textures/soda_drwaste_clean_co.paa differ diff --git a/dayz_communityassets/textures/soda_franka_clean_co.paa b/dayz_communityassets/textures/soda_franka_clean_co.paa new file mode 100644 index 000000000..6da837f4d Binary files /dev/null and b/dayz_communityassets/textures/soda_franka_clean_co.paa differ diff --git a/dayz_communityassets/textures/soda_lemonade_clean_co.paa b/dayz_communityassets/textures/soda_lemonade_clean_co.paa new file mode 100644 index 000000000..071ee40ed Binary files /dev/null and b/dayz_communityassets/textures/soda_lemonade_clean_co.paa differ diff --git a/dayz_communityassets/textures/soda_lirik_clean_co.paa b/dayz_communityassets/textures/soda_lirik_clean_co.paa new file mode 100644 index 000000000..6b8f870e0 Binary files /dev/null and b/dayz_communityassets/textures/soda_lirik_clean_co.paa differ diff --git a/dayz_communityassets/textures/soda_lvg_clean_co.paa b/dayz_communityassets/textures/soda_lvg_clean_co.paa new file mode 100644 index 000000000..2668071e3 Binary files /dev/null and b/dayz_communityassets/textures/soda_lvg_clean_co.paa differ diff --git a/dayz_communityassets/textures/soda_mat_clean_SMDI.paa b/dayz_communityassets/textures/soda_mat_clean_SMDI.paa new file mode 100644 index 000000000..df9f391dc Binary files /dev/null and b/dayz_communityassets/textures/soda_mat_clean_SMDI.paa differ diff --git a/dayz_communityassets/textures/soda_mtngreen_clean_co.paa b/dayz_communityassets/textures/soda_mtngreen_clean_co.paa new file mode 100644 index 000000000..c61e70fdd Binary files /dev/null and b/dayz_communityassets/textures/soda_mtngreen_clean_co.paa differ diff --git a/dayz_communityassets/textures/soda_mzly_clean_co.paa b/dayz_communityassets/textures/soda_mzly_clean_co.paa new file mode 100644 index 000000000..5e1e61a23 Binary files /dev/null and b/dayz_communityassets/textures/soda_mzly_clean_co.paa differ diff --git a/dayz_communityassets/textures/soda_peppsy_clean_co.paa b/dayz_communityassets/textures/soda_peppsy_clean_co.paa new file mode 100644 index 000000000..c133b11d1 Binary files /dev/null and b/dayz_communityassets/textures/soda_peppsy_clean_co.paa differ diff --git a/dayz_communityassets/textures/soda_r4z0r_clean_co.paa b/dayz_communityassets/textures/soda_r4z0r_clean_co.paa new file mode 100644 index 000000000..913b03185 Binary files /dev/null and b/dayz_communityassets/textures/soda_r4z0r_clean_co.paa differ diff --git a/dayz_communityassets/textures/soda_rabbit_clean_co.paa b/dayz_communityassets/textures/soda_rabbit_clean_co.paa new file mode 100644 index 000000000..c91fbfa3c Binary files /dev/null and b/dayz_communityassets/textures/soda_rabbit_clean_co.paa differ diff --git a/dayz_communityassets/textures/soda_sacrite_clean_co.paa b/dayz_communityassets/textures/soda_sacrite_clean_co.paa new file mode 100644 index 000000000..0af69d44d Binary files /dev/null and b/dayz_communityassets/textures/soda_sacrite_clean_co.paa differ diff --git a/dayz_communityassets/textures/soda_smasht_clean_co.paa b/dayz_communityassets/textures/soda_smasht_clean_co.paa new file mode 100644 index 000000000..726d8a964 Binary files /dev/null and b/dayz_communityassets/textures/soda_smasht_clean_co.paa differ diff --git a/dayz_communityassets/textures/toiletpaper.rvmat b/dayz_communityassets/textures/toiletpaper.rvmat new file mode 100644 index 000000000..d068619e5 --- /dev/null +++ b/dayz_communityassets/textures/toiletpaper.rvmat @@ -0,0 +1,32 @@ +ambient[] = {1, 1, 1, 1}; +diffuse[] = {1, 1, 1, 1}; +forcedDiffuse[] = {0, 0, 0, 0}; +emmisive[] = {0, 0, 0, 1}; +specular[] = {1, 1, 1, 1}; +specularPower = 200; +PixelShaderID = "NormalMapSpecularMap"; +VertexShaderID = "NormalMap"; + +class Stage1 { + texture = "z\addons\dayz_communityassets\textures\toiletpaper_nohq.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; + +class Stage2 { + texture = "z\addons\dayz_communityassets\textures\toiletpaper_smdi.paa"; + uvSource = "tex"; + + class uvTransform { + aside[] = {1, 0, 0}; + up[] = {0, 1, 0}; + dir[] = {0, 0, 0}; + pos[] = {0, 0, 0}; + }; +}; diff --git a/dayz_communityassets/textures/toiletpaper_co.paa b/dayz_communityassets/textures/toiletpaper_co.paa new file mode 100644 index 000000000..b19202332 Binary files /dev/null and b/dayz_communityassets/textures/toiletpaper_co.paa differ diff --git a/dayz_communityassets/textures/toiletpaper_nohq.paa b/dayz_communityassets/textures/toiletpaper_nohq.paa new file mode 100644 index 000000000..d07cf28f8 Binary files /dev/null and b/dayz_communityassets/textures/toiletpaper_nohq.paa differ diff --git a/dayz_communityassets/textures/toiletpaper_smdi.paa b/dayz_communityassets/textures/toiletpaper_smdi.paa new file mode 100644 index 000000000..1a79f1689 Binary files /dev/null and b/dayz_communityassets/textures/toiletpaper_smdi.paa differ diff --git a/dayz_server/compile/server_onPlayerDisconnect.sqf b/dayz_server/compile/server_onPlayerDisconnect.sqf index 8e576db13..78db2d45d 100644 --- a/dayz_server/compile/server_onPlayerDisconnect.sqf +++ b/dayz_server/compile/server_onPlayerDisconnect.sqf @@ -29,7 +29,8 @@ if (!isNull _object) then { { [_x,"gear"] call server_updateObject } foreach (nearestObjects [getPosATL _object, ["Car", "Helicopter", "Motorcycle", "Ship", "TentStorage", "VaultStorage"], 10]); if (alive _object) then { - [_object,(magazines _object),true,(unitBackpack _object)] call server_playerSync; + //[_object,(magazines _object),true,(unitBackpack _object)] call server_playerSync; + [_object,[],true] call server_playerSync; _myGroup = group _object; deleteVehicle _object; deleteGroup _myGroup; diff --git a/dayz_server/compile/server_playerDied.sqf b/dayz_server/compile/server_playerDied.sqf index b190b3052..fa53b75c2 100644 --- a/dayz_server/compile/server_playerDied.sqf +++ b/dayz_server/compile/server_playerDied.sqf @@ -65,6 +65,7 @@ if (typeName _minutes == "STRING") then if (_characterID != "0") then { _key = format["CHILD:202:%1:%2:%3:",_characterID,_minutes,_infected]; + //diag_log ("HIVE: WRITE: "+ str(_key)); _key call server_hiveWrite; } else diff --git a/dayz_server/compile/server_playerSetup.sqf b/dayz_server/compile/server_playerSetup.sqf index 4e9796136..c80377a2d 100644 --- a/dayz_server/compile/server_playerSetup.sqf +++ b/dayz_server/compile/server_playerSetup.sqf @@ -120,7 +120,9 @@ if (count _medical > 0) then { //Add Wounds { _playerObj setVariable[_x,true,true]; - ["usecBleed",[_playerObj,_x,_hit]] call broadcastRpcCallAll; + //["usecBleed",[_playerObj,_x,_hit]] call broadcastRpcCallAll; + usecBleed = [_playerObj,_x,_hit]; + publicVariable "usecBleed"; } forEach (_medical select 8); //Add fractures diff --git a/dayz_server/compile/server_playerSync.sqf b/dayz_server/compile/server_playerSync.sqf index 4941550f4..043d61a3c 100644 --- a/dayz_server/compile/server_playerSync.sqf +++ b/dayz_server/compile/server_playerSync.sqf @@ -97,6 +97,7 @@ if (_characterID != "0") then { if (_isNewGear) then { //diag_log ("gear..."); sleep 0.05; _playerGear = [weapons _character,_magazines]; +//diag_log ("playerGear: " +str(_playerGear)); _backpack = unitBackpack _character; _playerBackp = [typeOf _backpack,getWeaponCargo _backpack,getMagazineCargo _backpack]; }; @@ -198,7 +199,11 @@ if (_characterID != "0") then { // If player is in a vehicle, keep its position updated if (vehicle _character != _character) then { - [vehicle _character, "position"] call server_updateObject; +// [vehicle _character, "position"] call server_updateObject; + if (!(vehicle _character in needUpdate_objects)) then { + //diag_log format["DEBUG: Added to NeedUpdate=%1",_object]; + needUpdate_objects set [count needUpdate_objects, vehicle _character]; + }; }; // Force gear updates for nearby vehicles/tents diff --git a/dayz_server/compile/server_spawnCrashSite.sqf b/dayz_server/compile/server_spawnCrashSite.sqf index 8306259cc..12c6598a1 100644 --- a/dayz_server/compile/server_spawnCrashSite.sqf +++ b/dayz_server/compile/server_spawnCrashSite.sqf @@ -24,6 +24,12 @@ while {true} do { //Adding some Random systems _crashModel = ["UH60Wreck_DZ","UH1Wreck_DZ"] call BIS_fnc_selectRandom; + //Crash loot just uncomment the one you wish to use by default with 50cals is enabled. + //Table including 50 cals + _lootTable = ["Military","HeliCrash","MilitarySpecial"] call BIS_fnc_selectRandom; + //Table without 50 cals + //_lootTable = ["Military","HeliCrash_No50s","MilitarySpecial"] call BIS_fnc_selectRandom; + _crashName = getText (configFile >> "CfgVehicles" >> _crashModel >> "displayName"); diag_log(format["CRASHSPAWNER: %1%2 chance to spawn '%3' with loot table '%4' at %5", round(_spawnChance * 100), '%', _crashName, _lootTable, _timeToSpawn]); @@ -69,13 +75,15 @@ while {true} do { _crash setVariable ["ObjectID",1,true]; if (_spawnFire) then { - ["dayzFire",[_crash,2,time,false,_fadeFire]] call broadcastRpcCallAll; + //["dayzFire",[_crash,2,time,false,_fadeFire]] call broadcastRpcCallAll; + dayzFire = [_crash,2,time,false,_fadeFire]; + publicVariable "dayzFire"; _crash setvariable ["fadeFire",_fadeFire,true]; }; _num = round(random _randomizedLoot) + _guaranteedLoot; - _config = configFile >> "CfgBuildingLoot" >> "HeliCrash"; + _config = configFile >> "CfgBuildingLoot" >> _lootTable; _itemTypes = [] + getArray (_config >> "itemType"); _index = dayz_CBLBase find "HeliCrash"; _weights = dayz_CBLChances select _index; diff --git a/dayz_server/compile/server_updateObject.sqf b/dayz_server/compile/server_updateObject.sqf index 2c69824e3..1ae2f0de5 100644 --- a/dayz_server/compile/server_updateObject.sqf +++ b/dayz_server/compile/server_updateObject.sqf @@ -84,6 +84,7 @@ _object_damage = { if (_hit > 0) then {_array set [count _array,[_selection,_hit]]}; _object setHit ["_selection", _hit] } forEach _hitpoints; + _key = format["CHILD:306:%1:%2:%3:",_objectID,_array,_damage]; diag_log ("HIVE: WRITE: "+ str(_key)); _key call server_hiveWrite; @@ -125,6 +126,7 @@ _object_repair = { if (_hit > 0) then {_array set [count _array,[_selection,_hit]]}; _object setHit ["_selection", _hit] } forEach _hitpoints; + _key = format["CHILD:306:%1:%2:%3:",_objectID,_array,_damage]; diag_log ("HIVE: WRITE: "+ str(_key)); _key call server_hiveWrite; @@ -140,18 +142,20 @@ switch (_type) do { call _object_damage; }; case "position": { - call _object_position; + if (!(_object in needUpdate_objects)) then { + diag_log format["DEBUG Position: Added to NeedUpdate=%1",_object]; + needUpdate_objects set [count needUpdate_objects, _object]; + }; }; case "gear": { call _object_inventory; }; case "damage": { - diag_log ("Damaged Called"); if ( (time - _lastUpdate) > 5) then { call _object_damage; } else { - if(!_needUpdate)then { - diag_log format["DEBUG: Added to NeedUpdate=%1",_object]; + if (!(_object in needUpdate_objects)) then { + diag_log format["DEBUG Damage: Added to NeedUpdate=%1",_object]; needUpdate_objects set [count needUpdate_objects, _object]; }; }; diff --git a/dayz_server/init/server_functions.sqf b/dayz_server/init/server_functions.sqf index cebd9c29d..aeb4410ac 100644 --- a/dayz_server/init/server_functions.sqf +++ b/dayz_server/init/server_functions.sqf @@ -99,7 +99,7 @@ server_hiveWrite = { private["_data"]; //diag_log ("ATTEMPT WRITE: " + _this); _data = "HiveExt" callExtension _this; - diag_log ("WRITE: " +str(_data)); + //diag_log ("WRITE: " +str(_data)); }; server_hiveReadWrite = { @@ -107,7 +107,7 @@ server_hiveReadWrite = { _key = _this; //diag_log ("ATTEMPT READ/WRITE: " + _key); _data = "HiveExt" callExtension _key; - diag_log ("READ/WRITE: " +str(_data)); + //diag_log ("READ/WRITE: " +str(_data)); _resultArray = call compile format ["%1",_data]; _resultArray }; @@ -141,7 +141,7 @@ if(isnil "HeliCrashArea") then { HeliCrashArea = dayz_MapArea / 2; }; -// Get all buildings and roads only once +// Get all buildings and roads only once TODO: set variables to nil after done if nessicary MarkerPosition = getMarkerPos "center"; RoadList = MarkerPosition nearRoads DynamicVehicleArea; BuildingList = MarkerPosition nearObjects ["House",DynamicVehicleArea]; @@ -421,20 +421,6 @@ dayz_objectUID2 = { _key }; -dayz_objectUID3 = { - private["_position","_dir","_key"]; - _dir = _this select 0; - _key = ""; - _position = _this select 1; - { - _x = _x * 10; - if ( _x < 0 ) then { _x = _x * -10 }; - _key = _key + str(round(_x)); - } forEach _position; - _key = _key + str(round(_dir)); - _key -}; - dayz_recordLogin = { private["_key"]; _key = format["CHILD:103:%1:%2:%3:",_this select 0,_this select 1,_this select 2]; diff --git a/dayz_server/system/server_cleanup.fsm b/dayz_server/system/server_cleanup.fsm index 41ac64bab..b7b534ab5 100644 --- a/dayz_server/system/server_cleanup.fsm +++ b/dayz_server/system/server_cleanup.fsm @@ -1,32 +1,33 @@ -/*%FSM*/ +/*%FSM*/ /*%FSM*/ /* item0[] = {"init",0,250,-75.000000,-400.000000,25.000000,-350.000000,0.000000,"init"}; item1[] = {"true",8,218,-75.000000,-175.000000,25.000000,-125.000000,0.000000,"true"}; item2[] = {"waiting",2,250,-75.000000,-100.000000,25.000000,-50.000000,0.000000,"waiting"}; -item3[] = {"time_dead",4,218,-300.000000,-25.000000,-200.000000,25.000000,4.000000,"time" \n "dead"}; -item4[] = {"cleanup_dead",2,4346,-300.000000,50.000000,-200.000000,100.000000,0.000000,"cleanup" \n "dead"}; -item5[] = {"time_items",4,218,0.000000,-25.000000,100.000000,25.000000,2.000000,"time" \n "items"}; -item6[] = {"cleanup_items",2,250,0.000000,50.000000,100.000000,100.000000,0.000000,"cleanup" \n "items"}; -item7[] = {"time_sync",4,218,-150.000000,-25.000000,-50.000000,25.000000,3.000000,"time" \n "sync"}; -item8[] = {"sync_the_time",2,250,-150.000000,50.000000,-50.000000,100.000000,0.000000,"sync" \n "the time"}; +item3[] = {"too_many_dead",4,218,-150.000000,-25.000000,-50.000000,25.000000,2.000000,"too many" \n "dead"}; +item4[] = {"cleanup_dead",2,250,-150.000000,50.000000,-50.000000,100.000000,0.000000,"cleanup" \n "dead"}; +item5[] = {"too_many_objects",4,218,-25.000000,-25.000000,75.000000,25.000000,0.000000,"too many" \n "objects"}; +item6[] = {"cleanup_objects",2,250,-25.000000,50.000000,75.000000,100.000000,0.000000,"cleanup" \n "objects"}; +item7[] = {"time_sync",4,218,-275.000000,-25.000000,-175.000000,25.000000,1.000000,"time" \n "sync"}; +item8[] = {"sync_the_time",2,250,-275.000000,50.000000,-175.000000,100.000000,0.000000,"sync" \n "the time"}; item9[] = {"true",8,218,-75.000000,125.000000,25.000000,175.000000,0.000000,"true"}; item10[] = {"general_cleanup",2,250,-75.000000,200.000000,25.000000,250.000000,0.000000,"general" \n "cleanup"}; -item11[] = {"",7,210,-341.500000,220.999985,-333.500000,229.000015,0.000000,""}; -item12[] = {"",7,210,-341.500000,-154.000000,-333.500000,-146.000000,0.000000,""}; -item13[] = {"initialized",4,218,-75.000000,-325.000000,25.000000,-275.000000,0.000000,"initialized"}; -item14[] = {"prepare",2,250,-75.000000,-250.000000,25.000000,-200.000000,0.000000,"prepare"}; -item15[] = {"update_objects",2,250,150.000000,50.000000,250.000000,100.000000,0.000000,"update objects"}; -item16[] = {"time_obj_update",4,218,150.000000,-25.000000,250.000000,25.000000,1.000000,"time" \n "obj update"}; -item17[] = {"anti_hack",4,218,150.000000,-100.000000,250.000000,-50.000000,0.000000,"anti hack"}; -item18[] = {"check_for_hacker",2,250,150.000000,-175.000000,250.000000,-125.000000,0.000000,"check for" \n "hackers"}; -link0[] = {0,13}; +item11[] = {"",7,210,-304.000000,220.999985,-296.000000,229.000015,0.000000,""}; +item12[] = {"",7,210,-304.000000,-154.000000,-296.000000,-146.000000,0.000000,""}; +item13[] = {"",7,210,221.000000,-79.000000,229.000000,-71.000000,0.000000,""}; +item14[] = {"",7,210,221.000000,146.000000,229.000000,154.000000,0.000000,""}; +item15[] = {"initialized",4,218,-75.000000,-325.000000,25.000000,-275.000000,0.000000,"initialized"}; +item16[] = {"prepare",2,250,-75.000000,-250.000000,25.000000,-200.000000,0.000000,"prepare"}; +item17[] = {"update_objects",2,250,100.000000,50.000000,200.000000,100.000000,0.000000,"update objects"}; +item18[] = {"need_update",4,4314,100.000000,-25.000000,200.000000,25.000000,1.000000,"need update"}; +item19[] = {"",7,210,221.000000,-79.000000,229.000000,-71.000000,0.000000,""}; +link0[] = {0,15}; link1[] = {1,2}; link2[] = {2,3}; link3[] = {2,5}; link4[] = {2,7}; -link5[] = {2,16}; -link6[] = {2,17}; +link5[] = {2,13}; +link6[] = {2,18}; link7[] = {3,4}; link8[] = {4,9}; link9[] = {5,6}; @@ -38,13 +39,14 @@ link14[] = {10,11}; link15[] = {11,12}; link16[] = {12,1}; link17[] = {13,14}; -link18[] = {14,1}; -link19[] = {15,9}; -link20[] = {16,15}; -link21[] = {17,18}; -link22[] = {18,1}; -globals[] = {25.000000,1,0,0,0,640,480,1,33,6316128,1,-389.695160,324.496887,564.215637,-260.262604,803,927,1}; -window[] = {2,-1,-1,-1,-1,995,88,1202,88,3,820}; +link18[] = {13,19}; +link19[] = {14,9}; +link20[] = {15,16}; +link21[] = {16,1}; +link22[] = {17,9}; +link23[] = {18,17}; +globals[] = {25.000000,1,0,0,0,640,480,1,24,6316128,1,-396.580658,354.272186,289.802856,-205.002594,912,601,1}; +window[] = {2,-1,-1,-32000,-32000,890,110,1439,110,3,929}; *//*%FSM*/ class FSM { @@ -76,58 +78,60 @@ class FSM class waiting { name = "waiting"; - init = /*%FSM*/""/*%FSM*/; + init = /*%FSM*/"//diag_log ""CLEANUP: Waiting for next task"";" \n + "_numDead = {local _x} count allDead;" \n + ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { - /*%FSM*/ - class time_dead + /*%FSM*/ + class too_many_dead { - priority = 4.000000; + priority = 2.000000; to="cleanup_dead"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(time - _lastDeadCheck) > 600"/*%FSM*/; - action=/*%FSM*/"_lastDeadCheck = time;"/*%FSM*/; + condition=/*%FSM*/"(_numDead > 300)"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; }; /*%FSM*/ /*%FSM*/ class time_sync { - priority = 3.000000; + priority = 1.000000; to="sync_the_time"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(time - _lastTimeSync) > 300"/*%FSM*/; - action=/*%FSM*/"_lastTimeSync = time;"/*%FSM*/; + condition=/*%FSM*/"((time - _lastUpdate) > 300)"/*%FSM*/; + action=/*%FSM*/"_lastUpdate = time;"/*%FSM*/; }; /*%FSM*/ - /*%FSM*/ - class time_items - { - priority = 2.000000; - to="cleanup_items"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(time - _lastItemCheck) > 60"/*%FSM*/; - action=/*%FSM*/"_lastItemCheck = time;"/*%FSM*/; - }; - /*%FSM*/ - /*%FSM*/ - class time_obj_update + /*%FSM*/ + class need_update { priority = 1.000000; to="update_objects"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(time-_lastObjectUpdateCheck) > 10"/*%FSM*/; - action=/*%FSM*/"_lastObjectUpdateCheck = time;"/*%FSM*/; + condition=/*%FSM*/"( (count needUpdate_objects) > 0 && (time-_lastNeedUpdate>20) )"/*%FSM*/; + action=/*%FSM*/"_lastNeedUpdate = time;"/*%FSM*/; }; /*%FSM*/ - /*%FSM*/ - class anti_hack + /*%FSM*/ + class true { priority = 0.000000; - to="check_for_hacker"; + to="general_cleanup"; precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"(time-_timeHackCheck) > 1"/*%FSM*/; - action=/*%FSM*/"_timeHackCheck = time;"/*%FSM*/; + condition=/*%FSM*/"true"/*%FSM*/; + action=/*%FSM*/""/*%FSM*/; + }; + /*%FSM*/ + /*%FSM*/ + class too_many_objects + { + priority = 0.000000; + to="cleanup_objects"; + precondition = /*%FSM*/""/*%FSM*/; + condition=/*%FSM*/"((time - _timeNem) > 60)"/*%FSM*/; + action=/*%FSM*/"_timeNem = time;"/*%FSM*/; }; /*%FSM*/ }; @@ -137,56 +141,80 @@ class FSM class cleanup_dead { name = "cleanup_dead"; - init = /*%FSM*/"_numDead = {local _x} count allDead;" \n + init = /*%FSM*/"diag_log (""CLEANUP: TOO MANY DEAD BODIES"");" \n "" \n - "if (_numDead > 300) then { " \n + "diag_log (""CLEANUP: PERFORMING BODY CLEANUP ON "" + str(_numDead) + "" BODIES"");" \n "" \n - " diag_log (""CLEANUP: TOO MANY DEAD BODIES"");" \n - " diag_log (""CLEANUP: PERFORMING BODY CLEANUP ON "" + str(_numDead) + "" BODIES"");" \n - "" \n - " //Cleanup zed's & players" \n - "" \n - " _delQtyZ = 0; " \n - " _delQtyP = 0;" \n - " {" \n - " if (local _x) then {" \n - " if (_x isKindOf ""zZombie_Base"") then {" \n - " deleteVehicle _x;" \n - " _delQtyZ = _delQtyZ + 1;" \n - " } else {" \n - " _pos = getPosATL _x;" \n - " _sfx = nearestObject [_pos,""Sound_Flies""];" \n - " if (!(isNull _sfx)) then {" \n - " deleteVehicle _sfx;" \n - " };" \n - " deleteVehicle _x;" \n - " _delQtyP = _delQtyP + 1;" \n + "_delQtyZ = 0;" \n + "_numZombie = {_x isKindOf ""zZombie_Base""} count allDead;" \n + "{" \n + " if (local _x) then {" \n + " if (_x isKindOf ""zZombie_Base"") then {" \n + " deleteVehicle _x;" \n + " _delQtyZ = _delQtyZ + 1;" \n + " } else {" \n + " _exists = _x in _deadBodies;" \n + " if(!_exists) then {" \n + " _deadBodies set [count _deadBodies,_x];" \n " };" \n " };" \n - " } forEach allDead;" \n + " };" \n + "} forEach allDead;" \n "" \n - " //Check Flies" \n - " _dwUSOFC=0;" \n - " {" \n - " if (local _x) then {" \n - " deleteVehicle _x;" \n - " _dwUSOFC=_dwUSOFC+1;" \n + "//Cleanup players" \n + "_body = objNull;" \n + "_delQtyP = 0;" \n + "_delDo = _numDead - _numZombie;" \n + "_delDo = ((_delDo min (count _deadBodies)) -1);" \n + "if (_delDo<1) then {_delDo=1};" \n + "for ""_i"" from 0 to _delDo do {" \n + " _body = _deadBodies select _i;" \n + " if(!isNil ""_body"") then {" \n + " _pos = getPosATL _body;" \n + " _sfx = nearestObject [_pos,""Sound_Flies""];" \n + " if (!(isNull _sfx)) then {" \n + " deleteVehicle _sfx;" \n " };" \n + " deleteVehicle _body;" \n + " _delQtyP = _delQtyP + 1;" \n + " };" \n + " _deadBodies set [_i,""DEL""];" \n + "" \n + "//Let's move this into the body removal sequence so uncontrolled flies are removed only if corpses are cleaned" \n + "//Check Flies" \n + "_isOK=-1;" \n + "_dwUSOFC=0;" \n + "{" \n + " //_isOk = {!alive _x} count (nearestObjects [_x, [""CAManBase""], 2]);" \n + " _isOk = {!alive _x} count (_x nearEntities [[""CAManBase""], 2]);" \n + " if (_isOk>-1) then {" \n + " diag_log (""DW_DEBUG _isOK: "" + str(_isOK) );" \n + " };" \n + " if ((_isOk>-1) AND (_isOK<1)) then {" \n + " //diag_log (""CLEANUP: DELETING A SOUND OF FLIES"");" \n + "_dwUSOFC=_dwUSOFC+1;" \n + " deleteVehicle _x;" \n " diag_log (""CLEANUP: DELETED AN UNCONTROLLED SOUND OF FLIES:"" + str(_dwUSOFC) );" \n - " } forEach allMissionObjects ""Sound_Flies"";" \n + " };" \n + "} forEach allMissionObjects ""Sound_Flies"";" \n "" \n - " //clean fireplaces" \n - " _dwUFPC=0;" \n - " {" \n - " if (local _x) then {" \n - " deleteVehicle _x;" \n - " _dwUFPC=_dwUFPC+1;" \n - " };" \n + "" \n + "//Let's move this into the body removal sequence so uncontrolled fireplaces are removed only if corpses are cleaned" \n + "//clean fireplaces" \n + "_dwUFPC=0;" \n + "{" \n + " if (local _x) then {" \n + " //diag_log (""CLEANUP: DELETING A UNCONTROLLED FIREPLACE"");" \n + " deleteVehicle _x;" \n + "_dwUFPC=_dwUFPC+1;" \n " diag_log (""CLEANUP: DELETED AN UNCONTROLLED FIREPLACE:"" + str(_dwUFPC) );" \n - " } forEach allMissionObjects ""Land_Fire_DZ"";" \n + " };" \n + "} forEach allMissionObjects ""Land_Fire_DZ"";" \n "" \n - " diag_log (""CLEANUP: DELETED "" + str(_delQtyP) + "" PLAYER BODIES AND "" + str(_delQtyZ) + "" BODIES"");" \n "};" \n + "_deadBodies = _deadBodies - [""DEL""];" \n + "" \n + "diag_log (""CLEANUP: DELETED "" + str(_delQtyP) + "" PLAYER BODIES AND "" + str(_delQtyZ) + "" BODIES"");" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -204,27 +232,25 @@ class FSM }; }; /*%FSM*/ - /*%FSM*/ - class cleanup_items + /*%FSM*/ + class cleanup_objects { - name = "cleanup_items"; + name = "cleanup_objects"; init = /*%FSM*/"_missionObjs = allMissionObjects ""WeaponHolder"";" \n "_qty = count _missionObjs;" \n + "" \n "//diag_log (""CLEANUP: PERFORMING ITEM CLEANUP: TOTAL "" + str(_qty) + "" LOOT BAGS"");" \n "_delQty = 0;" \n - "_qtyLoc = 0;" \n "{" \n " if (local _x) then {" \n - " _qtyLoc = _qtyLoc + 1; // debugging" \n " _keep = _x getVariable [""permaLoot"",false];" \n - " _nearby = count (_x nearEntities [AllPlayers, 100]);" \n + " _nearby = {isPlayer _x} count (_x nearEntities [[""CAManBase""], 100]);" \n " if ( (!_keep) && (_nearby==0) ) then {" \n " deleteVehicle _x;" \n " _delQty = _delQty + 1;" \n " };" \n " };" \n "} forEach _missionObjs;" \n - "" \n "if (_delQty > 0) then {" \n " diag_log (""CLEANUP: DELETED "" + str(_delQty) + "" LOOT BAGS"");" \n "};" \n @@ -258,7 +284,9 @@ class FSM " _dateNum = dateToNumber(_date); " \n " _diff = ( _dateNum - dateToNumber (date) )*365*24*60;" \n " if ( abs(_diff)>5 ) then {" \n - " [""dayzSetDate"",_date] call broadcastRpcCallAll;" \n + " setDate _date;" \n + " dayzSetDate = _date;" \n + " publicVariable ""dayzSetDate"";" \n " diag_log (""TIME SYNC: Local Time set to "" + str(_date));" \n " };" \n "};" \n @@ -302,8 +330,36 @@ class FSM " } forEach allMissionObjects ""ReammoBox"";" \n "*/" \n "" \n - "dayz_serverObjectMonitor = _safety;" \n - ""/*%FSM*/; + "//Check for hackers" \n + " {" \n + " if(vehicle _x != _x && !(vehicle _x in _safety) && (typeOf vehicle _x) != ""ParachuteWest"") then {" \n + " diag_log (""CLEANUP: KILLING A HACKER "" + (name _x) + "" "" + str(_x) + "" IN "" + (typeOf vehicle _x));" \n + " (vehicle _x) setDamage 1;" \n + " _x setDamage 1;" \n + " };" \n + " } forEach allUnits;" \n + "" \n + "/*" \n + "//Let's move this into the body removal sequence so uncontrolled flies are removed only if corpses are cleaned" \n + "//Check Flies" \n + "_isOK=-1;" \n + "_dwUSOFC=0;" \n + "{" \n + " //_isOk = {!alive _x} count (nearestObjects [_x, [""CAManBase""], 2]);" \n + " _isOk = {!alive _x} count (_x nearEntities [[""CAManBase""], 2]);" \n + " if (_isOk>-1) then {" \n + " diag_log (""DW_DEBUG _isOK: "" + str(_isOK) );" \n + " };" \n + " if ((_isOk>-1) AND (isOK<1)) then {" \n + " //diag_log (""CLEANUP: DELETING A SOUND OF FLIES"");" \n + "_dwUSOFC=_dwUSOFC+1;" \n + " deleteVehicle _x;" \n + " diag_log (""CLEANUP: DELETED AN UNCONTROLLED SOUND OF FLIES:"" + str(_dwUSOFC) );" \n + " };" \n + "} forEach allMissionObjects ""Sound_Flies"";" \n + "*/" \n + "" \n + "dayz_serverObjectMonitor = _safety;"/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links { @@ -328,12 +384,10 @@ class FSM "" \n "_safety = dayz_serverObjectMonitor;" \n "" \n - "_lastTimeSync = time;" \n - "_lastDeadCheck = time;" \n - "_lastItemCheck = time;" \n - "_lastObjectUpdateCheck = time;" \n - "_timeHackCheck = time;" \n + "_lastUpdate = time;" \n + "_timeNem = time;" \n "_deadBodies = [];" \n + "_lastNeedUpdate = time;" \n "_maxBodies = 15;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; @@ -356,16 +410,13 @@ class FSM class update_objects { name = "update_objects"; - init = /*%FSM*/"if ((count needUpdate_objects) > 0) then {" \n + init = /*%FSM*/"diag_log format[""DEBUG: needUpdate_objects=%1"",needUpdate_objects];" \n + "{" \n + "// _x setVariable [""needUpdate"",false,true];" \n + " needUpdate_objects = needUpdate_objects - [_x];" \n + " [_x,""all""] call server_updateObject;" \n "" \n - " diag_log format[""DEBUG: needUpdate_objects=%1"",needUpdate_objects];" \n - "" \n - " {" \n - " //_x setVariable [""needUpdate"",false,true];" \n - " needUpdate_objects = needUpdate_objects - [_x];" \n - " [_x,""all""] call server_updateObject; //should be call!!!" \n - " } forEach needUpdate_objects;" \n - "};" \n + "} forEach needUpdate_objects;" \n ""/*%FSM*/; precondition = /*%FSM*/""/*%FSM*/; class Links @@ -383,37 +434,6 @@ class FSM }; }; /*%FSM*/ - /*%FSM*/ - class check_for_hacker - { - name = "check_for_hacker"; - init = /*%FSM*/"//Check for hackers" \n - " {" \n - " if(vehicle _x != _x) then {" \n - " if (!(vehicle _x in _safety) && ((typeOf vehicle _x) != ""ParachuteWest"")) then {" \n - " diag_log (""CLEANUP: KILLING A HACKER "" + (name _x) + "" "" + str(_x) + "" IN "" + (typeOf vehicle _x));" \n - " (vehicle _x) setDamage 1;" \n - " _x setDamage 1;" \n - " };" \n - " };" \n - " } forEach allUnits;" \n - ""/*%FSM*/; - precondition = /*%FSM*/""/*%FSM*/; - class Links - { - /*%FSM*/ - class true - { - priority = 0.000000; - to="waiting"; - precondition = /*%FSM*/""/*%FSM*/; - condition=/*%FSM*/"true"/*%FSM*/; - action=/*%FSM*/""/*%FSM*/; - }; - /*%FSM*/ - }; - }; - /*%FSM*/ }; initState="init"; finalStates[] = diff --git a/dayz_server/system/server_monitor.sqf b/dayz_server/system/server_monitor.sqf index 490aa3b5b..f824a020b 100644 --- a/dayz_server/system/server_monitor.sqf +++ b/dayz_server/system/server_monitor.sqf @@ -4,6 +4,14 @@ dayz_versionNo = getText(configFile >> "CfgMods" >> "DayZ" >> "version"); dayz_hiveVersionNo = getNumber(configFile >> "CfgMods" >> "DayZ" >> "hiveVersion"); _script = getText(missionConfigFile >> "onPauseScript"); +if ((count playableUnits == 0) and !isDedicated) then { + isSinglePlayer = true; +}; + +waitUntil{initialized}; //means all the functions are now defined + +diag_log "HIVE: Starting"; + if (_script != "") then { diag_log "MISSION: File Updated"; @@ -17,16 +25,7 @@ if (_script != "") then serverVehicleCounter = []; -if ((count playableUnits == 0) and !isDedicated) then { - isSinglePlayer = true; -}; - -waitUntil{initialized}; //means all the functions are now defined - -diag_log "HIVE: Starting"; - _allowedObjects = ["TentStorage", "VaultStorageLocked", "Hedgehog_DZ", "Sandbag1_DZ","TrapBear","Fort_RazorWire","WoodGate_DZ","Land_HBarrier1_DZ"]; - //Stream in objects /* STREAM OBJECTS */ //Send the key @@ -125,6 +124,7 @@ _allowedObjects = ["TentStorage", "VaultStorageLocked", "Hedgehog_DZ", "Sandbag1 _objWpnQty = (_intentory select 0) select 1; _countr = 0; { + if (_x == "Crossbow") then { _x = "Crossbow_DZ" }; // Convert Crossbow to Crossbow_DZ _isOK = isClass(configFile >> "CfgWeapons" >> _x); if (_isOK) then { _block = getNumber(configFile >> "CfgWeapons" >> _x >> "stopThis") == 1; @@ -140,6 +140,7 @@ _allowedObjects = ["TentStorage", "VaultStorageLocked", "Hedgehog_DZ", "Sandbag1 _objWpnQty = (_intentory select 1) select 1; _countr = 0; { + if (_x == "BoltSteel") then { _x = "WoodenArrow" }; // Convert BoltSteel to WoodenArrow _isOK = isClass(configFile >> "CfgMagazines" >> _x); if (_isOK) then { _block = getNumber(configFile >> "CfgMagazines" >> _x >> "stopThis") == 1; @@ -204,7 +205,10 @@ _allowedObjects = ["TentStorage", "VaultStorageLocked", "Hedgehog_DZ", "Sandbag1 if(_outcome == "PASS") then { _date = _result select 1; if(isDedicated) then { - ["dayzSetDate",_date] call broadcastRpcCallAll; + //["dayzSetDate",_date] call broadcastRpcCallAll; + setDate _date; + dayzSetDate = _date; + publicVariable "dayzSetDate"; }; diag_log ("HIVE: Local Time set to " + str(_date)); @@ -239,7 +243,7 @@ diag_log ("HIVE: Spawning # of Vehicles: " + str(_vehLimit)); if(_vehLimit > 0) then { for "_x" from 1 to _vehLimit do { _id = [] spawn spawn_vehicles; - waitUntil{scriptDone _id}; + //waitUntil{scriptDone _id}; }; }; diff --git a/dayz_sfx/CfgSounds.hpp b/dayz_sfx/CfgSounds.hpp index a98ad41a6..e2b9aa77b 100644 --- a/dayz_sfx/CfgSounds.hpp +++ b/dayz_sfx/CfgSounds.hpp @@ -5,6 +5,11 @@ class CfgSounds { sound[] = {"\dayz_sfx\effects\breath_1",0.1,1,30}; titles[] = {}; }; + class z_chopwood_0 { + name = ""; + sound[] = {"\dayz_sfx\effects\chopwood.ogg", 0.1, 1, 50}; + titles[] = {}; + }; class heartbeat_1 { name = ""; sound[] = {"\dayz_sfx\effects\heartbeat_1",0.8,1,30}; diff --git a/dayz_sfx/effects/chopwood.ogg b/dayz_sfx/effects/chopwood.ogg new file mode 100644 index 000000000..065fed896 Binary files /dev/null and b/dayz_sfx/effects/chopwood.ogg differ