Merge pull request #1 from EpochModTeam/master

test
This commit is contained in:
Merlijn
2019-11-04 19:17:15 +01:00
committed by GitHub
95 changed files with 3131 additions and 1732 deletions

View File

@@ -1,21 +0,0 @@
[NEW] Time between unlocking safes/lockboxes after a failed code will be exponentially higher, see configVariables.sqf\DZE_lockablesHarderPenalty @oiad
[NEW] Added 93 new zombie models with loot groups and strings for Server Admins @Airwavesman
[FIXED] Some more occurrences of zero_building interiors misaligned or at the wrong terrain height (eaaedf2, 048caa5)
[FIXED] Player could switch into gunner's seat of ArmoredSUV while the hatch was being closed (e89eebc) #2009 @TheFirstNoob
[FIXED] POI fires were still spawning when POI was off and town generator was on (2855997)
[FIXED] Combo locks could be duplicated by two players removing them at the same time (564e3da)
[FIXED] Bush b_corylus.p3d allowed chopping down for wood like a tree (42e519a)
[FIXED] Player could shoot during unconscious wake up animation (634a01a)
[FIXED] Rare publicVariable value restrictions for AuthKey due to RNG with basic Latin characters (d48c907) @oiad @AirwavesMan
[FIXED] Freeze when iterating through CfgWeapons in A2OA 1.64 due to conflict with ItemKeys in dayz_epoch_b.pbo #2010 @S-fly
[FIXED] 45Rnd_545x39_RPK error after it was removed with the 2018-04-05 A2OA CorePatch (d249227)
[FIXED] Disabled Arma's automatic vehicle refuel, repair and rearm at WarfareBVehicleServicePoint buildings (2c4f06c) @dihan48
[FIXED] DistanceFoot database stat was incorrect. @dihan48
[FIXED] Wrong cargo count of Refuel Trucks after last Corepatch. @AirwavesMan
[UPDATED] Spawning of Zombies and Loot in Safe Zones can now be toggled, disabled by default, see configVariables.sqf/DZE_SafeZoneZombieLoot (6248add, 141b25e) @oiad @_Lance_
[UPDATED] Added notification when status icons are disabled
[UPDATED] Added night vision mode back to DMR_DZ and M4SPR_DZE after it was removed with the 2018-04-05 A2OA CorePatch
[INFO] Synced with DayZMod upstream up to commit fe063a8

39
CHANGE LOG 1.0.7.txt Normal file
View File

@@ -0,0 +1,39 @@
[NEW] Time between unlocking safes/lockboxes after a failed code will be exponentially higher, see configVariables.sqf\DZE_lockablesHarderPenalty (c3cbca1) @oiad
[NEW] Added 93 new zombie models with loot groups and strings for Server Admins. (2e15009) @AirwavesMan
[NEW] Zombie Loot supports backpacks now. (096fc13) @AirwavesMan
[NEW] Hide Body can be edited and toggled now. Enabled by default, configVariables.sqf/DZE_Hide_Body (c0e9fe6) @AirwavesMan
[NEW] 6 AK-107 versions added with attachment support. (82485ea) @AirwavesMan
[NEW] Added new waterbottles from DayZ Mod. Icons made by @DeVloek. Fully functional with all actions. @AirwavesMan
[FIXED] Some more occurrences of zero_building interiors misaligned or at the wrong terrain height (eaaedf2, 048caa5) @ebayShopper
[FIXED] Player could switch into gunner's seat of ArmoredSUV while the hatch was being closed (e89eebc) #2009 @TheFirstNoob
[FIXED] POI fires were still spawning when POI was off and town generator was on (2855997) @ebayShopper
[FIXED] Combo locks could be duplicated by two players removing them at the same time (564e3da) @shu @oiad
[FIXED] Bush b_corylus.p3d allowed chopping down for wood like a tree (42e519a) @ebayShopper
[FIXED] Player could shoot during unconscious wake up animation (634a01a) @ebayShopper
[FIXED] Rare publicVariable value restrictions for AuthKey due to RNG with basic Latin characters (d48c907) @oiad @AirwavesMan
[FIXED] Freeze when iterating through CfgWeapons in A2OA 1.64 due to conflict with ItemKeys in dayz_epoch_b.pbo #2010 @S-fly
[FIXED] 45Rnd_545x39_RPK error after it was removed with the 2018-04-05 A2OA CorePatch (d249227) @ebayShopper
[FIXED] Disabled Arma's automatic vehicle refuel, repair and rearm at WarfareBVehicleServicePoint buildings (2c4f06c) @dihan48
[FIXED] DistanceFoot database stat was incorrect. (be777dd) @dihan48
[FIXED] Wrong cargo count of Refuel Trucks after last Corepatch. (e26fb24) @AirwavesMan
[FIXED] Vehicles jumping into the air after flipping. (096fc13) @AirwavesMan
[FIXED] Crafting wooden arrows from wood piles and razors was not possible. (d4b46e4) @AirwavesMan
[FIXED] Top snap point for half cinder wall was incorrect. (8f10a36) @ndavalos, @AirwavesMan
[FIXED] The RPK-74 magazine could not be used with all AK-74 versions. (82485ea) @AirwavesMan
[FIXED] Multiple Vehicle Upgrades were not possibile. (ac884f2), (a430f79), (c24504a) @F507DMT
[FIXED] Fix an inventory dupe if on water. (a052ba7), (baf92eb) @F507DMT
[FIXED] The pickaxe and the broken pickaxe spawned in the ground on loot spawn. (a09bb81a) @AirwavesMan
[FIXED] Fix floating loot from remove, pack and fn_dropItem. (1268f55) @AirwavesMan
[FIXED] Water dogs did not work with other waterbottles than the normal one. @AirwavesMan
[UPDATED] Spawning of Zombies and Loot in Safe Zones can now be toggled, disabled by default, see configVariables.sqf/DZE_SafeZoneZombieLoot (6248add, 141b25e) @oiad @_Lance_
[UPDATED] Added notification when status icons are disabled. (e04f0fc) @ebayShopper
[UPDATED] Added night vision mode back to DMR_DZ and M4SPR_DZE after it was removed with the 2018-04-05 A2OA CorePatch (d6cf707) @ebayShopper
[UPDATED] All M32 grenades using one inventroy slot now. (cc85067) @AirwavesMan
[UPDATED] The Czech Vest Pouch can carry one weapon now. This was changed to be more intuitive and to avoid disappearing weapons. (f7ea9cb) @AirwavesMan
[UPDATED] Old/unused variables removed from variables.sqf. Entire file reorganized. (4accdee) @worldwidesorrow
[UPDATED] Functions fnc_usec_damageHandler, dayz_inflame_showMenu, dayz_inflame_showMenu_other, DZ_KeyDown_EH, dayz_EjectPlayer compiled on client only - compiles.sqf. (7613e3a) @worldwidesorrow
[UPDATED] "PVCDZ_OpenTarget_Reset" moved to client only - publicEH.sqf. (58a98b7) @worldwidesorrow
[INFO] Synced with DayZMod upstream up to commit fe063a8

View File

@@ -16,5 +16,5 @@
[REMOVED] Old Towngenerator Config. @Skaronator
[INFO] Models/textures by Paul Tomany. @Sequisha.
[INFO] Models/textures by @Sequisha.
[INFO] Special thanks to http://verthosting.com for hosting our development server.

View File

@@ -46,7 +46,7 @@ Initial Developers
--------------------------
* [VB]AWOL - Lead Developer - http://www.twitch.tv/vbawol
* Axle - Tester, Trader City Designer - http://www.twitch.tv/axles
* Paul Tomany - Models, Textures - ptomany@gmail.com - http://www.twitch.tv/sequisha
* Sequisha - Models, Textures - http://www.twitch.tv/sequisha
* [VB]GREEN - Graphics - http://www.twitch.tv/vbgreen
--------------------------
@@ -65,6 +65,9 @@ GitHub Collaborators (In order of most commits)
* Axles - https://github.com/Axles
* Armifer - https://github.com/Armifer
* Zupa - https://github.com/Windmolders
* oiad - https://github.com/oiad
* AirwavesMan - https://github.com/AirwavesMan
* Seelenapparat - https://github.com/seelenapparat
--------------------------
GitHub Contributors (In order of most commits)
@@ -116,6 +119,8 @@ GitHub Contributors (In order of most commits)
* F507DMT - https://github.com/F507DMT
* ndavalos - https://github.com/ndavalos
* SmokeyBR - https://github.com/SmokeyBR
* DeVloek - https://github.com/DeVloek
* worldwidesorrow - https://github.com/worldwidesorrow
--------------------------
Special thanks

View File

@@ -27,6 +27,7 @@ class CfgActions {
class PutMagazine : None { show = 0; };
class DeactivateMine : None { show = 0; };
class RepairVehicle: None { show = 0; };
class HideBody: None { show = 0; }; //Moved to fn_selfactions to allow editing
/*
"None"
"GetInCommander"

View File

@@ -18,7 +18,7 @@ class CfgCrafting {
#include "Recipes\Medical\woodensplint.hpp"
#include "Recipes\Medical\HerbalDrink.hpp"
//ammo
#include "Recipes\Ammo\WoodenArrow.hpp"
//#include "Recipes\Ammo\WoodenArrow.hpp"
//other
#include "Recipes\Other\woodencrate.hpp"
#include "Recipes\Other\nails.hpp"

View File

@@ -288,7 +288,7 @@ class SnapBuilding {
{0,0,0,"Pivot"},
{-2.64, 0, 1.685,"Left"},
{2.64, 0, 1.685,"Right"},
{0, 0, 1.685,"Top"}
{0, 0, 1.5,"Top"}
};
};
class CinderWallDoorSmall_DZ: Cinder_DZE {};

View File

@@ -5,8 +5,10 @@ Castle[] =
{Loot_WEAPON, 1, ItemMap},
{Loot_WEAPON, 1, ItemCompass},
{Loot_WEAPON, 2, ItemFlashlight},
{Loot_WEAPON, 1, ItemPickaxe},
{Loot_WEAPON, 2, ItemPickaxeBroken},
//{Loot_WEAPON, 1, ItemPickaxe},
//{Loot_WEAPON, 2, ItemPickaxeBroken},
{Loot_VEHICLE, 1, WeaponHolder_ItemPickaxe},
{Loot_VEHICLE, 2, WeaponHolder_ItemPickaxeBroken},
// {Loot_WEAPON, 2, ItemShovel},
// {Loot_WEAPON, 1, ItemHatchet},
{Loot_VEHICLE, 1, WeaponHolder_ItemHatchet},

View File

@@ -10,8 +10,10 @@ Construction[] =
{Loot_MAGAZINE, 1, equip_lever},
{Loot_MAGAZINE, 1, ItemComboLock},
{Loot_WEAPON, 1, ItemPickaxe},
{Loot_WEAPON, 2, ItemPickaxeBroken},
//{Loot_WEAPON, 1, ItemPickaxe},
//{Loot_WEAPON, 2, ItemPickaxeBroken},
{Loot_VEHICLE, 1, WeaponHolder_ItemPickaxe},
{Loot_VEHICLE, 2, WeaponHolder_ItemPickaxeBroken},
{Loot_WEAPON, 1, ItemSledge},
{Loot_MAGAZINE, 2, ItemSledgeHandle},
{Loot_MAGAZINE, 2, ItemSledgeHead},

View File

@@ -7,8 +7,10 @@ Industrial[] =
{Loot_VEHICLE, 8, WeaponHolder_ItemCrowbar},
// {Loot_WEAPON, 5, ItemHatchet},
{Loot_VEHICLE, 5, WeaponHolder_ItemHatchet},
{Loot_WEAPON, 1, ItemPickaxe},
{Loot_WEAPON, 2, ItemPickaxeBroken},
//{Loot_WEAPON, 1, ItemPickaxe},
//{Loot_WEAPON, 2, ItemPickaxeBroken},
{Loot_VEHICLE, 1, WeaponHolder_ItemPickaxe},
{Loot_VEHICLE, 2, WeaponHolder_ItemPickaxeBroken},
{Loot_WEAPON, 1, ItemSledge},
{Loot_MAGAZINE, 2, ItemSledgeHandle},
{Loot_MAGAZINE, 2, ItemSledgeHead},

View File

@@ -74,6 +74,7 @@ assaultrifles[] = {
{Loot_WEAPON, 0.1, AKS_GOLD},
{Loot_WEAPON, 0.5, AKM_DZ}, //AK_47_M
{Loot_WEAPON, 0.5, AK74_DZ}, //AK_74
{Loot_WEAPON, 0.5, AK107_DZ}, //AK_107
{Loot_WEAPON, 0.3, FNFAL_DZ}, //FN_FAL
{Loot_WEAPON, 0.1, FN_FAL_ANPVS4_DZE}, //FNFAL_ANPVS4_DZ is NV only _DZE is toggleable
{Loot_WEAPON, 0.5, G36A_Camo_DZ}, //G36A_camo

View File

@@ -64,11 +64,12 @@ class CfgMagazines
#include "DZE\Currency\GoldBar.hpp"
#include "DZE\Currency\SilverBar.hpp"
#include "DZE\Currency\CopperBar.hpp"
#include "DZE\Currency\BronzeBar.hpp"
//#include "DZE\Currency\BronzeBar.hpp" //The Bronze Bar has no model
#include "DZE\Currency\AluminumBar.hpp"
#include "DZE\Currency\TinBar.hpp"
#include "DZE\ItemWaterbottle.hpp"
#include "DZE\PlasticWaterbottle.hpp"
#include "Planting.hpp"
// Building Stuff

View File

@@ -1,54 +0,0 @@
class ItemCanteen : FoodDrink
{
scope = public;
model = "\dayz_equip\models\waterbottle_gear.p3d";
picture = "\dayz_equip\textures\equip_waterbottle_ca.paa";
displayName = $STR_ITEM_CANTEEN_NAME;
descriptionShort = $STR_ITEM_CANTEEN_DESC;
Nutrition[] = {0,0,1000,0};
infectionChance = 0.3;
consumeOutput = "ItemCanteenEmpty";
containerEmpty = "ItemCanteenEmpty";
class ItemActions : ItemActions
{
class Consume : Consume
{
};
class Empty
{
text = $STR_ITEM_CANTEEN_EMPTY;
script = "spawn player_emptyContainer";
};
};
};
class ItemCanteenInfected : ItemCanteen
{
infectionChance = 1;
};
class ItemCanteenSafe : ItemCanteen
{
infectionChance = 0;
};
class ItemCanteenBoiled : ItemCanteen
{
displayName = $STR_ITEM_CANTEEN_BOILED_NAME;
infectionChance = 0;
};
class ItemCanteenHerbal : ItemCanteen
{
displayName = $STR_ITEM_CANTEEN_HERBAL_NAME;
infectionChance = -0.5;
};

View File

@@ -111,4 +111,3 @@ class FoodCooked : FoodEdible
#include "Soda.hpp"
#include "WaterBottle.hpp"
//#include "Canteen.hpp"

View File

@@ -11,11 +11,11 @@ class equip_rope : CA_Magazine {
class Crafting
{
text = $STR_BLD_craft_equip_rope;//"String"
script = "spawn player_craftItem;";
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
neednearby[] = {};
requiretools[] = {""};
output[] = {{"equip_string","CfgMagazines",2}};
input[] = {{"equip_rope","CfgMagazines",1}};
requiretools[] = {"ItemKnife"};
output[] = {{"equip_string",2}};
input[] = {{"equip_rope",1}};
};
};
};

View File

@@ -3,7 +3,7 @@ class ItemBronzeBar: CA_Magazine {
count = 1;
type = 256;
displayName = $STR_EPOCH_BRONZE;
model = "\z\addons\dayz_epoch\models\bronze_bar.p3d";
model = "\z\addons\dayz_epoch\models\bronze_bar.p3d"; // This model does not exist under the written path
picture = "\z\addons\dayz_epoch\pictures\equip_bar_bronze_CA.paa";
descriptionShort = $STR_EPOCH_BRONZE_DESC;
};

View File

@@ -70,15 +70,21 @@ class ItemJerryMixed: CA_Magazine {
picture = "\dayz_equip\textures\equip_jerrycan_ca.paa";
descriptionShort = $STR_EPOCH_CHAINSAW_MIXEDGAS20L_CAN_DESC;
sfx = "refuel";
containerEmpty = "ItemJerrycanEmpty";
class ItemActions {
class Crafting {
text = $STR_EPOCH_CHAINSAW_MIXEDGAS_CAN_ACTION;
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
neednearby[] = {};
requiretools[] = {"ItemToolbox"};
requiretools[] = {"ItemToolbox","ChainSaw"};
output[] = {{"CSGAS",1},{"ItemJerryMixed4",1}};
input[] = {{"ItemJerryMixed",1}};
};
class Empty {
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
};
};
class ItemJerryMixed4: CA_Magazine {
@@ -90,15 +96,21 @@ class ItemJerryMixed4: CA_Magazine {
picture = "\dayz_equip\textures\equip_jerrycan_ca.paa";
descriptionShort = $STR_EPOCH_CHAINSAW_MIXEDGAS16L_CAN_DESC;
sfx = "refuel";
containerEmpty = "ItemJerrycanEmpty";
class ItemActions {
class Crafting {
text = $STR_EPOCH_CHAINSAW_MIXEDGAS_CAN_ACTION;
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
neednearby[] = {};
requiretools[] = {"ItemToolbox"};
requiretools[] = {"ItemToolbox","ChainSaw"};
output[] = {{"CSGAS",1},{"ItemJerryMixed3",1}};
input[] = {{"ItemJerryMixed4",1}};
};
class Empty {
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
};
};
class ItemJerryMixed3: CA_Magazine {
@@ -110,15 +122,21 @@ class ItemJerryMixed3: CA_Magazine {
picture = "\dayz_equip\textures\equip_jerrycan_ca.paa";
descriptionShort = $STR_EPOCH_CHAINSAW_MIXEDGAS12L_CAN_DESC;
sfx = "refuel";
containerEmpty = "ItemJerrycanEmpty";
class ItemActions {
class Crafting {
text = $STR_EPOCH_CHAINSAW_MIXEDGAS_CAN_ACTION;
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
neednearby[] = {};
requiretools[] = {"ItemToolbox"};
requiretools[] = {"ItemToolbox","ChainSaw"};
output[] = {{"CSGAS",1},{"ItemJerryMixed2",1}};
input[] = {{"ItemJerryMixed3",1}};
};
class Empty {
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
};
};
class ItemJerryMixed2: CA_Magazine {
@@ -130,15 +148,21 @@ class ItemJerryMixed2: CA_Magazine {
picture = "\dayz_equip\textures\equip_jerrycan_ca.paa";
descriptionShort = $STR_EPOCH_CHAINSAW_MIXEDGAS8L_CAN_DESC;
sfx = "refuel";
containerEmpty = "ItemJerrycanEmpty";
class ItemActions {
class Crafting {
text = $STR_EPOCH_CHAINSAW_MIXEDGAS_CAN_ACTION;
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
neednearby[] = {};
requiretools[] = {"ItemToolbox"};
requiretools[] = {"ItemToolbox","ChainSaw"};
output[] = {{"CSGAS",1},{"ItemJerryMixed1",1}};
input[] = {{"ItemJerryMixed2",1}};
};
class Empty {
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
};
};
class ItemJerryMixed1: CA_Magazine {
@@ -150,15 +174,21 @@ class ItemJerryMixed1: CA_Magazine {
picture = "\dayz_equip\textures\equip_jerrycan_ca.paa";
descriptionShort = $STR_EPOCH_CHAINSAW_MIXEDGAS4L_CAN;
sfx = "refuel";
containerEmpty = "ItemJerrycanEmpty";
class ItemActions {
class Crafting {
text = $STR_EPOCH_CHAINSAW_MIXEDGAS_CAN_ACTION;
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
neednearby[] = {};
requiretools[] = {"ItemToolbox"};
requiretools[] = {"ItemToolbox","ChainSaw"};
output[] = {{"CSGAS",1},{"ItemJerrycanEmpty",1}};
input[] = {{"ItemJerryMixed1",1}};
};
class Empty {
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
};
};

View File

@@ -274,6 +274,14 @@ class ItemOilBarrel: CA_Magazine
model = "\z\addons\dayz_epoch\models\oil_drum_model.p3d";
picture = "\z\addons\dayz_epoch\pictures\equip_oil_drum_model_ca.paa";
descriptionShort = $STR_EPOCH_OILBARREL_DESC;
containerEmpty = "ItemOilBarrelEmpty";
class ItemActions {
class Empty {
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
};
};
class ItemFuelBarrel: CA_Magazine
{
@@ -286,7 +294,14 @@ class ItemFuelBarrel: CA_Magazine
picture = "\z\addons\dayz_epoch\pictures\equip_oil_drum_model_ca.paa";
descriptionShort = $STR_EPOCH_FUELBARREL_DESC;
fireIntensity = 6; //used for tent burning
emptycan = "ItemFuelBarrelEmpty";
containerEmpty = "ItemFuelBarrelEmpty";
class ItemActions {
class Empty {
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
};
};
class ItemFuelBarrelEmpty: ItemFuelBarrel
{
@@ -1198,6 +1213,14 @@ class ItemMethylaminBarrel : ItemOilBarrel
{
displayName = $STR_EPOCH_METHYLAMINEBARREL;
descriptionShort = $STR_EPOCH_METHYLAMINEBARREL_DESC;
containerEmpty = "ItemMethylaminBarrelEmpty";
class ItemActions {
class Empty {
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
};
};
class ItemC4Charge : CA_Magazine

View File

@@ -0,0 +1,656 @@
class ItemPlasticWaterbottleUnfilled : CA_Magazine
{
scope = public;
count = 1;
type = WeaponSlotItem;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottleEmpty.paa";
displayName = $STR_EQUIP_NAME_WBPET_01;
descriptionShort = $STR_EQUIP_DESC_WBPET_01;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
class ItemActions
{
class Fill
{
text = $STR_ACTIONS_FILL_W;
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottleDmg : CA_Magazine
{
scope = public;
count = 1;
type = WeaponSlotItem;
model = "z\addons\dayz_communityassets\models\waterbottle_damaged.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottleDamaged.paa";
displayName = $STR_EQUIP_NAME_WBPET_02;
descriptionShort = $STR_EQUIP_DESC_WBPET_02;
sfx = "bandage";
class ItemActions
{
class Crafting {
text = $STR_ACTIONS_FIX_W;
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
neednearby[] = {};
requiretools[] = {};
output[] = {{"ItemPlasticWaterbottleUnfilled",1}};
input[] = {{"ItemPlasticWaterbottleDmg",1},{"equip_duct_tape",1}};
};
};
};
class ItemPlasticWaterBottle : ItemWaterBottle {
scope = public;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle10oz.paa";
displayName = $STR_EQUIP_NAME_WBPET_03;
descriptionShort = $STR_EQUIP_DESC_WBPET_03;
Nutrition[] = {0,0,1000,0};
infectionChance = 0.3;
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
};
class ItemPlasticWaterBottleInfected : ItemWaterBottle
{
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle10oz.paa";
infectionChance = 1;
displayName = $STR_EQUIP_NAME_WBPET_03;
descriptionShort = $STR_EQUIP_DESC_WBPET_03;
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
};
class ItemPlasticWaterBottleSafe : ItemWaterBottle
{
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle10oz.paa";
infectionChance = 0;
displayName = $STR_EQUIP_NAME_WBPET_03;
descriptionShort = $STR_EQUIP_DESC_WBPET_03;
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
};
class ItemPlasticWaterBottleBoiled : ItemWaterBottle
{
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle10oz.paa";
displayName = $STR_EQUIP_NAME_WBPET_04;
descriptionShort = $STR_EQUIP_DESC_WBPET_04;
infectionChance = 0;
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
};
class ItemPlasticWaterBottleHerbal : ItemWaterBottle
{
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle10oz.paa";
displayName = $STR_EQUIP_NAME_WBPET_05;
descriptionShort = $STR_EQUIP_DESC_WBPET_05;
infectionChance = -0.5;
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
};
class ItemPlasticWaterbottle1oz : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE1OZ;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE1OZ_DESC;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle1oz.paa";
wateroz = 1;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,100,0};
infectionChance = 0.03;
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle2oz : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE2OZ;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE2OZ_DESC;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle2oz.paa";
wateroz = 2;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,200,0};
infectionChance = 0.06;
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle3oz : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE3OZ;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE3OZ_DESC;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle3oz.paa";
wateroz = 3;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,300,0};
infectionChance = 0.09;
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle4oz : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE4OZ;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE4OZ_DESC;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle4oz.paa";
wateroz = 4;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,400,0};
infectionChance = 0.12;
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle5oz : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE5OZ;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE5OZ_DESC;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle5oz.paa";
wateroz = 5;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,500,0};
infectionChance = 0.15;
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle6oz : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE6OZ;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE6OZ_DESC;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle6oz.paa";
wateroz = 6;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,600,0};
infectionChance = 0.18;
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle7oz : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE7OZ;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE7OZ_DESC;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle7oz.paa";
wateroz = 7;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,700,0};
infectionChance = 0.21;
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle8oz : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE8OZ;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE8OZ_DESC;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle8oz.paa";
wateroz = 8;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,800,0};
infectionChance = 0.24;
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle9oz : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE9OZ;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE9OZ_DESC;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle9oz.paa";
wateroz = 9;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,900,0};
infectionChance = 0.27;
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
//inherit from ItemWaterBottle because that's how the crafting script checks required input
class ItemPlasticWaterbottle1ozBoiled : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE1OZBOILED;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE1OZBOILED_DESC;
infectionChance = 0;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle1oz.paa";
wateroz = 1;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,100,0};
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle2ozBoiled : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE2OZBOILED;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE2OZBOILED_DESC;
infectionChance = 0;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle2oz.paa";
wateroz = 2;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,200,0};
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle3ozBoiled : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE3OZBOILED;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE3OZBOILED_DESC;
infectionChance = 0;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle3oz.paa";
wateroz = 3;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,300,0};
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle4ozBoiled : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE4OZBOILED;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE4OZBOILED_DESC;
infectionChance = 0;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle4oz.paa";
wateroz = 4;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,400,0};
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle5ozBoiled : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE5OZBOILED;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE5OZBOILED_DESC;
infectionChance = 0;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle5oz.paa";
wateroz = 5;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,500,0};
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle6ozBoiled : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE6OZBOILED;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE6OZBOILED_DESC;
infectionChance = 0;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle6oz.paa";
wateroz = 6;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,600,0};
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle7ozBoiled : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE7OZBOILED;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE7OZBOILED_DESC;
infectionChance = 0;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle7oz.paa";
wateroz = 7;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,700,0};
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle8ozBoiled : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE8OZBOILED;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE8OZBOILED_DESC;
infectionChance = 0;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle8oz.paa";
wateroz = 8;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,800,0};
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};
class ItemPlasticWaterbottle9ozBoiled : ItemWaterBottle {
displayName = $STR_EPOCH_PET_WATERBOTTLE9OZBOILED;
descriptionShort = $STR_EPOCH_PET_WATERBOTTLE9OZBOILED_DESC;
infectionChance = 0;
model = "z\addons\dayz_communityassets\models\waterbottle.p3d";
picture = "\dayz_epoch_c\icons\plasticwaterbottle\PETwaterbottle9oz.paa";
wateroz = 9;
containerWater = "ItemPlasticWaterbottle";
containerWaterSafe = "ItemPlasticWaterbottleSafe";
containerWaterInfected = "ItemPlasticWaterbottleInfected";
Nutrition[] = {0,0,900,0};
consumeOutput = "ItemPlasticWaterbottleUnfilled";
containerEmpty = "ItemPlasticWaterbottleUnfilled";
class ItemActions {
class Consume
{
text = $STR_ACTIONS_DRINK2;
script = "spawn player_consume";
};
class Empty
{
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
class Fill {
text = "$STR_ACTIONS_FILL_W";
script = "spawn player_fillWater;";
};
};
};

View File

@@ -1,21 +0,0 @@
class ItemCanteenEmpty : CA_Magazine
{
scope = public;
count = 1;
type = WeaponSlotItem;
model = "\dayz_equip\models\waterbottle_gear.p3d";
picture = "\dayz_equip\textures\equip_waterbottle_empty_ca.paa";
displayName = $STR_ITEM_CANTEEN_EMPTY_NAME;
descriptionShort = $STR_ITEM_CANTEEN_DESC;
//TODO
/*class ItemActions
{
class Fill
{
text = $STR_ACTIONS_FILL_W;
script = "spawn player_fillWater;";
};
};*/
};

View File

@@ -20,10 +20,17 @@ class ItemJerrycan : ItemJerrycanEmpty
descriptionShort = $STR_ITEM_DESC_JERRYCAN;
fuelQuantity = 20;
emptycan = "ItemJerrycanEmpty";
containerEmpty = "ItemJerrycanEmpty";
//used for tent burning
fireIntensity = 6;
class ItemActions {
class Empty {
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
};
};
class ItemFuelcanEmpty : ItemJerrycanEmpty
@@ -46,8 +53,15 @@ class ItemFuelcan : ItemFuelcanEmpty
descriptionShort = $STR_ITEM_DESC_FUELCAN;
fuelQuantity = 5;
emptycan = "ItemFuelcanEmpty";
containerEmpty = "ItemFuelcanEmpty";
//used for tent burning
fireIntensity = 4;
class ItemActions {
class Empty {
text = $STR_EQUIP_NAME_13_EMPTY;
script = "spawn player_emptyContainer";
};
};
};

View File

@@ -23,5 +23,4 @@
#include "equip_brick.hpp"
#include "equip_lever.hpp"
#include "WaterBottle.hpp"
//#include "Canteen.hpp"
#include "Explosives.hpp"

View File

@@ -33,13 +33,17 @@ class ItemWaterBottleDmg : CA_Magazine //We don't have a damaged canteen image/m
picture = "\dayz_equip\textures\equip_waterbottle_empty_ca.paa";
displayName = $STR_ITEMWATERBOTTLEDMG_CODE_NAME;
descriptionShort = $STR_ITEMWATERBOTTLEDMG_CODE_DESC;
sfx = "bandage";
class ItemActions
{
class Repair
{
class Crafting {
text = $STR_ACTIONS_FIX_W;
script = "spawn player_fixBottle;";
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
neednearby[] = {};
requiretools[] = {};
output[] = {{"ItemWaterbottleUnfilled",1}};
input[] = {{"ItemWaterBottleDmg",1},{"equip_duct_tape",1}};
};
};
};

View File

@@ -13,12 +13,21 @@ class ItemLog : CA_Magazine
class Crafting
{
text = $STR_BLD_craft_ItemLog;//"Wooden Plank"
script = "spawn player_craftItem;";
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
neednearby[] = {};
requiretools[] = {"ItemHatchet"};
output[] = {{"ItemPlank","CfgMagazines",2}};
input[] = {{"ItemLog","CfgMagazines",1}};
output[] = {{"ItemPlank",2}};
input[] = {{"ItemLog",1}};
};
class Crafting1
{
text = $STR_EQUIP_NAME_40;//"Wood Piles"
script = ";['Crafting1','CfgMagazines', _id] spawn player_craftItem;";
neednearby[] = {};
requiretools[] = {"ItemHatchet"};
output[] = {{"PartWoodPile",4}};
input[] = {{"ItemLog",1}};
};
};
};
@@ -36,12 +45,12 @@ class ItemPlank : CA_Magazine
{
class Crafting
{
text = $STR_BLD_craft_ItemPlank;//"Wood Piles"
script = "spawn player_craftItem;";
text = $STR_EQUIP_NAME_40;//"Wood Piles"
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;";
neednearby[] = {};
requiretools[] = {"ItemHatchet"};
output[] = {{"PartWoodPile","CfgMagazines",2}};
input[] = {{"ItemPlank","CfgMagazines",1}};
output[] = {{"PartWoodPile",2}};
input[] = {{"ItemPlank",1}};
};
};
};
@@ -77,8 +86,8 @@ class PartWoodPile : CA_Magazine
script = ";['Crafting1','CfgMagazines', _id] spawn player_craftItem;";
neednearby[] = {};
requiretools[] = {"ItemKnife"};
output[] = {{"WoodenArrow",3}};
input[] = {{"PartWoodPile",1},{"ItemTrashRazor",1}};
output[] = {{"1Rnd_Arrow_Wood",5}};
input[] = {{"PartWoodPile",1},{"equip_feathers",2}};
};
class Crafting2

View File

@@ -2,6 +2,7 @@ class 30Rnd_545x39_AK : CA_Magazine
{
picture = "\z\addons\dayz_communityweapons\magazines\data\m_ak74_ca.paa";
displayName = $STR_DZ_MAG_30RND_545x39_AK_NAME;
descriptionShort = $STR_DZ_MAG_30RND_AK74_DESC;
cartridgeName = "545x39";
class ItemActions
@@ -27,7 +28,7 @@ class 75Rnd_545x39_RPK : CA_Magazine
model = "\ca\weapons\mag_univ.p3d";
picture = "\CA\weapons\AK\data\equip\M_RPK_74_CA.paa";
displayName = $STR_DZ_MAG_75RND_545X39_RPK_NAME;
descriptionShort = $STR_DSS_75Rnd_RPK;
descriptionShort = $STR_DZ_MAG_75RND_RPK74_DESC;
count = 75;
tracersEvery = 4;

View File

@@ -19,7 +19,7 @@ class 100Rnd_556x45_M249 : 200Rnd_556x45_M249
class 100Rnd_556x45_BetaCMag: CA_Magazine {
scope = public;
displayName = "MG36 Mag.";
displayName = $STR_DZ_MAG_100RND_556x45_MG36_NAME;
ammo = "B_556x45_Ball";
count = 100;
initSpeed = 920;
@@ -27,7 +27,7 @@ class 100Rnd_556x45_BetaCMag: CA_Magazine {
type="256";
tracersEvery = 4;
lastRoundsTracer = 4;
descriptionShort = "Caliber: 5.56x45 mm NATO Rounds: 100 Used in: MG36, X8 SAW";
descriptionShort = $STR_DZ_MAG_100RND_MG36_DESC;
};

View File

@@ -78,4 +78,88 @@ class NLAW : CA_LauncherMagazine {
class Dragon_EP1 : CA_LauncherMagazine {
type = WeaponSlotItem;
};
//M32 grenades
class 1Rnd_HE_M203;
class 6Rnd_HE_M203: 1Rnd_HE_M203
{
count = 6;
displayName = "$STR_EP1_DN_6Rnd_HE_M203";
descriptionShort = "$STR_EP1_DSS_6Rnd_HE_M203";
type = 256;
picture = "\CA\weapons_E\Data\icons\m_6x40mmHP_CA.paa";
};
class FlareWhite_M203;
class 6Rnd_FlareWhite_M203: FlareWhite_M203
{
count = 6;
displayName = "$STR_EP1_DN_6Rnd_FlareWhite_M203";
descriptionShort = "$STR_EP1_DSS_6Rnd_FlareWhite_M203";
type = 256;
picture = "\CA\weapons_E\Data\icons\m_6x40mmFlare_CA.paa";
};
class FlareGreen_M203;
class 6Rnd_FlareGreen_M203: FlareGreen_M203
{
count = 6;
displayName = "$STR_EP1_DN_6Rnd_FlareGreen_M203";
descriptionShort = "$STR_EP1_DSS_6Rnd_FlareGreen_M203";
type = 256;
picture = "\CA\weapons_E\Data\icons\m_6x40mmFlare_CA.paa";
};
class FlareRed_M203;
class 6Rnd_FlareRed_M203: FlareRed_M203
{
count = 6;
displayName = "$STR_EP1_DN_6Rnd_FlareRed_M203";
descriptionShort = "$STR_EP1_DSS_6Rnd_FlareRed_M203";
type = 256;
picture = "\CA\weapons_E\Data\icons\m_6x40mmFlare_CA.paa";
};
class FlareYellow_M203;
class 6Rnd_FlareYellow_M203: FlareYellow_M203
{
count = 6;
displayName = "$STR_EP1_DN_6Rnd_FlareYellow_M203";
descriptionShort = "$STR_EP1_DSS_6Rnd_FlareYellow_M203";
type = 256;
picture = "\CA\weapons_E\Data\icons\m_6x40mmFlare_CA.paa";
};
class 1Rnd_Smoke_M203;
class 6Rnd_Smoke_M203: 1Rnd_Smoke_M203
{
count = 6;
displayName = "$STR_EP1_DN_6Rnd_Smoke_M203";
descriptionShort = "$STR_EP1_DSS_6Rnd_Smoke_M203";
type = 256;
picture = "\CA\weapons_E\Data\icons\m_6x40mmSmoke_CA.paa";
};
class 1Rnd_SmokeRed_M203;
class 6Rnd_SmokeRed_M203: 1Rnd_SmokeRed_M203
{
count = 6;
displayName = "$STR_EP1_DN_6Rnd_SmokeRed_M203";
descriptionShort = "$STR_EP1_DSS_6Rnd_SmokeRed_M203";
type = 256;
picture = "\CA\weapons_E\Data\icons\m_6x40mmSmoke_CA.paa";
};
class 1Rnd_SmokeGreen_M203;
class 6Rnd_SmokeGreen_M203: 1Rnd_SmokeGreen_M203
{
count = 6;
displayName = "$STR_EP1_DN_6Rnd_SmokeGreen_M203";
descriptionShort = "$STR_EP1_DSS_6Rnd_SmokeGreen_M203";
type = 256;
picture = "\CA\weapons_E\Data\icons\m_6x40mmSmoke_CA.paa";
};
class 1Rnd_SmokeYellow_M203;
class 6Rnd_SmokeYellow_M203: 1Rnd_SmokeYellow_M203
{
count = 6;
displayName = "$STR_EP1_DN_6Rnd_SmokeYellow_M203";
descriptionShort = "$STR_EP1_DSS_6Rnd_SmokeYellow_M203";
type = 256;
picture = "\CA\weapons_E\Data\icons\m_6x40mmSmoke_CA.paa";
};

View File

@@ -769,6 +769,36 @@ class Category_485 {
buy[] = {-1,"ItemGoldBar"}; // Sell only
sell[] = {1,"ItemGoldBar10oz"};
};
class AK107_DZ {
type = "trade_weapons";
buy[] = {2,"ItemGoldBar"};
sell[] = {1,"ItemGoldBar"};
};
class AK107_Kobra_DZ {
type = "trade_weapons";
buy[] = {-1,"ItemGoldBar"}; // Sell only
sell[] = {3,"ItemGoldBar"};
};
class AK107_PSO1_DZ {
type = "trade_weapons";
buy[] = {-1,"ItemGoldBar"}; // Sell only
sell[] = {5,"ItemGoldBar"};
};
class AK107_GL_DZ {
type = "trade_weapons";
buy[] = {-1,"ItemGoldBar"}; // Sell only
sell[] = {3,"ItemGoldBar"};
};
class AK107_GL_Kobra_DZ {
type = "trade_weapons";
buy[] = {-1,"ItemGoldBar"}; // Sell only
sell[] = {5,"ItemGoldBar"};
};
class AK107_GL_PSO1_DZ {
type = "trade_weapons";
buy[] = {-1,"ItemGoldBar"}; // Sell only
sell[] = {7,"ItemGoldBar"};
};
class FNFAL_DZ {
type = "trade_weapons";
buy[] = {8,"ItemGoldBar"};

View File

@@ -4,6 +4,11 @@ class Category_601 {
buy[] = {3,"ItemSilverBar"};
sell[] = {1,"ItemSilverBar"};
};
class ItemPlasticWaterbottleUnfilled {
type = "trade_items";
buy[] = {2,"ItemSilverBar"};
sell[] = {1,"ItemSilverBar"};
};
class ItemSodaCoke {
type = "trade_items";
buy[] = {2,"ItemSilverBar"};

View File

@@ -62,7 +62,7 @@ class DZ_Czech_Vest_Pouch: Bag_Base_EP1
picture = "\ca\weapons_e\data\icons\backpack_ACR_small_CA.paa";
scope = 2;
transportmaxmagazines = 12;
transportmaxweapons = 0;
transportmaxweapons = 1;
class eventHandlers
{
init="[(_this select 0),'CfgVehicles','DZ_Czech_Vest_Pouch'] execVM '\z\addons\dayz_code\init\object_BackpackAction.sqf';";
@@ -158,6 +158,7 @@ class DZ_LargeGunBag_EP1: Bag_Base_EP1
{
scope = public;
displayName = $STR_EPOCH_PACK_LGB;
descriptionShort = $STR_EPOCH_PACK_DESC_LGB;
model = "\ca\weapons_e\AmmoBoxes\StaticX.p3d";
picture = "\ca\weapons_e\data\icons\staticX_CA.paa";
icon = "\ca\weapons_e\data\icons\mapIcon_backpack_CA.paa";
@@ -173,6 +174,7 @@ class DZ_GunBag_EP1: Bag_Base_EP1
{
scope = public;
displayName = $STR_EPOCH_PACK_GB;
descriptionShort = $STR_EPOCH_PACK_DESC_GB;
model = "\ca\weapons_e\AmmoBoxes\StaticY.p3d";
picture = "\ca\weapons_e\data\icons\staticY_CA.paa";
icon = "\ca\weapons_e\data\icons\mapIcon_backpack_CA.paa";
@@ -188,6 +190,7 @@ class DZ_CompactPack_EP1: Bag_Base_EP1
{
scope = public;
displayName = $STR_EPOCH_PACK_COMPACT;
descriptionShort = $STR_EPOCH_PACK_DESC_COMPACT;
picture = "\ca\weapons_e\data\icons\backpack_RPG_CA.paa";
icon = "\ca\weapons_e\data\icons\mapIcon_backpack_CA.paa";
mapsize = 2;
@@ -203,6 +206,7 @@ class DZ_TerminalPack_EP1: Bag_Base_EP1
{
scope = public;
displayName = $STR_EPOCH_PACK_TERMINAL;
descriptionShort = $STR_EPOCH_PACK_DESC_TERMINAL;
picture = "\ca\weapons_e\data\icons\backpack_US_ASSAULT_CA.paa";
icon = "\ca\weapons_e\data\icons\mapIcon_backpack_CA.paa";
mapSize = 2;

View File

@@ -493,7 +493,7 @@ class ArmoredSUV_PMC_DZE2: ArmoredSUV_PMC_DZE1
};
class Upgrades
{
ItemLRK[] = {"ArmoredSUV_PMC_DZE4",{},{{"ItemLRK",1},{"PartGeneric",1},{"ItemTent",1}}};
ItemLRK[] = {"ArmoredSUV_PMC_DZE3",{},{{"ItemLRK",1},{"PartGeneric",1},{"ItemTent",1}}};
};
};

View File

@@ -110,10 +110,10 @@ class Offroad_DSHKM_Gue_DZE1: Offroad_DSHKM_Gue_DZE
maxspeed = 170; // Offroad_DSHKM_base 150 | car 100
class Upgrades
{
ItemLRK[] = {"Offroad_DSHKM_Gue_DZE2",
ItemAVE[] = {"Offroad_DSHKM_Gue_DZE2",
{ },
{
{ "ItemLRK",1 },
{ "ItemAVE",1 },
{ "PartGeneric",2 },
{ "ItemTent",1 } }};
};

View File

@@ -125,7 +125,7 @@ class Pickup_PK_GUE_DZE1: Pickup_PK_GUE_DZE {
terrainCoef = 1.8;
class Upgrades {
ItemAVE[] = {"Pickup_PK_GUE_DZE1",{},{{"ItemAVE",1},{"PartGeneric",4},{"ItemTankTrap",2}}};
ItemAVE[] = {"Pickup_PK_GUE_DZE2",{},{{"ItemAVE",1},{"PartGeneric",4},{"ItemTankTrap",2}}};
};
};
class Pickup_PK_TK_GUE_EP1_DZE1: Pickup_PK_TK_GUE_EP1_DZE {

View File

@@ -24,18 +24,21 @@ class CrashSite : House
class CrashSite_RU : CrashSite
{
scope = public;
displayname = $STR_EPOCH_CRASHSITE1;
model = "\z\addons\dayz_communityassets\crashsite\mi8\mi8_ru.p3d";
lootParams[] = {{0.6, -4.5, 0}, 7, 2.5, 5, 7};
};
class CrashSite_UN : CrashSite_RU
{
displayname = $STR_EPOCH_CRASHSITE2;
model = "\z\addons\dayz_communityassets\crashsite\mi8\mi8_un.p3d";
};
class CrashSite_US : CrashSite
{
scope = public;
displayname = $STR_EPOCH_CRASHSITE3;
model = "\ca\air2\uh1y\uh1y_crashed.p3d";
hiddenSelections[] = {"zasleh"};
smoke[] = {-0.8,-2.3,2};
@@ -45,6 +48,7 @@ class CrashSite_US : CrashSite
class CrashSite_EU : CrashSite
{
scope = public;
displayname = $STR_EPOCH_CRASHSITE4;
model = "\z\addons\dayz_communityassets\crashsite\hc3\hc3.p3d";
lootParams[] = {{-0.4, -0.5, 0}, 4, 2.5, 7.5, 7};
};

View File

@@ -22,6 +22,27 @@ class WeaponHolder_ItemCrowbar: WeaponHolderBase
init="[(_this select 0),'cfgWeapons','ItemCrowbar'] execVM '\z\addons\dayz_code\init\object_pickupAction.sqf';";
};
};
class WeaponHolder_ItemPickaxe: WeaponHolderBase
{
scope=2;
displayName = $STR_EQUIP_NAME_PICKAXE;
model = "z\addons\dayz_communityweapons\models\pickaxe\pickaxe.p3d";
destrType = "DestructNo";
class eventHandlers
{
init="[(_this select 0),'cfgWeapons','ItemPickaxe'] execVM '\z\addons\dayz_code\init\object_pickupAction.sqf';";
};
};
class WeaponHolder_ItemPickaxeBroken: WeaponHolder_ItemPickaxe
{
displayName = $STR_name_ItemPickaxeBroken;
class eventHandlers
{
init="[(_this select 0),'cfgWeapons','ItemPickaxeBroken'] execVM '\z\addons\dayz_code\init\object_pickupAction.sqf';";
};
};
class WeaponHolder_ItemSledge : WeaponHolderBase { // Epoch class. Needed for player_dropWeapon
scope = public;
displayName = $STR_EQUIP_NAME_SledgeHammer;

View File

@@ -20,6 +20,7 @@ class Swarm_Base : Citizen1 {
damageScale = 200;
sepsisChance = 10;
forcedSpeed = 6;
canCarryBackPack = 1;
class Eventhandlers {
init = "_this call zombie_initialize;";
@@ -126,4 +127,4 @@ class swarm_newBase : Swarm_Base {
// tex[] = {};
// mat[] = {"Ca\characters_E\Overall\Data\Overall.rvmat", "Ca\characters_E\Overall\Data\W1_Overall.rvmat", "Ca\characters_E\Overall\Data\W2_Overall.rvmat"};
//};
};
};

View File

@@ -28,6 +28,7 @@ class Zed_Base : Citizen1 {
class HitDamage {};
armor = 3;
agentTasks[] = {};
canCarryBackPack = 1;
};
class zZombie_Base : Zed_Base {
scope = public;

View File

@@ -29,6 +29,8 @@ class CfgWeapons
#include "Weapon\Sniper\M4SPR.hpp"
#include "Weapon\Sniper\VSSVintorez.hpp"
//Ak107
#include "Weapon\Assault\AK107.hpp"
//each include is preceded by its required external references.

View File

@@ -5,13 +5,14 @@ class AK74_Kobra_DZ : AK_74
model = "z\addons\dayz_communityweapons\ak74\ak74_kobra.p3d";
picture = "\z\addons\dayz_communityweapons\ak74\data\w_ak74_kobra_ca.paa";
displayName = $STR_DZ_WPN_AK74_KOBRA_NAME;
/* //Allow default A2 mags
magazines[] =
{
30Rnd_545x39_AK,
30Rnd_545x39_AKSD
30Rnd_545x39_AKSD, //Allow both SD and non-SD
75Rnd_545x39_RPK
};
*/
class Attachments
{
Attachment_GP25 = "AK74_GL_Kobra_DZ";

View File

@@ -7,7 +7,8 @@ class AKS74U_Kobra_DZ : AKS_74_U
magazines[] =
{
30Rnd_545x39_AK,
30Rnd_545x39_AKSD
30Rnd_545x39_AKSD, //Allow both SD and non-SD
75Rnd_545x39_RPK
};
class Attachments
@@ -34,7 +35,8 @@ class AKS74U_Kobra_SD_DZ : AKS_74_UN_kobra
magazines[] =
{
30Rnd_545x39_AKSD,
30Rnd_545x39_AK //Allow both SD and non-SD
30Rnd_545x39_AK, //Allow both SD and non-SD
75Rnd_545x39_RPK
};
class ItemActions

View File

@@ -18,6 +18,8 @@ class ItemKnife_Base : ItemCore
class ItemKnife : ItemKnife_Base
{
scope = public;
model = "\dayz_equip\models\knife_gear.p3d"; // Some mods override this. We leave this here just to be sure.
picture = "\dayz_equip\textures\equip_knife_ca.paa";
descriptionShort = $STR_EQUIP_DESC_4;
sharpnessRemaining = "ItemKnife5";
};

View File

@@ -18,6 +18,8 @@ class ItemMatchboxEmpty : ItemMatchbox_base
class ItemMatchbox : ItemMatchbox_base
{
scope = public;
model = "\dayz_equip\models\matchbox_gear.p3d"; // Some mods override this. We leave this here just to be sure.
picture = "\dayz_equip\textures\equip_matchbox_ca.paa";
matches = -1;
qtyRemaining = "Item5Matchbox";
@@ -29,6 +31,10 @@ class ItemMatchbox : ItemMatchbox_base
script = "spawn player_makeFire;"; //Do not use player_build because we have no ghost preview model for Land_Fire_DZ yet
use[] = {"PartWoodPile"};
};
class Combine {
text = $STR_ANTIBIOTICS_COMBINE;
script = "spawn player_combineMatches;";
};
};
};

View File

@@ -0,0 +1,157 @@
class AK_107_kobra;
class AK107_Kobra_DZ : AK_107_kobra
{
displayName = $STR_DZ_WPN_AK107_KOBRA_NAME;
magazines[] =
{
30Rnd_545x39_AK,
30Rnd_545x39_AKSD, //Allow both SD and non-SD
75Rnd_545x39_RPK
};
class Attachments
{
Attachment_GP25 = "AK107_GL_Kobra_DZ";
};
class ItemActions
{
class RemoveKobra
{
text = $STR_DZ_ATT_KOBRA_RMVE;
script = "; ['Attachment_Kobra',_id,'AK107_DZ'] call player_removeAttachment";
};
};
};
class AK_107_CP;
class AK107_DZ : AK_107_CP
{
displayName = $STR_DZ_WPN_AK107_NAME;
magazines[] =
{
30Rnd_545x39_AK,
30Rnd_545x39_AKSD, //Allow both SD and non-SD
75Rnd_545x39_RPK
};
class Attachments
{
Attachment_Kobra = "AK107_Kobra_DZ";
Attachment_PSO1 = "AK107_PSO_DZ";
Attachment_GP25 = "AK107_GL_DZ";
};
class ItemActions {};
};
class AK_107_GL_CP;
class AK107_GL_DZ : AK_107_GL_CP
{
displayName = $STR_DZ_WPN_AK107_GL_NAME;
magazines[] =
{
30Rnd_545x39_AK,
30Rnd_545x39_AKSD, //Allow both SD and non-SD
75Rnd_545x39_RPK
};
class Attachments
{
Attachment_Kobra = "AK107_GL_Kobra_DZ";
Attachment_PSO1 = "AK107_GL_PSO_DZ";
};
class ItemActions
{
class RemoveGL
{
text = $STR_DZ_ATT_GP25_RMVE;
script = "; ['Attachment_GP25',_id,'AK107_DZ'] call player_removeAttachment";
};
};
};
class AK_107_pso;
class AK107_PSO_DZ : AK_107_pso
{
displayName = $STR_DZ_WPN_AK107_PSO1_NAME;
magazines[] =
{
30Rnd_545x39_AK,
30Rnd_545x39_AKSD, //Allow both SD and non-SD
75Rnd_545x39_RPK
};
class Attachments
{
Attachment_GP25 = "AK107_GL_PSO_DZ";
};
class ItemActions
{
class RemovePSO1
{
text = $STR_DZ_ATT_PSO1_RMVE;
script = "; ['Attachment_PSO1',_id,'AK107_DZ'] call player_removeAttachment";
};
};
};
class AK_107_GL_pso;
class AK107_GL_PSO_DZ : AK_107_GL_pso
{
displayName = $STR_DZ_WPN_AK107_GL_PSO1_NAME;
magazines[] =
{
30Rnd_545x39_AK,
30Rnd_545x39_AKSD, //Allow both SD and non-SD
75Rnd_545x39_RPK
};
class Attachments {};
class ItemActions
{
class RemovePSO1
{
text = $STR_DZ_ATT_PSO1_RMVE;
script = "; ['Attachment_PSO1',_id,'AK107_GL_DZ'] call player_removeAttachment";
};
class RemoveGL
{
text = $STR_DZ_ATT_GP25_RMVE;
script = "; ['Attachment_GP25',_id,'AK107_PSO_DZ'] call player_removeAttachment";
};
};
};
class AK_107_GL_kobra;
class AK107_GL_Kobra_DZ : AK_107_GL_kobra
{
displayName = $STR_DZ_WPN_AK107_GL_KOBRA_NAME;
magazines[] =
{
30Rnd_545x39_AK,
30Rnd_545x39_AKSD, //Allow both SD and non-SD
75Rnd_545x39_RPK
};
class Attachments {};
class ItemActions
{
class RemoveKobra
{
text = $STR_DZ_ATT_KOBRA_RMVE;
script = "; ['Attachment_Kobra',_id,'AK107_GL_DZ'] call player_removeAttachment";
};
class RemoveGL
{
text = $STR_DZ_ATT_GP25_RMVE;
script = "; ['Attachment_GP25',_id,'AK107_Kobra_DZ'] call player_removeAttachment";
};
};
};

View File

@@ -328,7 +328,7 @@ class AdvancedTrading
x = 0.46 * safezoneW + safezoneX;
y = 0.77 * safezoneH + safezoneY;
w = 0.13 * safezoneW;
onButtonClick = "call Z_SellItems;";
onButtonClick = "closeDialog 0; call Z_SellItems;";
};
class ZSC_RscButtonMenu_AT27: ZSC_RscButtonMenu
{
@@ -338,7 +338,7 @@ class AdvancedTrading
y = 0.77 * safezoneH + safezoneY;
w = 0.13 * safezoneW;
onload = "ctrlShow [_this,false]";
onButtonClick = "call Z_BuyItems;";
onButtonClick = "closeDialog 0; call Z_BuyItems;";
};
class ZSC_RscButtonMenu_AT28: ZSC_RscButtonMenu
{

View File

@@ -303,7 +303,7 @@ class SafeKeyPad
colorText[] = {0,1,0,1};
colorBackground[] = {0,0,0,0};
colorBackgroundActive[] = {0,0,0,0};
onButtonClick = "[player,""keypad_tick"",0,false] call dayz_zombieSpeak; keypadCancel = false; ((ctrlParent (_this select 0)) closeDisplay 2); if(!isNull dayz_selectedVault and (typeOf dayz_selectedVault) in DZE_LockedStorage) then {dayz_selectedVault spawn player_unlockVault;};";
onButtonClick = "[player,""keypad_tick"",0,false] call dayz_zombieSpeak; keypadCancel = false; ((ctrlParent (_this select 0)) closeDisplay 2); if(!isNull dayz_selectedVault) then {dayz_selectedVault spawn player_unlockVault;};";
};
};
};
@@ -458,7 +458,7 @@ class ComboLockUI
y = 0.762017;
w = 0.201064;
h = 0.233964;
onButtonClick = "keypadCancel = false; call player_unlockDoor";
onButtonClick = "keypadCancel = false; if (!isNull dayz_selectedDoor) then {call player_unlockDoor;};";
};
};
};

View File

@@ -1,61 +1,84 @@
private ["_bottletext","_tin1text","_tin2text","_tintext","_hastinitem","_qty","_dis","_sfx","_WB2Add","_finished"];
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
dayz_actionInProgress = true;
private ["_bottletext","_hastinitem","_qty","_dis","_sfx","_bottle","_finished","_waterbottles","_platicBottles","_magsPlayer","_bottles"];
_bottletext = getText (configFile >> "CfgMagazines" >> "ItemWaterBottle" >> "displayName");
_tin1text = getText (configFile >> "CfgMagazines" >> "TrashTinCan" >> "displayName");
_tin2text = getText (configFile >> "CfgMagazines" >> "ItemSodaEmpty" >> "displayName");
_tintext = format["%1 / %2",_tin1text,_tin2text];
_qty = {_x in ["ItemWaterBottleInfected","ItemWaterBottle","ItemWaterBottleSafe","ItemWaterbottle1oz","ItemWaterbottle2oz","ItemWaterbottle3oz","ItemWaterbottle4oz","ItemWaterbottle5oz","ItemWaterbottle6oz","ItemWaterbottle7oz","ItemWaterbottle8oz","ItemWaterbottle9oz"]} count magazines player;
_waterbottles = ["ItemWaterBottleInfected","ItemWaterBottle","ItemWaterBottleSafe","ItemWaterbottle1oz","ItemWaterbottle2oz","ItemWaterbottle3oz","ItemWaterbottle4oz","ItemWaterbottle5oz","ItemWaterbottle6oz","ItemWaterbottle7oz","ItemWaterbottle8oz","ItemWaterbottle9oz","ItemPlasticWaterBottle","ItemPlasticWaterBottleInfected","ItemPlasticWaterBottleSafe","ItemPlasticWaterbottle1oz","ItemPlasticWaterbottle2oz","ItemPlasticWaterbottle3oz","ItemPlasticWaterbottle4oz","ItemPlasticWaterbottle5oz","ItemPlasticWaterbottle6oz","ItemPlasticWaterbottle7oz","ItemPlasticWaterbottle8oz","ItemPlasticWaterbottle9oz"];
_platicBottles = ["ItemPlasticWaterBottle","ItemPlasticWaterBottleInfected","ItemPlasticWaterBottleSafe","ItemPlasticWaterbottle1oz","ItemPlasticWaterbottle2oz","ItemPlasticWaterbottle3oz","ItemPlasticWaterbottle4oz","ItemPlasticWaterbottle5oz","ItemPlasticWaterbottle6oz","ItemPlasticWaterbottle7oz","ItemPlasticWaterbottle8oz","ItemPlasticWaterbottle9oz"];
_magsPlayer = magazines player;
_qty = {_x in _waterbottles} count _magsPlayer;
_hastinitem = true;
a_player_boil = true;
player removeAction s_player_boil;
//s_player_boil = -1;
/* //canteens are metal, we only use canteens in Epoch
_hastinitem = {_x in magazines player} count boil_tin_cans > 0;
if (!_hastinitem) exitWith {format[localize "str_player_31",_tintext,localize "str_player_31_fill"] call dayz_rollingMessages; a_player_boil = false; dayz_actionInProgress = false;};
*/
if ({_x in _platicBottles} count _magsPlayer > 0) then {
_hastinitem = {_x in _magsPlayer} count boil_tin_cans > 0;
};
if !(_hastinitem) exitWith {
private ["_tin1text","_tin2text","_tintext"];
_tin1text = getText (configFile >> "CfgMagazines" >> "TrashTinCan" >> "displayName");
_tin2text = getText (configFile >> "CfgMagazines" >> "ItemSodaEmpty" >> "displayName");
_tintext = format["%1 / %2",_tin1text,_tin2text];
format[localize "str_player_31",_tintext,localize "str_player_31_fill"] call dayz_rollingMessages;
a_player_boil = false;
dayz_actionInProgress = false;
};
if (_qty > 0) then {
_dis=10;
_sfx = "cook";
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
[player,_dis,true,(getPosATL player)] call player_alertZombies;
_finished = ["Medic",1] call fn_loopAction;
// Double check player did not drop item
_qty = {_x in ["ItemWaterBottleInfected","ItemWaterBottle","ItemWaterBottleSafe","ItemWaterbottle1oz","ItemWaterbottle2oz","ItemWaterbottle3oz","ItemWaterbottle4oz","ItemWaterbottle5oz","ItemWaterbottle6oz","ItemWaterbottle7oz","ItemWaterbottle8oz","ItemWaterbottle9oz"]} count magazines player;
if (_qty == 0 or !_finished) exitWith {};
for "_x" from 1 to _qty do {
_WB2Add = "ItemWaterBottleBoiled";
switch (true) do {
case ("ItemWaterBottleInfected" in magazines player): { player removeMagazine "ItemWaterBottleInfected"; };
case ("ItemWaterBottleSafe" in magazines player): { player removeMagazine "ItemWaterBottleSafe"; };
case ("ItemWaterBottle" in magazines player): { player removeMagazine "ItemWaterBottle"; };
case ("ItemWaterbottle1oz" in magazines player): { player removeMagazine "ItemWaterbottle1oz"; _WB2Add = "ItemWaterbottle1ozBoiled"; };
case ("ItemWaterbottle2oz" in magazines player): { player removeMagazine "ItemWaterbottle2oz"; _WB2Add = "ItemWaterbottle2ozBoiled"; };
case ("ItemWaterbottle3oz" in magazines player): { player removeMagazine "ItemWaterbottle3oz"; _WB2Add = "ItemWaterbottle3ozBoiled"; };
case ("ItemWaterbottle4oz" in magazines player): { player removeMagazine "ItemWaterbottle4oz"; _WB2Add = "ItemWaterbottle4ozBoiled"; };
case ("ItemWaterbottle5oz" in magazines player): { player removeMagazine "ItemWaterbottle5oz"; _WB2Add = "ItemWaterbottle5ozBoiled"; };
case ("ItemWaterbottle6oz" in magazines player): { player removeMagazine "ItemWaterbottle6oz"; _WB2Add = "ItemWaterbottle6ozBoiled"; };
case ("ItemWaterbottle7oz" in magazines player): { player removeMagazine "ItemWaterbottle7oz"; _WB2Add = "ItemWaterbottle7ozBoiled"; };
case ("ItemWaterbottle8oz" in magazines player): { player removeMagazine "ItemWaterbottle8oz"; _WB2Add = "ItemWaterbottle8ozBoiled"; };
case ("ItemWaterbottle9oz" in magazines player): { player removeMagazine "ItemWaterbottle9oz"; _WB2Add = "ItemWaterbottle9ozBoiled"; };
_finished = ["Medic",1] call fn_loopAction;
// Double check player did not drop item
_bottles = [];
{
if (_x in _waterbottles) then {
_bottles set [count _bottles, _x];
};
} count magazines player;
_qty = count _bottles;
if (_qty < 1 || !_finished) exitWith {};
{
_bottle = _x;
player removeMagazine _bottle;
if (dayz_waterBottleBreaking && {[0.1] call fn_chance}) then {
player addMagazine "ItemWaterBottleDmg";
if (_bottle in _platicBottles) then {
player addMagazine "ItemPlasticWaterbottleDmg";
} else {
player addMagazine "ItemWaterBottleDmg";
};
localize "str_waterbottle_broke" call dayz_rollingMessages;
} else {
player addMagazine _WB2Add;
if (_bottle in _platicBottles) then {
if (_bottle in ["ItemPlasticWaterBottleInfected","ItemPlasticWaterBottleSafe"]) then {
player addMagazine "ItemPlasticWaterbottleBoiled";
} else {
player addMagazine (_bottle + "Boiled");
};
} else {
if (_bottle in ["ItemWaterBottleInfected","ItemWaterBottleSafe"]) then {
player addMagazine "ItemWaterBottleBoiled";
} else {
player addMagazine (_bottle + "Boiled");
};
};
};
};
} count _bottles;
format [localize "str_player_boiledwater",_qty] call dayz_rollingMessages;
} else {
format[localize "str_player_31",_bottletext,localize "str_player_31_fill"] call dayz_rollingMessages;
};
a_player_boil = false;
dayz_actionInProgress = false;
dayz_actionInProgress = false;

View File

@@ -1,14 +1,15 @@
private ["_array","_handle","_type","_onLadder","_removed","_itemIn","_countIn"];
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
dayz_actionInProgress = true;
private ["_array","_handle","_type","_onLadder","_removed","_itemIn","_countIn","_bottles"];
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
if (_onLadder) exitWith {dayz_actionInProgress = false;localize "str_player_21" call dayz_rollingMessages;};
_array = _this select 3;
_handle = _array select 0;
_type = _array select 1;
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
if (_onLadder) exitWith {localize "str_player_21" call dayz_rollingMessages;};
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
dayz_actionInProgress = true;
player playActionNow "PutDown";
switch (_type) do {
@@ -17,7 +18,7 @@ switch (_type) do {
_removed = 0;
_itemIn = "FoodRaw";
_countIn = 1;
{
{
if( (_removed < _countIn) && ((_x == _itemIn) || configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn)) then {
_removed = _removed + ([player,_x] call BIS_fnc_invRemove);
};
@@ -30,13 +31,21 @@ switch (_type) do {
};
case 1: {
if(([player,"ItemWaterbottle"] call BIS_fnc_invRemove) == 1) then {
player addMagazine "ItemWaterbottleUnfilled";
};
_handle setFSMVariable ["_thirst",0];
_bottles = ["ItemWaterBottle","ItemWaterBottleInfected","ItemWaterBottleSafe","ItemWaterBottleBoiled","ItemPlasticWaterBottle","ItemPlasticWaterBottleInfected","ItemPlasticWaterBottleSafe","ItemPlasticWaterBottleBoiled"];
{
if (_x in _bottles) exitwith {
if (_x in ["ItemWaterBottle","ItemWaterBottleInfected","ItemWaterBottleSafe","ItemWaterBottleBoiled"]) then {
player addMagazine "ItemWaterbottleUnfilled";
} else {
player addMagazine "ItemPlasticWaterbottleUnfilled";
};
player removeMagazine _x;
};
} count magazines player;
_handle setFSMVariable ["_thirst",0];
player removeAction s_player_waterdog;
s_player_waterdog = -1;
};
};
dayz_actionInProgress = false;
dayz_actionInProgress = false;

View File

@@ -1,8 +1,8 @@
private ["_vehicle","_finished","_soundSource","_fuelCan","_emptyCan"];
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
dayz_actionInProgress = true;
private ["_vehicle","_finished","_soundSource","_fuelCan","_emptyCan"];
player removeAction s_player_fillgen;
s_player_fillgen = 1;
@@ -24,16 +24,16 @@ _fuelCan = nil;
if (_finished) then {
// take fuel can and replace with empty
if(!(_vehicle getVariable ["GeneratorFilled", false]) && !isNil "_fuelCan") then {
if(([player,_fuelCan] call BIS_fnc_invRemove) == 1) then {
_emptyCan = getText (configFile >> "CfgMagazines" >> _fuelCan >> "emptycan");
_emptyCan = getText (configFile >> "CfgMagazines" >> _fuelCan >> "containerEmpty");
player addMagazine _emptyCan;
// mark as once filled
_vehicle setVariable ["GeneratorFilled", true,true];
// Start generator
_vehicle setVariable ["GeneratorRunning", true,true];
@@ -46,7 +46,7 @@ if (_finished) then {
localize "str_epoch_player_28" call dayz_rollingMessages;
["Working",0,[0,1,3,0]] call dayz_NutritionSystem;
};
} else {
} else {
// Start generator
_vehicle setVariable ["GeneratorRunning", true,true];
@@ -63,4 +63,4 @@ if (_finished) then {
};
dayz_actionInProgress = false;
s_player_fillgen = -1;
s_player_fillgen = -1;

View File

@@ -0,0 +1,16 @@
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
dayz_actionInProgress = true;
private "_body";
player removeAction s_player_hide_body;
s_player_hide_body = -1;
closeDialog 0;
_body = _this select 3;
if (isNull _body) exitWith { dayz_actionInProgress = false;};
player action ["hideBody", _body];
dayz_actionInProgress = false;

View File

@@ -66,7 +66,7 @@ _needNear = getArray (configFile >> "CfgMagazines" >> DZE_buildItem >> "ItemActi
_isNear = count (nearestObjects [_pos, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]);
if(_isNear == 0) then {
_abort = true;
_reason = localize "STR_BLD_name_ItemWorkshop";
_reason = localize "STR_EPOCH_WORKBENCH_NEARBY";
};
};
case "fueltank":

View File

@@ -66,7 +66,7 @@ _needNear = getArray (configFile >> "CfgMagazines" >> _item >> "ItemActions" >>
_isNear = count (nearestObjects [_pos, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]);
if(_isNear == 0) then {
_abort = true;
_reason = localize "STR_BLD_name_ItemWorkshop";
_reason = localize "STR_EPOCH_WORKBENCH_NEARBY";
};
};
case "fueltank":

View File

@@ -1,7 +1,11 @@
if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; };
dayz_actionInProgress = true;
private ["_total", "_full", "_remain", "_amount"];
_total = 0;
{
if(configName inheritsFrom (configfile >> "CfgMagazines" >> _x) == "ItemAntibiotic") then {
if (configName inheritsFrom (configfile >> "CfgMagazines" >> _x) == "ItemAntibiotic") then {
_amount = getNumber(configFile >> "CfgMagazines" >> _x >> "medical" >> "amount");
if(_amount > 0) then {
_total = _total + _amount;
@@ -9,8 +13,10 @@ _total = 0;
};
};
} count (magazines player);
_full = floor(_total / 6);
_remain = _total % 6;
for "_i" from 1 to _full do
{
player addMagazine "ItemAntibiotic6";
@@ -19,3 +25,5 @@ for "_i" from 1 to _full do
if(_remain > 0 ) then {
player addMagazine "ItemAntibiotic" + str(_remain);
};
dayz_actionInProgress = false;

View File

@@ -0,0 +1,33 @@
if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; };
dayz_actionInProgress = true;
private ["_total", "_full", "_remain", "_amount"];
_total = 0;
{
if (configName inheritsFrom (configfile >> "CfgWeapons" >> _x) == "ItemMatchbox") then {
_amount = getNumber(configFile >> "CfgWeapons" >> _x >> "matches");
if(_amount > 0) then {
_total = _total + _amount;
player removeWeapon _x;
};
};
} count (weapons player);
_full = floor(_total / 5);
_remain = _total % 5;
for "_i" from 1 to _full do
{
if ("Item5Matchbox" in weapons player) then {
"Item5Matchbox" call player_addDuplicateTool;
} else {
player addWeapon "Item5Matchbox";
};
};
if(_remain > 0 ) then {
player addWeapon "Item"+ str(_remain)+"Matchbox";
};
dayz_actionInProgress = false;

View File

@@ -23,11 +23,11 @@ class ItemActions
};
};
*/
private ["_tradeComplete","_onLadder","_canDo","_selectedRecipeOutput","_boiled","_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_itemOut","_countOut","_finished","_removed","_tobe_removed_total","_textCreate","_textMissing","_selectedRecipeInput","_selectedRecipeInputStrict","_num_removed","_removed_total","_temp_removed_array","_abort","_waterLevel","_waterLevel_lowest","_reason","_isNear","_selectedRecipeTools","_distance","_crafting","_needNear","_item","_baseClass","_num_removed_weapons","_outputWeapons","_inputWeapons","_randomOutput","_craft_doLoop","_selectedWeapon","_selectedMag","_sfx"];
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
dayz_actionInProgress = true;
private ["_tradeComplete","_onLadder","_canDo","_selectedRecipeOutput","_boiled","_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_itemOut","_countOut","_finished","_removed","_tobe_removed_total","_textCreate","_textMissing","_selectedRecipeInput","_selectedRecipeInputStrict","_num_removed","_removed_total","_temp_removed_array","_abort","_waterLevel","_waterLevel_lowest","_reason","_isNear","_selectedRecipeTools","_distance","_crafting","_needNear","_item","_baseClass","_num_removed_weapons","_outputWeapons","_inputWeapons","_randomOutput","_craft_doLoop","_selectedWeapon","_selectedMag","_sfx","_configParent","_pPos"];
// This is used to find correct recipe based what itemaction was click allows multiple recipes per item.
_crafting = _this select 0;
@@ -53,14 +53,14 @@ if ("fire" in _needNear) then {
_isNear = {inflamed _x} count (_pPos nearObjects _distance);
if(_isNear == 0) then {
_abort = true;
_reason = "fire";
_reason = localize "STR_EPOCH_FIRE";
};
};
if ("workshop" in _needNear) then {
_isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]);
if(_isNear == 0) then {
_abort = true;
_reason = "workshop";
_reason = localize "STR_EPOCH_WORKBENCH_NEARBY";
};
};
if (_abort) exitWith {
@@ -102,10 +102,8 @@ if (_canDo) then {
_itemIn = _x select 0;
_countIn = _x select 1;
_qty = { (_x == _itemIn) || (!_selectedRecipeInputStrict && configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player;
_qty = { (_x == _itemIn) || (!_selectedRecipeInputStrict && configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn)} count magazines player;
if (_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; };
} forEach _selectedRecipeInput;
};
@@ -127,7 +125,7 @@ if (_canDo) then {
_removed = 0;
_itemIn = _x select 0;
_countIn = _x select 1;
// diag_log format["Recipe Finish: %1 %2", _itemIn,_countIn];
//diag_log format["Recipe Finish: %1 %2", _itemIn,_countIn];
_tobe_removed_total = _tobe_removed_total + _countIn;
// Preselect the item
@@ -135,7 +133,7 @@ if (_canDo) then {
_configParent = configName(inheritsFrom(configFile >> "cfgMagazines" >> _x));
if ((_x == _itemIn) || (!_selectedRecipeInputStrict && _configParent == _itemIn)) then {
// Get lowest waterlevel
if ((_x == "ItemWaterbottle") ||( _configParent == "ItemWaterbottle")) then {
if ((_x == "ItemWaterbottle") || (_configParent == "ItemWaterbottle")) then {
_waterLevel = getNumber(configFile >> "CfgMagazines" >> _x >> "wateroz");
if (_waterLevel_lowest == 0 || _waterLevel < _waterLevel_lowest) then {
_waterLevel_lowest = _waterLevel;
@@ -157,9 +155,9 @@ if (_canDo) then {
_removed_total = _removed_total + _num_removed;
if (_num_removed >= 1) then {
//diag_log format["debug remove: %1 of: %2", _configParent, _x];
if (_x == "ItemWaterbottle" || _configParent == "ItemWaterbottle") then {
if ((_x == "ItemWaterbottle") || (_configParent == "ItemWaterbottle")) then {
_waterLevel = floor((getNumber(configFile >> "CfgMagazines" >> _x >> "wateroz")) - 1);
if (_x in ["ItemWaterbottle9ozBoiled","ItemWaterbottle8ozBoiled","ItemWaterbottle7ozBoiled","ItemWaterbottle6ozBoiled","ItemWaterbottle5ozBoiled","ItemWaterbottle4ozBoiled","ItemWaterbottle3ozBoiled","ItemWaterbottle2ozBoiled","ItemWaterBottleBoiled"]) then {
if (_x in ["ItemWaterbottle9ozBoiled","ItemWaterbottle8ozBoiled","ItemWaterbottle7ozBoiled","ItemWaterbottle6ozBoiled","ItemWaterbottle5ozBoiled","ItemWaterbottle4ozBoiled","ItemWaterbottle3ozBoiled","ItemWaterbottle2ozBoiled","ItemWaterBottleBoiled","ItemPlasticWaterbottle9ozBoiled","ItemPlasticWaterbottle8ozBoiled","ItemPlasticWaterbottle7ozBoiled","ItemPlasticWaterbottle6ozBoiled","ItemPlasticWaterbottle5ozBoiled","ItemPlasticWaterbottle4ozBoiled","ItemPlasticWaterbottle3ozBoiled","ItemPlasticWaterbottle2ozBoiled","ItemPlasticWaterBottleBoiled"]) then {
_boiled = true;
};
};
@@ -202,14 +200,28 @@ if (_canDo) then {
_itemOut = _x select 0;
_countOut = _x select 1;
if (_itemOut == "ItemWaterbottleUnfilled") then {
if (_waterLevel > 0) then {
if (_boiled) then {
_itemOut = format["ItemWaterbottle%1ozBoiled",_waterLevel];
{
if (_x in ["ItemPlasticWaterbottle","ItemPlasticWaterbottleInfected","ItemPlasticWaterbottleSafe","ItemPlasticWaterBottleBoiled","ItemPlasticWaterbottle1oz","ItemPlasticWaterbottle2oz","ItemPlasticWaterbottle3oz","ItemPlasticWaterbottle4oz","ItemPlasticWaterbottle5oz","ItemPlasticWaterbottle6oz","ItemPlasticWaterbottle7oz","ItemPlasticWaterbottle8oz","ItemPlasticWaterbottle9oz","ItemPlasticWaterbottle1ozBoiled","ItemPlasticWaterbottle2ozBoiled","ItemPlasticWaterbottle3ozBoiled","ItemPlasticWaterbottle4ozBoiled","ItemPlasticWaterbottle5ozBoiled","ItemPlasticWaterbottle6ozBoiled","ItemPlasticWaterbottle7ozBoiled","ItemPlasticWaterbottle8ozBoiled","ItemPlasticWaterbottle9ozBoiled"]) then {
_itemOut = "ItemPlasticWaterbottleUnfilled";
if (_waterLevel > 0) then {
if (_boiled) then {
_itemOut = format["ItemPlasticWaterbottle%1ozBoiled",_waterLevel];
} else {
_itemOut = format["ItemPlasticWaterbottle%1oz",_waterLevel];
};
};
} else {
_itemOut = format["ItemWaterbottle%1oz",_waterLevel];
if (_waterLevel > 0) then {
if (_boiled) then {
_itemOut = format["ItemWaterbottle%1ozBoiled",_waterLevel];
} else {
_itemOut = format["ItemWaterbottle%1oz",_waterLevel];
};
};
};
};
} foreach _temp_removed_array;
};
// diag_log format["Checking for water level: %1", _waterLevel];
for "_x" from 1 to _countOut do {
player addMagazine _itemOut;

View File

@@ -1,3 +1,6 @@
if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; };
dayz_actionInProgress = true;
private ["_emptycan","_objectID","_objectUID","_obj","_fuelArray","_matchArray","_randomJerryCan","_fireIntensity","_dis","_sfx","_finished"];
//Tent Object
@@ -24,11 +27,8 @@ _matchArray = [];
} count DayZ_fuelCans;
//Make sure we have both components to create the fire.
if ((count _fuelArray == 0)) exitwith { systemChat (localize ("str_setFireFuel")); };
if ((count _matchArray == 0)) exitwith { systemChat (localize ("str_setFireMatches")); };
if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; };
dayz_actionInProgress = true;
if ((count _fuelArray == 0)) exitwith { dayz_actionInProgress = false; systemChat (localize ("str_setFireFuel")); };
if ((count _matchArray == 0)) exitwith { dayz_actionInProgress = false; systemChat (localize ("str_setFireMatches")); };
//Actionmenu tools
player removeAction s_player_destroytent;
@@ -46,10 +46,9 @@ if (!_finished or (isNull _obj)) exitWith {
//Jerry can system ** Needs redoing
//Select random can from array
_randomJerryCan = _fuelArray call BIS_fnc_selectRandom;
_randomJerryCan = _fuelArray call BIS_fnc_selectRandom;
_name = getText (configFile >> "CfgMagazines" >> _randomJerryCan >> "displayName");
_emptycan = getText (configFile >> "CfgMagazines" >> _randomJerryCan >> "emptycan");
_emptycan = getText (configFile >> "CfgMagazines" >> _randomJerryCan >> "containerEmpty");
_fireIntensity = getNumber (configFile >> "CfgMagazines" >> _randomJerryCan >> "fireIntensity");
if !(_randomJerryCan in magazines player) exitWith {
@@ -81,4 +80,4 @@ _obj inflame true;
//_obj spawn player_fireMonitor;
localize "str_success_tent_destroyed" call dayz_rollingMessages;
dayz_actionInProgress = false;
dayz_actionInProgress = false;

View File

@@ -1,30 +0,0 @@
private ["_bottle","_tape","_fixedBottle","_finished"];
_bottle = _this;
_tape = "equip_duct_tape";
_fixedBottle = "ItemWaterBottleUnfilled";
if (dayz_actionInProgress) exitWith { localize "str_player_actionslimit" call dayz_rollingMessages; };
dayz_actionInProgress = true;
call gear_ui_init;
closeDialog 0;
// Check if the player has the tape
if (_tape in magazines player) then {
[player,"bandage",0,false] call dayz_zombieSpeak;
_finished = ["Medic",1] call fn_loopAction;
if (!_finished) exitWith {};
// Check again to make sure player didn't drop item
if (_tape in magazines player) then {
player removeMagazine _bottle;
player removeMagazine _tape;
player addMagazine _fixedBottle;
localize "str_fix_water_bottle" call dayz_rollingMessages;
};
} else { //If the player doesn't have the tape
localize "str_fix_water_bottle_fail" call dayz_rollingMessages;
};
dayz_actionInProgress = false;

View File

@@ -1,4 +1,4 @@
private ["_nearPlayers","_object"];
private ["_nearPlayers","_object","_pos"];
_object = _this select 3;
_nearPlayers = {(isPlayer _x && _x != player)} count (player nearEntities ["CAManBase",8]);
@@ -11,10 +11,12 @@ if (!(_object isKindOf "ATV_Base_EP1") && _nearPlayers < 1) exitWith {
player playMove "amovpknlmstpslowwrfldnon_amovpercmstpsraswrfldnon";
waitUntil { animationState player != "amovpknlmstpslowwrfldnon_amovpercmstpsraswrfldnon"};
_pos = getposATL _object;
_object setVectorUp [0,0,1];
_object setposATL _pos;
// Alert Zombies
[player,20,true,(getPosATL player)] call player_alertZombies;
// Added Nutrition-Factor for work
["Working",0,[20,40,15,0]] call dayz_NutritionSystem;
["Working",0,[20,40,15,0]] call dayz_NutritionSystem;

View File

@@ -1,10 +1,13 @@
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
dayz_actionInProgress = true;
private ["_item","_use","_repair","_waterUsed","_displayName"];
//['ItemKnifeBlunt','ItemKnife']
_item = _this select 0; //Item to be sharpened
_repair = _this select 1; //Item to be given back.
_use = ["ItemWaterBottle","ItemWaterBottleInfected","ItemWaterBottleSafe","ItemWaterBottleBoiled","ItemWaterBottleHerbal","ItemCanteen","ItemCanteenInfected","ItemCanteenSafe","ItemCanteenBoiled","ItemCanteenHerbal"];
_use = ["ItemWaterBottle","ItemWaterBottleInfected","ItemWaterBottleSafe","ItemWaterBottleBoiled","ItemWaterBottleHerbal","ItemPlasticWaterBottle","ItemPlasticWaterBottleInfected","ItemPlasticWaterBottleSafe","ItemPlasticWaterBottleBoiled","ItemPlasticWaterBottleHerbal"];
_waterUsed = nil;
call gear_ui_init;
@@ -18,20 +21,22 @@ closeDialog 1;
if (isNil "_waterUsed") exitWith {
//_displayName = getText (configFile >> "CfgMagazines" >> _use >> "displayName");
localize "str_sharpen_missing_water" call dayz_rollingMessages;
dayz_actionInProgress = false;
};
// item is missing or tools are missing
if !("equip_brick" IN magazines player) exitWith {
_displayName = getText (configFile >> "CfgMagazines" >> "equip_brick" >> "displayName");
format [localize "str_missing_to_do_this",_displayName] call dayz_rollingMessages;
dayz_actionInProgress = false;
};
if (player hasWeapon _item) then {
_displayName = getText (configFile >> "CfgWeapons" >> _item >> "displayName");
player removeMagazine _waterUsed;
player removeWeapon _item;
if !(player hasWeapon _repair) then {
player addWeapon _repair;
} else {
@@ -39,11 +44,13 @@ if (player hasWeapon _item) then {
[_repair,2,1] call fn_dropItem;
format[localize "str_actions_noroom",_repair] call dayz_rollingMessages;
};
player addMagazine (getText(configFile >> "CfgMagazines" >> _waterUsed >> "containerEmpty"));
//Remove Later
player removeMagazine "equip_brick";
format [localize "str_sharpen_success",_displayName] call dayz_rollingMessages;
};
};
dayz_actionInProgress = false;

View File

@@ -27,6 +27,7 @@ dz_fn_switchWeapon =
if (vehicle player != player) exitWith {};
if Player_IsOnLadder() exitWith {};
if (dayz_autoRun) then {call dayz_autoRunOff;};
if (dayz_isSwimming) exitWith {};
private ["_current","_primary","_secondary","_swapWeapons"];
@@ -289,4 +290,4 @@ dz_fn_switchWeapon_animDone =
if (IS_MELEE(primaryWeapon player)) then
{ call dayz_meleeMagazineCheck; };
#endif
};
};

View File

@@ -1,81 +1,55 @@
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
dayz_actionInProgress = true;
private ["_vehicle","_canSize","_configVeh","_capacity","_nameType","_curFuel","_newFuel","_dis","_sfx","_fueling","_array","_cantype",
"_emptycan","_started","_finished","_animState","_isRefuel","_type"];
private ["_vehicle","_canSize","_configVeh","_capacity","_nameType","_curFuel","_newFuel","_dis","_sfx","_array","_cantype",
"_emptycan","_finished","_type"];
_array = _this select 3;
_cantype = _array select 0;
_vehicle = _array select 1;
_type = typeOf _vehicle;
_canSize = getNumber(configFile >> "cfgMagazines" >> _cantype >> "fuelQuantity");
_emptycan = getText(configFile >> "cfgMagazines" >> _cantype >> "emptycan");
_emptycan = getText(configFile >> "cfgMagazines" >> _cantype >> "containerEmpty");
_configVeh = configFile >> "cfgVehicles" >> _type;
_capacity = getNumber(_configVeh >> "fuelCapacity");
_nameType = getText(_configVeh >> "displayName");
_curFuel = ((fuel _vehicle) * _capacity);
_newFuel = (_curFuel + _canSize);
_fueling = player getVariable ["fueling",false];
if (fuel _vehicle == 1 || !(_canType in magazines player)) exitWith {dayz_actionInProgress = false;};
if (fuel _vehicle == 1 || {!(_canType in magazines player)}) exitWith {dayz_actionInProgress = false;};
player removeAction s_player_fillfuel + _capacity;
player setVariable ["fueling", true];
if (!_fueling) then {
[player] allowGetIn false;
_dis=5;
_sfx = "refuel";
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
[player,_dis,true,(getPosATL player)] call player_alertZombies;
_finished = ["Medic",1] call fn_loopAction;
if (_finished) then {
if (_newFuel > _capacity) then {_newFuel = _capacity};
_newFuel = (_newFuel / _capacity);
player removeMagazine _cantype;
player addMagazine _emptycan;
player playActionNow "Medic";
_dis=5;
_sfx = "refuel";
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
[player,_dis,true,(getPosATL player)] call player_alertZombies;
// Added Nutrition-Factor for work
["Working",0,[0,1,3,0]] call dayz_NutritionSystem;
r_doLoop = true;
_started = false;
_finished = false;
while {r_doLoop} do {
_animState = animationState player;
_isRefuel = ["medic",_animState] call fnc_inString;
if (_isRefuel or dayz_isSwimming) then {
_started = true;
};
if (_started and !_isRefuel) then {
r_doLoop = false;
_finished = true;
};
uiSleep 0.1;
if ((_type == "Generator_DZ") && {!(_vehicle getVariable ["GeneratorFilled", false])}) then {
_vehicle setVariable ["GeneratorFilled", true, true];
};
r_doLoop = false;
if (_finished) then {
if ((_type == "Generator_DZ") && {!(_vehicle getVariable ["GeneratorFilled", false])}) then {
_vehicle setVariable ["GeneratorFilled", true, true];
};
if (local _vehicle) then {
[_vehicle,_newFuel] call local_setFuel;
} else {
PVDZ_send = [_vehicle,"SetFuel",[_vehicle,_newFuel]];
publicVariableServer "PVDZ_send";
};
format[localize "str_player_05",_nameType,_canSize] call dayz_rollingMessages;
uiSleep 1;
call fnc_usec_medic_removeActions;
if (local _vehicle) then {
[_vehicle,_newFuel] call local_setFuel;
} else {
PVDZ_send = [_vehicle,"SetFuel",[_vehicle,_newFuel]];
publicVariableServer "PVDZ_send";
};
[player] allowGetIn true;
format[localize "str_player_05",_nameType,_canSize] call dayz_rollingMessages;
uiSleep 1;
call fnc_usec_medic_removeActions;
} else {
localize "str_refuel_fail" call dayz_rollingMessages;
localize "str_epoch_player_26" call dayz_rollingMessages;
};
r_action = false;
player setVariable ["fueling", false];
dayz_actionInProgress = false;

View File

@@ -4,7 +4,7 @@ dayz_actionInProgress = true;
delete object from db with extra waiting by [VB]AWOL
parameters: _obj
*/
private ["_obj","_objectID","_objectUID","_finished","_isOk","_proceed","_counter","_limit","_objType","_itemOut","_countOut","_selectedRemoveOutput","_nearestPole","_ownerID","_refundpart","_isWreck","_IsNearPlot","_brokenTool","_removeTool","_isDestructable","_isRemovable","_objOwnerID","_isOwnerOfObj","_preventRefund","_ipos","_item","_radius","_isWreckBuilding","_nameVehicle","_isModular","_success","_lootGroupIndex","_output"];
private ["_plotcheck","_PlayerNear","_isMine","_obj","_objectID","_objectUID","_finished","_isOk","_proceed","_counter","_limit","_objType","_itemOut","_countOut","_selectedRemoveOutput","_nearestPole","_refundpart","_isWreck","_IsNearPlot","_brokenTool","_removeTool","_isDestructable","_isRemovable","_objOwnerID","_isOwnerOfObj","_preventRefund","_ipos","_item","_isWreckBuilding","_nameVehicle","_isModular","_success","_lootGroupIndex","_output"];
player removeAction s_player_deleteBuild;
s_player_deleteBuild = 1;
@@ -38,7 +38,6 @@ _isRemovable = _objType in DZE_isRemovable;
_isWreckBuilding = _objType in DZE_isWreckBuilding;
_isMine = _objType in ["Land_iron_vein_wreck","Land_silver_vein_wreck","Land_gold_vein_wreck"];
_isModular = _obj isKindOf "ModularItems";
_distance = DZE_PlotPole select 0;
_PlayerNear = {isPlayer _x} count (([_obj] call FNC_GetPos) nearEntities ["CAManBase", 10]) > 1;
if (_PlayerNear && (_isMine or _objType == "Land_ammo_supply_wreck")) exitWith {dayz_actionInProgress = false; localize "str_pickup_limit_5" call dayz_rollingMessages;};
@@ -58,6 +57,8 @@ _IsNearPlot = _plotcheck select 1;
_nearestPole = _plotcheck select 2;
if(_IsNearPlot >= 1) then {
private ["_buildcheck","_isowner","_isfriendly"];
// Since there are plot poles nearby we need to check ownership && friend status
_buildcheck = [player, _nearestPole] call FNC_check_access;
_isowner = _buildcheck select 0;
@@ -89,7 +90,7 @@ while {_isOk} do {
_isOk = false;
_proceed = false;
};
format[localize "str_epoch_player_163",_nameVehicle,(_counter + 1),_limit] call dayz_rollingMessages;
[player,"repair",0,false,20] call dayz_zombieSpeak;
@@ -150,7 +151,7 @@ if (_proceed && _success) then {
// Double check that object is not null
if(!isNull(_obj)) then {
_ipos = getPosATL _obj;
if(!_isWreck && !_isWreckBuilding) then {
//Server performs deleteVehicle
PVDZ_obj_Destroy = [_objectID,_objectUID,player,_obj,dayz_authKey];
@@ -158,7 +159,7 @@ if (_proceed && _success) then {
} else {
deleteVehicle _obj;
};
if (_isWreckBuilding) then {
PVDZ_send = [player,"RemoveObject",_ipos];
publicVariableServer "PVDZ_send";
@@ -194,10 +195,10 @@ if (_proceed && _success) then {
if ({_objType in _x} count DZE_modularConfig > 0) then {
{
private ["_class", "_refund"];
_class = _x select 0;
_refund = _x select 1;
if (_objType == _class) then {
{_selectedRemoveOutput set [count _selectedRemoveOutput,_x];} forEach _refund;
};
@@ -214,14 +215,10 @@ if (_proceed && _success) then {
[localize "str_epoch_player_90",1] call dayz_rollingMessages;
};
if (_ipos select 2 < 0) then {
_ipos set [2,0];
};
_radius = 1;
if (_isMine) then {
if((random 10) <= 4) then {
private ["_gems","_weights","_gemSelected"];
_gems = [];
_weights = [];
{
@@ -235,7 +232,16 @@ if (_proceed && _success) then {
// give refund items
if((count _selectedRemoveOutput) > 0 && !_preventRefund) then {
_item = createVehicle ["WeaponHolder", _iPos, [], _radius, "CAN_COLLIDE"];
private "_posPlayer";
_posPlayer = getPosATL player;
_iPos set [2,_posPlayer select 2];
if (_iPos select 2 < 0) then {
_iPos set [2,0];
};
_item = "WeaponHolder" createVehicle [0,0,0];
{
_itemOut = _x select 0;
_countOut = _x select 1;
@@ -254,7 +260,6 @@ if (_proceed && _success) then {
} count _selectedRemoveOutput;
_item setposATL _iPos;
player reveal _item;
DZE_GearCheckBypass = true; //Bypass gear menu checks since dialog will always open on item
player action ["Gear", _item];
@@ -265,4 +270,4 @@ if (_proceed && _success) then {
};
dayz_actionInProgress = false;
s_player_deleteBuild = -1;
s_player_deleteBuild = -1;

View File

@@ -34,7 +34,7 @@ if (_hasToolbox) then {
_hits = [_vehicle,_hitpoint] call object_getHit;
_damage = _hits select 0;
if (_damage < 1 && {_damage > 0}) then { //Tempfix for issue where certain hitpoints on some vehicles do not get damaged and allow infinite removal
_BreakableParts = ["HitGlass1","HitGlass2","HitGlass3","HitGlass4","HitGlass5","HitGlass6","HitLGlass","HitRGlass","HitEngine","HitFuel","HitHRotor"];
_BreakableParts = ["HitLFWheel","HitRFWheel","HitLBWheel","HitRBWheel","HitLF2Wheel","HitRF2Wheel","HitLMWheel","HitRMWheel","HitLFWheel","HitRFWheel","HitLBWheel","HitRBWheel","HitLF2Wheel","HitRF2Wheel","HitLMWheel","HitRMWheel","HitGlass1","HitGlass2","HitGlass3","HitGlass4","HitGlass5","HitGlass6","HitLGlass","HitRGlass","HitEngine","HitFuel","HitHRotor"];
if (_hitpoint in _BreakableParts) then {
if ((random 1) < (_damage * 0.9)) then { //max 90% chance to break
_isOK = true;

View File

@@ -13,26 +13,30 @@ _weapons = weapons player;
{
_weapon = _x;
_hastoolweapon = _x in _weapons;
if (_x == "ItemKnife") then {
{if (_x in Dayz_Gutting) exitWith {_hastoolweapon = true};} forEach _items;
{if (_x in Dayz_Gutting) exitWith {_hastoolweapon = true};} count _items;
};
if (_x == "ItemMatchbox") then {
{if (_x in DayZ_Ignitors) exitWith {_hastoolweapon = true};} forEach _items;
{if (_x in DayZ_Ignitors) exitWith {_hastoolweapon = true};} count _items;
};
if (_x == "ChainSaw") then {
{if (_x in ["ChainSaw","ChainSawB","ChainSawG","ChainSawG","ChainSawR"]) exitWith {_hastoolweapon = true};} count _weapons;
};
{
_melee = format ["Melee%1",_x];
if (_weapon == format["Item%1",_x] && {(_melee in _weapons) or (dayz_onBack == _melee)}) then {
if (_weapon == format["Item%1",_x] && {(_melee in _weapons) || {dayz_onBack == _melee}}) then {
_hastoolweapon = true;
};
} forEach ["Crowbar","Hatchet","Sledge"];
} count ["Crowbar","Hatchet","Sledge"];
if (!_hastoolweapon) then {
_missingText = getText (configFile >> "cfgWeapons" >> _x >> "displayName");
_missing set [count _missing, _missingText];
_hasrequireditem = false;
};
} forEach _require;
} count _require;
_missingText = "";
{
@@ -48,8 +52,8 @@ _missingText = "";
} forEach _missing;
_hasbuilditem = _item in magazines player;
if (!_hasbuilditem && _text != "") exitWith {dayz_actionInProgress = false; format[localize "str_player_31",_text,"build"] call dayz_rollingMessages; false;};
if (!_hasbuilditem && {_text != ""}) exitWith {dayz_actionInProgress = false; format[localize "str_player_31",_text,"build"] call dayz_rollingMessages; false;};
if (!_hasrequireditem) exitWith {dayz_actionInProgress = false; format[localize "str_epoch_player_137",_missingText] call dayz_rollingMessages; false;};
//When calling this function in another script use a silent exitWith, unless you have something special to say. i.e. if (!_hasrequireditem) exitWith{};
_hasrequireditem;
_hasrequireditem;

View File

@@ -8,7 +8,7 @@ scriptName "Functions\misc\fn_damageActions.sqf";
- [] call fnc_usec_damageActions;
************************************************************/
private ["_menClose","_hasPatient","_vehicle","_inVehicle","_isClose","_assignedRole","_driver","_action","_turret","_weapons","_weaponName","_crew","_unconscious_crew","_patients","_vehType","_unit","_antibiotics","_bloodBags","_unconscious","_lowBlood","_injured","_hasSepsis","_inPain","_legsBroke","_armsBroke","_infected","_hasBandage","_hasSepsisBandage","_hasEpi","_hasMorphine","_hasSplint","_hasPainkillers","_hasEmptyBag","_hasTester","_hasAntibiotics","_hasBloodBag","_vehClose","_action1","_action2","_action3","_playerMagazines","_isFriendly"];
private ["_menClose","_hasPatient","_vehicle","_inVehicle","_isClose","_assignedRole","_driver","_action","_turret","_weapons","_weaponName","_crew","_unconscious_crew","_patients","_vehType","_unit","_antibiotics","_bloodBags","_unconscious","_lowBlood","_injured","_hasSepsis","_inPain","_legsBroke","_armsBroke","_infected","_hasBandage","_hasSepsisBandage","_hasEpi","_hasMorphine","_hasSplint","_hasPainkillers","_hasAntibiotics","_hasBloodBag","_vehClose","_action1","_action2","_action3","_playerMagazines","_isFriendly"];
_menClose = cursorTarget;
_hasPatient = alive _menClose;
@@ -29,9 +29,9 @@ if (_inVehicle) then {
};
if (!r_player_unconscious && !r_action2) then {
r_player_lastSeat = _assignedRole;
if (_vehicle isKindOf "helicopter" || (_inVehicle && ({(isPlayer _x) && (alive _x)} count (crew _vehicle) > 1))) then {
if (_vehicle isKindOf "helicopter" || {_inVehicle && {{(isPlayer _x) && (alive _x)} count (crew _vehicle) > 1}}) then {
//allow switch to pilot
if (((_assignedRole select 0) != "driver") && ((!alive _driver) or ((_vehicle emptyPositions "Driver") > 0))) then {
if (((_assignedRole select 0) != "driver") && {(!alive _driver) || {(_vehicle emptyPositions "Driver") > 0}}) then {
if (_vehicle isKindOf "helicopter") then {
_action = _vehicle addAction [localize "str_actions_helipilotseat", "\z\addons\dayz_code\actions\veh_seatActions.sqf",["MoveToPilot",_driver], 0, false, true];
} else {
@@ -41,25 +41,25 @@ if (_inVehicle) then {
r_action2 = true;
};
//allow switch to cargo
if (((_assignedRole select 0) != "cargo") && ((_vehicle emptyPositions "Cargo") > 0)) then {
if (((_assignedRole select 0) != "cargo") && {(_vehicle emptyPositions "Cargo") > 0}) then {
_action = _vehicle addAction [localize "str_actions_helibackseat", "\z\addons\dayz_code\actions\veh_seatActions.sqf",["MoveToCargo",_driver], 0, false, true];
r_player_actions2 set [count r_player_actions2,_action];
r_action2 = true;
};
//allow switch to gunner
if (((_assignedRole select 0) != "Turret") && ((_vehicle emptyPositions "Gunner") > 0)) then {
if (((_assignedRole select 0) != "Turret") && {(_vehicle emptyPositions "Gunner") > 0}) then {
_action = _vehicle addAction [localize "str_actions_heligunnerseat", "\z\addons\dayz_code\actions\veh_seatActions.sqf",["MoveToTurret",_driver], 0, false, true];
r_player_actions2 set [count r_player_actions2,_action];
r_action2 = true;
};
//allow switch to commander
if (((assignedCommander _vehicle) != player) && ((_vehicle emptyPositions "Commander") > 0)) then {
if (((assignedCommander _vehicle) != player) && {(_vehicle emptyPositions "Commander") > 0}) then {
_action = _vehicle addAction[localize "STR_EPOCH_PLAYER_311", "\z\addons\dayz_code\actions\veh_seatActions.sqf", ["MoveToTurret", _driver], 0, false, true];
r_player_actions2 set [count r_player_actions2,_action];
r_action2 = true;
};
};
if ((count _assignedRole) > 1 || ((_assignedRole select 0) == "driver")) then {
if ((count _assignedRole) > 1 || {(_assignedRole select 0) == "driver"}) then {
_turret = [-1];
if ((count _assignedRole) > 1) then {
_turret = _assignedRole select 1;
@@ -113,14 +113,14 @@ if (r_player_unconscious) then {
//Lets make sure the player is looking at the target
if (isPlayer cursorTarget) then {
if (!r_drag_sqf && !r_action && !_inVehicle && !r_player_unconscious && (player distance _menClose < 3)) then {
if (!r_drag_sqf && {!r_action} && {!_inVehicle} && {!r_player_unconscious} && {player distance _menClose < 3}) then {
_unit = cursorTarget;
player reveal _unit;
//Arrays
_antibiotics =["ItemAntibiotic","ItemAntibiotic1","ItemAntibiotic2","ItemAntibiotic3","ItemAntibiotic4","ItemAntibiotic5","ItemAntibiotic6"];
_bloodBags = ["ItemBloodbag","bloodBagANEG","bloodBagAPOS","bloodBagBNEG","bloodBagBPOS","bloodBagABNEG","bloodBagABPOS","bloodBagONEG","bloodBagOPOS"];
//Var checks
_unconscious = _unit getVariable ["NORRN_unconscious", false];
_lowBlood = _unit getVariable ["USEC_lowBlood", false];
@@ -130,7 +130,7 @@ if (isPlayer cursorTarget) then {
_legsBroke = _unit getVariable ["hit_legs", 0] >= 1;
_armsBroke = _unit getVariable ["hit_hands", 0] >= 1;
_infected = _unit getVariable ["USEC_infected", false];
//Magazine checks
_playerMagazines = magazines player;
_hasBandage = "ItemBandage" in _playerMagazines;
@@ -139,12 +139,9 @@ if (isPlayer cursorTarget) then {
_hasMorphine = "ItemMorphine" in _playerMagazines;
_hasSplint = "equip_woodensplint" in _playerMagazines;
_hasPainkillers = "ItemPainkiller" in _playerMagazines;
//_hasEmptyBag = "emptyBloodBag" in _playerMagazines;
//_hasTester = "bloodTester" in _playerMagazines;
_hasAntibiotics = Array_Any(_playerMagazines, {_this in _antibiotics});
_hasBloodBag = Array_Any(_playerMagazines, {_this in _bloodBags});
_vehClose = (getPosATL player) nearEntities [["Car","Tank","Helicopter","Plane","StaticWeapon","Ship"],5];
if (_hasPatient) then {
@@ -168,49 +165,49 @@ if (isPlayer cursorTarget) then {
r_player_actions set [count r_player_actions,NORRN_loadWoundedAction];
};
//Allow player to bandage
if(_injured && _hasBandage) then {
if(_injured && {_hasBandage}) then {
r_action = true;
_action = _unit addAction [localize "str_actions_medical_04", "\z\addons\dayz_code\medical\bandage.sqf",[_unit,"ItemBandage"], 0, true, true, "", "'ItemBandage' in magazines player"];
r_player_actions set [count r_player_actions,_action];
};
//Sepsis
if(_hasSepsis && _hasSepsisBandage) then {
if(_hasSepsis && {_hasSepsisBandage}) then {
r_action = true;
_action = _unit addAction [localize "str_actions_medical_04", "\z\addons\dayz_code\medical\bandage.sqf",[_unit,"ItemSepsisBandage"], 0, true, true, "", "'ItemBandage' in magazines player"];
r_player_actions set [count r_player_actions,_action];
};
//Allow player to give Epinephrine
if(_unconscious && _hasEpi) then {
if(_unconscious && {_hasEpi}) then {
r_action = true;
_action = _unit addAction [localize "str_actions_medical_05", "\z\addons\dayz_code\medical\epinephrine.sqf",[_unit], 0, true, true];
r_player_actions set [count r_player_actions,_action];
};
//Allow player to give Morphine
if((_legsBroke or _armsBroke) && _hasMorphine) then {
if((_legsBroke || {_armsBroke}) && {_hasMorphine}) then {
r_action = true;
_action = _unit addAction [localize "str_actions_medical_06", "\z\addons\dayz_code\medical\brokeBones.sqf",[_unit,"ItemMorphine"], 0, true, true, "", "'ItemMorphine' in magazines player"];
r_player_actions set [count r_player_actions,_action];
};
//Allow player to give equip_woodensplint
if((_legsBroke or _armsBroke) && _hasSplint) then {
if((_legsBroke || {_armsBroke}) && {_hasSplint}) then {
r_action = true;
_action = _unit addAction [localize "str_actions_medical_06_splint", "\z\addons\dayz_code\medical\brokeBones.sqf",[_unit,"equip_woodensplint"], 0, true, true, "", "'equip_woodensplint' in magazines player"];
r_player_actions set [count r_player_actions,_action];
};
//Allow player to give Painkillers
if(_inPain && _hasPainkillers) then {
if(_inPain && {_hasPainkillers}) then {
r_action = true;
_action = _unit addAction [localize "str_actions_medical_07", "\z\addons\dayz_code\medical\painkiller.sqf",[_unit], 0, true, true, "", "'ItemPainkiller' in magazines player"];
r_player_actions set [count r_player_actions,_action];
};
//Allow player to transfuse blood
if(_lowBlood && _hasBloodBag) then {
if(_lowBlood && {_hasBloodBag}) then {
r_action = true;
_action = _unit addAction [localize "str_actions_medical_08", "\z\addons\dayz_code\medical\transfusion.sqf",[_unit], 0, true, true];
r_player_actions set [count r_player_actions,_action];
};
//Allow player to give antibiotics
if (_infected && _hasAntibiotics) then {
if (_infected && {_hasAntibiotics}) then {
r_action = true;
_action = _unit addAction [localize "str_actions_medical_give_antibiotics", "\z\addons\dayz_code\medical\antibiotics.sqf",[_unit], 0, true, true];
r_player_actions set [count r_player_actions, _action];
@@ -233,7 +230,7 @@ if (isPlayer cursorTarget) then {
};
//Remove Actions
if ((!_isClose or !_hasPatient) && r_action) then {
if ((!_isClose || {!_hasPatient}) && {r_action}) then {
call fnc_usec_medic_removeActions;
r_action = false;
};

View File

@@ -17,15 +17,18 @@ _nearByPile= nearestObjects [_pos, ["WeaponHolder","WeaponHolderBase"],PILE_SEAR
if (count _nearByPile == 0) then {
//No weapon holders found in the radius, spawn a new one
_holder = createVehicle ["WeaponHolder", _pos, [], 0, "CAN_COLLIDE"];
_holder = "WeaponHolder" createVehicle [0,0,0];
_holder setPosATL _pos;
} else {
//Found a near by weapon holder lets select it.
_holder = _nearByPile select 0;
if (!_manualPos) then {
private "_objects";
//check to make sure the player can see the selected weapon holder.
_objects = lineIntersectsWith [(_holder modeltoWorld PILE_OFFSET), _pos, player, _holder, true];
//Can you see the current selected weapon holder
if (count _objects > 0) then {
//Unable to see the current selected weapon holder within the radius lets create a new one.
@@ -42,4 +45,4 @@ switch _type do {
};
//Revel the item
player reveal _holder;
player reveal _holder;

View File

@@ -13,7 +13,7 @@ private ["_canPickLight","_text","_unlock","_lock","_totalKeys","_temp_keys","_t
"_isModular","_isModularDoor","_isHouse","_isGateOperational","_isGateLockable","_isFence","_isLockableGate","_isUnlocked","_isOpen","_isClosed","_ownerArray","_ownerBuildLock",
"_ownerPID","_speed","_dog","_vehicle","_inVehicle","_cursorTarget","_primaryWeapon","_currentWeapon","_magazinesPlayer","_onLadder","_canDo",
"_nearLight","_vehicleOwnerID","_hasHotwireKit","_isPZombie","_dogHandle","_allowedDistance","_id","_upgrade","_weaponsPlayer","_hasCrowbar",
"_allowed","_hasAccess","_uid","_myCharID","_isLocked","_isClose"];
"_allowed","_hasAccess","_uid","_myCharID","_isLocked","_isClose","_hasunboiledwater","_characterID","_text2"];
_vehicle = vehicle player;
_inVehicle = (_vehicle != player);
@@ -40,7 +40,7 @@ if (!isNull _nearLight) then {
};
//Grab Flare
if (_canPickLight && !dayz_hasLight && !_isPZombie) then {
if (_canPickLight && {!dayz_hasLight} && {!_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];
@@ -112,14 +112,14 @@ if (_canDo && !_inVehicle && !dayz_isSwimming && ((call fn_nearWaterHole) select
if (_inVehicle) then {
DZE_myVehicle = _vehicle;
if (_vehicleOwnerID != "0" && _canDo) then {
if ((_vehicleOwnerID != "0") && {_canDo}) then {
if (s_player_lockUnlockInside_ctrl < 0) then {
_totalKeys = call epoch_tempKeys;
_temp_keys = _totalKeys select 0;
_temp_keys_names = _totalKeys select 1;
_temp_keys_names = _totalKeys select 1;
_hasKey = _vehicleOwnerID in _temp_keys;
_oldOwner = (_vehicleOwnerID == _uid);
_text = getText (configFile >> "CfgVehicles" >> (typeOf DZE_myVehicle) >> "displayName");
if (locked DZE_myVehicle) then {
if (_hasKey || _oldOwner) then {
@@ -178,7 +178,7 @@ if (DZE_HaloJump) then {
};
if (DZE_NameTags > 0) then {
if (s_player_showname < 0 && !_isPZombie) then {
if (s_player_showname < 0 && {!_isPZombie}) then {
if (DZE_NameTags < 2) then {
s_player_showname = 1;
player setVariable["DZE_display_name",true,true];
@@ -199,11 +199,11 @@ if (_isPZombie) then {
if (s_player_pzombiesvision < 0) then {
s_player_pzombiesvision = player addAction [localize "STR_EPOCH_ACTIONS_NIGHTVIS", "\z\addons\dayz_code\actions\pzombie\pz_vision.sqf", [], 4, false, true, "nightVision", "_this == _target"];
};
if (!isNull _cursorTarget && _isClose) then {
if (!isNull _cursorTarget && {_isClose}) then {
_isZombie = _cursorTarget isKindOf "zZombie_base";
_isHarvested = _cursorTarget getVariable["meatHarvested",false];
_isMan = _cursorTarget isKindOf "Man"; //includes animals and zombies
if (!alive _cursorTarget && _isMan && !_isZombie && !_isHarvested) then {
if (!alive _cursorTarget && {_isMan} && {!_isZombie} && {!_isHarvested}) then {
if (s_player_pzombiesfeed < 0) then {
s_player_pzombiesfeed = player addAction [localize "STR_EPOCH_ACTIONS_FEED", "\z\addons\dayz_code\actions\pzombie\pz_feed.sqf",_cursorTarget, 3, true, false];
};
@@ -218,9 +218,9 @@ if (_isPZombie) then {
};
// Increase distance only if AIR or SHIP
_allowedDistance = if ((_cursorTarget isKindOf "Air") or (_cursorTarget isKindOf "Ship")) then {8} else {4};
_allowedDistance = [4, 8] select ((_cursorTarget isKindOf "Air") || (_cursorTarget isKindOf "Ship"));
if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cursorTarget < _allowedDistance) && _canDo) then {
if (!isNull _cursorTarget && {!_inVehicle} && {!_isPZombie} && {player distance _cursorTarget < _allowedDistance} && {_canDo}) then {
//Has some kind of target
_typeOfCursorTarget = typeOf _cursorTarget;
_isVehicle = _cursorTarget isKindOf "AllVehicles";
@@ -239,14 +239,13 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
_weaponsPlayer = weapons player;
_hasCrowbar = "ItemCrowbar" in _itemsPlayer or "MeleeCrowbar" in _weaponsPlayer or dayz_onBack == "MeleeCrowbar";
_hasToolbox = "ItemToolbox" in _itemsPlayer;
_hasbottleitem = (("ItemWaterBottle" in _magazinesPlayer) || {"ItemWaterBottleInfected" in _magazinesPlayer} || {"ItemWaterBottleSafe" in _magazinesPlayer} || {"ItemWaterBottleBoiled" in _magazinesPlayer});
_isAlive = alive _cursorTarget;
_text = getText (configFile >> "CfgVehicles" >> _typeOfCursorTarget >> "displayName");
_isPlant = _typeOfCursorTarget in Dayz_plants;
_istypeTent = (_cursorTarget isKindOf "TentStorage_base") or (_cursorTarget isKindOf "IC_Tent");
_upgradeItems = ["TentStorage","TentStorage0","TentStorage1","TentStorage2","TentStorage3","StashSmall","StashSmall1","StashSmall2","StashSmall3","StashSmall4","StashMedium","StashMedium1","StashMedium2","StashMedium3","DomeTentStorage","DomeTentStorage0","DomeTentStorage1","DomeTentStorage2","DomeTentStorage3","DesertTentStorage","DesertTentStorage0","DesertTentStorage1","DesertTentStorage2","DesertTentStorage3"];
_characterID = _cursorTarget getVariable ["CharacterID","0"];
if (DZE_permanentPlot) then {
_id = _uid;
_ownerID = _cursorTarget getVariable ["ownerPUID","0"];
@@ -255,13 +254,13 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
_ownerID = _characterID;
};
_isDisallowRefuel = _typeOfCursorTarget in ["M240Nest_DZ","MMT_Civ","MMT_USMC","Old_bike_TK_CIV_EP1","Old_bike_TK_INS_EP1"];
_isDisallowRefuel = _typeOfCursorTarget in ["M240Nest_DZ","MMT_Civ","MMT_USMC","Old_bike_TK_CIV_EP1","Old_bike_TK_INS_EP1"];
_isDog = (_cursorTarget isKindOf "Pastor" || _cursorTarget isKindOf "Fin");
_isModular = _cursorTarget isKindOf "ModularItems";
_isModularDoor = _typeOfCursorTarget in ["Land_DZE_WoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_GarageWoodDoor","CinderWallDoor_DZ","CinderWallDoorSmall_DZ"];
_player_deleteBuild = false;
_player_lockUnlock_crtl = false;
//fuel tanks
if (_hasEmptyFuelCan) then {
{
@@ -283,9 +282,9 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
player removeAction s_player_flipveh;
s_player_flipveh = -1;
};
//Allow player to fill Fuel can
if (_hasEmptyFuelCan && _isFuel && _isAlive) then {
if (_hasEmptyFuelCan && {_isFuel} && {_isAlive}) then {
if (s_player_fillfuel < 0) then {
s_player_fillfuel = player addAction [localize "str_actions_self_10", "\z\addons\dayz_code\actions\jerry_fill.sqf",_cursorTarget, 1, false, true];
};
@@ -293,7 +292,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
player removeAction s_player_fillfuel;
s_player_fillfuel = -1;
};
if (damage _cursorTarget < 1) then {
//Allow player to fill vehicle 210L
if (_hasBarrel && {!_isMan} && {_isVehicle} && {fuel _cursorTarget < 1} && {!_isDisallowRefuel}) then {
@@ -304,7 +303,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
player removeAction s_player_fillfuel210;
s_player_fillfuel210 = -1;
};
//Allow player to fill vehicle 20L
if (_hasFuel20 && {!_isMan} && {_isVehicle} && {fuel _cursorTarget < 1} && {!_isDisallowRefuel}) then {
if (s_player_fillfuel20 < 0) then {
@@ -348,22 +347,22 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
player removeAction s_player_siphonfuel;
s_player_siphonfuel = -1;
};
//Fireplace Actions check
if ((_cursorTarget call isInflamed) or (inflamed _cursorTarget)) then {
_hasRawMeat = {_x in Dayz_meatraw} count _magazinesPlayer > 0;
//_hastinitem = {_x in boil_tin_cans} count _magazinesPlayer > 0;
_hasunboiledwater = {_x in ["ItemWaterBottleInfected","ItemWaterBottle","ItemWaterBottleSafe","ItemWaterbottle1oz","ItemWaterbottle2oz","ItemWaterbottle3oz","ItemWaterbottle4oz","ItemWaterbottle5oz","ItemWaterbottle6oz","ItemWaterbottle7oz","ItemWaterbottle8oz","ItemWaterbottle9oz"]} count _magazinesPlayer > 0;
_hasunboiledwater = {_x in ["ItemWaterBottleInfected","ItemWaterBottle","ItemWaterBottleSafe","ItemWaterbottle1oz","ItemWaterbottle2oz","ItemWaterbottle3oz","ItemWaterbottle4oz","ItemWaterbottle5oz","ItemWaterbottle6oz","ItemWaterbottle7oz","ItemWaterbottle8oz","ItemWaterbottle9oz","ItemPlasticWaterBottle","ItemPlasticWaterBottleInfected","ItemPlasticWaterBottleSafe","ItemPlasticWaterbottle1oz","ItemPlasticWaterbottle2oz","ItemPlasticWaterbottle3oz","ItemPlasticWaterbottle4oz","ItemPlasticWaterbottle5oz","ItemPlasticWaterbottle6oz","ItemPlasticWaterbottle7oz","ItemPlasticWaterbottle8oz","ItemPlasticWaterbottle9oz"]} count _magazinesPlayer > 0;
//Cook Meat
if (_hasRawMeat && !a_player_cooking) then {
//Cook Meat
if (_hasRawMeat && {!a_player_cooking}) then {
if (s_player_cook < 0) then {
s_player_cook = player addAction [localize "str_actions_self_05", "\z\addons\dayz_code\actions\cook.sqf",_cursorTarget, 3, true, true];
};
};
};
//Boil Water
if (_hasunboiledwater && !a_player_boil) then {
if (_hasunboiledwater && {!a_player_boil}) then {
if (s_player_boil < 0) then {
s_player_boil = player addAction [localize "str_actions_boilwater", "\z\addons\dayz_code\actions\boil.sqf",_cursorTarget, 3, true, true];
};
@@ -378,32 +377,32 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
s_player_boil = -1;
};
};
if (_isAlive) then {
_restrict = _typeOfCursorTarget in DZE_restrictRemoval;
//Allow player to remove objects with no ownership or access required
if (!_restrict && (_isDestructable || _typeOfCursorTarget in DZE_isWreck || _typeOfCursorTarget in DZE_isWreckBuilding || _typeOfCursorTarget in DZE_isRemovable)) then {
if (_hasToolbox && _hasCrowbar) then {
if (!_restrict && {_isDestructable || {_typeOfCursorTarget in DZE_isWreck} || {_typeOfCursorTarget in DZE_isWreckBuilding} || {_typeOfCursorTarget in DZE_isRemovable}}) then {
if (_hasToolbox && {_hasCrowbar}) then {
_player_deleteBuild = true;
};
};
//Allow player to remove objects only if they have proper ownership or access
if (_restrict || _isModular || _isModularDoor || _isGenerator || _typeOfCursorTarget in DZE_isDestroyableStorage) then {
if (_hasToolbox && _hasCrowbar) then {
if (_restrict || {_isModular} || {_isModularDoor} || {_isGenerator} || {_typeOfCursorTarget in DZE_isDestroyableStorage}) then {
if (_hasToolbox && {_hasCrowbar}) then {
_hasAccess = [player, _cursorTarget] call FNC_check_access;
if ((_hasAccess select 0) or (_hasAccess select 2) or (_hasAccess select 3)) then {
if ((_hasAccess select 0) || {_hasAccess select 2} || {_hasAccess select 3}) then {
_player_deleteBuild = true;
};
};
};
};
if (_isVehicle) then {
if ((_characterID != "0") && {!_isMan}) then {
_player_lockUnlock_crtl = true;
};
};
};
if (_player_deleteBuild) then {
if (s_player_deleteBuild < 0) then {
s_player_deleteBuild = player addAction [format[localize "STR_EPOCH_REMOVE",_text], "\z\addons\dayz_code\actions\remove.sqf",_cursorTarget, 1, false, true];
@@ -443,14 +442,14 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
//other tents
if (_istypeTent) then {
_hasIgnitors = {_x in DayZ_Ignitors} count _itemsPlayer > 0;
if ((_hasFuel20 or _hasFuel5 or _hasBarrel) && _hasIgnitors) then {
if ((_hasFuel20 || {_hasFuel5} || {_hasBarrel}) && {_hasIgnitors}) then {
if (s_player_destroytent < 0) then {
s_player_destroytent = player addAction [localize "str_actions_self_destroytent", "\z\addons\dayz_code\actions\player_destroyTent.sqf",_cursorTarget, 0, false, true];
};
} else {
player removeAction s_player_destroytent;
s_player_destroytent = -1;
};
};
if (_typeOfCursorTarget in ["IC_DomeTent","IC_Tent"]) then {
if (s_player_packtentinfected < 0) then {
s_player_packtentinfected = player addAction [localize "str_actions_self_07", "\z\addons\dayz_code\actions\tent_pack.sqf",_cursorTarget, 0, false, true];
@@ -467,7 +466,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
player removeAction s_player_sleep;
s_player_sleep = -1;
};
//Study Body
if (_cursorTarget getVariable["bodyName",""] != "") then {
if (s_player_studybody < 0) then {
@@ -477,7 +476,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
player removeAction s_player_studybody;
s_player_studybody = -1;
};
/*
/*
//Carbomb
_hasCarBomb = "ItemCarBomb" in _magazinesPlayer;
if (((_cursorTarget isKindOf "Car") || (_cursorTarget isKindOf "Air") || (_cursorTarget isKindOf "Motorcycle")) && _hasCarBomb) then {
@@ -523,18 +522,18 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
//Only the owners can lock the gates
_isLockableGate = _typeOfCursorTarget in ["WoodenGate_2","WoodenGate_3","WoodenGate_4","MetalGate_2","MetalGate_3","MetalGate_4"];
_isUnlocked = _cursorTarget getVariable ["isOpen","0"] == "1";
_isActionInProgress = _cursorTarget getVariable ["actionInProgress",false];
//Allow the gates to be opened when not locked by anyone
_isOpen = ((_cursorTarget animationPhase "DoorL") == 1) || ((_cursorTarget animationPhase "DoorR") == 1);
_isClosed = ((_cursorTarget animationPhase "DoorL") == 0) || ((_cursorTarget animationPhase "DoorR") == 0);
//[["ownerArray",["PID"]]]
_ownerArray = _cursorTarget getVariable ["ownerArray",["0"]];
_ownerBuildLock = _cursorTarget getVariable ["BuildLock",false];
_ownerBuildLock = _cursorTarget getVariable ["BuildLock",false];
_ownerPID = (_ownerArray select 0);
// open Gate
if (_isGateOperational && _isClosed && _isUnlocked) then {
if (s_player_openGate < 0) then {
@@ -607,11 +606,11 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
player removeAction s_player_breakinhouse;
s_player_breakinhouse = -1;
};*/
if (_typeOfCursorTarget == "Plastic_Pole_EP1_DZ" && {speed player <= 1}) then {
if ((_typeOfCursorTarget == "Plastic_Pole_EP1_DZ") && {speed player <= 1}) then {
_hasAccess = [player, _cursorTarget] call FNC_check_access;
_allowed = ((_hasAccess select 0) or (_hasAccess select 2) or (_hasAccess select 3) or (_hasAccess select 4));
_allowed = ((_hasAccess select 0) || {_hasAccess select 2} || {_hasAccess select 3} || {_hasAccess select 4});
if (DZE_permanentPlot) then {
if (s_player_plotManagement < 0 && _allowed) then {
if (s_player_plotManagement < 0 && {_allowed}) then {
s_player_plotManagement = player addAction [format["<t color='#b3e6ff'>%1</t>",localize "STR_EPOCH_ACTIONS_MANAGEPLOT"], "\z\addons\dayz_code\actions\plotManagement\initPlotManagement.sqf", [], 5, false];
};
} else {
@@ -621,7 +620,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
s_player_maintain_area_preview = player addAction [format["<t color='#ff0000'>%1</t>",localize "STR_EPOCH_ACTIONS_MAINTPREV"], "\z\addons\dayz_code\actions\maintain_area.sqf", "preview", 5, false];
};
};
if (s_player_plot_boundary < 0 && (_allowed or (_hasAccess select 1))) then {
if (s_player_plot_boundary < 0 && {_allowed || (_hasAccess select 1)}) then {
s_player_plot_boundary = player addAction [localize "STR_EPOCH_PLOTMANAGEMENT_SHOW_BOUNDARY", "\z\addons\dayz_code\actions\plotManagement\plotToggleMarkers.sqf", "", 1, false];
};
} else {
@@ -636,10 +635,10 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
player removeAction s_player_plot_boundary;
s_player_plot_boundary = -1;
};
if (DZE_HeliLift) then {
_liftHeli = objNull;
_found = false;
_found = false;
_allowTow = false;
if ((count (crew _cursorTarget)) == 0) then {
{
@@ -676,8 +675,8 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
s_player_heli_lift = -1;
};
};
// Allow Owner to lock and unlock vehicle
// Allow Owner to lock and unlock vehicle
if (_player_lockUnlock_crtl) then {
if (s_player_lockUnlock_crtl < 0) then {
_totalKeys = call epoch_tempKeys;
@@ -686,7 +685,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
_hasKey = _characterID in _temp_keys;
_oldOwner = (_characterID == _uid);
if (_isLocked) then {
if (_hasKey || _oldOwner) then {
if (_hasKey || {_oldOwner}) then {
_unlock = player addAction [format[localize "STR_EPOCH_ACTIONS_UNLOCK",_text], "\z\addons\dayz_code\actions\unlock_veh.sqf",[_cursorTarget,(_temp_keys_names select (_temp_keys find _characterID))], 2, true, true];
s_player_lockunlock set [count s_player_lockunlock,_unlock];
s_player_lockUnlock_crtl = 1;
@@ -700,18 +699,27 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
s_player_lockUnlock_crtl = 1;
};
} else {
if (_hasKey || _oldOwner) then {
if (_hasKey || {_oldOwner}) then {
_lock = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\lock_veh.sqf",_cursorTarget, 1, true, true];
s_player_lockunlock set [count s_player_lockunlock,_lock];
s_player_lockUnlock_crtl = 1;
};
};
};
};
} else {
{player removeAction _x} count s_player_lockunlock;s_player_lockunlock = [];
s_player_lockUnlock_crtl = -1;
};
if (DZE_Hide_Body && {_isMan} && {!_isAlive}) then {
if (s_player_hide_body < 0) then {
s_player_hide_body = player addAction [localize "str_action_hide_body", "\z\addons\dayz_code\actions\hide_body.sqf",_cursorTarget, 1, true, true];
};
} else {
player removeAction s_player_hide_body;
s_player_hide_body = -1;
};
// gear access on surrendered player
if (isPlayer _cursorTarget && {_isAlive} && {_cursorTarget getVariable ["DZE_Surrendered",false]}) then {
if (s_player_SurrenderedGear < 0) then {
@@ -723,10 +731,10 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
};
// Allow manage door
if (DZE_doorManagement && (_typeOfCursorTarget in DZE_DoorsLocked)) then {
if (DZE_doorManagement && {_typeOfCursorTarget in DZE_DoorsLocked}) then {
// Check player access
_hasAccess = [player, _cursorTarget] call FNC_check_access;
if (s_player_manageDoor < 0 && ((_hasAccess select 0) or (_hasAccess select 2) or (_hasAccess select 3) or (_hasAccess select 4) or (_hasAccess select 5) or (_hasAccess select 6))) then {
if (s_player_manageDoor < 0 && {(_hasAccess select 0) || {_hasAccess select 2} || {_hasAccess select 3} || {_hasAccess select 4} || {_hasAccess select 5} || {_hasAccess select 6}}) then {
s_player_manageDoor = player addAction [format["<t color='#b3e6ff'>%1</t>", localize "STR_EPOCH_ACTIONS_MANAGEDOOR"], "\z\addons\dayz_code\actions\doorManagement\initDoorManagement.sqf", _cursorTarget, 5, false];
};
} else {
@@ -738,7 +746,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
if ((_typeOfCursorTarget in DZE_LockableStorage) && {_characterID != "0"} && {_isClose} && {!keypadCancel}) then {
if (s_player_unlockvault < 0) then {
if (_typeOfCursorTarget in DZE_LockedStorage) then {
if (_characterID == dayz_combination || _ownerID == _uid) then {
if ((_characterID == dayz_combination) || {_ownerID == _uid}) then {
_combi = player addAction [format[localize "STR_EPOCH_ACTIONS_OPEN",_text], "\z\addons\dayz_code\actions\vault_unlock.sqf",_cursorTarget, 0, false, true];
s_player_combi set [count s_player_combi,_combi];
} else {
@@ -747,7 +755,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
};
s_player_unlockvault = 1;
} else {
if (_characterID != dayz_combination && _ownerID != _uid) then {
if ((_characterID != dayz_combination) && {_ownerID != _uid}) then {
_combi = player addAction [localize "STR_EPOCH_ACTIONS_RECOMBO", "\z\addons\dayz_code\actions\vault_combination_1.sqf",_cursorTarget, 0, false, true];
s_player_combi set [count s_player_combi,_combi];
s_player_unlockvault = 1;
@@ -762,11 +770,11 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
//Allow owner to pack vault
if ((_typeOfCursorTarget in DZE_UnLockedStorage) && {_characterID != "0"} && {_isClose} && {!keypadCancel}) then {
if (s_player_lockvault < 0) then {
if (_characterID == dayz_combination || _ownerID == _uid) then {
if ((_characterID == dayz_combination) || {_ownerID == _uid}) then {
s_player_lockvault = player addAction [format[localize "STR_EPOCH_ACTIONS_LOCK",_text], "\z\addons\dayz_code\actions\vault_lock.sqf",_cursorTarget, 0, false, true];
};
};
if (s_player_packvault < 0 && (_characterID == dayz_combination || _ownerID == _uid)) then {
if (s_player_packvault < 0 && {(_characterID == dayz_combination) || (_ownerID == _uid)}) then {
s_player_packvault = player addAction [format["<t color='#ff0000'>%1</t>",(format[localize "STR_EPOCH_ACTIONS_PACK",_text])], "\z\addons\dayz_code\actions\vault_pack.sqf",_cursorTarget, 0, false, true];
};
} else {
@@ -785,13 +793,13 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
player removeAction s_player_information;
s_player_information = -1;
};
//Fuel Pump
if (_typeOfCursorTarget in dayz_fuelpumparray) then {
if (s_player_fuelauto < 0) then {
if (s_player_fuelauto < 0) then {
// check if Generator_DZ is running within 30 meters
_findNearestGen = {((alive _x) && (_x getVariable ["GeneratorRunning",false]))} count (([player] call FNC_getPos) nearObjects ["Generator_DZ",30]);
// show that pump needs power if no generator nearby.
if (_findNearestGen > 0) then {
s_player_fuelauto = player addAction [localize "STR_EPOCH_ACTIONS_FILLVEH", "\z\addons\dayz_code\actions\fill_nearestVehicle.sqf",objNull, 0, false, true];
@@ -805,7 +813,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
};
//Fuel Pump on truck
if (_typeOfCursorTarget in DZE_fueltruckarray && _isAlive) then {
if (_typeOfCursorTarget in DZE_fueltruckarray && {_isAlive}) then {
if (s_player_fuelauto2 < 0) then {
// show that fuel truck pump needs power.
if (isEngineOn _cursorTarget) then {
@@ -820,7 +828,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
};
// inplace upgrade tool
if ((_cursorTarget isKindOf "ModularItems") || (_cursorTarget isKindOf "Land_DZE_WoodDoor_Base") || (_cursorTarget isKindOf "CinderWallDoor_DZ_Base")) then {
if ((_cursorTarget isKindOf "ModularItems") || {_cursorTarget isKindOf "Land_DZE_WoodDoor_Base"} || {_cursorTarget isKindOf "CinderWallDoor_DZ_Base"}) then {
if ((s_player_lastTarget select 0) != _cursorTarget) then {
if (s_player_upgrade_build > 0) then {
player removeAction s_player_upgrade_build;
@@ -830,7 +838,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
if (s_player_upgrade_build < 0) then {
_hasAccess = [player, _cursorTarget] call FNC_check_access;
_upgrade = getArray (configFile >> "CfgVehicles" >> (typeOf _cursorTarget) >> "upgradeBuilding");
if (((_hasAccess select 0) or (_hasAccess select 2) or (_hasAccess select 3)) && (count _upgrade) > 0) then {
if (((_hasAccess select 0) || {_hasAccess select 2} || {_hasAccess select 3}) && {(count _upgrade) > 0}) then {
s_player_lastTarget set [0,_cursorTarget];
s_player_upgrade_build = player addAction [format[localize "STR_EPOCH_UPGRADE",_text], "\z\addons\dayz_code\actions\player_upgrade.sqf",_cursorTarget, -1, false, true];
};
@@ -839,18 +847,18 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
player removeAction s_player_upgrade_build;
s_player_upgrade_build = -1;
};
// downgrade system
if (DZE_Lock_Door == _characterID && {!keypadCancel} && {_cursorTarget isKindOf "Land_DZE_WoodDoorLocked_Base" || _cursorTarget isKindOf "CinderWallDoorLocked_DZ_Base"}) then {
if ((s_player_lastTarget select 1) != _cursorTarget) then {
if (s_player_downgrade_build > 0) then {
if (s_player_downgrade_build > 0) then {
player removeAction s_player_downgrade_build;
s_player_downgrade_build = -1;
};
};
if (s_player_downgrade_build < 0) then {
_hasAccess = [player, _cursorTarget] call FNC_check_access;
if ((_hasAccess select 0) or (_hasAccess select 2) or (_hasAccess select 3)) then {
if ((_hasAccess select 0) || {_hasAccess select 2} || {_hasAccess select 3}) then {
s_player_lastTarget set [1,_cursorTarget];
s_player_downgrade_build = player addAction [format[localize "STR_EPOCH_ACTIONS_REMLOCK",_text], "\z\addons\dayz_code\actions\player_buildingDowngrade.sqf",_cursorTarget, -2, false, true];
};
@@ -861,7 +869,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
};
// inplace maintenance tool
if ((damage _cursorTarget >= DZE_DamageBeforeMaint) && {_cursorTarget isKindOf "ModularItems" || _cursorTarget isKindOf "DZE_Housebase" || _typeOfCursorTarget == "LightPole_DZ"}) then {
if ((damage _cursorTarget >= DZE_DamageBeforeMaint) && {_cursorTarget isKindOf "ModularItems" || {_cursorTarget isKindOf "DZE_Housebase"} || {_typeOfCursorTarget == "LightPole_DZ"}}) then {
if ((s_player_lastTarget select 2) != _cursorTarget) then {
if (s_player_maint_build > 0) then {
player removeAction s_player_maint_build;
@@ -870,7 +878,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
};
if (s_player_maint_build < 0) then {
_hasAccess = [player, _cursorTarget] call FNC_check_access;
if ((_hasAccess select 0) or (_hasAccess select 2) or (_hasAccess select 3)) then {
if ((_hasAccess select 0) || {_hasAccess select 2} || {_hasAccess select 3}) then {
_text2 = _text + " (" + str(round ((damage _cursorTarget) * 100)) + "% damaged)";
s_player_lastTarget set [2,_cursorTarget];
s_player_maint_build = player addAction [format["%1 %2",localize "STR_EPOCH_ACTIONS_MAINTAIN",_text2], "\z\addons\dayz_code\actions\player_buildingMaint.sqf",_cursorTarget, -2, false, true];
@@ -883,16 +891,16 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
//Start Generator
if (_isGenerator) then {
if (s_player_fillgen < 0) then {
// check if not running
if (s_player_fillgen < 0) then {
// check if not running
if (_cursorTarget getVariable ["GeneratorRunning", false]) then {
s_player_fillgen = player addAction [localize "STR_EPOCH_ACTIONS_GENERATOR1", "\z\addons\dayz_code\actions\stopGenerator.sqf",_cursorTarget, 0, false, true];
s_player_fillgen = player addAction [localize "STR_EPOCH_ACTIONS_GENERATOR1", "\z\addons\dayz_code\actions\stopGenerator.sqf",_cursorTarget, 0, false, true];
} else {
// check if not filled and player has jerry.
if (_cursorTarget getVariable ["GeneratorFilled", false]) then {
s_player_fillgen = player addAction [localize "STR_EPOCH_ACTIONS_GENERATOR2", "\z\addons\dayz_code\actions\fill_startGenerator.sqf",_cursorTarget, 0, false, true];
} else {
if (_hasFuel20 or _hasFuel5 or _hasBarrel) then {
if (_hasFuel20 || {_hasFuel5} || {_hasBarrel}) then {
s_player_fillgen = player addAction [localize "STR_EPOCH_ACTIONS_GENERATOR3", "\z\addons\dayz_code\actions\fill_startGenerator.sqf",_cursorTarget, 0, false, true];
};
};
@@ -908,9 +916,9 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
if(_typeOfCursorTarget == "TOW_DZE") then {
if (s_player_towing < 0) then {
if(!(_cursorTarget getVariable ["DZEinTow", false])) then {
s_player_towing = player addAction [localize "STR_EPOCH_ACTIONS_ATTACH" "\z\addons\dayz_code\actions\tow_AttachStraps.sqf",_cursorTarget, 0, false, true];
s_player_towing = player addAction [localize "STR_EPOCH_ACTIONS_ATTACH" "\z\addons\dayz_code\actions\tow_AttachStraps.sqf",_cursorTarget, 0, false, true];
} else {
s_player_towing = player addAction [localize "STR_EPOCH_ACTIONS_DETACH", "\z\addons\dayz_code\actions\tow_DetachStraps.sqf",_cursorTarget, 0, false, true];
s_player_towing = player addAction [localize "STR_EPOCH_ACTIONS_DETACH", "\z\addons\dayz_code\actions\tow_DetachStraps.sqf",_cursorTarget, 0, false, true];
};
};
} else {
@@ -923,7 +931,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
if (_isMan && {!(isPlayer _cursorTarget)} && {_typeOfCursorTarget in serverTraders}) then {
if (s_player_parts_crtl < 0) then {
_humanity = player getVariable ["humanity",0];
_traderMenu = call compile format["menu_%1;",_typeOfCursorTarget];
_traderMenu = call compile format["menu_%1;",_typeOfCursorTarget];
_low_high = localize "STR_EPOCH_ACTIONS_HUMANITY_LOW";
_humanity_logic = false;
if ((_traderMenu select 2) == "friendly") then {
@@ -943,7 +951,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
// Static Menu
{
_buy = player addAction [format["Trade %1 %2 for %3 %4",(_x select 3),(_x select 5),(_x select 2),(_x select 6)], "\z\addons\dayz_code\actions\trade_items_wo_db.sqf",[(_x select 0),(_x select 1),(_x select 2),(_x select 3),(_x select 4),(_x select 5),(_x select 6)], (_x select 7), true, true];
s_player_parts set [count s_player_parts,_buy];
s_player_parts set [count s_player_parts,_buy];
} count (_traderMenu select 1);
if (DZE_ConfigTrader) then {
_buyV = player addAction [localize "STR_EPOCH_PLAYER_289", "\z\addons\dayz_code\actions\AdvancedTrading\init.sqf",(_traderMenu select 0), 999, true, false];
@@ -954,16 +962,17 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
s_player_parts set [count s_player_parts,_buy];
};
};
s_player_parts_crtl = 1;
s_player_parts_crtl = 1;
};
} else {
{player removeAction _x} count s_player_parts;s_player_parts = [];
s_player_parts_crtl = -1;
};
//Dog
if (dayz_tameDogs) then {
//Dog
_hasRawMeat = {_x in Dayz_meatraw} count _magazinesPlayer > 0;
if (_isDog && {_hasRawMeat} && {_isAlive} && {_ownerID == "0"} && {player getVariable ["dogID",0] == 0}) then {
if (s_player_tamedog < 0) then {
s_player_tamedog = player addAction [localize "str_actions_tamedog", "\z\addons\dayz_code\actions\dog\tame_dog.sqf", _cursorTarget, 1, false, true];
@@ -973,10 +982,12 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
s_player_tamedog = -1;
};
if (_isDog && {_ownerID == _id} && {_isAlive}) then {
if (s_player_feeddog < 0 && _hasRawMeat) then {
_hasbottleitem = ({_x in ["ItemWaterBottle","ItemWaterBottleInfected","ItemWaterBottleSafe","ItemWaterBottleBoiled","ItemPlasticWaterBottle","ItemPlasticWaterBottleInfected","ItemPlasticWaterBottleSafe","ItemPlasticWaterBottleBoiled"]} count _magazinesPlayer) > 0;
if (s_player_feeddog < 0 && {_hasRawMeat}) then {
s_player_feeddog = player addAction [localize "str_actions_feeddog","\z\addons\dayz_code\actions\dog\feed.sqf",[_dogHandle,0], 0, false, true];
};
if (s_player_waterdog < 0 && _hasbottleitem) then {
if (s_player_waterdog < 0 && {_hasbottleitem}) then {
s_player_waterdog = player addAction [localize "str_actions_waterdog","\z\addons\dayz_code\actions\dog\feed.sqf",[_dogHandle,1], 0, false, true];
};
if (s_player_staydog < 0) then {
@@ -992,7 +1003,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
if (s_player_warndog < 0) then {
_warn = _dogHandle getFSMVariable "_watchDog";
if (_warn) then { _text = localize "str_epoch_player_247"; _warn = false; } else { _text = localize "str_epoch_player_248"; _warn = true; };
s_player_warndog = player addAction [format[localize "str_actions_warndog",_text],"\z\addons\dayz_code\actions\dog\warn.sqf",[_dogHandle, _warn], 2, false, true];
s_player_warndog = player addAction [format[localize "str_actions_warndog",_text],"\z\addons\dayz_code\actions\dog\warn.sqf",[_dogHandle, _warn], 2, false, true];
};
if (s_player_followdog < 0) then {
s_player_followdog = player addAction [localize "str_actions_followdog","\z\addons\dayz_code\actions\dog\follow.sqf",[_dogHandle,true], 6, false, true];
@@ -1078,7 +1089,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
s_player_BuildUnLock = -1;
player removeAction s_player_BuildLock;
s_player_BuildLock = -1;*/
{player removeAction _x} count s_player_combi;s_player_combi = [];
{player removeAction _x} count s_player_combi;s_player_combi = [];
s_player_lastTarget = [objNull,objNull,objNull,objNull,objNull];
{player removeAction _x} count s_player_parts;s_player_parts = [];
s_player_parts_crtl = -1;
@@ -1091,7 +1102,7 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
player removeAction s_player_maintain_area_force;
s_player_maintain_area_force = -1;
player removeAction s_player_maintain_area_preview;
s_player_maintain_area_preview = -1;
s_player_maintain_area_preview = -1;
player removeAction s_player_tamedog;
s_player_tamedog = -1;
player removeAction s_player_feeddog;
@@ -1132,6 +1143,8 @@ if (!isNull _cursorTarget && !_inVehicle && !_isPZombie && (player distance _cur
s_player_fuelauto2 = -1;
player removeAction s_player_manageDoor;
s_player_manageDoor = -1;
player removeAction s_player_hide_body;
s_player_hide_body = -1;
};
//Dog actions on player self
@@ -1139,7 +1152,7 @@ if (_dogHandle > 0) then {
_dog = _dogHandle getFSMVariable "_dog";
if (isNil "_dog") exitWith {};
if (isNil "_ownerID") then {_ownerID = "0"};
if (_canDo && !_inVehicle && alive _dog && !(_ownerID in [_myCharID,_uid])) then {
if (_canDo && {!_inVehicle} && {alive _dog} && {!(_ownerID in [_myCharID,_uid])}) then {
if (s_player_movedog < 0) then {
s_player_movedog = player addAction [localize "str_actions_movedog", "\z\addons\dayz_code\actions\dog\move.sqf", player getVariable ["dogID",0], 1, false, true];
};
@@ -1154,7 +1167,7 @@ if (_dogHandle > 0) then {
};
};
} else {
player removeAction s_player_movedog;
player removeAction s_player_movedog;
s_player_movedog = -1;
player removeAction s_player_speeddog;
s_player_speeddog = -1;

View File

@@ -90,8 +90,10 @@ if (player == vehicle player) then {
"dynamicBlur" ppEffectAdjust [0]; "dynamicBlur" ppEffectCommit 5;
"colorCorrections" ppEffectAdjust [1, 1, 0, [1, 1, 1, 0.0], [1, 1, 1, 1], [1, 1, 1, 1]];"colorCorrections" ppEffectCommit 5;
//Prevent firing while weapon is still shown on back. AmovPpneMstpSnonWnonDnon_healed has disableWeapons=0 in config (should be =1)
waitUntil {uiSleep 1; !(animationState player in ["ainjppnemstpsnonwnondnon_rolltofront","amovppnemstpsnonwnondnon_healed","amovppnemstpsnonwnondnon"])};
if ({getNumber (configFile >> "CfgWeapons" >> _x >> "type") in [1,2]} count (weapons player) > 0) then {
//Prevent firing while weapon is still shown on back or holstered. AmovPpneMstpSnonWnonDnon_healed has disableWeapons=0 in config (should be 1)
waitUntil {uiSleep 1; !(animationState player in ["ainjppnemstpsnonwnondnon_rolltofront","amovppnemstpsnonwnondnon_healed","amovppnemstpsnonwnondnon"])};
};
//once more to be safe
disableUserInput false; disableUserInput false;

View File

@@ -1,7 +1,8 @@
private["_unit","_hp","_selection","_strH","_dam"];
_unit = _this select 0;
_hp = _this select 1;
_selection = getText (configFile >> "CfgVehicles" >> (typeOf _unit) >> "HitPoints" >> _hp >> "name");
_dam = _unit getHit _selection;
[_dam, _selection];
[_dam, _selection];

View File

@@ -1,4 +1,4 @@
private ["_type","_local","_unit"];
private ["_chance","_dis","_isWoman","_local","_num","_rnd","_sound","_type","_unit"];
_unit = _this select 0;
_type = _this select 1;

View File

@@ -4,13 +4,14 @@
return all player magazines with ammo count
*/
private ["_dialog","_created","_magazineArray"];
private ["_control","_created","_dialog","_i","_item","_magazineArray","_max","_val"];
disableSerialization;
_dialog = findDisplay 106;
_created = false;
if ( isNull _dialog ) then {
if (isNull _dialog) then {
//Load Minimal gearMenu
createGearDialog [player, "RscDisplayGearMinimal"];
_dialog = findDisplay 106;
@@ -19,8 +20,7 @@ if ( isNull _dialog ) then {
_magazineArray = [];
for "_i" from 109 to 120 do
{
for "_i" from 109 to 120 do {
_control = _dialog displayCtrl _i;
_item = gearSlotData _control;
_val = gearSlotAmmoCount _control;
@@ -34,8 +34,7 @@ for "_i" from 109 to 120 do
};
};
for "_i" from 122 to 129 do
{
for "_i" from 122 to 129 do {
_control = _dialog displayCtrl _i;
_item = gearSlotData _control;
_val = gearSlotAmmoCount _control;
@@ -49,8 +48,8 @@ for "_i" from 122 to 129 do
};
};
if ( _created ) then {
if (_created) then {
closeDialog 0;
};
_magazineArray
_magazineArray

View File

@@ -4,7 +4,8 @@
return all player magazines with ammo count
Modified to save backpack magazine count by icomrade - Base for fix by Ziellos2k
*/
private ["_control","_item","_val","_max","_count","_magazineArray","_dialog"];
private ["_control","_count","_dialog","_i","_item","_magazineArray","_max","_val"];
disableUserInput true;
disableUserInput true;
disableSerialization;
@@ -49,7 +50,7 @@ if ((typeOf (unitBackPack player)) != "") then {
ctrlActivate (_dialog displayCtrl 157);
if (gear_done) then {
waitUntil {ctrlShown (_dialog displayCtrl 159)};
sleep 0.001;
uiSleep 0.001;
};
for "_i" from 5000 to (5000 + _count) do {
@@ -68,6 +69,6 @@ if ((typeOf (unitBackPack player)) != "") then {
};
(findDisplay 106) closeDisplay 0;
if (gear_done) then {sleep 0.001;};
if (gear_done) then {uiSleep 0.001;};
_magazineArray;
_magazineArray

View File

@@ -4,7 +4,7 @@
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
dayz_actionInProgress = true;
private ["_alreadyPacking","_backpacks","_bag","_campItems","_dir","_holder","_magazines","_obj","_objectID","_objectUID","_ownerID","_packobj","_playerNear","_pos","_weapons","_finished"];
private ["_alreadyPacking","_backpacks","_bag","_campItems","_dir","_holder","_magazines","_obj","_objectID","_objectUID","_ownerID","_packobj","_playerNear","_pos","_weapons","_finished","_posPlayer"];
_obj = _this;
_ownerID = _obj getVariable["CharacterID","0"];
@@ -42,13 +42,21 @@ if (_ownerID in [dayz_characterID,dayz_playerUID] or typeOf _obj in _campItems)
if (isNull _obj) exitWith {};
if (!_finished) exitWith {_obj setVariable["packing",0,true];};
_posPlayer = getPosATL player;
_pos set [2,_posPlayer select 2];
if (_pos select 2 < 0) then {
_pos set [2,0];
};
//place tent (local)
_bag = createVehicle [_packobj, _pos, [], 0, "CAN_COLLIDE"];
_bag = _packobj createVehicle [0,0,0];
_bag setDir _dir;
player reveal _bag;
_holder = createVehicle ["WeaponHolder", _pos, [], 0, "CAN_COLLIDE"];
_bag setPosATL _pos;
_holder = "WeaponHolder" createVehicle [0,0,0];
_holder setPosATL _pos;
_weapons = getWeaponCargo _obj;
_magazines = getMagazineCargo _obj;
_backpacks = getBackpackCargo _obj;
@@ -59,6 +67,8 @@ if (_ownerID in [dayz_characterID,dayz_playerUID] or typeOf _obj in _campItems)
[_weapons,_magazines,_backpacks,_holder] call fn_addCargo;
player reveal _holder;
localize "str_success_tent_pack" call dayz_rollingMessages;
} else {
localize "str_fail_tent_pack" call dayz_rollingMessages;

View File

@@ -1,10 +1,11 @@
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
dayz_actionInProgress = true;
/*
[_obj] spawn player_packVault;
*/
private ["_obj","_ownerID","_objectID","_objectUID","_location1","_location2","_packedClass","_text","_playerNear","_finished"];
if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
dayz_actionInProgress = true;
private ["_obj","_ownerID","_objectID","_objectUID","_location1","_location2","_packedClass","_text","_playerNear","_finished","_ComboMatch"];
_obj = _this;
_packedClass = getText (configFile >> "CfgVehicles" >> (typeOf _obj) >> "packedClass");
@@ -31,11 +32,11 @@ if (_objectID == "0" && _objectUID == "0") exitWith {dayz_actionInProgress = fal
if (!_ComboMatch && (_ownerID != dayz_playerUID)) exitWith { dayz_actionInProgress = false; s_player_packvault = -1; format[localize "str_epoch_player_119",_text] call dayz_rollingMessages;};
format[localize "str_epoch_player_121",_text] call dayz_rollingMessages;
uiSleep 1;
uiSleep 1;
_location1 = getPosATL player;
uiSleep 5;
_location2 = getPosATL player;
if(_location1 distance _location2 > 0.1) exitWith {
format[localize "str_epoch_player_122",_text] call dayz_rollingMessages;
s_player_packvault = -1;
@@ -44,22 +45,22 @@ if(_location1 distance _location2 > 0.1) exitWith {
if (!isNull _obj && alive _obj) then {
[player,"tentpack",0,false] call dayz_zombieSpeak;
_finished = ["Medic",1] call fn_loopAction;
if (isNull _obj or !_finished) exitWith {};
["Working",0,[3,2,4,0]] call dayz_NutritionSystem;
(findDisplay 106) closeDisplay 0; // Close gear
dze_waiting = nil;
[_packedClass,objNull] call fn_waitForObject;
PVDZE_handleSafeGear = [player,_obj,2];
publicVariableServer "PVDZE_handleSafeGear";
publicVariableServer "PVDZE_handleSafeGear";
//wait for response from server to verify pack was logged and gear added before proceeding
waitUntil {!isNil "dze_waiting"};
format[localize "str_epoch_player_123",_text] call dayz_rollingMessages;
};
s_player_packvault = -1;

View File

@@ -79,6 +79,8 @@ if (_isArray) then {
_newUnit setDir _dir;
{_newUnit removeMagazine _x;} count magazines _newUnit;
removeAllWeapons _newUnit;
removeAllItems _newUnit;
removebackpack _newUnit;
//Equip New Character
{

View File

@@ -86,6 +86,7 @@ class CfgAddons
"redryder",
"Anzio_20",
"dayz_epoch_b",
"dayz_epoch_c",
"CfgVehicles"
};
};

View File

@@ -34,6 +34,7 @@ DZE_DisabledChannels = [(localize "str_channel_side"),(localize "str_channel_glo
DZE_NutritionDivisor = [1, 1, 1, 1]; //array of DIVISORS that regulate the rate of [calories, thirst, hunger, temperature] use when "working" (keep in mind that temperature raises with actions) - min values 0.1 - Larger values slow the effect, smaller values accelerate it
DZE_ZombieSpeed = [0,0]; //Default agro speed is 6 per zombie config, set array elements 0 and 1 the same for non-variable speed, set to 0 to disable. array format = [min, max]; Ex: [2, 6]; results in a range of speed between 2 and 6 (2 is the old DZE_slowZombies hard-coded speed)
DZE_lockablesHarderPenalty = true; // Enforce an exponential wait on attempts between unlocking a safe/lockbox from a failed code.
DZE_Hide_Body = true; //Enable hide dead bodies. Hiding a dead body removes the corpse marker from the map too. Default = true
// SafeZone
DZE_SafeZoneZombieLoot = false; // Enable spawning of Zombies and loot in positions listed in DZE_SafeZonePosArray?

View File

@@ -41,7 +41,7 @@ feature.
* [Sharkiller](https://github.com/Sharkiller) (Spanish Tranlations)
* [Defwen](https://github.com/Defwen) (Czech Translations)
* [[VB]AWOL](https://github.com/vbawol)
* [Paul Tomany](https://github.com/Sequisha)
* [Sequisha](https://github.com/Sequisha)
* [M1lkM8n](https://github.com/M1lkm8n)
* [JST](https://github.com/Cybersam248)
* [NonovUrbizniz](https://github.com/NonovUrbizniz)

View File

@@ -7,57 +7,205 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
@version 1.00
@date 20101006
*****************************************************************************/
class ItemCanteen
{
weight = 0.25;
};
class ItemCanteenInfected
{
weight = 0.25;
};
class ItemCanteenSafe
{
weight = 0.25;
};
class ItemCanteenBoiled
{
weight = 0.25;
};
class ItemCanteenHerbal
{
weight = 0.25;
};
class ItemCanteenEmpty
{
weight = 0.05;
};
class ItemWaterbottle
{
weight = 0.25;
weight = 0.22;
};
class ItemWaterbottleBoiled
{
weight = 0.25;
weight = 0.22;
};
class ItemWaterBottleInfected
{
weight = 0.25;
weight = 0.22;
};
class ItemWaterBottleSafe
{
weight = 0.25;
weight = 0.22;
};
class ItemWaterBottleHerbal
{
weight = 0.25;
weight = 0.22;
};
class ItemWaterbottleUnfilled
class ItemWaterBottleUnfilled
{
weight = 0.05;
weight = 0.02;
};
class ItemWaterBottleDmg
{
weight = 0.05;
weight = 0.02;
};
class ItemWaterbottle1oz
{
weight = 0.04;
};
class ItemWaterbottle2oz
{
weight = 0.06;
};
class ItemWaterbottle3oz
{
weight = 0.08;
};
class ItemWaterbottle4oz
{
weight = 0.1;
};
class ItemWaterbottle5oz
{
weight = 0.12;
};
class ItemWaterbottle6oz
{
weight = 0.14;
};
class ItemWaterbottle7oz
{
weight = 0.16;
};
class ItemWaterbottle8oz
{
weight = 0.17;
};
class ItemWaterbottle9oz
{
weight = 0.2;
};
class ItemWaterbottle1ozBoiled
{
weight = 0.04;
};
class ItemWaterbottle2ozBoiled
{
weight = 0.06;
};
class ItemWaterbottle3ozBoiled
{
weight = 0.08;
};
class ItemWaterbottle4ozBoiled
{
weight = 0.1;
};
class ItemWaterbottle5ozBoiled
{
weight = 0.12;
};
class ItemWaterbottle6ozBoiled
{
weight = 0.14;
};
class ItemWaterbottle7ozBoiled
{
weight = 0.16;
};
class ItemWaterbottle8ozBoiled
{
weight = 0.17;
};
class ItemWaterbottle9ozBoiled
{
weight = 0.2;
};
class ItemPlasticWaterBottle
{
weight = 0.22;
};
class ItemPlasticWaterBottleBoiled
{
weight = 0.22;
};
class ItemPlasticWaterBottleInfected
{
weight = 0.22;
};
class ItemPlasticWaterBottleSafe
{
weight = 0.22;
};
class ItemPlasticWaterBottleHerbal
{
weight = 0.22;
};
class ItemPlasticWaterbottleUnfilled
{
weight = 0.02;
};
class ItemPlasticWaterbottleDmg
{
weight = 0.02;
};
class ItemPlasticWaterbottle1oz
{
weight = 0.04;
};
class ItemPlasticWaterbottle2oz
{
weight = 0.06;
};
class ItemPlasticWaterbottle3oz
{
weight = 0.08;
};
class ItemPlasticWaterbottle4oz
{
weight = 0.1;
};
class ItemPlasticWaterbottle5oz
{
weight = 0.12;
};
class ItemPlasticWaterbottle6oz
{
weight = 0.14;
};
class ItemPlasticWaterbottle7oz
{
weight = 0.16;
};
class ItemPlasticWaterbottle8oz
{
weight = 0.17;
};
class ItemPlasticWaterbottle9oz
{
weight = 0.2;
};
class ItemPlasticWaterbottle1ozBoiled
{
weight = 0.04;
};
class ItemPlasticWaterbottle2ozBoiled
{
weight = 0.06;
};
class ItemPlasticWaterbottle3ozBoiled
{
weight = 0.08;
};
class ItemPlasticWaterbottle4ozBoiled
{
weight = 0.1;
};
class ItemPlasticWaterbottle5ozBoiled
{
weight = 0.12;
};
class ItemPlasticWaterbottle6ozBoiled
{
weight = 0.14;
};
class ItemPlasticWaterbottle7ozBoiled
{
weight = 0.16;
};
class ItemPlasticWaterbottle8ozBoiled
{
weight = 0.17;
};
class ItemPlasticWaterbottle9ozBoiled
{
weight = 0.2;
};
class ItemSodaMdew
{

View File

@@ -23,6 +23,30 @@ class AK_107_GL_pso
{
weight = 5.5;
};
class AK107_Kobra_DZ
{
weight = 3.8;
};
class AK107_GL_Kobra_DZ
{
weight = 5.3;
};
class AK107_PSO_DZ
{
weight = 4;
};
class AK107_GL_PSO_DZ
{
weight = 5.5;
};
class AK107_DZ
{
weight = 3;
};
class AK107_GL_DZ
{
weight = 4.5;
};
class AKS_74_U
{
weight = 2.7;

View File

@@ -109,13 +109,13 @@ if (!isDedicated) then {
//player_sleep = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_sleep.sqf";
player_combineMag = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_combineMags.sqf";
player_combineAntibiotics = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_combineAntibiotics.sqf";
player_combineMatches = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_combineMatches.sqf";
player_createquiver = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_createQuiver.sqf";
player_fillquiver = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_fillQuiver.sqf";
//player_takearrow = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_takeArrow.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_switchWeapon.sqf";
//player_goFishing = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_goFishing.sqf";
player_gather = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_gather.sqf";
player_fixBottle = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_fixBottle.sqf";
player_tearClothes = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_tearClothes.sqf";
//object_remove = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\remove.sqf";
player_fixHatchet = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_fixTools.sqf";
@@ -205,6 +205,7 @@ if (!isDedicated) then {
player_manageDoor = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\doorManagement\initDoorManagement.sqf";
player_enterCode = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\doorManagement\player_enterCode.sqf";
FNC_check_access = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_check_access.sqf";
fnc_usec_damageHandler = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_damageHandler.sqf"; //Event handler run on damage
// Advanced trading default inits for maintaining, Advanced Trading and custom scripts to utilize gem based currency.
call compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\AdvancedTrading\defaultInit.sqf";
@@ -612,6 +613,80 @@ if (!isDedicated) then {
if (!DZE_ConfigTrader) then {call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_hiveTrading.sqf";};
// recent murders menu
call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_murderBoard.sqf";
dayz_inflame_showMenu = {
private ["_object","_ret","_flame","_islit","_hasTool","_whatIwant"];
_object = _this select 0;
_whatIwant = _this select 1;
_ret = false;
_islit = (inflamed _object);
_hasTool = false;
if (!_islit) then {
{
if (_x in items player) exitWith { _hasTool = true; };
} count DayZ_Ignitors;
};
_ret = (_whatIwant && !_islit && _hasTool) or (!_whatIwant && _isLit);
_ret
};
dayz_reduceItems = {
private ["_item","_class","_amount","_qtyRemaining"];
_item = _this select 0; //Item in current inventory.
_class = _this select 1; //Class type to use.
//Does player have the original item? (Not Really needed player_useMeds checks)
if (_item in magazines player) exitWith {
//Amount in current box (will be -1 for a random chance to start the reducing)
_amount = getNumber(configfile >> "CfgMagazines" >> _item >> _class >> "amount");
//Item to move too if there is some left
_qtyRemaining = getText(configfile >> "CfgMagazines" >> _item >> _class >> "qtyRemaining");
//Only run for the random amount.
if (_amount == -1) then {
//Chance to start the reduction
if ([getNumber(configfile >> "CfgMagazines" >> _item >> _class >> "chance")] call fn_chance) then {
player removeMagazine _item;
player addMagazine _qtyRemaining;
};
} else {
player removeMagazine _item;
player addMagazine _qtyRemaining;
};
};
true
};
dayz_inflame_showMenu_other = {
private ["_fireplace","_ret","_flame","_islit","_hasTool","_whatIwant"];
_fireplace = _this select 0;
_whatIwant = _this select 1;
_ret = false;
// return a boolean. true <=> player can put out the lit fire, can light a fire with match
_flame = nearestObjects [_fireplace, ["flamable_DZ"], 1];
_flame = if (count _flame > 0) then { _flame select 0 } else { objNull };
_islit = !(isNull _flame) && {(inflamed _flame)};
_hasTool = false;
if (!_islit) then {
{
if (_x in items player) exitWith { _hasTool = true; };
} count DayZ_Ignitors;
};
_ret = (_whatIwant && !_islit && _hasTool) or (!_whatIwant && _isLit);
//systemChat str [_flame, _hasTool, _islit, _ret];
_ret
};
DZ_KeyDown_EH = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\keyboard.sqf";
dayz_EjectPlayer = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\dze_ejectPlayer.sqf";
};
//Both
@@ -628,7 +703,6 @@ object_getHit = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\o
object_setHit = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_setHit.sqf"; //process the hit as a NORMAL damage (useful for persistent vehicles)
object_processHit = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_processHit.sqf"; //process the hit in the REVO damage system (records and sets hit)
//object_cargoCheck = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_cargoCheck.sqf"; //Run by the player or server to monitor changes in cargo contents
fnc_usec_damageHandler = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_damageHandler.sqf"; //Event handler run on damage
// Vehicle damage fix
fnc_veh_handleDam = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\veh_handleDam.sqf";
fnc_veh_handleKilled = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\veh_handleKilled.sqf";
@@ -662,10 +736,10 @@ fn_getModelName = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile
fn_niceSpot = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_niceSpot.sqf";
fnc_Obj_FenceHandleDam = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fence_handleDam.sqf";
object_roadFlare = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\object_roadFlare.sqf";
DZ_KeyDown_EH = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\keyboard.sqf";
fn_shuffleArray = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_shuffleArray.sqf";
zombie_initialize = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\zombie_initialize.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_code\traps\init.sqf";
//call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\achievements_init.sqf"; //start achievements_init
if (dayz_townGenerator) then {
call compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\psrnd.sqf"; // pseudo random for plantSpanwer
@@ -681,7 +755,6 @@ BIS_fnc_numberDigits = compile preprocessFileLineNumbers "\z\addons\dayz_code\co
BIS_fnc_numberText = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fn_numberText.sqf";
local_lockUnlock = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\local_lockUnlock.sqf"; //When vehicle is local to unit perform locking vehicle
FNC_GetSetPos = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\fnc_getSetPos.sqf";
dayz_EjectPlayer = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\dze_ejectPlayer.sqf";
dayz_groupInvite = compile preprocessFileLineNumbers "\z\addons\dayz_code\groups\handleInvite.sqf";
player_sumMedical = {
@@ -718,35 +791,6 @@ player_sumMedical = {
_medical
};
dayz_reduceItems = {
private ["_item","_class","_amount","_qtyRemaining"];
_item = _this select 0; //Item in current inventory.
_class = _this select 1; //Class type to use.
//Does player have the original item? (Not Really needed player_useMeds checks)
if (_item in magazines player) exitWith {
//Amount in current box (will be -1 for a random chance to start the reducing)
_amount = getNumber(configfile >> "CfgMagazines" >> _item >> _class >> "amount");
//Item to move too if there is some left
_qtyRemaining = getText(configfile >> "CfgMagazines" >> _item >> _class >> "qtyRemaining");
//Only run for the random amount.
if (_amount == -1) then {
//Chance to start the reduction
if ([getNumber(configfile >> "CfgMagazines" >> _item >> _class >> "chance")] call fn_chance) then {
player removeMagazine _item;
player addMagazine _qtyRemaining;
};
} else {
player removeMagazine _item;
player addMagazine _qtyRemaining;
};
};
true
};
dayz_inflame = {
private "_object";
_object = _this select 0;
@@ -758,26 +802,6 @@ dayz_inflame = {
};
};
dayz_inflame_showMenu = {
private ["_object","_ret","_flame","_islit","_hasTool","_whatIwant"];
_object = _this select 0;
_whatIwant = _this select 1;
_ret = false;
_islit = (inflamed _object);
_hasTool = false;
if (!_islit) then {
{
if (_x in items player) exitWith { _hasTool = true; };
} count DayZ_Ignitors;
};
_ret = (_whatIwant && !_islit && _hasTool) or (!_whatIwant && _isLit);
_ret
};
dayz_inflame_other = {
private ["_fireplace","_ret","_flame","_islit","_isLit","_pos"];
@@ -805,28 +829,6 @@ dayz_inflame_other = {
};
};
dayz_inflame_showMenu_other = {
private ["_fireplace","_ret","_flame","_islit","_hasTool","_whatIwant"];
_fireplace = _this select 0;
_whatIwant = _this select 1;
_ret = false;
// return a boolean. true <=> player can put out the lit fire, can light a fire with match
_flame = nearestObjects [_fireplace, ["flamable_DZ"], 1];
_flame = if (count _flame > 0) then { _flame select 0 } else { objNull };
_islit = !(isNull _flame) && {(inflamed _flame)};
_hasTool = false;
if (!_islit) then {
{
if (_x in items player) exitWith { _hasTool = true; };
} count DayZ_Ignitors;
};
_ret = (_whatIwant && !_islit && _hasTool) or (!_whatIwant && _isLit);
//systemChat str [_flame, _hasTool, _islit, _ret];
_ret
};
isInflamed = {
private "_flame";

View File

@@ -9,7 +9,6 @@
"PVCDZ_obj_GutBody" addPublicVariableEventHandler {(_this select 1) spawn local_gutObject};
"PVCDZ_veh_SetFuel" addPublicVariableEventHandler {(_this select 1) spawn local_setFuel};
"PVCDZ_veh_engineSwitch" addPublicVariableEventHandler {(_this select 1) spawn dayz_engineSwitch};
"PVCDZ_OpenTarget_Reset" addPublicVariableEventHandler { OpenTarget_Time = diag_tickTime; }; //reset OpenTarget timer
// EPOCH ADDITIONS
"PVDZE_veh_Lock" addPublicVariableEventHandler {(_this select 1) call local_lockUnlock};
@@ -268,6 +267,7 @@ if (!isDedicated) then {
"PVCDZ_hlt_Transfuse_completed" addPublicVariableEventHandler {player setVariable["TransfusionCompleted",true]; };
"PVCDZ_hlt_PainK" addPublicVariableEventHandler {(_this select 1) call player_medPainkiller};
"PVCDZ_hlt_AntiB" addPublicVariableEventHandler {(_this select 1) call player_medAntiBiotics};
"PVCDZ_OpenTarget_Reset" addPublicVariableEventHandler { OpenTarget_Time = diag_tickTime; }; //reset OpenTarget timer
"PVCDZ_plr_Legs" addPublicVariableEventHandler {
_entity = (_this select 1) select 0;

File diff suppressed because it is too large Load Diff

View File

@@ -1311,22 +1311,6 @@
<French>Vous avez bu quelque chose.</French>
<German>Du hast etwas getrunken.</German>
</Key>
<Key ID="str_fix_water_bottle">
<English>You have successfully fixed a water bottle!</English>
<Russian>Вы успешно починили бутылку с водой!</Russian>
<Spanish>Usted ha resuelto con éxito una botella de agua!</Spanish>
<Czech>Úspěšně jste spravili láhev na vodu!</Czech>
<French>Vous avez bien réparé la bouteille d&apos;eau!</French>
<German>Du hast die Wasserflasche erfolgreich repariert!</German>
</Key>
<Key ID="str_fix_water_bottle_fail">
<English>You think you need Duct Tape to fix the bottle.</English>
<Russian>Похоже, нужен скотч, чтобы починить бутылку.</Russian>
<Spanish>Usted cree que necesita cinta para conductos para fijar la botella.</Spanish>
<Czech>Ke spravení láhve bude zřejmě třeba lepící páska.</Czech>
<French>Vous pensez que vous avez besoin de ruban adhésif pour réparer la bouteille.</French>
<German>Du könntest Klebeband gebrauchen, um die Flasche zu reparieren.</German>
</Key>
<Key ID="STR_TEAR_CLOTHES">
<English>Tear Clothes</English>
<German>Kleidung zerreißen</German>
@@ -3537,7 +3521,7 @@
</Key>
<Key ID="STR_EQUIP_DESC_12">
<English>A bottle of water that has been filled and can be consumed.</English>
<German>Eine Flasche, gefüllt mit Trinkwasser.</German>
<German>Eine Flasche gefüllt mit Trinkwasser.</German>
<Russian>Наполненная водой пластиковая бутылка. Вода сомнительного качества.</Russian>
<Spanish>Una botella de agua llena que puede consumirse.</Spanish>
<French>Bouteille (pleine)</French>
@@ -3545,7 +3529,7 @@
</Key>
<Key ID="STR_EQUIP_NAME_13">
<English>Water Bottle (Empty)</English>
<German>Leere Wasserflasche</German>
<German>Wasserflasche (Leer)</German>
<Russian>Бутылка (пустая)</Russian>
<Spanish>Cantimplora (Vacía)</Spanish>
<French>Bouteille (vide)</French>
@@ -3557,7 +3541,7 @@
<German>Ausleeren</German>
</Key>
<Key ID="STR_EQUIP_DESC_13">
<English>A bottle of water that is Empty. It might be useful to fill it with water again.</English>
<English>A bottle of water that is empty. It might be useful to fill it with water again.</English>
<German>Eine leere Wasserflasche. Sie könnte nützlich sein, um sie wieder mit Wasser zu füllen.</German>
<Russian>Пустая бутылка, которую можно наполнить водой.</Russian>
<Spanish>Una botella de agua vacía. Puede ser útil si se la llena con agua de nuevo.</Spanish>
@@ -5027,39 +5011,9 @@
<French>Un Bar cuit (valeur:1400).</French>
<German>Ein gebratener Wolfsbarsch, welcher reich an Eiweiß und Omega-3-Fettsäuren ist.</German>
</Key>
<Key ID="STR_ITEM_CANTEEN_NAME">
<English>Canteen</English>
<Russian>Котелок</Russian>
<German>Feldflasche</German>
</Key>
<Key ID="STR_ITEM_CANTEEN_DESC">
<English>A sturdy military canteen used to hold liquids for consumption.</English>
<Russian>Армейский котелок для хранения жидкостей и еды.</Russian>
<German>Eine stabile Feldflasche, um Wasser zu transportieren.</German>
</Key>
<Key ID="STR_ITEM_CANTEEN_EMPTY">
<English>Empty</English>
<Russian>Пустой</Russian>
<German>Ausleeren</German>
</Key>
<Key ID="STR_ITEM_CANTEEN_EMPTY_NAME">
<English>Canteen (empty)</English>
<Russian>Котелок (Пустой)</Russian>
<German>Feldflasche (leer)</German>
</Key>
<Key ID="STR_ITEM_CANTEEN_BOILED_NAME">
<English>Canteen (boiled)</English>
<Russian>Котелок (Прокипяченый)</Russian>
<German>Feldflasche (abgekocht)</German>
</Key>
<Key ID="STR_ITEM_CANTEEN_HERBAL_NAME">
<English>Canteen (herbal drink)</English>
<Russian>Котелок (Травяной напиток)</Russian>
<German>Feldflasche (Kräutertrunk)</German>
</Key>
<Key ID="STR_ITEMWATERBOTTLEBOILED_CODE_NAME">
<English>Water Bottle (Boiled)</English>
<German>Wasserflasche (abgekocht)</German>
<German>Wasserflasche (Abgekocht)</German>
<Russian>Бутылка (чистая вода)</Russian>
<Spanish>Cantimplora con Agua Hervida</Spanish>
<French>Bouteille (Eau bouillie)</French>
@@ -5075,7 +5029,7 @@
</Key>
<Key ID="STR_ITEMWATERBOTTLEDMG_CODE_NAME">
<English>Water Bottle (Broken)</English>
<German>Wasserflasche (undicht)</German>
<German>Wasserflasche (Undicht)</German>
<Russian>Бутылка (испорчена)</Russian>
<Czech>Láhev na vodu (děravá)</Czech>
</Key>
@@ -6048,12 +6002,12 @@
<Dutch>Patrouillerugzak (coyote)</Dutch>
</Key>
<Key ID="STR_BACKPACK_DESC_PATROL">
<English>Patrol Pack (coyote)</English>
<French>Sac de patrouille (coyote). &lt;br/&gt;Taille: 8</French>
<Russian>Рюкзак на (8 слотов)</Russian>
<Spanish>Mochila de patrullaje de tamaño pequeño.</Spanish>
<Czech>Malý batůžek na kratší výlety.</Czech>
<German>Einfacher Trekkingrucksack von "Coyote". Volumen: 8 Liter.</German>
<English>Patrol Pack (coyote). &lt;br/&gt;Capacity: 10 items</English>
<French>Sac de patrouille (coyote). &lt;br/&gt;Taille: 10</French>
<Russian>Рюкзак на (10 слотов)</Russian>
<Spanish>Mochila de patrullaje de tamaño pequeño: &lt;br/&gt;10 litros</Spanish>
<Czech>Malý batůžek na kratší výlety. &lt;br/&gt;Objem: 10 litrů</Czech>
<German>Einfacher Trekkingrucksack von "Coyote". &lt;br/&gt;Volumen: 10 Liter</German>
</Key>
<Key ID="STR_BACKPACK_NAME_ACU">
<English>Assault Pack (ACU)</English>
@@ -6065,12 +6019,12 @@
<Dutch>Aanvalsrugzak (ACU)</Dutch>
</Key>
<Key ID="STR_BACKPACK_DESC_ACU">
<English>Assault Pack (ACU)</English>
<English>Assault Pack (ACU). &lt;br/&gt;Capacity: 12 items</English>
<French>Sac d&apos;assault (ACU). &lt;br/&gt;Taille: 12</French>
<Russian>Рюкзак на (12 слотов)</Russian>
<Spanish>Mochila de asalto de tamaño intermedio.</Spanish>
<Czech>Klasický batoh americké armády.</Czech>
<German>Kleiner taktischer Rucksack mit ACU-Tarnschema. Volumen: 12 Liter.</German>
<Spanish>Mochila de asalto de tamaño intermedio. &lt;br/&gt;12 litros</Spanish>
<Czech>Klasický batoh americké armády. &lt;br/&gt;Objem: 12 litrů</Czech>
<German>Kleiner taktischer Rucksack mit ACU-Tarnschema. &lt;br/&gt;Volumen: 12 Liter</German>
</Key>
<Key ID="STR_BACKPACK_NAME_VEST">
<English>Czech Vest Pouch</English>
@@ -6082,12 +6036,12 @@
<Dutch>Tsjechische Borstzak</Dutch>
</Key>
<Key ID="STR_BACKPACK_DESC_VEST">
<English>Czech Vest Pouch</English>
<English>Czech Vest Pouch. &lt;br/&gt;Capacity: 12 items</English>
<French>Sac tchèque. &lt;br/&gt;Taille: 12</French>
<Russian>Рюкзак на (12 слотов)</Russian>
<Spanish>Bolsa en forma de chaleco de pequeño tamaño y poca visibilidad.</Spanish>
<Czech>Česká vesta, která unese jen pár věcí.</Czech>
<German>Kleiner Rucksack des tschechischen Militärs, der eng am Rücken anliegt. Volumen: 12 Liter.</German>
<Spanish>Bolsa en forma de chaleco de pequeño tamaño y poca visibilidad. &lt;br/&gt;12 litros</Spanish>
<Czech>Česká vesta, která unese jen pár věcí. &lt;br/&gt;Objem: 12 litrů</Czech>
<German>Kleiner Rucksack des tschechischen Militärs, der eng am Rücken anliegt. &lt;br/&gt;Volumen: 12 Liter</German>
</Key>
<Key ID="STR_BACKPACK_NAME_ALICE">
<English>Alice pack</English>
@@ -6099,12 +6053,12 @@
<Dutch>ALICE Rugzak</Dutch>
</Key>
<Key ID="STR_BACKPACK_DESC_ALICE">
<English>Alice pack</English>
<French>Sac Alice. &lt;br/&gt;Taille: 16</French>
<Russian>Рюкзак на (16 слотов)</Russian>
<Spanish>Mochila Alice de tamaño medio.</Spanish>
<Czech>Jeden z nejlepších vojenských batohů, který byl kdy vyroben.</Czech>
<German>Mittlerer Trekkingrucksack von "Alice". Volumen: 16 Liter</German>
<English>Alice pack. &lt;br/&gt;Capacity: 20 items</English>
<French>Sac Alice. &lt;br/&gt;Taille: 20</French>
<Russian>Рюкзак на (20 слотов)</Russian>
<Spanish>Mochila Alice de tamaño medio. &lt;br/&gt;20 litros</Spanish>
<Czech>Jeden z nejlepších vojenských batohů, který byl kdy vyroben. &lt;br/&gt;Objem: 20 litrů</Czech>
<German>Mittlerer Trekkingrucksack von "Alice". &lt;br/&gt;Volumen: 20 Liter</German>
</Key>
<Key ID="STR_BACKPACK_NAME_SURVACU">
<English>Survival ACU</English>
@@ -6116,12 +6070,12 @@
<Dutch>Overlevings ACU</Dutch>
</Key>
<Key ID="STR_BACKPACK_DESC_SURVACU">
<English>Survival ACU</English>
<French>ACU de survie&lt;br/&gt;Taille: 16</French>
<Russian>Рюкзак на (16 слотов)</Russian>
<Spanish>Mochila de supervivencia de tamaño medio.</Spanish>
<Czech>Větší batoh z obchodu Přežiju s.r.o.</Czech>
<German>Mittlerer Kampfrucksack mit Woodland-Tarnschema. Volumen: 16 Liter.</German>
<English>Survival ACU. &lt;br/&gt;Capacity: 22 items</English>
<French>ACU de survie&lt;br/&gt;Taille: 22</French>
<Russian>Рюкзак на (22 слота)</Russian>
<Spanish>Mochila de supervivencia de tamaño medio. &lt;br/&gt;22 litros</Spanish>
<Czech>Větší batoh z obchodu Přežiju s.r.o. &lt;br/&gt;Objem: 22 litrů</Czech>
<German>Mittlerer Kampfrucksack mit Woodland-Tarnschema. &lt;br/&gt;Volumen: 22 Liter</German>
</Key>
<Key ID="STR_BACKPACK_NAME_BRITISH">
<English>British Assault Pack</English>
@@ -6133,12 +6087,12 @@
<Dutch>Britse Aanvalsrugzak</Dutch>
</Key>
<Key ID="STR_BACKPACK_DESC_BRITISH">
<English>British Assault Pack</English>
<French>Sac d&apos;assault britannique. &lt;br/&gt;Taille: 18</French>
<Russian>Рюкзак на (18 слотов)</Russian>
<Spanish>Mochila de asalto británica de tamaño medio.</Spanish>
<Czech>Moderní a stylový batoh britské armády.</Czech>
<German>Großer Kampfrucksack der britischen Streitkräfte. Volumen: 18 Liter.</German>
<English>British Assault Pack. &lt;br/&gt;Capacity: 30 items</English>
<French>Sac d&apos;assault britannique. &lt;br/&gt;Taille: 30</French>
<Russian>Рюкзак на (30 слотов)</Russian>
<Spanish>Mochila de asalto británica de tamaño medio. &lt;br/&gt;30 litros</Spanish>
<Czech>Moderní a stylový batoh britské armády. &lt;br/&gt;Objem: 30 litrů</Czech>
<German>Großer Kampfrucksack der britischen Streitkräfte. &lt;br/&gt;Volumen: 30 Liter</German>
</Key>
<Key ID="STR_BACKPACK_NAME_CZECH">
<English>Czech Backpack</English>
@@ -6150,12 +6104,12 @@
<Dutch>Tsjechische Rugzak</Dutch>
</Key>
<Key ID="STR_BACKPACK_DESC_CZECH">
<English>Czech Backpack</English>
<French>Sac-à-dos tchèque. &lt;br/&gt;Taille: 24</French>
<Russian>Рюкзак на (24 слота)</Russian>
<Spanish>Mochila checa de gran tamaño y difícil de ocultar.</Spanish>
<Czech>Vojenská krosna pro nošení nejen českých věcí.</Czech>
<German>Großer tschechischer Trekkingrucksack. Volumen: 24 Liter.</German>
<English>Czech Backpack. &lt;br/&gt;Capacity: 40 items</English>
<French>Sac-à-dos tchèque. &lt;br/&gt;Taille: 40</French>
<Russian>Рюкзак на (40 слотов)</Russian>
<Spanish>Mochila checa de gran tamaño y difícil de ocultar. &lt;br/&gt;40 litros</Spanish>
<Czech>Vojenská krosna pro nošení nejen českých věcí. &lt;br/&gt;Objem: 40 litrů</Czech>
<German>Großer tschechischer Trekkingrucksack. &lt;br/&gt;Volumen: 40 Liter</German>
</Key>
<Key ID="STR_BACKPACK_NAME_COYOTE">
<English>Backpack (coyote)</English>
@@ -6167,12 +6121,12 @@
<Dutch>Rugzak (Coyote)</Dutch>
</Key>
<Key ID="STR_BACKPACK_DESC_COYOTE">
<English>Backpack (coyote)</English>
<French>Sac-à-dos (coyote). &lt;br/&gt;Taille: 24</French>
<Russian>Рюкзак на (24 слота)</Russian>
<Spanish>Mochila coyote de gran tamaño y difícil de ocultar.</Spanish>
<Czech>Batoh větších rozměrů, který je schopen unést kromě zásob i zbraně.</Czech>
<German>Großer Kampfrucksack von "Coyote". Volumen: 24 Liter.</German>
<English>Backpack (coyote). &lt;br/&gt;Capacity: 50 items</English>
<French>Sac-à-dos (coyote). &lt;br/&gt;Taille: 50</French>
<Russian>Рюкзак на (50 слотов)</Russian>
<Spanish>Mochila coyote de gran tamaño y difícil de ocultar. &lt;br/&gt;50 litros</Spanish>
<Czech>Batoh větších rozměrů, který je schopen unést kromě zásob i zbraně. &lt;br/&gt;Objem: 50 litrů</Czech>
<German>Großer Kampfrucksack von "Coyote". &lt;br/&gt;Volumen: 50 Liter</German>
</Key>
<Key ID="STR_ITEM_NAME_WIPES">
<English>Wipes</English>
@@ -6508,7 +6462,7 @@
<Czech>Při stavbě %1 došlo k chybě.</Czech>
</Key>
<Key ID="str_fireplace_02">
<English>You cannot make a fireplace here. The area must be flat, and free of other objects</English>
<English>You cannot make a fireplace here. The area must be flat, and free of other objects.</English>
<German>Du kannst hier kein Feuer machen. Der Untergrund muss flach und frei von Hindernissen sein.</German>
<Russian>Костер нужно разводить на ровной поверхности, без объектов поблизости.</Russian>
<Spanish>No puedes hacer una fogata aquí. El área debe ser plana y libre de otros objetos.</Spanish>
@@ -6516,8 +6470,8 @@
<Czech>Ohniště zde nelze postavit. Plocha musí být rovná a dostatečně veliká.</Czech>
</Key>
<Key ID="str_success_gutted_animal">
<English>%1 has been gutted, %2 meat steaks now on the carcass</English>
<German>Du hast das Tier (%1) ausgenommen. Vom verbleibenden Fleisch kannst du %2 Stücke abschneiden.</German>
<English>%1 has been gutted, %2 meat steaks now on the carcass.</English>
<German>Du hast %1 ausgenommen und kannst nun %2 Stück(e) Fleisch aus dem Kadavar nehmen.</German>
<Russian>Вы разделали: %1. Доступно кусков мяса: %2</Russian>
<Spanish>Un %1 fue achurado, dejando %2 trozos de carne en el cuerpo.</Spanish>
<French>%1 a été dépecé, %2 morceaux de viande sont maintenant dans la carcasse.</French>
@@ -13361,6 +13315,13 @@
<Dutch>Grote Wapenzak</Dutch>
<French>Grand Fourreau</French>
</Key>
<Key ID="STR_EPOCH_PACK_DESC_LGB">
<English>Large Gunbag &lt;br/&gt;Capacity: 60 items</English>
<German>Große Waffentasche &lt;br/&gt;Volumen: 60 Liter</German>
<Russian>Большая оружейная сумка (60 слотов)</Russian>
<Dutch>Grote Wapenzak &lt;br/&gt;Inhoud: 60 liter</Dutch>
<French>Grand Fourreau &lt;br/&gt;Taille: 60</French>
</Key>
<Key ID="STR_EPOCH_PACK_GB">
<English>Gunbag</English>
<German>Waffentasche</German>
@@ -13368,6 +13329,13 @@
<Dutch>Wapenzak</Dutch>
<French>Fourreau</French>
</Key>
<Key ID="STR_EPOCH_PACK_DESC_GB">
<English>Gunbag &lt;br/&gt;Capacity: 35 items</English>
<German>Waffentasche &lt;br/&gt;Volumen: 35 Liter</German>
<Russian>Оружейная сумка (35 слотов)</Russian>
<Dutch>Wapenzak &lt;br/&gt;Inhoud: 35 liter</Dutch>
<French>Fourreau&lt;br/&gt;Taille: 35</French>
</Key>
<Key ID="STR_EPOCH_PACK_COMPACT">
<English>Compact Pack</English>
<German>Compact Rucksack</German>
@@ -13375,6 +13343,13 @@
<Dutch>Compacte Rugzak</Dutch>
<French>Sac Compact</French>
</Key>
<Key ID="STR_EPOCH_PACK_DESC_COMPACT">
<English>Compact Pack &lt;br/&gt;Capacity: 25 items</English>
<German>Compact Rucksack &lt;br/&gt;Volumen: 25 Liter</German>
<Russian>Компактный рюкзак (25 слотов)</Russian>
<Dutch>Compacte Rugzak &lt;br/&gt;Inhoud: 25 liter</Dutch>
<French>Sac Compact &lt;br/&gt;Taille: 25</French>
</Key>
<Key ID="STR_EPOCH_PACK_TERMINAL">
<English>Terminal Pack</English>
<German>Terminal Rucksack</German>
@@ -13382,6 +13357,13 @@
<Dutch>Terminal Rugzak</Dutch>
<French>Sac à Dos (terminal)</French>
</Key>
<Key ID="STR_EPOCH_PACK_DESC_TERMINAL">
<English>Terminal Pack &lt;br/&gt;Capacity: 15 items</English>
<German>Terminal Rucksack &lt;br/&gt;Volumen: 15 Liter</German>
<Russian>Вокзальный рюкзак (15 слотов)</Russian>
<Dutch>Terminal Rugzak &lt;br/&gt;Inhoud: 15 liter</Dutch>
<French>Sac à Dos (terminal) &lt;br/&gt;Taille: 15</French>
</Key>
<Key ID="STR_EPOCH_ACTIONS_HALO">
<English>HALO Jump</English>
<German>Fallschirm Sprung</German>
@@ -14798,7 +14780,7 @@
</Key>
<Key ID="STR_EPOCH_LUMBERPACK">
<English>Lumber Pack</English>
<German>Bauholzstapel</German>
<German>Bauholzpaket</German>
<Russian>Упаковка пиломатериалов</Russian>
</Key>
<Key ID="STR_EPOCH_LUMBERPACK_DESC">
@@ -14833,7 +14815,7 @@
</Key>
<Key ID="STR_EPOCH_PLYWOODPACK_DESC">
<English>Plywood in a stack.</English>
<German>Sperrholzstapel.</German>
<German>Sperrholz, gestapelt und zusammengebunden.</German>
<Russian>Упакованная фанера.</Russian>
</Key>
<Key ID="STR_EPOCH_LUMBER">
@@ -14968,92 +14950,92 @@
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE1OZBOILED">
<English>Water Bottle (Boiled 1oz)</English>
<German>Wasserflasche (abgekocht 100ml)</German>
<German>Wasserflasche (Abgek. 100ml)</German>
<Russian>Бутылка (чистая вода 1 унция)</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE1OZBOILED_DESC">
<English>Water Bottle with 1oz of water (Boiled).</English>
<German>Wasserflasche mit 100ml Wasser (abgekocht).</German>
<English>Water Bottle with 1oz of boiled water.</English>
<German>Wasserflasche mit 100ml abgekochtem Wasser.</German>
<Russian>Бутылка с 1 унцией чистой кипяченой воды.</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE2OZBOILED">
<English>Water Bottle (Boiled 2oz)</English>
<German>Wasserflasche (abgekocht 200ml)</German>
<German>Wasserflasche (Abgek. 200ml)</German>
<Russian>Бутылка (чистая вода 2 унции)</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE2OZBOILED_DESC">
<English>Water Bottle with 2oz of water (Boiled).</English>
<German>Wasserflasche mit 200ml Wasser (abgekocht).</German>
<English>Water Bottle with 2oz of boiled water.</English>
<German>Wasserflasche mit 200ml abgekochtem Wasser.</German>
<Russian>Бутылка с 2 унциями чистой кипяченой воды.</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE3OZBOILED">
<English>Water Bottle (Boiled 3oz)</English>
<German>Wasserflasche (abgekocht 300ml)</German>
<German>Wasserflasche (Abgek. 300ml)</German>
<Russian>Бутылка (чистая вода 3 унции)</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE3OZBOILED_DESC">
<English>Water Bottle with 3oz of water (Boiled).</English>
<German>Wasserflasche mit 300ml Wasser (abgekocht).</German>
<English>Water Bottle with 3oz of boiled water.</English>
<German>Wasserflasche mit 300ml abgekochtem Wasser.</German>
<Russian>Бутылка с 3 унциями чистой кипяченой воды.</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE4OZBOILED">
<English>Water Bottle (Boiled 4oz)</English>
<German>Wasserflasche (abgekocht 400ml)</German>
<German>Wasserflasche (Abgek. 400ml)</German>
<Russian>Бутылка (чистая вода 4 унции)</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE4OZBOILED_DESC">
<English>Water Bottle with 4oz of water (Boiled).</English>
<German>Wasserflasche mit 400ml Wasser (abgekocht).</German>
<English>Water Bottle with 4oz of boiled water.</English>
<German>Wasserflasche mit 400ml abgekochtem Wasser.</German>
<Russian>Бутылка с 4 унциями чистой кипяченой воды.</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE5OZBOILED">
<English>Water Bottle (Boiled 5oz)</English>
<German>Wasserflasche (abgekocht 500ml)</German>
<German>Wasserflasche (Abgek. 500ml)</German>
<Russian>Бутылка (чистая вода 5 унций)</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE5OZBOILED_DESC">
<English>Water Bottle with 5oz of water (Boiled).</English>
<German>Wasserflasche mit 500ml Wasser (abgekocht).</German>
<English>Water Bottle with 5oz of boiled water.</English>
<German>Wasserflasche mit 500ml abgekochtem Wasser.</German>
<Russian>Бутылка с 5 унциями чистой кипяченой воды.</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE6OZBOILED">
<English>Water Bottle (Boiled 6oz)</English>
<German>Wasserflasche (abgekocht 600ml)</German>
<German>Wasserflasche (Abgek. 600ml)</German>
<Russian>Бутылка (чистая вода 6 унций)</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE6OZBOILED_DESC">
<English>Water Bottle with 6oz of water (Boiled).</English>
<German>Wasserflasche mit 600ml Wasser (abgekocht).</German>
<English>Water Bottle with 6oz of boiled water.</English>
<German>Wasserflasche mit 600ml abgekochtem Wasser.</German>
<Russian>Бутылка с 6 унциями чистой кипяченой воды.</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE7OZBOILED">
<English>Water Bottle (Boiled 7oz)</English>
<German>Wasserflasche (abgekocht 700ml)</German>
<German>Wasserflasche (Abgek. 700ml)</German>
<Russian>Бутылка (чистая вода 7 унций)</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE7OZBOILED_DESC">
<English>Water Bottle with 7oz of water (Boiled).</English>
<German>Wasserflasche mit 700ml Wasser (abgekocht).</German>
<English>Water Bottle with 7oz of boiled water.</English>
<German>Wasserflasche mit 700ml abgekochtem Wasser.</German>
<Russian>Бутылка с 7 унциями чистой кипяченой воды.</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE8OZBOILED">
<English>Water Bottle (Boiled 8oz)</English>
<German>Wasserflasche (abgekocht 800ml)</German>
<German>Wasserflasche (Abgek. 800ml)</German>
<Russian>Бутылка (чистая вода 8 унций)</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE8OZBOILED_DESC">
<English>Water Bottle with 8oz of water (Boiled).</English>
<German>Wasserflasche mit 800ml Wasser (abgekocht).</German>
<English>Water Bottle with 8oz of boiled water.</English>
<German>Wasserflasche mit 800ml abgekochtem Wasser.</German>
<Russian>Бутылка с 8 унциями чистой кипяченой воды.</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE9OZBOILED">
<English>Water Bottle (Boiled 9oz)</English>
<German>Wasserflasche (abgekocht 900ml)</German>
<German>Wasserflasche (Abgek. 900ml)</German>
<Russian>Бутылка (чистая вода 9 унций)</Russian>
</Key>
<Key ID="STR_EPOCH_WATERBOTTLE9OZBOILED_DESC">
<English>Water Bottle with 9oz of water (Boiled).</English>
<German>Wasserflasche mit 900ml Wasser (abgekocht).</German>
<English>Water Bottle with 9oz of boiled water.</English>
<German>Wasserflasche mit 900ml abgekochtem Wasser.</German>
<Russian>Бутылка с 9 унциями чистой кипяченой воды.</Russian>
</Key>
<Key ID="STR_EPOCH_BRIEFCASE">
@@ -16853,6 +16835,10 @@
<German>Feuer (angezündet)</German>
<Czech>Ohniště (hořící)</Czech>
</Key>
<Key ID="STR_EPOCH_WORKBENCH_NEARBY">
<English>Workbench, Wooden Shed or Wood Shack</English>
<German>Werkbank, Holzschuppen oder Holzhütte</German>
</Key>
<Key ID="STR_EPOCH_HUMANS_NEARBY">
<English>Humans Nearby</English>
<German>Spieler in der Nähe</German>
@@ -17257,7 +17243,278 @@
<English>Leaf of a tobacco plant</English>
<German>Blatt einer Tabakpflanze</German>
<Russian>Лист табака с табачной плантации</Russian>
</Key>
<!--New Epoch 1.0.6.3 weapon, attachment and magazine strings-->
<Key ID="STR_DZ_MAG_30RND_AK74_DESC">
<German>Kaliber: 5,45x39mm &lt;br/&gt;Schuss: 30 &lt;br/&gt;Eingesetzt in: AK-74, AK-74 Kobra, AKS-74U, AK-107 und RPK-74</German>
<English>Caliber: 5.45x39mm &lt;br/&gt;Rounds: 30 &lt;br/&gt;Used in: AK-74, AK-74 Kobra, AKS-74U, AK-107 and RPK-74</English>
<Italian>Calibro: 5,45x39 mm &lt;br/&gt;Munizioni: 30 &lt;br/&gt;Si usa in: AK-74, AK-74 Kobra, AKS-74U, AK-107 e RPK-74</Italian>
<Spanish>Calibre: 5,45x39 mm &lt;br/&gt;Cargas: 30 &lt;br/&gt;Uso: AK-74, AK-74 Kobra, AKS-74U, AK-107 y RPK-74</Spanish>
<French>Calibre : 5.45x39 mm &lt;br/&gt;Munitions : 30 &lt;br/&gt;Utilisé avec : AK-74, AK-74 Kobra, AKS-74U, AK-107 et RPK-74</French>
<Czech>Kalibr: 5,45x39mm &lt;br/&gt;Nábojů: 30 &lt;br/&gt;Pro: AK-74, AK-74 Kobra, AKS-74U, AK-107 a RPK-74</Czech>
<Russian>Патрон: 5.45x39 мм &lt;br/&gt;Количество: 30 &lt;br/&gt;Используется в: АК-74, АКС-74, АКС-74У, АК-107, РПК-74</Russian>
<Polish>Kaliber: 5,45x39mm &lt;br/&gt;Naboje: 30 &lt;br/&gt;Używane w: AK-74, AK-74 Kobra, AKS-74U, AK-107 i RPK-74</Polish>
<Hungarian>Kaliber: 5.45x39mm &lt;br/&gt; Töltények: 30 &lt;br/&gt; Hozzá tartozó fegyver: AK-74, AK-74 Kobra, AKS-74U, AK-107 and RPK-74</Hungarian>
</Key>
<Key ID="STR_DZ_MAG_75RND_RPK74_DESC">
<German>Kaliber: 5,45x39mm &lt;br/&gt;Schuss: 75 &lt;br/&gt;Eingesetzt in: AK-74, AK-74 Kobra, AKS-74U, AK-107 und RPK-74</German>
<English>Caliber: 5.45x39mm &lt;br/&gt;Rounds: 75 &lt;br/&gt;Used in: AK-74, AK-74 Kobra, AKS-74U, AK-107 and RPK-74</English>
<Italian>Calibro: 5,45x39 mm &lt;br/&gt;Munizioni: 75 &lt;br/&gt;Si usa in: AK-74, AK-74 Kobra, AKS-74U, AK-107 e RPK-74</Italian>
<Spanish>Calibre: 5,45x39 mm &lt;br/&gt;Cargas: 75 &lt;br/&gt;Uso: AK-74, AK-74 Kobra, AKS-74U, AK-107 y RPK-74</Spanish>
<French>Calibre : 5.45x39 mm &lt;br/&gt;Munitions : 75 &lt;br/&gt;Utilisé avec : AK-74, AK-74 Kobra, AKS-74U, AK-107 et RPK-74</French>
<Czech>Kalibr: 5,45x39mm &lt;br/&gt;Nábojů: 75 &lt;br/&gt;Pro: AK-74, AK-74 Kobra, AKS-74U, AK-107 a RPK-74</Czech>
<Russian>Патрон: 5.45x39 мм &lt;br/&gt;Количество: 75 &lt;br/&gt;Используется в: АК-74, АКС-74, АКС-74У, АК-107, РПК-74</Russian>
<Polish>Kaliber: 5,45x39mm &lt;br/&gt;Naboje: 75 &lt;br/&gt;Używane w: AK-74, AK-74 Kobra, AKS-74U, AK-107 i RPK-74</Polish>
<Hungarian>Kaliber: 5.45x39mm &lt;br/&gt; Töltények: 75 &lt;br/&gt; Hozzá tartozó fegyver: AK-74, AK-74 Kobra, AKS-74U, AK-107 and RPK-74</Hungarian>
</Key>
<Key ID="STR_DZ_MAG_100RND_556x45_MG36_NAME">
<English>100Rnd. MG36 drum mag.</English>
<German>100 Schuss MG36 Trommelmagazin</German>
<Russian>100п. МГ-36 барабан</Russian>
</Key>
<Key ID="STR_DZ_MAG_100RND_MG36_DESC">
<German>Kaliber: 5.56x45mm &lt;br/&gt;Schuss: 100 &lt;br/&gt;Eingesetzt in: G36, MG36, M16, M4, M249, MK-12, M8 und L110</German>
<English>Caliber: 5.56x45mm &lt;br/&gt;Rounds: 100 &lt;br/&gt;Used in: G36, MG36, M16, M4, M249, MK-12, M8 and L110</English>
<Italian>Calibro: 5.56x45mm &lt;br/&gt;Munizioni: 100 &lt;br/&gt;Si usa in: G36, MG36, M16, M4, M249, MK-12, M8 e L110</Italian>
<Spanish>Calibre: 5.56x45mm &lt;br/&gt;Cargas: 100 &lt;br/&gt;Uso: G36, MG36, M16, M4, M249, MK-12, M8 y L110</Spanish>
<French>Calibre : 5.56x45mm &lt;br/&gt;Munitions : 100 &lt;br/&gt;Utilisé avec : G36, MG36, M16, M4, M249, MK-12, M8 et L110</French>
<Czech>Kalibr: 5.56x45mm &lt;br/&gt;Nábojů: 100 &lt;br/&gt;Pro: G36, MG36, M16, M4, M249, MK-12, M8 a L110</Czech>
<Russian>Патрон: 5.56x45 мм &lt;br/&gt;Количество: 100 &lt;br/&gt;Используется в: G36, MG36, M16, M4, M249, MK-12, M8, L110</Russian>
<Polish>Kaliber: 5.56x45mm &lt;br/&gt;Naboje: 100 &lt;br/&gt;Używane w: G36, MG36, M16, M4, M249, MK-12, M8 i L110</Polish>
<Hungarian>Kaliber: 5.56x45mm &lt;br/&gt; Töltények: 100 &lt;br/&gt; Hozzá tartozó fegyver: G36, MG36, M16, M4, M249, MK-12, M8 and L110</Hungarian>
</Key>
<!-- AK107 -->
<Key ID="STR_DZ_WPN_AK107_NAME">
<English>AK-107</English>
<Russian>АК-107</Russian>
</Key>
<Key ID="STR_DZ_WPN_AK107_GL_NAME">
<English>AK-107 GP-25</English>
<Russian>АК-107 ГП-25</Russian>
</Key>
<Key ID="STR_DZ_WPN_AK107_KOBRA_NAME">
<English>AK-107 Kobra</English>
<Russian>АК-107 Кобра</Russian>
</Key>
<Key ID="STR_DZ_WPN_AK107_GL_KOBRA_NAME">
<English>AK-107 GP-25 Kobra</English>
<Russian>АК-107 ГП-25 Кобра</Russian>
</Key>
<Key ID="STR_DZ_WPN_AK107_PSO1_NAME">
<English>AK-107 PSO-1</English>
<Russian>АК-107 ПСО-1</Russian>
</Key>
<Key ID="STR_DZ_WPN_AK107_GL_PSO1_NAME">
<English>AK-107 GP-25 PSO-1</English>
<Russian>АК-107 ГП-25 ПСО-1</Russian>
</Key>
<!--PET waterbottles -->
<Key ID="STR_EQUIP_NAME_WBPET_01">
<English>Water Bottle PET (Empty)</English>
<German>Wasserflasche PET (Leer)</German>
</Key>
<Key ID="STR_EQUIP_DESC_WBPET_01">
<English>A PET bottle of water that is empty. It might be useful to fill it with water again.</English>
<German>Eine leere Plastik-Wasserflasche. Sie könnte nützlich sein, um sie wieder mit Wasser zu füllen.</German>
</Key>
<Key ID="STR_EQUIP_NAME_WBPET_02">
<English>Water Bottle PET (Broken)</English>
<German>Wasserflasche PET (Undicht)</German>
</Key>
<Key ID="STR_EQUIP_DESC_WBPET_02">
<English>Broken PET Water Bottle that might be repairable.</English>
<German>Eine undichte Plastik-Wasserflasche, die repariert werden kann.</German>
</Key>
<Key ID="STR_EQUIP_NAME_WBPET_03">
<English>Water Bottle PET</English>
<German>Wasserflasche PET</German>
</Key>
<Key ID="STR_EQUIP_DESC_WBPET_03">
<English>A PET bottle of water that has been filled and can be consumed.</English>
<German>Eine Plastik-Wasserflasche, gefüllt mit nicht abgekochtem Wasser.</German>
</Key>
<Key ID="STR_EQUIP_NAME_WBPET_04">
<English>Water Bottle PET (Boiled)</English>
<German>Wasserflasche PET (Abgekocht)</German>
</Key>
<Key ID="STR_EQUIP_DESC_WBPET_04">
<English>A PET bottle of boiled water that has been filled and can be consumed.</English>
<German>Eine Plastik-Wasserflasche gefüllt mit abgekochtem Wasser.</German>
</Key>
<Key ID="STR_EQUIP_NAME_WBPET_05">
<English>Herbal Drink (PET)</English>
<German>Kräutertrunk (PET)</German>
</Key>
<Key ID="STR_EQUIP_DESC_WBPET_05">
<English>A drink mixed with herbs that may help heal infection.</English>
<German>Ein Getränk aus Kräutern, welches bei Infektionen helfen könnte.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE1OZ">
<English>Water Bottle PET (1oz)</English>
<German>Wasserflasche PET (100ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE1OZ_DESC">
<English>Water Bottle PET with 1oz of water.</English>
<German>Wasserflasche PET mit 100ml Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE2OZ">
<English>Water Bottle PET (2oz)</English>
<German>Wasserflasche PET (200ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE2OZ_DESC">
<English>Water Bottle PET with 2oz of water.</English>
<German>Wasserflasche PET mit 200ml Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE3OZ">
<English>Water Bottle PET (3oz)</English>
<German>Wasserflasche PET (300ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE3OZ_DESC">
<English>Water Bottle PET with 3oz of water.</English>
<German>Wasserflasche PET mit 300ml Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE4OZ">
<English>Water Bottle PET (4oz)</English>
<German>Wasserflasche PET (400ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE4OZ_DESC">
<English>Water Bottle PET with 4oz of water.</English>
<German>Wasserflasche PET mit 400ml Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE5OZ">
<English>Water Bottle PET (5oz)</English>
<German>Wasserflasche PET (500ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE5OZ_DESC">
<English>Water Bottle PET with 5oz of water.</English>
<German>Wasserflasche PET mit 500ml Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE6OZ">
<English>Water Bottle PET (6oz)</English>
<German>Wasserflasche PET (600ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE6OZ_DESC">
<English>Water Bottle PET with 6oz of water.</English>
<German>Wasserflasche PET mit 600ml Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE7OZ">
<English>Water Bottle PET (7oz)</English>
<German>Wasserflasche PET (700ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE7OZ_DESC">
<English>Water Bottle PET with 7oz of water.</English>
<German>Wasserflasche PET mit 700ml Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE8OZ">
<English>Water Bottle PET (8oz)</English>
<German>Wasserflasche PET (800ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE8OZ_DESC">
<English>Water Bottle PET with 8oz of water.</English>
<German>Wasserflasche PET mit 800ml Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE9OZ">
<English>Water Bottle PET (9oz)</English>
<German>Wasserflasche PET (900ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE9OZ_DESC">
<English>Water Bottle PET with 9oz of water.</English>
<German>Wasserflasche PET mit 900ml Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE1OZBOILED">
<English>Water Bottle PET (Boiled 1oz)</English>
<German>Wasserflasche PET (Abgek. 100ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE1OZBOILED_DESC">
<English>Water Bottle PET with 1oz of boiled water.</English>
<German>Wasserflasche PET mit 100ml abgekochtem Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE2OZBOILED">
<English>Water Bottle PET (Boiled 2oz)</English>
<German>Wasserflasche PET (Abgek. 200ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE2OZBOILED_DESC">
<English>Water Bottle PET with 2oz of boiled water.</English>
<German>Wasserflasche PET mit 200ml abgekochtem Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE3OZBOILED">
<English>Water Bottle PET (Boiled 3oz)</English>
<German>Wasserflasche PET (Abgek. 300ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE3OZBOILED_DESC">
<English>Water Bottle PET with 3oz of boiled water.</English>
<German>Wasserflasche PET mit 300ml abgekochtem Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE4OZBOILED">
<English>Water Bottle PET (Boiled 4oz)</English>
<German>Wasserflasche PET (Abgek. 400ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE4OZBOILED_DESC">
<English>Water Bottle PET with 4oz of boiled water.</English>
<German>Wasserflasche PET mit 400ml abgekochtem Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE5OZBOILED">
<English>Water Bottle PET (Boiled 5oz)</English>
<German>Wasserflasche PET (Abgek. 500ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE5OZBOILED_DESC">
<English>Water Bottle PET with 5oz of boiled water.</English>
<German>Wasserflasche PET mit 500ml abgekochtem Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE6OZBOILED">
<English>Water Bottle PET (Boiled 6oz)</English>
<German>Wasserflasche PET (Abgek. 600ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE6OZBOILED_DESC">
<English>Water Bottle PET with 6oz of boiled water.</English>
<German>Wasserflasche PET mit 600ml abgekochtem Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE7OZBOILED">
<English>Water Bottle PET (Boiled 7oz)</English>
<German>Wasserflasche PET (Abgek. 700ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE7OZBOILED_DESC">
<English>Water Bottle PET with 7oz of boiled water.</English>
<German>Wasserflasche PET mit 700ml abgekochtem Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE8OZBOILED">
<English>Water Bottle PET (Boiled 8oz)</English>
<German>Wasserflasche PET (Abgek. 800ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE8OZBOILED_DESC">
<English>Water Bottle PET with 8oz of boiled water.</English>
<German>Wasserflasche PET mit 800ml abgekochtem Wasser.</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE9OZBOILED">
<English>Water Bottle PET (Boiled 9oz)</English>
<German>Wasserflasche PET (Abgek. 900ml)</German>
</Key>
<Key ID="STR_EPOCH_PET_WATERBOTTLE9OZBOILED_DESC">
<English>Water Bottle PET with 9oz of boiled water.</English>
<German>Wasserflasche PET mit 900ml abgekochtem Wasser.</German>
</Key>
<!--dayz mod crash site display names-->
<Key ID="STR_EPOCH_CRASHSITE1">
<English>Mi-8 Wreck (Military)</English>
<German>Mi-8 Wrack (Militär)</German>
</Key>
<Key ID="STR_EPOCH_CRASHSITE2">
<English>Mi-8 Wreck (Civil)</English>
<German>Mi-8 Wrack (Zivil)</German>
</Key>
<Key ID="STR_EPOCH_CRASHSITE3">
<English>UH-1Y Wreck</English>
<German>UH-1Y Wrack</German>
</Key>
<Key ID="STR_EPOCH_CRASHSITE4">
<English>HC3 Merlin Wreck</English>
<German>HC3 Merlin Wrack</German>
</Key>
<!--Namalsk compatibility-->
<Key ID="STR_EQUIP_NAME_43">
<English>Winter Ghillie Suit</English>

View File

@@ -97,6 +97,13 @@ _isMagazine = {
_return
};
_isBackpack = {
private ["_item","_return"];
_item = _this select 0;
_return = (str(configfile >> "cfgVehicles" >> _item) != "");
_return
};
_IDCsArray = [
[107],
[121],
@@ -421,6 +428,11 @@ private ["_inputItem","_return"];
_return = (_name);
};
if ([_inputItem] call _isBackpack) then {
_name = getText(configfile >> "cfgVehicles" >> _inputItem >> "descriptionShort");
_return = ( _name);
};
_return
};
@@ -439,6 +451,11 @@ _itemName = {
_return = ( _name);
};
if ([_item] call _isBackpack) then {
_name = getText(configfile >> "cfgVehicles" >> _item >> "displayName");
_return = ( _name);
};
_return
};

View File

@@ -1144,7 +1144,7 @@ class FSM
init = /*%FSM<STATEINIT""">*/"if (_debug == 1) then {diag_log [diag_tickTime,'Initialize'];};" \n
"" \n
"//Medical" \n
"dayz_medicalH = [] execVM ""\z\addons\dayz_code\medical\init_medical.sqf""; //Medical Monitor Script (client only)" \n
"//dayz_medicalH = [] execVM ""\z\addons\dayz_code\medical\init_medical.sqf""; //Medical Monitor Script (client only)" \n
"[player] call fnc_usec_damageHandle;" \n
"" \n
"if (r_player_unconscious) then {" \n

View File

@@ -7,7 +7,7 @@ sched_medical_slow = { // 10 seconds
//Do not global send
player setVariable["USEC_BloodQty", r_player_blood, false];
player setVariable["medForceUpdate", true, false];
//Send only to server
//Send only to server
PVDZ_serverStoreVar = [player, "USEC_BloodQty", r_player_blood];
publicVariableServer "PVDZ_serverStoreVar";
};
@@ -18,7 +18,9 @@ sched_medical_slow = { // 10 seconds
sched_medical_init = { [ []spawn{} ] };
sched_medical = { // 1 second
HIDE_FSM_VARS
private "_unconHdlr";
private ["_unconHdlr","_lowBlood"];
_unconHdlr = _this select 0;
if (r_player_blood == r_player_bloodTotal) then {
@@ -26,7 +28,7 @@ sched_medical = { // 1 second
};
//r_player_unconscious = getVariable ["NORRN_unconscious", true];
if (r_player_blood <= 0) then {
[dayz_sourceBleeding,"find"] call player_death;
};
@@ -38,14 +40,29 @@ sched_medical = { // 1 second
};
};
if ((r_player_blood <= 3000) and !r_player_unconscious) then {
if (random 100 > 99) then {
if (!r_player_unconscious && {(r_player_blood/r_player_bloodTotal) < 0.35}) then {
r_player_lowblood = true;
playSound "heartbeat_1";
addCamShake [2, 0.5, 25];
if (r_player_lowblood) then {
if (!dayz_soundMuted) then {
// muted is 0.25, so this is always higher
0 fadeSound ((r_player_blood/r_player_bloodTotal) + 0.5);
};
"dynamicBlur" ppEffectEnable true;"dynamicBlur" ppEffectAdjust [random 4]; "dynamicBlur" ppEffectCommit 0.2;
};
_lowBlood = player getVariable ["USEC_lowBlood", false];
if ((r_player_blood < r_player_bloodTotal) and {!_lowBlood}) then {
player setVariable["USEC_lowBlood",true,true];
};
if (r_player_blood <= 3000 && {random 100 > 99}) then {
[player, ((random 0.1) + 0.2)] call fnc_usec_damageUnconscious;
};
};
//Handle Unconscious player
if ((r_player_unconscious) and (!r_player_unconsciousInProgress) and (scriptDone _unconHdlr)) then {
if ((r_player_unconscious) and {!r_player_unconsciousInProgress} and {scriptDone _unconHdlr}) then {
//localize "CLIENT: Start Unconscious Function";
_unconHdlr = [] spawn fnc_usec_unconscious;
};
@@ -62,7 +79,7 @@ sched_medical = { // 1 second
[_unconHdlr]
};
sched_medical_effects_init = {
sched_medical_effects_init = {
private ["_hndCC", "_hndDB", "_hndRB"];
_hndCC = ppEffectCreate ["colorCorrections", 3];
@@ -72,17 +89,18 @@ sched_medical_effects_init = {
_hndRB = ppEffectCreate ["radialBlur", 1];
_hndRB ppEffectEnable true;
_hndRB ppEffectAdjust [0, 0, 0.5, 0.5];
_hndRB ppEffectCommit 0;
_hndRB ppEffectCommit 0;
[ _hndCC, _hndDB, _hndRB ]
};
sched_medical_effects = {
sched_medical_effects = {
// every 2 seconds:
// change saturation, blur and vignetting according to blood level
// Shivering if character temperature is near the minimum
private ["_hndCC", "_hndDB", "_tmp1", "_tmp2", "_tmp3"];
private ["_hndCC", "_hndDB", "_tmp1", "_tmp2", "_tmp3","_hndRB"];
_hndCC = _this select 0;
_hndDB = _this select 1;
_hndRB = _this select 2;
@@ -114,7 +132,7 @@ sched_medical_effects = {
[_hndCC, _hndDB, _hndRB] ppEffectCommit 1.5;
//Add Shivering
if (dayz_temperatur <= (0.125 * (dayz_temperaturmax - dayz_temperaturmin) + dayz_temperaturmin) and ((vehicle player == player and speed player < 5) or (vehicle player != player))) then {
if (dayz_temperatur <= (0.125 * (dayz_temperaturmax - dayz_temperaturmin) + dayz_temperaturmin) and {(vehicle player == player and speed player < 5) or (vehicle player != player)}) then {
addCamShake [0.6 * (dayz_temperaturmin / dayz_temperatur), 2, 30];
};
@@ -125,15 +143,15 @@ sched_medical_effectsSlow = {
// every 10 seconds
HIDE_FSM_VARS
if (!r_player_unconscious && (r_player_infected or r_player_inpain)) then {
if (!r_player_unconscious && {r_player_infected or r_player_inpain}) then {
//Original pain shake was stronger [2, 1, 25]
//Low blood still uses strong shake in init_medical.sqf
addCamShake [1, 1, 20];
if (!r_player_infected) then {
playSound "breath_1"; //In pain
} else {
if (1 > random 2 && (speed player < 5 or {vehicle player != player})) then {
if ((1 > random 2) && {speed player < 5 or {vehicle player != player}}) then {
[player,"cough",1,false] call dayz_zombieSpeak;
};
};

View File

@@ -85,7 +85,7 @@ if (_characterID != "?") then {
};
} else {
//Done in server_playerSync above if player is alive
{[_x,"gear"] call server_updateObject} count (nearestObjects [_playerPos,DayZ_GearedObjects,10]);
{[_x,"gear"] call server_updateObject} count (nearestObjects [[_playerObj] call FNC_GetPos,DayZ_GearedObjects,10]);
};
[_playerUID,_characterID,3,_playerName,(_playerPos call fa_coor2str)] call dayz_recordLogin;
@@ -95,4 +95,4 @@ missionNamespace setVariable [_playerUID,nil];
if (alive _playerObj) then {
_playerObj call sched_co_deleteVehicle;
};
};

View File

@@ -230,4 +230,4 @@ if (Z_SingleCurrency) then { //update global coins
};
// Force gear updates for nearby vehicles/tents
{[_x,"gear"] call server_updateObject;} count nearestObjects [_charPos,DayZ_GearedObjects,10];
{[_x,"gear"] call server_updateObject;} count nearestObjects [[_character] call FNC_GetPos,DayZ_GearedObjects,10];

View File

@@ -1,14 +1,13 @@
// [_object,_type] spawn server_updateObject;
#include "\z\addons\dayz_server\compile\server_toggle_debug.hpp"
if (isNil "sm_done") exitWith {};
private ["_class","_objectID","_objectUID","_object_position","_isNotOk","_object","_type","_recorddmg","_forced","_lastUpdate","_needUpdate","_object_inventory","_object_damage","_objWallDamage","_object_killed","_object_maintenance","_object_variables","_totalDmg"];
private ["_class","_objectID","_objectUID","_isNotOk","_object","_type","_forced","_totalDmg"];
_object = _this select 0;
_type = _this select 1;
_recorddmg = false;
_isNotOk = false;
_forced = if (count _this > 2) then {_this select 2} else {false};
_totalDmg = if (count _this > 3) then {_this select 3} else {false};
_isNotOk = false;
_objectID = "0";
_objectUID = "0";
@@ -17,7 +16,7 @@ _objectID = _object getVariable ["ObjectID","0"];
_objectUID = _object getVariable ["ObjectUID","0"];
_class = typeOf _object;
if (typeName _objectID != "STRING" or (typeName _objectUID != "STRING")) then {
if (typeName _objectID != "STRING" || {typeName _objectUID != "STRING"}) then {
#ifdef OBJECT_DEBUG
diag_log (format["Non-string Object: ID %1 UID %2", _objectID, _objectUID]);
#endif
@@ -26,17 +25,16 @@ if (typeName _objectID != "STRING" or (typeName _objectUID != "STRING")) then {
_objectUID = nil;
};
if (!(_class in DZE_safeVehicle) && !locked _object) then {
if (!(_class in DZE_safeVehicle) && {!locked _object}) then {
//diag_log format["Object: %1, ObjectID: %2, ObjectUID: %3",_object,_objectID,_objectUID];
if (!(_objectID in dayz_serverIDMonitor) && isNil {_objectUID}) then {
if (!(_objectID in dayz_serverIDMonitor) && {isNil "_objectUID"}) then {
//force fail
_objectID = nil;
_objectUID = nil;
_objectUID = nil;
};
if ((isNil {_objectID}) && (isNil {_objectUID})) then {
_object_position = getPosATL _object;
if (isNil "_objectID" && {isNil "_objectUID"}) then {
#ifdef OBJECT_DEBUG
diag_log format["Object %1 with invalid ID at pos %2",_class,_object_position];
diag_log format["Object %1 with invalid ID at pos %2",_class,getPosATL _object];
#endif
_isNotOk = true;
};
@@ -46,263 +44,36 @@ if (_isNotOk) exitWith {
//deleteVehicle _object;
};
_lastUpdate = _object getVariable ["lastUpdate",diag_tickTime];
_needUpdate = _object in needUpdate_objects;
// TODO ----------------------
_object_position = {
private ["_position","_worldspace","_fuel","_key"];
_position = getPosATL _object;
//_worldspace = [round (direction _object),_position];
_worldspace = [getDir _object, _position] call AN_fnc_formatWorldspace; // Precise Base Building 1.0.5
_fuel = if (_class isKindOf "AllVehicles") then {fuel _object} else {0};
_key = format["CHILD:305:%1:%2:%3:",_objectID,_worldspace,_fuel];
_key call server_hiveWrite;
#ifdef OBJECT_DEBUG
diag_log ("HIVE: WRITE: "+ str(_key));
#endif
};
_object_inventory = {
private ["_inventory","_key","_isNormal","_coins"];
if (_class isKindOf "TrapItems") then {
_inventory = [["armed",_object getVariable ["armed",false]]];
} else {
_isNormal = true;
if (DZE_permanentPlot && (_class == "Plastic_Pole_EP1_DZ")) then {
_isNormal = false;
_inventory = _object getVariable ["plotfriends", []]; //We're replacing the inventory with UIDs for this item
};
if (DZE_doorManagement && (_class in DZE_DoorsLocked)) then {
_isNormal = false;
_inventory = _object getVariable ["doorfriends", []]; //We're replacing the inventory with UIDs for this item
};
if (_isNormal) then {
_inventory = [getWeaponCargo _object, getMagazineCargo _object, getBackpackCargo _object];
};
};
_previous = str(_object getVariable["lastInventory",[]]);
if (str _inventory != _previous) then {
_object setVariable["lastInventory",_inventory];
if (_objectID == "0") then {
_key = format["CHILD:309:%1:",_objectUID] + str _inventory + ":";
} else {
_key = format["CHILD:303:%1:",_objectID] + str _inventory + ":";
};
if (Z_SingleCurrency) then {
_coins = _object getVariable [Z_MoneyVariable, -1]; //set to invalid value if getVariable fails to prevent overwriting of coins in DB
_key = _key + str _coins + ":";
};
#ifdef OBJECT_DEBUG
diag_log ("HIVE: WRITE: "+ str(_key));
#endif
_key call server_hiveWrite;
};
};
_object_damage = {
//Allow dmg process
private ["_hitpoints","_array","_hit","_selection","_key","_damage","_allFixed"];
_hitpoints = _object call vehicle_getHitpoints;
_damage = damage _object;
_array = [];
_allFixed = true;
{
_hit = [_object,_x] call object_getHit;
if ((_hit select 0) > 0) then {
_allFixed = false;
_array set [count _array,[(_hit select 1),(_hit select 0)]];
//diag_log format ["Section Part: %1, Dmg: %2",(_hit select 1),(_hit select 0)];
} else {
_array set [count _array,[(_hit select 1),0]];
};
} forEach _hitpoints;
if (_allFixed && !_totalDmg) then {_object setDamage 0;};
if (_forced) then {
if (_object in needUpdate_objects) then {needUpdate_objects = needUpdate_objects - [_object];};
_recorddmg = true;
} else {
//Prevent damage events for the first 10 seconds of the servers live.
if (diag_ticktime - _lastUpdate > 10) then {
if !(_object in needUpdate_objects) then {
//diag_log format["DEBUG: Monitoring: %1",_object];
needUpdate_objects set [count needUpdate_objects, _object];
_recorddmg = true;
};
};
};
if (_recorddmg) then {
if (_objectID == "0") then {
_key = format["CHILD:306:%1:",_objectUID] + str _array + ":" + str _damage + ":";
} else {
_key = format["CHILD:306:%1:",_objectID] + str _array + ":" + str _damage + ":";
};
#ifdef OBJECT_DEBUG
diag_log ("HIVE: WRITE: "+ str(_key));
#endif
_key call server_hiveWrite;
};
};
//Walls
_objWallDamage = {
private ["_key","_damage"];
_damage = (damage _object);
if (_objectID == "0") then {
_key = format["CHILD:306:%1:%2:%3:",_objectUID,[],_damage];
} else {
_key = format["CHILD:306:%1:%2:%3:",_objectID,[],_damage];
};
#ifdef OBJECT_DEBUG
diag_log ("HIVE: WRITE: "+ str(_key));
#endif
_key call server_hiveWrite;
};
_object_killed = {
private ["_clientKey","_exitReason","_index","_key","_playerUID"];
if (count _this != 6) exitWith {
diag_log "Server_UpdateObject error: wrong parameter format";
};
_playerUID = _this select 4;
_clientKey = _this select 5;
_index = dayz_serverPUIDArray find _playerUID;
_exitReason = switch true do {
//Can't use owner because player may already be dead, can't use distance because player may be far from vehicle wreck
case (_clientKey == dayz_serverKey): {""};
case (_index < 0): {
format["Server_UpdateObject error: PUID NOT FOUND ON SERVER. PV ARRAY: %1",_this]
};
case ((dayz_serverClientKeys select _index) select 1 != _clientKey): {
format["Server_UpdateObject error: CLIENT AUTH KEY INCORRECT OR UNRECOGNIZED. PV ARRAY: %1",_this]
};
case (alive _object && {!(_class isKindOf "TentStorage_base" or _class isKindOf "IC_Tent")}): {
format["Server_UpdateObject error: object kill request on living object. PV ARRAY: %1",_this]
};
default {""};
};
if (_exitReason != "") exitWith {diag_log _exitReason};
_object setDamage 1;
if (_objectID == "0") then {
//Need to update hive to make a new call to allow UID to be updated for a killed event
//_key = format["CHILD:306:%1:%2:%3:",_objectUID,[],1];
_key = format["CHILD:310:%1:",_objectUID];
} else {
_key = format["CHILD:306:%1:%2:%3:",_objectID,[],1];
};
_key call server_hiveWrite;
if (_playerUID == "SERVER") then {
#ifdef OBJECT_DEBUG
diag_log format["DELETE: Server requested destroy on object %1 ID:%2 UID:%3",_class,_objectID,_objectUID];
#endif
} else {
diag_log format["DELETE: PUID(%1) requested destroy on object %2 ID:%3 UID:%4",_playerUID,_class,_objectID,_objectUID];
};
if (_class in DayZ_removableObjects or (_class in DZE_isRemovable)) then {[_objectID,_objectUID] call server_deleteObjDirect;};
};
_object_maintenance = {
private ["_ownerArray","_key"];
_ownerArray = _object getVariable ["ownerArray",[]];
_accessArray = _object getVariable ["dayz_padlockCombination",[]];
_variables set [count _variables, ["ownerArray", _ownerArray]];
_variables set [count _variables, ["padlockCombination", _accessArray]];
_object setDamage 0;
if (_objectID == "0") then {
//_key = format["CHILD:309:%1:%2:",_objectUID,_ownerArray];
_key = format["CHILD:306:%1:%2:%3:",_objectUID,[],0]; //Wont work just now.
} else {
//_key = format["CHILD:303:%1:%2:",_objectID,_ownerArray];
_key = format["CHILD:306:%1:%2:%3:",_objectID,[],0];
};
// #ifdef OBJECT_DEBUG
diag_log ("HIVE: WRITE: Maintenance, "+ str(_key));
// #endif
_key call server_hiveWrite;
};
_object_variables = {
private ["_ownerArray","_key","_accessArray","_variables","_coins"];
_ownerArray = _object getVariable ["ownerArray",[]];
_accessArray = _object getVariable ["dayz_padlockCombination",[]];
_lockedArray = _object getVariable ["BuildLock",false];
//diag_log format ["[%1,%2]",_ownerArray,_accessArray];
_variables = [];
_variables set [count _variables, ["ownerArray", _ownerArray]];
_variables set [count _variables, ["padlockCombination", _accessArray]];
_variables set [count _variables, ["BuildLock", _lockedArray]];
if (_objectID == "0") then {
_key = format["CHILD:309:%1:%2:",_objectUID,_variables];
} else {
_key = format["CHILD:303:%1:%2:",_objectID,_variables];
};
if (Z_SingleCurrency) then {
_coins = _object getVariable [Z_MoneyVariable, -1];
_key = _key + str _coins + ":";
};
_key call server_hiveWrite;
};
_object setVariable ["lastUpdate",diag_ticktime,true];
switch (_type) do {
case "all": {
call _object_position;
call _object_inventory;
call _object_damage;
call {
if (_type == "all") exitwith {
[_object,_objectID] call server_obj_pos;
[_object,_objectID,_objectUID] call server_obj_inv;
[_object,_objectID,_objectUID,_forced,_totalDmg] call server_obj_dam;
};
case "position": {
call _object_position;
if (_type == "position") exitwith {
[_object,_objectID] call server_obj_pos;
};
case "gear": {
call _object_inventory;
if (_type == "gear") exitwith {
[_object,_objectID,_objectUID] call server_obj_inv;
};
case "maintenance": {
call _object_maintenance;
if (_type == "damage" || {_type == "repair"}) exitwith {
[_object,_objectID,_objectUID,_forced,_totalDmg] call server_obj_dam;
};
case "damage"; case "repair" : {
call _object_damage;
if (_type == "killed") exitwith {
private ["_playerUID", "_clientKey"];
if (count _this != 6) exitWith {
diag_log "Server_UpdateObject error: wrong parameter format";
};
_playerUID = _this select 4;
_clientKey = _this select 5;
[_object,_objectID,_objectUID,_playerUID,_clientKey] call server_obj_killed;
};
case "killed": {
_this call _object_killed;
};
case "accessCode"; case "buildLock" : {
call _object_variables;
};
case "objWallDamage": {
call _objWallDamage;
};
case "coins": {
if (_type == "coins") exitwith {
_object setVariable ["lastInventory",["forceUpdate"]];
call _object_inventory;
[_object,_objectID,_objectUID] call server_obj_inv;
};
};

View File

@@ -21,7 +21,7 @@ _exitReason = switch true do {
//If object or player was moved with setPos on client, position takes a second to update on server
//Coordinates can be used in place of object
case (_objPos distance _player > (Z_VehicleDistance + 10)): {
format["%1 error: Verification failed, player is too far from object. PV ARRAY: %2",_function,_params]
format["%1 error: Verification failed, player is too far from object. Distance: %2m/%3m limit PV ARRAY: %4",_function,round (_objPos distance _player),Z_VehicleDistance + 10,_params]
};
case (_index < 0): {
format["%1 error: PUID NOT FOUND ON SERVER. PV ARRAY: %2",_function,_params]

View File

@@ -0,0 +1,180 @@
#include "\z\addons\dayz_server\compile\server_toggle_debug.hpp"
server_obj_pos = {
private ["_object","_objectID","_class","_position","_worldspace","_fuel","_key"];
_object = _this select 0;
_objectID = _this select 1;
_class = typeOf _object;
_position = getPosATL _object;
//_worldspace = [round (direction _object),_position];
_worldspace = [getDir _object, _position] call AN_fnc_formatWorldspace; // Precise Base Building 1.0.5
_fuel = [0, fuel _object] select (_class isKindOf "AllVehicles");
_key = format["CHILD:305:%1:%2:%3:",_objectID,_worldspace,_fuel];
_key call server_hiveWrite;
#ifdef OBJECT_DEBUG
diag_log ("HIVE: WRITE: "+ str(_key));
#endif
};
server_obj_inv = {
private ["_object","_objectID", "_objectUID", "_class","_inventory","_key","_isNormal","_coins","_previous"];
_object = _this select 0;
_objectID = _this select 1;
_objectUID = _this select 2;
_class = typeOf _object;
if (_class isKindOf "TrapItems") then {
_inventory = [["armed",_object getVariable ["armed",false]]];
} else {
_isNormal = true;
if (DZE_permanentPlot && {_class == "Plastic_Pole_EP1_DZ"}) then {
_isNormal = false;
_inventory = _object getVariable ["plotfriends", []]; //We're replacing the inventory with UIDs for this item
};
if (DZE_doorManagement && {_class in DZE_DoorsLocked}) then {
_isNormal = false;
_inventory = _object getVariable ["doorfriends", []]; //We're replacing the inventory with UIDs for this item
};
if (_isNormal) then {
_inventory = [getWeaponCargo _object, getMagazineCargo _object, getBackpackCargo _object];
};
};
_previous = str(_object getVariable["lastInventory",[]]);
if (str _inventory != _previous) then {
_object setVariable ["lastInventory",_inventory];
if (_objectID == "0") then {
_key = format["CHILD:309:%1:",_objectUID] + str _inventory + ":";
} else {
_key = format["CHILD:303:%1:",_objectID] + str _inventory + ":";
};
if (Z_SingleCurrency) then {
_coins = _object getVariable [Z_MoneyVariable, -1]; //set to invalid value if getVariable fails to prevent overwriting of coins in DB
_key = _key + str _coins + ":";
};
#ifdef OBJECT_DEBUG
diag_log ("HIVE: WRITE: "+ str(_key));
#endif
_key call server_hiveWrite;
};
};
server_obj_dam = {
//Allow dmg process
private ["_object","_objectID", "_objectUID","_forced","_totalDmg","_recorddmg","_hitpoints","_array","_hit","_key","_damage","_allFixed","_lastUpdate"];
_object = _this select 0;
_objectID = _this select 1;
_objectUID = _this select 2;
_forced = _this select 3;
_totalDmg = _this select 4;
_recorddmg = false;
_hitpoints = _object call vehicle_getHitpoints;
_damage = damage _object;
_array = [];
_allFixed = true;
_lastUpdate = _object getVariable ["lastUpdate",diag_tickTime];
{
_hit = [_object,_x] call object_getHit;
if ((_hit select 0) > 0) then {
_allFixed = false;
_array set [count _array,[(_hit select 1),(_hit select 0)]];
//diag_log format ["Section Part: %1, Dmg: %2",(_hit select 1),(_hit select 0)];
} else {
_array set [count _array,[(_hit select 1),0]];
};
} count _hitpoints;
if (_allFixed && {!_totalDmg}) then {_object setDamage 0;};
if (_forced) then {
if (_object in needUpdate_objects) then {needUpdate_objects = needUpdate_objects - [_object];};
_recorddmg = true;
} else {
//Prevent damage events for the first 10 seconds of the servers live.
if (diag_ticktime - _lastUpdate > 10) then {
if !(_object in needUpdate_objects) then {
//diag_log format["DEBUG: Monitoring: %1",_object];
needUpdate_objects set [count needUpdate_objects, _object];
_recorddmg = true;
};
};
};
if (_recorddmg) then {
if (_objectID == "0") then {
_key = format["CHILD:306:%1:",_objectUID] + str _array + ":" + str _damage + ":";
} else {
_key = format["CHILD:306:%1:",_objectID] + str _array + ":" + str _damage + ":";
};
#ifdef OBJECT_DEBUG
diag_log ("HIVE: WRITE: "+ str(_key));
#endif
_key call server_hiveWrite;
};
};
server_obj_killed = {
private ["_object", "_objectID", "_objectUID", "_class","_clientKey","_exitReason","_index","_key","_playerUID"];
_object = _this select 0;
_objectID = _this select 1;
_objectUID = _this select 2;
_playerUID = _this select 3;
_clientKey = _this select 4;
_class = typeOf _object;
_index = dayz_serverPUIDArray find _playerUID;
_exitReason = call {
//Can't use owner because player may already be dead, can't use distance because player may be far from vehicle wreck
if (_clientKey == dayz_serverKey) exitwith {""};
if (_index < 0) exitwith {
format["Server_UpdateObject error: PUID NOT FOUND ON SERVER. PV ARRAY: %1",_this]
};
if ((dayz_serverClientKeys select _index) select 1 != _clientKey) exitwith {
format["Server_UpdateObject error: CLIENT AUTH KEY INCORRECT OR UNRECOGNIZED. PV ARRAY: %1",_this]
};
if (alive _object && {!(_class isKindOf "TentStorage_base" or _class isKindOf "IC_Tent")}) exitwith {
format["Server_UpdateObject error: object kill request on living object. PV ARRAY: %1",_this]
};
if (1==1) exitwith {""};
};
if (_exitReason != "") exitWith {diag_log _exitReason};
_object setDamage 1;
if (_objectID == "0") then {
//Need to update hive to make a new call to allow UID to be updated for a killed event
//_key = format["CHILD:306:%1:%2:%3:",_objectUID,[],1];
_key = format["CHILD:310:%1:",_objectUID];
} else {
_key = format["CHILD:306:%1:%2:%3:",_objectID,[],1];
};
_key call server_hiveWrite;
if (_playerUID == "SERVER") then {
#ifdef OBJECT_DEBUG
diag_log format["DELETE: Server requested destroy on object %1 ID:%2 UID:%3",_class,_objectID,_objectUID];
#endif
} else {
diag_log format["DELETE: PUID(%1) requested destroy on object %2 ID:%3 UID:%4",_playerUID,_class,_objectID,_objectUID];
};
if (_class in DayZ_removableObjects || {_class in DZE_isRemovable}) then {[_objectID,_objectUID] call server_deleteObjDirect;};
};

View File

@@ -21,6 +21,7 @@ dayz_serverKey = toString dayz_serverKey;
server_playerLogin = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerLogin.sqf";
server_playerSetup = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerSetup.sqf";
server_onPlayerDisconnect = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_onPlayerDisconnect.sqf";
call compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\updateObject_functions.sqf";
server_updateObject = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_updateObject.sqf";
server_playerDied = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_playerDied.sqf";
server_publishObj = compile preprocessFileLineNumbers "\z\addons\dayz_server\compile\server_publishObject.sqf"; //Creates the object in DB

View File

@@ -1,6 +1,5 @@
//new
5 \{
5 \(
5 ;
5 &
5 %

View File

@@ -11,8 +11,8 @@
5 attachTo !"(_variation * 2)) - _variation)];\n_bolt attachTo [_hitObject,_val,_hitMemoryPt];" !"player playActionNow \"PutDown\";\nuiSleep 2;\n_flare attachTo [player,[0,0,0],\"granat2\"];" !"tchmove \"ainjpfalmstpsnonwrfldnon_carried_still\";\n_dragee attachto [_unit,[-0.2, 0.2, 0]];" !"_source setDropInterval 0.02;\n_point attachTo [_unit,_modelPos,_wound];" !" attachto [_v,[0,0,0],\"destructionEffect" !"publicVariable \"PVDZ_drg_RaDrag\";\n\n_dragee attachto [_unit,[0.1, 1.01, 0]];" !="_l1 attachTo [_lh,[0,0,0],\"light\"];" !"_objectHelper attachTo [player,_offset];" !"_object attachTo [player,_offset];\n\n_position = getPosATL _object;" !="_vehicle attachTo [_liftHeli,[0,0,-7]];" !="_obj attachTo [_axis];" !"_objectSnapGizmo attachTo [_object,[_x select 0,_x select 1,_x select 2]];" !="_vehicle attachTo [_towTruck,[1.3,-2,2.3]];" !"localize \"STR_EPOCH_ACTIONS_ATTACHTOHELI\","
5 buttonSetAction
5 callExtension
5 camCreate !"camCreate (player modeltoWorld [0,0,2]);\n0.2 fadeSound 0.1;\nDayz_" !"_body;\n_playerID = getPlayerUID player;\n\n\n_camera = \"camera\" camCreate _death" !="_camera = \"camera\" camCreate [12222.323, 3415.7791, -0.059190542]"
5 cameraEffect !"0.2 fadeSound 0.1;\nDayz_BuildCamera cameraeffect [\"External\", \"TOP\"];" !"cameraEffect [\"Internal\",\"TOP\"];\n_camera camSetTarget _deathPos;\n_camera camSetPos [_deathPos select" !"r_Simulation\";\n\n_camera cameraEffect [\"Terminate" !"cameraEffect [\"internal\",\"back\"]\n\n_camera camPrepareTarget [6433.5"
5 camCreate !"camCreate (player modeltoWorld [0,0,2]);\n0.2 fadeSound 0.1;\nDayz_" !"_body;\n_playerID = getPlayerUID player;\n\n\n_camera = \"camera\" camCreate _death" !="_camera = \"camera\" camCreate [12222.323, 3415.7791, -0.059190542]" !"kdy = cos _dir * _size;\n_kdz = _size;\n\n\n_camera ="
5 cameraEffect !"0.2 fadeSound 0.1;\nDayz_BuildCamera cameraeffect [\"External\", \"TOP\"];" !"cameraEffect [\"Internal\",\"TOP\"];\n_camera camSetTarget _deathPos;\n_camera camSetPos [_deathPos select" !"r_Simulation\";\n\n_camera cameraEffect [\"Terminate" !"cameraEffect [\"internal\",\"back\"]\n\n_camera camPrepareTarget [6433.5" !"kdy = cos _dir * _size;\n_kdz = _size;\n\n\n_camera ="
5 closeDisplay !"'closeDisplay'" !"closeDisplay 0" !"closeDisplay 2" !"if (!isNil \"closeDisplay\") then {"
1 compile !"ca\\communityconfiguration" !"ca\\Data\\" !"ca\\missions" !"ca\\modules" !"ca\\ui\\" !"ca\\Warfare2\\" !"scriptName \"Functions\\systems\\fn_inv" !"scriptName \"MP\\data\\script" !"code = compile preprocessFileLineNumbers (BIS_PathMPscriptCommands" !"t = missionConfigFile >> \"onMinimapScript" !="_this call (call compile GetText (configFile >> \"CfgAmmo\" >> _amm >> \"muzzleEffect\"));" !"z\\addons\\dayz_code\\" !"_menu ctrlSetEventHandler [\"ButtonClick\",_compile];\n};\n_pos set [3" !"{ _x set [1, compile (_x select 1)]; }" !"silver_1oz_b);\n\n{ \nif (!isNil {call compile" !"Var = compile format[\"epoch_death_board_record_"
5 createAgent !="_agent = createAgent [_type, _position, [], _radius, \"CAN_COLLIDE\"];" !="_agent = if (_type == \"Pastor\") then {createAgent [_type, _Pos, [], 0, \"NONE\"]} else {createAgent [_type, _Pos, [], 0, \"FORM\"]};" !="_dog = createAgent [_type, _Pos, [], 0, \"NONE\"];"
@@ -68,7 +68,7 @@
5 setVehicle !"if(_status) then {\n_vehicle setVehicleLock \"LOCKED\";\n} else {\n_vehicle setVehicleLock \"UNLOCKED\";\n};"
5 setViewDistance
5 sideLogic !"publicVariable \"BIS_MPF_logic\";"
5 switchCamera !"\"switchCamera\", " !"rswitchCamera" !="player switchCamera (Dayz_constructionContext select 2);" !"player switchCamera _currentCamera;\nif (_currentWpn !="
5 switchCamera !"\"switchCamera\", " !"rswitchCamera" !="player switchCamera (Dayz_constructionContext select 2);" !"player switchCamera _currentCamera;\nif (_currentWpn !=" !"< 150) && random 1 > 0.5) then {\n_killer switchcamera"
5 systemChat !="systemChat format[localize \"str_missing_to_do_this\", _x];" !"systemChat (localize " !"systemChat format[localize \"STR_EPOCH_" !"systemChat localize \"STR_EPOCH_" !"case \"system\": {systemChat _message;};"
5 title !"titleCut [\"\", \"BLACK " !"\"titleCut\", " !"\"titleText\"" !="rtitleCut = 'titleCut'" !"rtitleCutc" !="rtitleText = 'titleText'" !"rtitleTextc" !"(_missionTextListPath >> \"titles\")" !"(_display displayCtrl _titleIDC) ctrlShow false;" !"titleText [format[localize \"str_return_lobby\", _x" !",\"_titleText\"" !"localize 'STR_UI_GENDER_TITLE';\n_timeNem" !="scriptName \"MP\\data\\scriptCommands\\titleText.sqf\";" !_fillTradeTitle !_bldTxtStringTitle !"localize \"str_halo_altitude_speed"
5 toString !"_animCheck = toString ([(_animStateArray select 0),(_animStateArray select 1)" !="_skinToModel = toString (_finalArray);" !="{_textArrayTemp = _textArrayTemp + [tostring [_x]]} foreach _line;" !="_cmpt = toString _cmpt;" !="_objName = toLower(toString(_objName));" !"if (toString _hayArr != _needle) then {" !="_type = toString _typeA;" !="_anim4 = toString _anim4;" !"{(count _stance>17)}) then {toString [_stance select 17]}" !"BIS_fnc_timeToString" !"02, if (typeName _name == \"ARRAY\") then {toString _name} else {_name}];"

View File

@@ -7,7 +7,9 @@
-- ----------------------------
DROP FUNCTION IF EXISTS `FindVehicleKeysCount`;
DELIMITER ;;
CREATE FUNCTION `FindVehicleKeysCount`(`keyId` INT) RETURNS int(11)
CREATE FUNCTION `FindVehicleKeysCount`(`keyId` INT)
RETURNS int(11)
DETERMINISTIC
BEGIN
DECLARE totalKeys INT DEFAULT 0;
DECLARE keyName VARCHAR(32) DEFAULT "";
@@ -37,7 +39,9 @@ DELIMITER ;
-- ----------------------------
DROP FUNCTION IF EXISTS `DeleteNonKeyVehicles`;
DELIMITER ;;
CREATE FUNCTION `DeleteNonKeyVehicles`() RETURNS int(11)
CREATE FUNCTION `DeleteNonKeyVehicles`()
RETURNS int(11)
DETERMINISTIC
BEGIN
DELETE FROM
`Object_DATA`