rebase 1.0.1.13

This commit is contained in:
[VB]AWOL
2013-09-10 22:08:29 -05:00
132 changed files with 8484 additions and 3838 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -78,7 +78,7 @@ class Land_DZE_WoodDoor_Base: DZE_Housebase {
mapSize = 8; /* Size of the icon */ mapSize = 8; /* Size of the icon */
icon = "\ca\data\data\Unknown_object.paa"; /* Path to the picture shown in the editor. */ icon = "\ca\data\data\Unknown_object.paa"; /* Path to the picture shown in the editor. */
accuracy = 1000; accuracy = 1000;
armor = 150; /* "Lifepoints", if you like to call it that way.*/ armor = 200; /* "Lifepoints", if you like to call it that way.*/
destrType = "DestructBuilding"; /* type of destruction, when armor = 0 */ destrType = "DestructBuilding"; /* type of destruction, when armor = 0 */
scope = 2; /* Display it in the editor? 1 = No, 2 = Yes */ scope = 2; /* Display it in the editor? 1 = No, 2 = Yes */
offset[] = {0,1.5,0}; offset[] = {0,1.5,0};
@@ -98,6 +98,9 @@ class Land_DZE_WoodDoor_Base: DZE_Housebase {
maintainBuilding[] = {{"PartWoodPlywood",1},{"PartWoodLumber",1}}; maintainBuilding[] = {{"PartWoodPlywood",1},{"PartWoodLumber",1}};
}; };
class Land_DZE_WoodDoorLocked_Base: DZE_Housebase { class Land_DZE_WoodDoorLocked_Base: DZE_Housebase {
model = "\z\addons\dayz_epoch\models\small_wall_door_anim.p3d"; /* path to the object */ model = "\z\addons\dayz_epoch\models\small_wall_door_anim.p3d"; /* path to the object */
displayName = "Wood Door Base"; /* entry in Stringtable.csv */ displayName = "Wood Door Base"; /* entry in Stringtable.csv */
@@ -105,7 +108,7 @@ class Land_DZE_WoodDoorLocked_Base: DZE_Housebase {
mapSize = 8; /* Size of the icon */ mapSize = 8; /* Size of the icon */
icon = "\ca\data\data\Unknown_object.paa"; /* Path to the picture shown in the editor. */ icon = "\ca\data\data\Unknown_object.paa"; /* Path to the picture shown in the editor. */
accuracy = 1000; accuracy = 1000;
armor = 150; /* "Lifepoints", if you like to call it that way.*/ armor = 200; /* "Lifepoints", if you like to call it that way.*/
destrType = "DestructBuilding"; /* type of destruction, when armor = 0 */ destrType = "DestructBuilding"; /* type of destruction, when armor = 0 */
scope = 2; /* Display it in the editor? 1 = No, 2 = Yes */ scope = 2; /* Display it in the editor? 1 = No, 2 = Yes */
offset[] = {0,1.5,0}; offset[] = {0,1.5,0};
@@ -126,6 +129,35 @@ class Land_DZE_WoodDoorLocked_Base: DZE_Housebase {
lockable = 3; lockable = 3;
}; };
class CinderWallDoor_DZ_Base: DZE_Housebase {
model = "\z\addons\dayz_epoch\models\steel_garage_door.p3d"; /* path to the object */
displayName = "Block Garage Door Base"; /* entry in Stringtable.csv */
nameSound = "";
mapSize = 8; /* Size of the icon */
icon = "\ca\data\data\Unknown_object.paa"; /* Path to the picture shown in the editor. */
accuracy = 1000;
armor = 1600; /* "Lifepoints", if you like to call it that way.*/
destrType = "DestructBuilding"; /* type of destruction, when armor = 0 */
scope = 2; /* Display it in the editor? 1 = No, 2 = Yes */
offset[] = {0,1.5,0};
maintainBuilding[] = {{"MortarBucket",1}};
};
class CinderWallDoorLocked_DZ_Base: DZE_Housebase {
model = "\z\addons\dayz_epoch\models\steel_garage_door.p3d"; /* path to the object */
displayName = "Block Garage Door Base"; /* entry in Stringtable.csv */
nameSound = "";
mapSize = 8; /* Size of the icon */
icon = "\ca\data\data\Unknown_object.paa"; /* Path to the picture shown in the editor. */
accuracy = 1000;
armor = 1600; /* "Lifepoints", if you like to call it that way.*/
destrType = "DestructBuilding"; /* type of destruction, when armor = 0 */
scope = 2; /* Display it in the editor? 1 = No, 2 = Yes */
offset[] = {0,1.5,0};
maintainBuilding[] = {{"MortarBucket",1}};
lockable = 3;
};
/* Same name as stated in the Class DestructionEffects, but an "Land_" added infront*/ /* Same name as stated in the Class DestructionEffects, but an "Land_" added infront*/
class Land_rubble_wood_02 : ruins { class Land_rubble_wood_02 : ruins {
scope = 1; scope = 1;
@@ -430,3 +462,206 @@ class Land_DZE_GarageWoodDoorLocked: Land_DZE_WoodDoorLocked_Base {
}; };
}; };
}; };
class CinderWallDoorLocked_DZ: CinderWallDoorLocked_DZ_Base {
model = "\z\addons\dayz_epoch\models\steel_garage_locked.p3d";
displayName = "Block Garage Door Locked";
GhostPreview = "CinderWallDoorway_Preview_DZ";
/* Arma needs to know, how the animation trigger is triggered*/
class AnimationSources {
/* name must be identical to the one given by the model.cfg ("Open_Door")" */
class Open_door {
source = "user";
animPeriod = 4; /* duration in seconds */
initPhase = 0;
};
class Open_latch {
source = "user";
animPeriod = 1; /* duration in seconds */
initPhase = 0;
};
};
/* The entry to the actionmenu */
class UserActions
{
class Open_Door
{
displayName="Open Door";
onlyforplayer = true;
position="Door_knopf";
radius=3; /* visibility distance of the entry */
//condition="(this animationPhase ""Open_door"" == 0) and (this animationPhase ""Open_hinge"" == 1)";
condition="(this animationPhase ""Open_door"" == 0) and (this animationPhase ""Open_latch"" == 1)";
statement="this animate [""Open_door"", 1]";
};
class Close_Door : Open_Door
{
displayName="Close Door";
//condition="(this animationPhase ""Open_door"" == 1) and (this animationPhase ""Open_hinge"" == 1)";
condition="(this animationPhase ""Open_door"" == 1) and (this animationPhase ""Open_latch"" == 1)";
statement="this animate [""Open_door"", 0]";
};
class Lock_Door : Open_Door
{
displayName="Lock Door";
//condition="(this animationPhase ""Open_door"" == 0) and (this animationPhase ""Open_hinge"" == 1)";
condition="(DZE_Lock_Door == (this getvariable['CharacterID','0'])) and (this animationPhase ""Open_door"" == 0) and (this animationPhase ""Open_latch"" == 1)";
statement="this animate [""Open_latch"", 0]";
};
class Unlock_Door : Open_Door
{
displayName="Unlock Door";
//condition="(this animationPhase ""Open_door"" == 0) and (this animationPhase ""Open_hinge"" == 0)";
condition="(DZE_Lock_Door == (this getvariable['CharacterID','0'])) and (this animationPhase ""Open_door"" == 0) and (this animationPhase ""Open_latch"" == 0)";
statement="this animate [""Open_latch"", 1]";
};
class Unlock_Door_Dialog : Open_Door
{
displayName="Unlock Door";
//condition="(this animationPhase ""Open_door"" == 0) and (this animationPhase ""Open_hinge"" == 0)";
condition="DZE_Lock_Door != (this getvariable['CharacterID','0'])";
statement="dayz_selectedDoor = this;DZE_topCombo = 0;DZE_midCombo = 0;DZE_botCombo = 0;createdialog ""ComboLockUI""";
};
};
};
class CinderWallDoor_DZ: CinderWallDoor_DZ_Base {
model = "\z\addons\dayz_epoch\models\steel_garage_door.p3d";
displayName = "Block Garage Door";
GhostPreview = "CinderWallDoorway_Preview_DZ";
upgradeBuilding[] = {"CinderWallDoorLocked_DZ",{{"ItemComboLock",1}}};
/* Arma needs to know, how the animation trigger is triggered*/
class AnimationSources {
/* name must be identical to the one given by the model.cfg ("Open_Door")" */
class Open_door {
source = "user";
animPeriod = 4; /* duration in seconds */
initPhase = 0;
};
};
/* The entry to the actionmenu */
class UserActions
{
class Open_Door
{
displayName="Open Door";
onlyforplayer = true;
position="Door_knopf";
radius=3; /* visibility distance of the entry */
condition="this animationPhase ""Open_door"" < 0.5";
statement="this animate [""Open_door"", 1]";
};
class Close_Door : Open_Door
{
displayName="Close Door";
condition="this animationPhase ""Open_door"" >= 0.5";
statement="this animate [""Open_door"", 0]";
};
};
};
class CinderWallDoorSmallLocked_DZ: CinderWallDoorLocked_DZ_Base {
model = "\z\addons\dayz_epoch\models\Steel_door_locked.p3d";
displayName = "Block Door Locked";
GhostPreview = "CinderWallSmallDoorway_Preview_DZ";
/* Arma needs to know, how the animation trigger is triggered*/
class AnimationSources {
/* name must be identical to the one given by the model.cfg ("Open_Door")" */
class Open_door {
source = "user";
animPeriod = 4; /* duration in seconds */
initPhase = 0;
};
class Open_latch {
source = "user";
animPeriod = 1; /* duration in seconds */
initPhase = 0;
};
};
/* The entry to the actionmenu */
class UserActions
{
class Open_Door
{
displayName="Open Door";
onlyforplayer = true;
position="Door_knopf";
radius=3; /* visibility distance of the entry */
//condition="(this animationPhase ""Open_door"" == 0) and (this animationPhase ""Open_hinge"" == 1)";
condition="(this animationPhase ""Open_door"" == 0) and (this animationPhase ""Open_latch"" == 1)";
statement="this animate [""Open_door"", 1]";
};
class Close_Door : Open_Door
{
displayName="Close Door";
//condition="(this animationPhase ""Open_door"" == 1) and (this animationPhase ""Open_hinge"" == 1)";
condition="(this animationPhase ""Open_door"" == 1) and (this animationPhase ""Open_latch"" == 1)";
statement="this animate [""Open_door"", 0]";
};
class Lock_Door : Open_Door
{
displayName="Lock Door";
//condition="(this animationPhase ""Open_door"" == 0) and (this animationPhase ""Open_hinge"" == 1)";
condition="(DZE_Lock_Door == (this getvariable['CharacterID','0'])) and (this animationPhase ""Open_door"" == 0) and (this animationPhase ""Open_latch"" == 1)";
statement="this animate [""Open_latch"", 0]";
};
class Unlock_Door : Open_Door
{
displayName="Unlock Door";
//condition="(this animationPhase ""Open_door"" == 0) and (this animationPhase ""Open_hinge"" == 0)";
condition="(DZE_Lock_Door == (this getvariable['CharacterID','0'])) and (this animationPhase ""Open_door"" == 0) and (this animationPhase ""Open_latch"" == 0)";
statement="this animate [""Open_latch"", 1]";
};
class Unlock_Door_Dialog : Open_Door
{
displayName="Unlock Door";
//condition="(this animationPhase ""Open_door"" == 0) and (this animationPhase ""Open_hinge"" == 0)";
condition="DZE_Lock_Door != (this getvariable['CharacterID','0'])";
statement="dayz_selectedDoor = this;DZE_topCombo = 0;DZE_midCombo = 0;DZE_botCombo = 0;createdialog ""ComboLockUI""";
};
};
};
class CinderWallDoorSmall_DZ: CinderWallDoor_DZ_Base {
model = "\z\addons\dayz_epoch\models\Steel_door.p3d";
displayName = "Block Door";
GhostPreview = "CinderWallSmallDoorway_Preview_DZ";
upgradeBuilding[] = {"CinderWallDoorSmallLocked_DZ",{{"ItemComboLock",1}}};
/* Arma needs to know, how the animation trigger is triggered*/
class AnimationSources {
/* name must be identical to the one given by the model.cfg ("Open_Door")" */
class Open_door {
source = "user";
animPeriod = 4; /* duration in seconds */
initPhase = 0;
};
};
/* The entry to the actionmenu */
class UserActions
{
class Open_Door
{
displayName="Open Door";
onlyforplayer = true;
position="Door_knopf";
radius=3; /* visibility distance of the entry */
condition="this animationPhase ""Open_door"" < 0.5";
statement="this animate [""Open_door"", 1]";
};
class Close_Door : Open_Door
{
displayName="Close Door";
condition="this animationPhase ""Open_door"" >= 0.5";
statement="this animate [""Open_door"", 0]";
};
};
};

View File

@@ -49,6 +49,7 @@ class CfgWeapons {
#include "CfgWeapons\Melee\Crossbow.hpp" #include "CfgWeapons\Melee\Crossbow.hpp"
#include "CfgWeapons\Melee\MeleeBaseBallBat.hpp" #include "CfgWeapons\Melee\MeleeBaseBallBat.hpp"
#include "CfgWeapons\Melee\MeleeFishingPole.hpp" #include "CfgWeapons\Melee\MeleeFishingPole.hpp"
#include "CfgWeapons\Melee\MeleeSledgehammer.hpp"
// #include "CfgWeapons\Melee\MeleeBaseBallBatBarbed.hpp" // #include "CfgWeapons\Melee\MeleeBaseBallBatBarbed.hpp"
// #include "CfgWeapons\Melee\MeleeBaseBallBatNails.hpp" // #include "CfgWeapons\Melee\MeleeBaseBallBatNails.hpp"
@@ -61,6 +62,7 @@ class CfgWeapons {
#include "CfgWeapons\Item\ItemEtool.hpp" #include "CfgWeapons\Item\ItemEtool.hpp"
#include "CfgWeapons\Item\ItemShovel.hpp" #include "CfgWeapons\Item\ItemShovel.hpp"
#include "CfgWeapons\Item\ItemFishingPole.hpp" #include "CfgWeapons\Item\ItemFishingPole.hpp"
#include "CfgWeapons\Item\ItemSledge.hpp"
#include "CfgWeapons\Item\ItemKeyKit.hpp" #include "CfgWeapons\Item\ItemKeyKit.hpp"
#include "CfgWeapons\Item\ItemKeys.hpp" #include "CfgWeapons\Item\ItemKeys.hpp"

View File

@@ -0,0 +1,24 @@
class ItemSledge: ItemCore
{
scope=2;
displayName="Sledgehammer";
model="\z\addons\dayz_epoch\models\sledge_mag.p3d";
picture="\z\addons\dayz_epoch\pictures\equip_sledge_CA.paa";
descriptionShort="A tool with a large, flat head attached to a handle. The head is typically made of metal. The sledgehammer can apply more force than other hammers.";
class ItemActions
{
class Toolbelt
{
text="Remove from Toolbelt";
script="spawn player_addToolbelt;";
use[]=
{
"ItemSledge"
};
output[]=
{
"MeleeSledge"
};
};
};
};

View File

@@ -0,0 +1,41 @@
class MeleeSledge: MeleeWeapon
{
scope=2;
melee= "true";
autoreload=1;
magazineReloadTime=0;
model="\z\addons\dayz_epoch\models\sledge_weaponized";
picture="\z\addons\dayz_epoch\pictures\equip_sledge_CA.paa"; // todo icon
displayName="Sledgehammer";
droppeditem= "ItemSledge";
magazines[]=
{
"sledge_swing"
};
handAnim[]=
{
"OFP2_ManSkeleton",
"\dayz_weapons\anim\melee_hatchet_holding.rtm"
};
class ItemActions
{
class Toolbelt
{
text="Add to Toolbelt";
script="spawn player_addToolbelt;";
use[]=
{
"MeleeSledge"
};
output[]=
{
"ItemSledge"
};
};
};
class Library
{
libTextDesc="A tool with a large, flat head attached to a handle. The head is typically made of metal. The sledgehammer can apply more force than other hammers.";
};
descriptionShort="A tool with a large, flat head attached to a handle. The head is typically made of metal. The sledgehammer can apply more force than other hammers.";
};

View File

@@ -14,6 +14,10 @@ class CfgAmmo {
hit = 7; hit = 7;
simulation = "shotBullet"; simulation = "shotBullet";
}; };
class Sledge_Swing_Ammo : Melee {
hit = 11;
simulation = "shotBullet";
};
class Dummy_Swing_Ammo : Melee { class Dummy_Swing_Ammo : Melee {
hit = 0; hit = 0;
simulation = "shotBullet"; simulation = "shotBullet";

View File

@@ -174,7 +174,7 @@ class CfgLoot {
0.01, 0.01,
0.01, 0.01,
0.01, 0.01,
0.11, 0.08,
0.03, 0.03,
0.01, 0.01,
0.04, 0.04,
@@ -190,7 +190,7 @@ class CfgLoot {
0.03, 0.03,
0.03, 0.03,
0.03, 0.03,
0.01 0.04
} }
}; };
generic[] = { generic[] = {
@@ -381,18 +381,24 @@ class CfgLoot {
"7Rnd_45ACP_1911", "7Rnd_45ACP_1911",
"6Rnd_45ACP", "6Rnd_45ACP",
"15Rnd_W1866_Slug", "15Rnd_W1866_Slug",
"8Rnd_B_Beneli_74Slug", "8Rnd_B_Beneli_Pellets",
"HandRoadFlare", "HandRoadFlare",
"8Rnd_9x18_MakarovSD" "8Rnd_9x18_MakarovSD",
"ItemComboLock",
"SmokeShell",
"FoodMRE"
}, },
{ {
0.3, 0.3,
0.2, 0.08,
0.1, 0.08,
0.14, 0.14,
0.15, 0.15,
0.1, 0.08,
0.01 0.01,
0.07,
0.05,
0.04
} }
}; };
hunter[] = { hunter[] = {
@@ -435,23 +441,25 @@ class CfgLoot {
"ItemPainkiller", "ItemPainkiller",
"ItemWire", "ItemWire",
"ItemTankTrap", "ItemTankTrap",
"ItemComboLock" "ItemComboLock",
"ItemSledgeHead"
}, },
{ {
0.14,
0.12,
0.09, 0.09,
0.10,
0.10,
0.11, 0.11,
0.09, 0.09,
0.06, 0.06,
0.06, 0.06,
0.06, 0.06,
0.06, 0.06,
0.12, 0.1,
0.06, 0.06,
0.01, 0.01,
0.01, 0.03,
0.01 0.05,
0.02
} }
}; };
@@ -555,4 +563,16 @@ class CfgLoot {
0.04 0.04
} }
}; };
tents[] = {
{
"ItemTentOld",
"ItemTentDomed",
"ItemTentDomed2",
},
{
0.34,
0.33,
0.33,
}
};
}; };

View File

@@ -1411,14 +1411,14 @@ class CfgVehicles {
scope = 2; scope = 2;
destrType = "DestructNo"; destrType = "DestructNo";
cost = 100; cost = 100;
offset[] = {0,1.5,0.5}; offset[] = {0,1.5,0};
model = "\ca\misc\jezek_kov"; model = "\ca\misc\jezek_kov";
icon = "\ca\data\data\Unknown_object.paa"; icon = "\ca\data\data\Unknown_object.paa";
mapSize = 2; mapSize = 2;
armor = 400; armor = 400;
displayName = "Hedgehog (Steel)"; displayName = "Hedgehog (Steel)";
vehicleClass = "Fortifications"; vehicleClass = "Fortifications";
constructioncount = 3; constructioncount = 1;
removeoutput[] = {{"ItemTankTrap",1}}; removeoutput[] = {{"ItemTankTrap",1}};
}; };
// WorkBench_DZ // WorkBench_DZ
@@ -1603,17 +1603,31 @@ class CfgVehicles {
}; };
// modular // modular
class CinderWallHalf_DZ: ModularItems class MetalFloor_DZ: ModularItems
{ {
scope = 2; scope = 2;
destrType = "DestructBuilding"; destrType = "DestructBuilding";
cost = 100; cost = 100;
offset[] = {0,4,0}; offset[] = {0,4,0};
model="\z\addons\dayz_epoch\models\Cinder_Wall_Half.p3d"; model="\z\addons\dayz_epoch\models\metal_floor.p3d";
icon = "\ca\data\data\Unknown_object.paa"; icon = "\ca\data\data\Unknown_object.paa";
mapSize = 2; mapSize = 2;
armor = 800; armor = 1600;
displayName = "Cinder Block Wall 1/2"; displayName = "Metal Floor";
vehicleClass = "Fortifications";
GhostPreview = "MetalFloor_Preview_DZ";
};
class CinderWallHalf_DZ: ModularItems
{
scope = 2;
destrType = "DestructBuilding";
cost = 100;
offset[] = {0,1.5,0};
model="\z\addons\dayz_epoch\models\cinder_wall_half.p3d";
icon = "\ca\data\data\Unknown_object.paa";
mapSize = 2;
armor = 1600;
displayName = "Half Cinder Block Wall";
vehicleClass = "Fortifications"; vehicleClass = "Fortifications";
upgradeBuilding[] = {"CinderWall_DZ",{{"CinderBlocks",4},{"MortarBucket",1}}}; upgradeBuilding[] = {"CinderWall_DZ",{{"CinderBlocks",4},{"MortarBucket",1}}};
maintainBuilding[] = {{"MortarBucket",1}}; maintainBuilding[] = {{"MortarBucket",1}};
@@ -1624,17 +1638,51 @@ class CfgVehicles {
scope = 2; scope = 2;
destrType = "DestructBuilding"; destrType = "DestructBuilding";
cost = 100; cost = 100;
offset[] = {0,4,0}; offset[] = {0,1.5,0};
model="\z\addons\dayz_epoch\models\Cinder_Wall.p3d"; model="\z\addons\dayz_epoch\models\cinder_wall_full.p3d";
icon = "\ca\data\data\Unknown_object.paa"; icon = "\ca\data\data\Unknown_object.paa";
mapSize = 2; mapSize = 2;
armor = 800; armor = 1600;
displayName = "Cinder Block Wall"; displayName = "Cinder Block Wall";
vehicleClass = "Fortifications"; vehicleClass = "Fortifications";
maintainBuilding[] = {{"MortarBucket",1}}; maintainBuilding[] = {{"MortarBucket",1}};
GhostPreview = "CinderWall_Preview_DZ"; GhostPreview = "CinderWall_Preview_DZ";
}; };
class CinderWallDoorway_DZ: ModularItems
{
scope = 2;
destrType = "DestructBuilding";
cost = 100;
offset[] = {0,2,0};
model="\z\addons\dayz_epoch\models\steel_garage_frame.p3d";
icon = "\ca\data\data\Unknown_object.paa";
mapSize = 2;
armor = 1600;
displayName = "Block Garage Doorway";
vehicleClass = "Fortifications";
maintainBuilding[] = {{"MortarBucket",1}};
upgradeBuilding[] = {"CinderWallDoor_DZ",{{"ItemPole",3},{"ItemTankTrap",3}}};
GhostPreview = "CinderWallDoorway_Preview_DZ";
};
class CinderWallSmallDoorway_DZ: ModularItems
{
scope = 2;
destrType = "DestructBuilding";
cost = 100;
offset[] = {0,2,0};
model="\z\addons\dayz_epoch\models\Steel_door_frame.p3d";
icon = "\ca\data\data\Unknown_object.paa";
mapSize = 2;
armor = 1600;
displayName = "Block Doorway";
vehicleClass = "Fortifications";
maintainBuilding[] = {{"MortarBucket",1}};
upgradeBuilding[] = {"CinderWallDoorSmall_DZ",{{"ItemPole",1},{"ItemTankTrap",1}}};
GhostPreview = "CinderWallSmallDoorway_Preview_DZ"; // todo change this
};
class WoodFloor_DZ: ModularItems class WoodFloor_DZ: ModularItems
{ {
scope = 2; scope = 2;
@@ -1686,7 +1734,7 @@ class CfgVehicles {
class WoodLargeWall_DZ: ModularItems class WoodLargeWall_DZ: ModularItems
{ {
scope = 2; scope = 2;
destrType = "DestructTree"; destrType = "DestructBuilding";
cost = 100; cost = 100;
offset[] = {0,1.5,0}; offset[] = {0,1.5,0};
model="\z\addons\dayz_epoch\models\large_wall.p3d"; model="\z\addons\dayz_epoch\models\large_wall.p3d";
@@ -1695,6 +1743,7 @@ class CfgVehicles {
armor = 200; armor = 200;
displayName = "Large Wall"; displayName = "Large Wall";
vehicleClass = "Fortifications"; vehicleClass = "Fortifications";
upgradeBuilding[] = {"WoodLargeWallWin_DZ",{{"PartGlass",1}}};
maintainBuilding[] = {{"PartWoodPlywood",1},{"PartWoodLumber",1}}; maintainBuilding[] = {{"PartWoodPlywood",1},{"PartWoodLumber",1}};
GhostPreview = "WoodLargeWall_Preview_DZ"; GhostPreview = "WoodLargeWall_Preview_DZ";
}; };
@@ -1702,7 +1751,7 @@ class CfgVehicles {
class WoodLargeWallDoor_DZ: ModularItems class WoodLargeWallDoor_DZ: ModularItems
{ {
scope = 2; scope = 2;
destrType = "DestructTree"; destrType = "DestructBuilding";
cost = 100; cost = 100;
offset[] = {0,1.5,0}; offset[] = {0,1.5,0};
model="\z\addons\dayz_epoch\models\large_wall_door.p3d"; model="\z\addons\dayz_epoch\models\large_wall_door.p3d";
@@ -1718,7 +1767,7 @@ class CfgVehicles {
class WoodLargeWallWin_DZ: ModularItems class WoodLargeWallWin_DZ: ModularItems
{ {
scope = 2; scope = 2;
destrType = "DestructTree"; destrType = "DestructBuilding";
cost = 100; cost = 100;
offset[] = {0,1.5,0}; offset[] = {0,1.5,0};
model="\z\addons\dayz_epoch\models\large_wall_win.p3d"; model="\z\addons\dayz_epoch\models\large_wall_win.p3d";
@@ -1734,7 +1783,7 @@ class CfgVehicles {
class WoodSmallWall_DZ: ModularItems class WoodSmallWall_DZ: ModularItems
{ {
scope = 2; scope = 2;
destrType = "DestructTree"; destrType = "DestructBuilding";
cost = 100; cost = 100;
offset[] = {0,1.5,0}; offset[] = {0,1.5,0};
model="\z\addons\dayz_epoch\models\small_wall.p3d"; model="\z\addons\dayz_epoch\models\small_wall.p3d";
@@ -1744,12 +1793,13 @@ class CfgVehicles {
displayName = "Small Wall"; displayName = "Small Wall";
vehicleClass = "Fortifications"; vehicleClass = "Fortifications";
maintainBuilding[] = {{"PartWoodPlywood",1},{"PartWoodLumber",1}}; maintainBuilding[] = {{"PartWoodPlywood",1},{"PartWoodLumber",1}};
upgradeBuilding[] = {"WoodSmallWallWin_DZ",{{"PartGlass",1}}};
GhostPreview = "WoodSmallWall_Preview_DZ"; GhostPreview = "WoodSmallWall_Preview_DZ";
}; };
class WoodSmallWallThird_DZ: ModularItems class WoodSmallWallThird_DZ: ModularItems
{ {
scope = 2; scope = 2;
destrType = "DestructTree"; destrType = "DestructBuilding";
cost = 100; cost = 100;
offset[] = {0,1.5,0}; offset[] = {0,1.5,0};
model="\z\addons\dayz_epoch\models\third_wall.p3d"; model="\z\addons\dayz_epoch\models\third_wall.p3d";
@@ -1766,7 +1816,7 @@ class CfgVehicles {
class WoodSmallWallWin_DZ: ModularItems class WoodSmallWallWin_DZ: ModularItems
{ {
scope = 2; scope = 2;
destrType = "DestructTree"; destrType = "DestructBuilding";
cost = 100; cost = 100;
offset[] = {0,1.5,0}; offset[] = {0,1.5,0};
model="\z\addons\dayz_epoch\models\small_wall_win.p3d"; model="\z\addons\dayz_epoch\models\small_wall_win.p3d";
@@ -1781,7 +1831,7 @@ class CfgVehicles {
class WoodSmallWallDoor_DZ: ModularItems class WoodSmallWallDoor_DZ: ModularItems
{ {
scope = 2; scope = 2;
destrType = "DestructTree"; destrType = "DestructBuilding";
cost = 100; cost = 100;
offset[] = {0,1.5,0}; offset[] = {0,1.5,0};
model="\z\addons\dayz_epoch\models\small_wall_door.p3d"; model="\z\addons\dayz_epoch\models\small_wall_door.p3d";
@@ -1844,13 +1894,52 @@ class CfgVehicles {
}; };
// ghost models // ghost models
class CinderWallSmallDoorway_Preview_DZ: NonStrategic
{
scope = 2;
destrType = "DestructNo";
cost = 100;
offset[] = {0,1.5,0};
model="\z\addons\dayz_epoch\models\steel_garage_frame_ghost.p3d"; // todo change this
icon = "\ca\data\data\Unknown_object.paa";
mapSize = 2;
armor = 1000;
displayName = "Block Garage Doorway";
vehicleClass = "Fortifications";
};
class CinderWallDoorway_Preview_DZ: NonStrategic
{
scope = 2;
destrType = "DestructNo";
cost = 100;
offset[] = {0,1.5,0};
model="\z\addons\dayz_epoch\models\steel_garage_frame_ghost.p3d";
icon = "\ca\data\data\Unknown_object.paa";
mapSize = 2;
armor = 1000;
displayName = "Block Garage Doorway";
vehicleClass = "Fortifications";
};
class MetalFloor_Preview_DZ: NonStrategic
{
scope = 2;
destrType = "DestructNo";
cost = 100;
offset[] = {0,1.5,0};
model="\z\addons\dayz_epoch\models\metal_floor_ghost.p3d";
icon = "\ca\data\data\Unknown_object.paa";
mapSize = 2;
armor = 1000;
displayName = "Metal Floor Preview";
vehicleClass = "Fortifications";
};
class CinderWallHalf_Preview_DZ: NonStrategic class CinderWallHalf_Preview_DZ: NonStrategic
{ {
scope = 2; scope = 2;
destrType = "DestructNo"; destrType = "DestructNo";
cost = 100; cost = 100;
offset[] = {0,1.5,0}; offset[] = {0,1.5,0};
model="\z\addons\dayz_epoch\models\Cinder_Wall_Half_ghost.p3d"; model="\z\addons\dayz_epoch\models\cinder_wall_half_ghost.p3d";
icon = "\ca\data\data\Unknown_object.paa"; icon = "\ca\data\data\Unknown_object.paa";
mapSize = 2; mapSize = 2;
armor = 1000; armor = 1000;
@@ -1863,7 +1952,7 @@ class CfgVehicles {
destrType = "DestructNo"; destrType = "DestructNo";
cost = 100; cost = 100;
offset[] = {0,1.5,0}; offset[] = {0,1.5,0};
model="\z\addons\dayz_epoch\models\Cinder_Wall_ghost.p3d"; model="\z\addons\dayz_epoch\models\cinder_wall_full_ghost.p3d";
icon = "\ca\data\data\Unknown_object.paa"; icon = "\ca\data\data\Unknown_object.paa";
mapSize = 2; mapSize = 2;
armor = 1000; armor = 1000;
@@ -2377,7 +2466,7 @@ class CfgVehicles {
displayName = "$STR_EQUIP_NAME_20"; displayName = "$STR_EQUIP_NAME_20";
class transportmagazines class transportmagazines
{ {
class _xx_ItemTentDomed2 class _xx_ItemTentOld
{ {
magazine = "ItemTentOld"; magazine = "ItemTentOld";
count = 1; count = 1;
@@ -2390,7 +2479,7 @@ class CfgVehicles {
displayName = "Domed Desert Tent"; displayName = "Domed Desert Tent";
class transportmagazines class transportmagazines
{ {
class _xx_ItemTentDomed2 class _xx_ItemTentDomed
{ {
magazine = "ItemTentDomed"; magazine = "ItemTentDomed";
count = 1; count = 1;

View File

@@ -149,7 +149,7 @@ class RscDisplayMain : RscStandardDisplay
class DAYZ_Version : CA_Version class DAYZ_Version : CA_Version
{ {
idc = -1; idc = -1;
text = "DayZ Epoch 1.0.2"; text = "DayZ Epoch 1.0.2.13 DEV";
y = "(SafeZoneH + SafeZoneY) - (1 - 0.95)"; y = "(SafeZoneH + SafeZoneY) - (1 - 0.95)";
}; };
delete CA_TitleMainMenu; delete CA_TitleMainMenu;

View File

@@ -1,119 +0,0 @@
private ["_location","_isOk","_dir","_classname","_item","_cancel","_location3","_location4","_location1","_location2","_counter","_hasbuilditem","_dis","_sfx","_object","_onLadder","_isWater","_text","_offset_x","_offset_y","_offset_z","_offset_z_attach","_tmpbuilt","_built_location"];
if(TradeInprogress) exitWith { cutText ["Building already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true;
_location = player modeltoworld [0,1,0];
_location set [2,0];
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_isWater = (surfaceIsWater _location) or dayz_isSwimming;
if(_isWater) exitWith {cutText [localize "str_player_26", "PLAIN DOWN"];};
if(_onLadder) exitWith {cutText [localize "str_player_21", "PLAIN DOWN"];};
if (vehicle player != player) exitWith {cutText ["You may not build while in a vehicle", "PLAIN DOWN"]};
_item = _this;
_classname = getText (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "create");
_text = getText (configFile >> "CfgVehicles" >> _classname >> "displayName");
_hasbuilditem = _this in magazines player;
if (!_hasbuilditem) exitWith {cutText [format[(localize "str_player_31"),_text,"build"] , "PLAIN DOWN"]};
_dir = getDir player;
_offset_x = 0;
_offset_y = 1.5;
_offset_z = 0;
_offset_z_attach = 0.5;
// Start Preview loop
_tmpbuilt = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];
_tmpbuilt setdir _dir;
_tmpbuilt attachTo [player,[_offset_x,_offset_y,_offset_z_attach]];
_cancel = false;
_counter = 0;
_isOk = true;
while {_isOk} do {
if(_counter == 0) then {
cutText ["Planning construction stand still 5 seconds to build.", "PLAIN DOWN"];
sleep 5;
_location1 = getPosATL player;
sleep 5;
_location2 = getPosATL player;
if(_location1 distance _location2 < 0.1) exitWith {
cutText ["Started construction move within 5 seconds to cancel.", "PLAIN DOWN"];
_location3 = getPosATL player;
sleep 5;
_location4 = getPosATL player;
if(_location3 distance _location4 > 0.1) exitWith {
_isOk = false;
_cancel = true;
};
_isOk = false;
};
};
if(_counter >= 1) exitWith {
_isOk = false;
_cancel = true;
};
_counter = _counter + 1;
};
detach _tmpbuilt;
// Get location of detached tmp built
_built_location = (getPosATL _tmpbuilt);
// force to ground
_built_location set [2,0];
if(!_cancel) then {
_hasbuilditem = _this in magazines player;
if (!_hasbuilditem) exitWith {cutText [format[(localize "str_player_31"),_text,"build"] , "PLAIN DOWN"]};
_dir = getDir player;
player removeMagazine _item;
//disableSerialization;
//call dayz_forceSave;
player playActionNow "Medic";
sleep 1;
_dis=20;
_sfx = "repair";
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
[player,_dis,true,(getPosATL player)] spawn player_alertZombies;
sleep 5;
player allowDamage false;
_object = createVehicle [_classname, _built_location, [], 0, "CAN_COLLIDE"];
_object setDir _dir;
player reveal _object;
cutText [format[localize "str_build_01",_text], "PLAIN DOWN"];
//["dayzPublishObj",[dayz_characterID,_object,[_dir,_location],_classname]] call callRpcProcedure;
dayzPublishObj = [dayz_characterID,_object,[_dir,_location],_classname];
publicVariableServer "dayzPublishObj";
sleep 2;
player allowDamage true;
} else {
cutText [format["Canceled construction of %1.",_text], "PLAIN DOWN"];
};
TradeInprogress = false;

View File

@@ -81,7 +81,6 @@ if (_finished) then {
_vehicle setVariable ["GeneratorSound", _soundSource,true]; _vehicle setVariable ["GeneratorSound", _soundSource,true];
// TODO: Add running sounds to generator
cutText ["Generator has been started.", "PLAIN DOWN"]; cutText ["Generator has been started.", "PLAIN DOWN"];
}; };

View File

@@ -33,21 +33,6 @@ if(_classname isKindOf "TrapBear") exitwith {DZE_CanPickup = true; deleteVehicle
player playActionNow "PutDown"; player playActionNow "PutDown";
if (_classname == "MeleeCrowbar") then {
player addMagazine 'crowbar_swing';
};
if (_classname == "MeleeHatchet") then {
player addMagazine 'hatchet_swing';
};
if (_classname == "MeleeMachete") then {
player addMagazine 'Machete_swing';
};
if (_classname == "MeleeFishingPole") then {
player addMagazine 'Fishing_Swing';
};
sleep 1;
_claimedBy = _holder getVariable["claimed","0"]; _claimedBy = _holder getVariable["claimed","0"];
if (_claimedBy != _playerID) exitWith {sleep 1; DZE_CanPickup = true; cutText [format[(localize "str_player_beinglooted"),_text] , "PLAIN DOWN"]}; if (_claimedBy != _playerID) exitWith {sleep 1; DZE_CanPickup = true; cutText [format[(localize "str_player_beinglooted"),_text] , "PLAIN DOWN"]};
@@ -64,12 +49,15 @@ _qty = count _obj;
if(_qty >= 1) then { if(_qty >= 1) then {
//Remove melee magazines (BIS_fnc_invAdd fix) (add new melee ammo to array if needed)
{player removeMagazines _x} forEach ["Hatchet_Swing","Crowbar_Swing","Machete_Swing","Fishing_Swing","sledge_swing"];
_config = (configFile >> _type >> _classname); _config = (configFile >> _type >> _classname);
_isOk = [player,_config] call BIS_fnc_invAdd; _isOk = [player,_config] call BIS_fnc_invAdd;
if (_isOk) then { if (_isOk) then {
deleteVehicle _holder; deleteVehicle _holder;
if (_classname in ["MeleeHatchet","MeleeCrowbar","MeleeMachete","MeleeFishingPole"]) then { if (_classname in ["MeleeHatchet","MeleeCrowbar","MeleeMachete","MeleeFishingPole","MeleeSledge"]) then {
if (_type == "cfgWeapons") then { if (_type == "cfgWeapons") then {
_muzzles = getArray(configFile >> "cfgWeapons" >> _classname >> "muzzles"); _muzzles = getArray(configFile >> "cfgWeapons" >> _classname >> "muzzles");
@@ -81,20 +69,16 @@ if(_qty >= 1) then {
}; };
}; };
}; };
} else {
_holder setVariable["claimed","0",true]; //adding melee mags back if needed
cutText [localize "STR_DAYZ_CODE_2", "PLAIN DOWN"]; switch (primaryWeapon player) do
if (_classname == "MeleeCrowbar") then { {
player removeMagazine 'crowbar_swing'; case "MeleeHatchet": {player addMagazine 'Hatchet_Swing';};
}; case "MeleeCrowbar": {player addMagazine 'Crowbar_Swing';};
if (_classname == "MeleeHatchet") then { case "MeleeMachete": {player addMagazine 'Machete_Swing';};
player removeMagazine 'hatchet_swing'; case "MeleeFishingPole": {player addMagazine 'Fishing_Swing';};
}; case "MeleeSledge": {player addMagazine 'sledge_swing';};
if (_classname == "MeleeMachete") then {
player removeMagazine 'Machete_swing';
};
if (_classname == "MeleeFishingPole") then {
player removeMagazine 'Fishing_Swing';
}; };
}; };
}; };

View File

@@ -20,7 +20,7 @@ _create = getArray (_config >> "ItemActions" >> "Toolbelt" >> "output") select
_config2 = configFile >> "cfgWeapons" >> _create; _config2 = configFile >> "cfgWeapons" >> _create;
//Remove magazines if needed //Remove magazines if needed
if (_item in ["MeleeHatchet","MeleeCrowbar","MeleeMachete","MeleeFishingPole"]) then { if (_item in ["MeleeHatchet","MeleeCrowbar","MeleeMachete","MeleeFishingPole","MeleeSledge"]) then {
_magType = ([] + getArray (configFile >> "cfgWeapons" >> _item >> "magazines")) select 0; _magType = ([] + getArray (configFile >> "cfgWeapons" >> _item >> "magazines")) select 0;
_meleeNum = ({_x == _magType} count magazines player); _meleeNum = ({_x == _magType} count magazines player);
for "_i" from 1 to _meleeNum do { for "_i" from 1 to _meleeNum do {
@@ -28,12 +28,14 @@ if (_item in ["MeleeHatchet","MeleeCrowbar","MeleeMachete","MeleeFishingPole"])
}; };
}; };
if (_item in ["ItemHatchet","ItemCrowbar","ItemMachete"]) then { if (_item in ["ItemHatchet","ItemCrowbar","ItemMachete","ItemFishingPole","ItemSledge"]) then {
switch (primaryWeapon player) do switch (primaryWeapon player) do
{ {
case "MeleeHatchet": { "MeleeHatchet" call player_addToolbelt }; case "MeleeHatchet": { "MeleeHatchet" call player_addToolbelt };
case "MeleeCrowbar": { "MeleeCrowbar" call player_addToolbelt }; case "MeleeCrowbar": { "MeleeCrowbar" call player_addToolbelt };
case "MeleeMachete": { "MeleeMachete" call player_addToolbelt }; case "MeleeMachete": { "MeleeMachete" call player_addToolbelt };
case "MeleeFishingPole": { "MeleeFishingPole" call player_addToolbelt };
case "MeleeSledge": { "MeleeSledge" call player_addToolbelt };
}; };
}; };
@@ -44,10 +46,13 @@ if (_isOk) then {
player removeWeapon _item; player removeWeapon _item;
//Add magazines if needed //Add magazines if needed
if (_create in ["MeleeHatchet","MeleeCrowbar","MeleeMachete","MeleeFishingPole"]) then { if (_create in ["MeleeHatchet","MeleeCrowbar","MeleeMachete","MeleeFishingPole","MeleeSledge"]) then {
if (_create == "MeleeCrowbar") then { if (_create == "MeleeCrowbar") then {
player addMagazine 'crowbar_swing'; player addMagazine 'crowbar_swing';
}; };
if (_create == "MeleeSledge") then {
player addMagazine 'sledge_swing';
};
if (_create == "MeleeHatchet") then { if (_create == "MeleeHatchet") then {
player addMagazine 'hatchet_swing'; player addMagazine 'hatchet_swing';
}; };
@@ -71,10 +76,13 @@ if (_isOk) then {
cutText [localize "STR_DAYZ_CODE_2", "PLAIN DOWN"]; cutText [localize "STR_DAYZ_CODE_2", "PLAIN DOWN"];
//Add magazines back //Add magazines back
if (_item in ["MeleeHatchet","MeleeCrowbar","MeleeMachete","MeleeFishingPole"]) then { if (_item in ["MeleeHatchet","MeleeCrowbar","MeleeMachete","MeleeFishingPole","MeleeSledge"]) then {
if (_item == "MeleeCrowbar") then { if (_item == "MeleeCrowbar") then {
player addMagazine 'crowbar_swing'; player addMagazine 'crowbar_swing';
}; };
if (_item == "MeleeSledge") then {
player addMagazine 'sledge_swing';
};
if (_item == "MeleeHatchet") then { if (_item == "MeleeHatchet") then {
player addMagazine 'hatchet_swing'; player addMagazine 'hatchet_swing';
}; };

View File

@@ -4,9 +4,12 @@
*/ */
private ["_location","_dir","_classname","_item","_hasrequireditem","_missing","_hastoolweapon","_cancel","_reason","_started","_finished","_animState","_isMedic","_dis","_sfx","_hasbuilditem","_tmpbuilt","_onLadder","_isWater","_require","_text","_offset","_IsNearPlot","_isOk","_location1","_location2","_counter","_limit","_proceed","_num_removed","_position","_object","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_findNearestPoles","_findNearestPole","_distance","_classnametmp","_ghost","_isPole","_needText","_lockable","_zheightchanged","_rotate","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display","_combinationDisplay"]; private ["_location","_dir","_classname","_item","_hasrequireditem","_missing","_hastoolweapon","_cancel","_reason","_started","_finished","_animState","_isMedic","_dis","_sfx","_hasbuilditem","_tmpbuilt","_onLadder","_isWater","_require","_text","_offset","_IsNearPlot","_isOk","_location1","_location2","_counter","_limit","_proceed","_num_removed","_position","_object","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_findNearestPoles","_findNearestPole","_distance","_classnametmp","_ghost","_isPole","_needText","_lockable","_zheightchanged","_rotate","_combination_1","_combination_2","_combination_3","_combination_4","_combination","_combination_1_Display","_combinationDisplay"];
if(TradeInprogress) exitWith { cutText ["Building already in progress." , "PLAIN DOWN"]; }; if(TradeInprogress) exitWith { cutText ["\n\nBuilding already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true; TradeInprogress = true;
// disallow building if too many objects are found within 30m
if((count ((position player) nearObjects ["All",30])) >= DZE_BuildingLimit) exitWith {TradeInprogress = false; cutText ["\n\nCannot build, too many objects witin 30m.", "PLAIN DOWN"];};
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_isWater = (surfaceIsWater (getPosATL player)) or dayz_isSwimming; _isWater = (surfaceIsWater (getPosATL player)) or dayz_isSwimming;
_cancel = false; _cancel = false;
@@ -22,7 +25,7 @@ call gear_ui_init;
if(_isWater) exitWith {TradeInprogress = false; cutText [localize "str_player_26", "PLAIN DOWN"];}; if(_isWater) exitWith {TradeInprogress = false; cutText [localize "str_player_26", "PLAIN DOWN"];};
if(_onLadder) exitWith {TradeInprogress = false; cutText [localize "str_player_21", "PLAIN DOWN"];}; if(_onLadder) exitWith {TradeInprogress = false; cutText [localize "str_player_21", "PLAIN DOWN"];};
if(player getVariable["combattimeout", 0] >= time) exitWith {TradeInprogress = false; cutText ["Cannot build while in combat.", "PLAIN DOWN"];}; if(player getVariable["combattimeout", 0] >= time) exitWith {TradeInprogress = false; cutText ["\n\nCannot build while in combat.", "PLAIN DOWN"];};
_item = _this; _item = _this;
_classname = getText (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "create"); _classname = getText (configFile >> "CfgMagazines" >> _item >> "ItemActions" >> "Build" >> "create");
@@ -60,7 +63,7 @@ _findNearestPole = [];
_IsNearPlot = count (_findNearestPole); _IsNearPlot = count (_findNearestPole);
// If item is plot pole and another one exists within 45m // If item is plot pole and another one exists within 45m
if(_isPole and _IsNearPlot > 0) exitWith { TradeInprogress = false; cutText ["Cannot build plot pole within 45m of an existing plot." , "PLAIN DOWN"]; }; if(_isPole and _IsNearPlot > 0) exitWith { TradeInprogress = false; cutText ["\n\nCannot build plot pole within 45m of an existing plot." , "PLAIN DOWN"]; };
if(_IsNearPlot == 0) then { if(_IsNearPlot == 0) then {
_canBuildOnPlot = true; _canBuildOnPlot = true;
@@ -87,7 +90,7 @@ if(_IsNearPlot == 0) then {
}; };
// _message // _message
if(!_canBuildOnPlot) exitWith { TradeInprogress = false; cutText [format["Unable to build %1 nearby.",_needText,_distance] , "PLAIN DOWN"]; }; if(!_canBuildOnPlot) exitWith { TradeInprogress = false; cutText [format["\n\nUnable to build %1 nearby.",_needText,_distance] , "PLAIN DOWN"]; };
_missing = ""; _missing = "";
_hasrequireditem = true; _hasrequireditem = true;
@@ -99,7 +102,7 @@ _hasrequireditem = true;
_hasbuilditem = _this in magazines player; _hasbuilditem = _this in magazines player;
if (!_hasbuilditem) exitWith {TradeInprogress = false; cutText [format[(localize "str_player_31"),_text,"build"] , "PLAIN DOWN"]; }; if (!_hasbuilditem) exitWith {TradeInprogress = false; cutText [format[(localize "str_player_31"),_text,"build"] , "PLAIN DOWN"]; };
if (!_hasrequireditem) exitWith {TradeInprogress = false; cutText [format["Missing tool %1",_missing] , "PLAIN DOWN"]; }; if (!_hasrequireditem) exitWith {TradeInprogress = false; cutText [format["\n\nMissing tool %1",_missing] , "PLAIN DOWN"]; };
if (_hasrequireditem) then { if (_hasrequireditem) then {
_location = [0,0,0]; _location = [0,0,0];
@@ -174,7 +177,7 @@ if (_hasrequireditem) then {
_object attachTo [player]; _object attachTo [player];
}; };
cutText ["Planning construction numpad 8 = up, numpad 2 = down, and numpad 5 to start building.", "PLAIN DOWN"]; cutText ["\n\nPlanning construction: PgUp = raise, PgDn = lower, Q or E = flip 180, and Space-Bar to start building.", "PLAIN DOWN"];
sleep 1; sleep 1;
@@ -249,7 +252,7 @@ if (_hasrequireditem) then {
if(!_cancel) then { if(!_cancel) then {
cutText [format["Placing %1, move to cancel.",_text], "PLAIN DOWN"]; cutText [format["\n\nPlacing %1, move to cancel.",_text], "PLAIN DOWN"];
_limit = 3; _limit = 3;
@@ -289,6 +292,9 @@ if (_hasrequireditem) then {
if (r_interrupt or (player getVariable["combattimeout", 0] >= time)) then { if (r_interrupt or (player getVariable["combattimeout", 0] >= time)) then {
r_doLoop = false; r_doLoop = false;
}; };
if (DZE_cancelBuilding) exitWith {
r_doLoop = false;
};
sleep 0.1; sleep 0.1;
}; };
r_doLoop = false; r_doLoop = false;
@@ -303,7 +309,7 @@ if (_hasrequireditem) then {
_counter = _counter + 1; _counter = _counter + 1;
}; };
cutText [format["Constructing %1 stage %2 of %3, move to cancel.",_text, _counter,_limit], "PLAIN DOWN"]; cutText [format["\n\nConstructing %1 stage %2 of %3, move to cancel.",_text, _counter,_limit], "PLAIN DOWN"];
if(_counter == _limit) exitWith { if(_counter == _limit) exitWith {
_isOk = false; _isOk = false;
@@ -369,7 +375,7 @@ if (_hasrequireditem) then {
dayzPublishObj = [_combination,_tmpbuilt,[_dir,_location],_classname]; dayzPublishObj = [_combination,_tmpbuilt,[_dir,_location],_classname];
publicVariableServer "dayzPublishObj"; publicVariableServer "dayzPublishObj";
cutText [format["You have setup your %2. Combination is %1",_combinationDisplay,_text], "PLAIN DOWN", 5]; cutText [format["\n\nYou have setup your %2. Combination is %1",_combinationDisplay,_text], "PLAIN DOWN", 5];
} else { } else {
@@ -382,7 +388,7 @@ if (_hasrequireditem) then {
} else { } else {
deleteVehicle _tmpbuilt; deleteVehicle _tmpbuilt;
cutText ["Canceled building." , "PLAIN DOWN"]; cutText ["\n\nCanceled building." , "PLAIN DOWN"];
}; };
} else { } else {
@@ -394,12 +400,12 @@ if (_hasrequireditem) then {
deleteVehicle _tmpbuilt; deleteVehicle _tmpbuilt;
cutText ["Canceled building." , "PLAIN DOWN"]; cutText ["\n\nCanceled building." , "PLAIN DOWN"];
}; };
} else { } else {
deleteVehicle _tmpbuilt; deleteVehicle _tmpbuilt;
cutText [format["Canceled construction of %1 %2.",_text,_reason], "PLAIN DOWN"]; cutText [format["\n\nCanceled construction of %1 %2.",_text,_reason], "PLAIN DOWN"];
}; };
}; };

View File

@@ -13,6 +13,14 @@ s_player_maint_build = 1;
// get cursortarget from addaction // get cursortarget from addaction
_obj = _this select 3; _obj = _this select 3;
// Find objectID
_objectID = _obj getVariable ["ObjectID","0"];
// Find objectUID
_objectUID = _obj getVariable ["ObjectUID","0"];
if(_objectID == "0" && _objectUID == "0") exitWith {TradeInprogress = false; s_player_maint_build = -1; cutText ["Not setup yet.", "PLAIN DOWN"];};
// Get classname // Get classname
_classname = typeOf _obj; _classname = typeOf _obj;
@@ -75,12 +83,6 @@ if (_proceed) then {
// Get direction // Get direction
_dir = getDir _obj; _dir = getDir _obj;
// Find objectID
_objectID = _obj getVariable ["ObjectID","0"];
// Find objectUID
_objectUID = _obj getVariable ["ObjectUID","0"];
// Find CharacterID // Find CharacterID
_objectCharacterID = _obj getVariable ["CharacterID","0"]; _objectCharacterID = _obj getVariable ["CharacterID","0"];
@@ -100,10 +102,13 @@ if (_proceed) then {
dayzDeleteObj = [_objectID,_objectUID]; dayzDeleteObj = [_objectID,_objectUID];
publicVariableServer "dayzDeleteObj"; publicVariableServer "dayzDeleteObj";
// sleep a bit to make sure delete happens before create
sleep 1;
// Publish variables // Publish variables
_object setVariable ["CharacterID",_objectCharacterID,true]; _object setVariable ["CharacterID",_objectCharacterID,true];
_object setVariable ["ObjectID",_objectID,true];
_object setVariable ["ObjectUID",_objectUID,true]; //_object setVariable ["ObjectUID",_objectUID,true];
_object setVariable ["OEMPos",_location,true]; _object setVariable ["OEMPos",_location,true];
dayzPublishObj = [_objectCharacterID,_object,[_dir,_location],_classname]; dayzPublishObj = [_objectCharacterID,_object,[_dir,_location],_classname];

View File

@@ -5,7 +5,7 @@
*/ */
private ["_isOk","_i","_objName","_objInfo","_lenInfo","_started","_finished","_animState","_isMedic","_proceed","_counter","_itemOut","_countOut","_tree","_distance2d","_distance3d","_trees","_findNearestTree"]; private ["_isOk","_i","_objName","_objInfo","_lenInfo","_started","_finished","_animState","_isMedic","_proceed","_counter","_itemOut","_countOut","_tree","_distance2d","_distance3d","_trees","_findNearestTree"];
if(TradeInprogress) exitWith { cutText ["Harvest wood already in progress." , "PLAIN DOWN"]; }; if(TradeInprogress) exitWith { cutText ["\n\nHarvest wood already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true; TradeInprogress = true;
// allowed trees list move this later // allowed trees list move this later
@@ -90,7 +90,7 @@ if (count(_findNearestTree) >= 1) then {
_counter = _counter + 1; _counter = _counter + 1;
}; };
cutText [format["Chopping down tree, walk away at anytime to cancel. (%1/%2)", _counter, _countOut], "PLAIN DOWN"]; cutText [format["\n\nChopping down tree, walk away at anytime to cancel. (%1/%2)", _counter, _countOut], "PLAIN DOWN"];
if(_counter == _countOut) exitWith { if(_counter == _countOut) exitWith {
_isOk = false; _isOk = false;
@@ -115,7 +115,7 @@ if (count(_findNearestTree) >= 1) then {
}; };
//diag_log format["DEBUG TREE DAMAGE: %1", _tree]; //diag_log format["DEBUG TREE DAMAGE: %1", _tree];
cutText [format["%1 piles of wood has been successfully added in front of you.", _countOut], "PLAIN DOWN"]; cutText [format["\n\n%1 piles of wood has been successfully added in front of you.", _countOut], "PLAIN DOWN"];
} else { } else {
r_interrupt = false; r_interrupt = false;
@@ -123,7 +123,7 @@ if (count(_findNearestTree) >= 1) then {
[objNull, player, rSwitchMove,""] call RE; [objNull, player, rSwitchMove,""] call RE;
player playActionNow "stop"; player playActionNow "stop";
}; };
cutText ["Canceled Harvesting Wood.", "PLAIN DOWN"]; cutText ["\n\nCanceled Harvesting Wood.", "PLAIN DOWN"];
}; };
} else { } else {

View File

@@ -1,6 +1,6 @@
private ["_item","_config","_onLadder","_create","_started","_finished","_animState","_isMedic","_qty","_box","_num_removed","_text","_haskey","_hastoolweapon","_isNear","_hasTinBar"]; private ["_item","_config","_onLadder","_create","_started","_finished","_animState","_isMedic","_qty","_box","_num_removed","_text","_haskey","_hastoolweapon","_isNear","_hasTinBar"];
if(TradeInprogress) exitWith { cutText ["Copy key already in progress." , "PLAIN DOWN"]; }; if(TradeInprogress) exitWith { cutText ["\n\nCopy key already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true; TradeInprogress = true;
_item = _this; _item = _this;
@@ -14,16 +14,16 @@ _haskey = _this in weapons player;
if (!_haskey) exitWith {TradeInprogress = false; cutText [format[(localize "str_player_30"),_text] , "PLAIN DOWN"]}; if (!_haskey) exitWith {TradeInprogress = false; cutText [format[(localize "str_player_30"),_text] , "PLAIN DOWN"]};
_hastoolweapon = "ItemKeyKit" in weapons player; _hastoolweapon = "ItemKeyKit" in weapons player;
if (!_hastoolweapon) exitWith {TradeInprogress = false; cutText ["Need Keymakers kit to make a copy of a key." , "PLAIN DOWN"]}; if (!_hastoolweapon) exitWith {TradeInprogress = false; cutText ["\n\nNeed Keymakers kit to make a copy of a key." , "PLAIN DOWN"]};
_isNear = {inflamed _x} count (position player nearObjects 2); _isNear = {inflamed _x} count (position player nearObjects 3);
if(_isNear == 0) exitWith {TradeInprogress = false; cutText ["Key crafting needs a fire within 2 meters." , "PLAIN DOWN"]}; if(_isNear == 0) exitWith {TradeInprogress = false; cutText ["\n\nKey crafting needs a fire within 3 meters." , "PLAIN DOWN"]};
call gear_ui_init; call gear_ui_init;
// require one tin bar per key // require one tin bar per key
_hasTinBar = "ItemTinBar" in magazines player; _hasTinBar = "ItemTinBar" in magazines player;
if(!_hasTinBar) exitWith {TradeInprogress = false; cutText ["Key crafting requires a 1oz Tin Bar." , "PLAIN DOWN"]}; if(!_hasTinBar) exitWith {TradeInprogress = false; cutText ["\n\nKey crafting requires a 1oz Tin Bar." , "PLAIN DOWN"]};
player playActionNow "Medic"; player playActionNow "Medic";
@@ -63,9 +63,9 @@ if(_finished) then {
_qty = 1; _qty = 1;
_box = unitBackpack player; _box = unitBackpack player;
_box addWeaponCargoGlobal [_create,_qty]; _box addWeaponCargoGlobal [_create,_qty];
cutText ["Copied key has been added to your backpack." , "PLAIN DOWN"]; cutText ["\n\nCopied key has been added to your backpack." , "PLAIN DOWN"];
} else { } else {
cutText ["Canceled Key Crafting." , "PLAIN DOWN"]; cutText ["\n\nCanceled Key Crafting." , "PLAIN DOWN"];
}; };
} else { } else {
r_interrupt = false; r_interrupt = false;
@@ -73,6 +73,6 @@ if(_finished) then {
[objNull, player, rSwitchMove,""] call RE; [objNull, player, rSwitchMove,""] call RE;
player playActionNow "stop"; player playActionNow "stop";
}; };
cutText ["Canceled Key Crafting." , "PLAIN DOWN"]; cutText ["\n\nCanceled Key Crafting." , "PLAIN DOWN"];
}; };
TradeInprogress = false; TradeInprogress = false;

View File

@@ -1,15 +1,37 @@
/* /*
DayZ Crafting DayZ Epoch Crafting 0.3
Usage: spawn player_goFishing; Made for DayZ Unleashed by [VB]AWOL please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com. Thanks to thevisad for help with the spawn call fixes.
*/
private ["_onLadder","_canDo","_selectedRecipeOutput","_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_itemOut","_countOut","_started","_finished","_animState","_isMedic","_removed","_tobe_removed_total","_textCreate","_textMissing","_selectedRecipeInput","_num_removed","_removed_total","_temp_removed_array","_abort","_reason","_isNear","_missingTools","_hastoolweapon","_selectedRecipeTools","_distance","_crafting","_needNear","_consumeweapons","_item"];
if(TradeInprogress) exitWith { cutText ["Crafting already in progress." , "PLAIN DOWN"]; }; USAGE EXAMPLE:
class ItemActions
{
class Crafting
{
text = "Craft Tent";
script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;"; // [Class of itemaction,CfgMagazines or CfgWeapons, item]
neednearby[] = {"workshop","fire"};
requiretools[] = {"ItemToolbox","ItemKnife"}; // (cfgweapons only)
output[] = {{"ItemTent",1}}; // (CfgMagazines, qty)
input[] = {{"ItemCanvas",2},{"ItemPole",2}}; // (CfgMagazines, qty)
inputweapons[] = {"ItemToolbox"}; // consume toolbox (cfgweapons only)
outputweapons[] = {"ItemToolbox"}; // return toolbox (cfgweapons only)
};
};
*/
private ["_onLadder","_canDo","_selectedRecipeOutput","_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_itemOut","_countOut","_started","_finished","_animState","_isMedic","_removed","_tobe_removed_total","_textCreate","_textMissing","_selectedRecipeInput","_num_removed","_removed_total","_temp_removed_array","_abort","_reason","_isNear","_missingTools","_hastoolweapon","_selectedRecipeTools","_distance","_crafting","_needNear","_item","_baseClass","_num_removed_weapons","_outputWeapons","_inputWeapons"];
if(TradeInprogress) exitWith { cutText ["\n\nCrafting already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true; TradeInprogress = true;
// temp array of removed parts // This is used to find correct recipe based what itemaction was click allows multiple recipes per item.
_temp_removed_array = []; _crafting = _this select 0;
// This tells the script what type of item we are clicking on
_baseClass = _this select 1;
_item = _this select 2;
_abort = false; _abort = false;
_distance = 3; _distance = 3;
_reason = ""; _reason = "";
@@ -17,12 +39,8 @@ _reason = "";
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_canDo = (!r_drag_sqf and !r_player_unconscious and !_onLadder); _canDo = (!r_drag_sqf and !r_player_unconscious and !_onLadder);
_item = _this; // Need Near Requirements
_crafting = "Crafting"; _needNear = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "neednearby");
// check if fire is reqired
_needNear = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "neednearby");
if("fire" in _needNear) then { if("fire" in _needNear) then {
_isNear = {inflamed _x} count (position player nearObjects _distance); _isNear = {inflamed _x} count (position player nearObjects _distance);
if(_isNear == 0) then { if(_isNear == 0) then {
@@ -30,17 +48,15 @@ if("fire" in _needNear) then {
_reason = "fire"; _reason = "fire";
}; };
}; };
if("workshop" in _needNear) then { if("workshop" in _needNear) then {
_isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], 5]); _isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], _distance]); // Needs changed to your workbench class
if(_isNear == 0) then { if(_isNear == 0) then {
_abort = true; _abort = true;
_reason = "workshop"; _reason = "workshop";
}; };
}; };
if(_abort) exitWith { if(_abort) exitWith {
cutText [format["Crafting needs a %1 within %2 meters",_reason,_distance], "PLAIN DOWN"]; cutText [format["\n\nCrafting needs a %1 within %2 meters",_reason,_distance], "PLAIN DOWN"];
TradeInprogress = false; TradeInprogress = false;
}; };
@@ -48,158 +64,157 @@ if(_abort) exitWith {
if (_canDo) then { if (_canDo) then {
// Moved all recipes input and outputs to configs _selectedRecipeTools = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "requiretools");
_selectedRecipeOutput = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "output");
_selectedRecipeOutput = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "output"); _selectedRecipeInput = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "input");
_selectedRecipeInput = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "input"); _outputWeapons = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "outputweapons");
_selectedRecipeTools = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "requiretools"); _inputWeapons = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "inputweapons");
_consumeweapons = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "consumeweapons");
_missing = ""; _craft_doLoop = true;
_missingTools = false;
{
_hastoolweapon = _x in weapons player;
if(!_hastoolweapon) exitWith { _missingTools = true; _missing = _x; };
} forEach _selectedRecipeTools;
if(!_missingTools) then { while {_craft_doLoop} do {
//diag_log format["Selected Recipe Input: %1", _selectedRecipeInput]; _temp_removed_array = [];
//diag_log format["Selected Recipe Output: %1", _selectedRecipeOutput];
_missing = "";
// Dry run to see if all parts are available. _missingTools = false;
_proceed = true;
{ {
_itemIn = _x select 0; _hastoolweapon = _x in weapons player;
_countIn = _x select 1; if(!_hastoolweapon) exitWith { _craft_doLoop = false; _missingTools = true; _missing = _x; };
} forEach _selectedRecipeTools;
//diag_log format["Recipe Check: %1 %2", _itemIn,_countIn];
// not neccessary
//if (!(_itemIn in magazines player)) exitWith { _missing = _itemIn; _missingQty = _countIn; _proceed = false; };
// match against class and parentClass
_qty = { (_x == _itemIn) || (configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player;
if(_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; };
} forEach _selectedRecipeInput; if(!_missingTools) then {
// If all parts proceed
if (_proceed) then {
cutText ["Crafting started", "PLAIN DOWN"];
player playActionNow "Medic";
[player,"repair",0,false] call dayz_zombieSpeak;
[player,50,true,(getPosATL player)] spawn player_alertZombies;
r_interrupt = false;
_animState = animationState player;
r_doLoop = true;
_started = false;
_finished = false;
while {r_doLoop} do {
_animState = animationState player;
_isMedic = ["medic",_animState] call fnc_inString;
if (_isMedic) then {
_started = true;
};
if (_started and !_isMedic) then {
r_doLoop = false;
_finished = true;
};
if (r_interrupt) then {
r_doLoop = false;
};
sleep 0.1;
};
r_doLoop = false;
if (_finished) then {
_removed_total = 0; // count total of removed items
_tobe_removed_total = 0; // count total of all to be removed items
// Take items
{
_removed = 0;
_itemIn = _x select 0;
_countIn = _x select 1;
// diag_log format["Recipe Finish: %1 %2", _itemIn,_countIn];
_tobe_removed_total = _tobe_removed_total + _countIn;
{
if( (_removed < _countIn) && ((_x == _itemIn) || configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn)) then {
_num_removed = ([player,_x] call BIS_fnc_invRemove);
_removed = _removed + _num_removed;
_removed_total = _removed_total + _num_removed;
if(_num_removed >= 1) then {
_temp_removed_array set [count _temp_removed_array,_x];
};
};
} forEach magazines player;
} forEach _selectedRecipeInput;
//diag_log format["removed: %1 of: %2", _removed, _tobe_removed_total]; // Dry run to see if all parts are available.
_proceed = true;
// Only proceed if all parts were removed successfully {
if(_removed_total == _tobe_removed_total) then { _itemIn = _x select 0;
_countIn = _x select 1;
// Put items
{ _qty = { (_x == _itemIn) || (configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player;
// consumeweapons
{ if(_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; };
player removeWeapon _x;
} forEach _consumeweapons; } forEach _selectedRecipeInput;
_itemOut = _x select 0; // If all parts proceed
_countOut = _x select 1; if (_proceed) then {
//diag_log format["Recipe Output: %1 %2", _itemOut,_countOut];
cutText ["\n\nCrafting started", "PLAIN DOWN"];
for "_x" from 1 to _countOut do {
player addMagazine _itemOut; player playActionNow "Medic";
};
[player,"repair",0,false] call dayz_zombieSpeak;
[player,50,true,(getPosATL player)] spawn player_alertZombies;
// get display name
_textCreate = getText(configFile >> "CfgMagazines" >> _itemOut >> "displayName");
// Add crafted item
cutText [format["Crafted Item: %1 x %2",_textCreate,_countOut], "PLAIN DOWN"];
} forEach _selectedRecipeOutput;
} else {
// Refund parts since we failed
{player addMagazine _x;} forEach _temp_removed_array;
cutText [format["Missing Parts after first check Item: %1 / %2",_removed_total,_tobe_removed_total], "PLAIN DOWN"];
};
} else {
r_interrupt = false; r_interrupt = false;
if (vehicle player == player) then { _animState = animationState player;
[objNull, player, rSwitchMove,""] call RE; r_doLoop = true;
player playActionNow "stop"; _started = false;
}; _finished = false;
cutText ["Canceled crafting.", "PLAIN DOWN"];
};
while {r_doLoop} do {
_animState = animationState player;
_isMedic = ["medic",_animState] call fnc_inString;
if (_isMedic) then {
_started = true;
};
if (_started and !_isMedic) then {
r_doLoop = false;
_finished = true;
};
if (r_interrupt) then {
r_doLoop = false;
};
sleep 0.1;
};
r_doLoop = false;
if (_finished) then {
_removed_total = 0; // count total of removed items
_tobe_removed_total = 0; // count total of all to be removed items
// Take items
{
_removed = 0;
_itemIn = _x select 0;
_countIn = _x select 1;
// diag_log format["Recipe Finish: %1 %2", _itemIn,_countIn];
_tobe_removed_total = _tobe_removed_total + _countIn;
{
if( (_removed < _countIn) && ((_x == _itemIn) || configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn)) then {
_num_removed = ([player,_x] call BIS_fnc_invRemove);
_removed = _removed + _num_removed;
_removed_total = _removed_total + _num_removed;
if(_num_removed >= 1) then {
_temp_removed_array set [count _temp_removed_array,_x];
};
};
} forEach magazines player;
} forEach _selectedRecipeInput;
//diag_log format["removed: %1 of: %2", _removed, _tobe_removed_total];
// Only proceed if all parts were removed successfully
if(_removed_total == _tobe_removed_total) then {
_num_removed_weapons = 0;
{
_num_removed_weapons = _num_removed_weapons + ([player,_x] call BIS_fnc_invRemove);
} forEach _inputWeapons;
if (_num_removed_weapons == (count _inputWeapons)) then {
{
player addWeapon _x;
} forEach _outputWeapons;
{
_itemOut = _x select 0;
_countOut = _x select 1;
for "_x" from 1 to _countOut do {
player addMagazine _itemOut;
};
_textCreate = getText(configFile >> "CfgMagazines" >> _itemOut >> "displayName");
// Add crafted item
cutText [format["\n\nCrafted Item: %1 x %2",_textCreate,_countOut], "PLAIN DOWN"];
} forEach _selectedRecipeOutput;
};
} else {
// Refund parts since we failed
{player addMagazine _x;} forEach _temp_removed_array;
cutText [format["\n\nMissing Parts after first check Item: %1 / %2",_removed_total,_tobe_removed_total], "PLAIN DOWN"];
};
} else {
r_interrupt = false;
if (vehicle player == player) then {
[objNull, player, rSwitchMove,""] call RE;
player playActionNow "stop";
};
cutText ["\n\nCanceled crafting.", "PLAIN DOWN"];
_craft_doLoop = false;
};
} else {
_textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName");
cutText [format["\n\nMissing %1 more of %2",_missingQty, _textMissing], "PLAIN DOWN"];
_craft_doLoop = false;
};
} else { } else {
_textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName"); _textMissing = getText(configFile >> "CfgWeapons" >> _missing >> "displayName");
cutText [format["Missing %1 more of %2",_missingQty, _textMissing], "PLAIN DOWN"]; cutText [format["\n\nMissing Tool: %1",_textMissing], "PLAIN DOWN"];
_craft_doLoop = false;
}; };
} else {
_textMissing = getText(configFile >> "CfgWeapons" >> _missing >> "displayName");
cutText [format["Missing Tool: %1",_textMissing], "PLAIN DOWN"];
}; };
} else { } else {
cutText ["Crafting needs a fire within 2 meters.", "PLAIN DOWN"]; cutText ["\n\nCanceled crafting.", "PLAIN DOWN"];
}; };
TradeInprogress = false; TradeInprogress = false;

View File

@@ -1,205 +0,0 @@
/*
DayZ Crafting
Usage: spawn player_goFishing;
Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
*/
private ["_onLadder","_canDo","_selectedRecipeOutput","_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_itemOut","_countOut","_started","_finished","_animState","_isMedic","_removed","_tobe_removed_total","_textCreate","_textMissing","_selectedRecipeInput","_num_removed","_removed_total","_temp_removed_array","_abort","_reason","_isNear","_missingTools","_hastoolweapon","_selectedRecipeTools","_distance","_crafting","_needNear","_consumeweapons","_item"];
if(TradeInprogress) exitWith { cutText ["Crafting already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true;
// temp array of removed parts
_temp_removed_array = [];
_abort = false;
_distance = 3;
_reason = "";
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_canDo = (!r_drag_sqf and !r_player_unconscious and !_onLadder);
_item = _this;
_crafting = "Crafting1";
// check if fire is reqired
_needNear = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "neednearby");
if("fire" in _needNear) then {
_isNear = {inflamed _x} count (position player nearObjects _distance);
if(_isNear == 0) then {
_abort = true;
_reason = "fire";
};
};
if("workshop" in _needNear) then {
_isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], 5]);
if(_isNear == 0) then {
_abort = true;
_reason = "workshop";
};
};
if(_abort) exitWith {
cutText [format["Crafting needs a %1 within %2 meters",_reason,_distance], "PLAIN DOWN"];
TradeInprogress = false;
};
// diag_log format["Checking for fire: %1", _isFireNear];
if (_canDo) then {
// Moved all recipes input and outputs to configs
_selectedRecipeOutput = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "output");
_selectedRecipeInput = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "input");
_selectedRecipeTools = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "requiretools");
_consumeweapons = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "consumeweapons");
_missing = "";
_missingTools = false;
{
_hastoolweapon = _x in weapons player;
if(!_hastoolweapon) exitWith { _missingTools = true; _missing = _x; };
} forEach _selectedRecipeTools;
if(!_missingTools) then {
//diag_log format["Selected Recipe Input: %1", _selectedRecipeInput];
//diag_log format["Selected Recipe Output: %1", _selectedRecipeOutput];
// Dry run to see if all parts are available.
_proceed = true;
{
_itemIn = _x select 0;
_countIn = _x select 1;
//diag_log format["Recipe Check: %1 %2", _itemIn,_countIn];
// not neccessary
//if (!(_itemIn in magazines player)) exitWith { _missing = _itemIn; _missingQty = _countIn; _proceed = false; };
// match against class and parentClass
_qty = { (_x == _itemIn) || (configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player;
if(_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; };
} forEach _selectedRecipeInput;
// If all parts proceed
if (_proceed) then {
cutText ["Crafting started", "PLAIN DOWN"];
player playActionNow "Medic";
[player,"repair",0,false] call dayz_zombieSpeak;
[player,50,true,(getPosATL player)] spawn player_alertZombies;
r_interrupt = false;
_animState = animationState player;
r_doLoop = true;
_started = false;
_finished = false;
while {r_doLoop} do {
_animState = animationState player;
_isMedic = ["medic",_animState] call fnc_inString;
if (_isMedic) then {
_started = true;
};
if (_started and !_isMedic) then {
r_doLoop = false;
_finished = true;
};
if (r_interrupt) then {
r_doLoop = false;
};
sleep 0.1;
};
r_doLoop = false;
if (_finished) then {
_removed_total = 0; // count total of removed items
_tobe_removed_total = 0; // count total of all to be removed items
// Take items
{
_removed = 0;
_itemIn = _x select 0;
_countIn = _x select 1;
// diag_log format["Recipe Finish: %1 %2", _itemIn,_countIn];
_tobe_removed_total = _tobe_removed_total + _countIn;
{
if( (_removed < _countIn) && ((_x == _itemIn) || configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn)) then {
_num_removed = ([player,_x] call BIS_fnc_invRemove);
_removed = _removed + _num_removed;
_removed_total = _removed_total + _num_removed;
if(_num_removed >= 1) then {
_temp_removed_array set [count _temp_removed_array,_x];
};
};
} forEach magazines player;
} forEach _selectedRecipeInput;
//diag_log format["removed: %1 of: %2", _removed, _tobe_removed_total];
// Only proceed if all parts were removed successfully
if(_removed_total == _tobe_removed_total) then {
// Put items
{
// consumeweapons
{
player removeWeapon _x;
} forEach _consumeweapons;
_itemOut = _x select 0;
_countOut = _x select 1;
//diag_log format["Recipe Output: %1 %2", _itemOut,_countOut];
for "_x" from 1 to _countOut do {
player addMagazine _itemOut;
};
// get display name
_textCreate = getText(configFile >> "CfgMagazines" >> _itemOut >> "displayName");
// Add crafted item
cutText [format["Crafted Item: %1 x %2",_textCreate,_countOut], "PLAIN DOWN"];
} forEach _selectedRecipeOutput;
} else {
// Refund parts since we failed
{player addMagazine _x;} forEach _temp_removed_array;
cutText [format["Missing Parts after first check Item: %1 / %2",_removed_total,_tobe_removed_total], "PLAIN DOWN"];
};
} else {
r_interrupt = false;
if (vehicle player == player) then {
[objNull, player, rSwitchMove,""] call RE;
player playActionNow "stop";
};
cutText ["Canceled crafting.", "PLAIN DOWN"];
};
} else {
_textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName");
cutText [format["Missing %1 more of %2",_missingQty, _textMissing], "PLAIN DOWN"];
};
} else {
_textMissing = getText(configFile >> "CfgWeapons" >> _missing >> "displayName");
cutText [format["Missing Tool: %1",_textMissing], "PLAIN DOWN"];
};
} else {
cutText ["Crafting needs a fire within 2 meters.", "PLAIN DOWN"];
};
TradeInprogress = false;

View File

@@ -1,205 +0,0 @@
/*
DayZ Crafting
Usage: spawn player_goFishing;
Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
*/
private ["_onLadder","_canDo","_selectedRecipeOutput","_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_itemOut","_countOut","_started","_finished","_animState","_isMedic","_removed","_tobe_removed_total","_textCreate","_textMissing","_selectedRecipeInput","_num_removed","_removed_total","_temp_removed_array","_abort","_reason","_isNear","_missingTools","_hastoolweapon","_selectedRecipeTools","_distance","_crafting","_needNear","_consumeweapons","_item"];
if(TradeInprogress) exitWith { cutText ["Crafting already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true;
// temp array of removed parts
_temp_removed_array = [];
_abort = false;
_distance = 3;
_reason = "";
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_canDo = (!r_drag_sqf and !r_player_unconscious and !_onLadder);
_item = _this;
_crafting = "Crafting2";
// check if fire is reqired
_needNear = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "neednearby");
if("fire" in _needNear) then {
_isNear = {inflamed _x} count (position player nearObjects _distance);
if(_isNear == 0) then {
_abort = true;
_reason = "fire";
};
};
if("workshop" in _needNear) then {
_isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], 5]);
if(_isNear == 0) then {
_abort = true;
_reason = "workshop";
};
};
if(_abort) exitWith {
cutText [format["Crafting needs a %1 within %2 meters",_reason,_distance], "PLAIN DOWN"];
TradeInprogress = false;
};
// diag_log format["Checking for fire: %1", _isFireNear];
if (_canDo) then {
// Moved all recipes input and outputs to configs
_selectedRecipeOutput = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "output");
_selectedRecipeInput = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "input");
_selectedRecipeTools = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "requiretools");
_consumeweapons = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "consumeweapons");
_missing = "";
_missingTools = false;
{
_hastoolweapon = _x in weapons player;
if(!_hastoolweapon) exitWith { _missingTools = true; _missing = _x; };
} forEach _selectedRecipeTools;
if(!_missingTools) then {
//diag_log format["Selected Recipe Input: %1", _selectedRecipeInput];
//diag_log format["Selected Recipe Output: %1", _selectedRecipeOutput];
// Dry run to see if all parts are available.
_proceed = true;
{
_itemIn = _x select 0;
_countIn = _x select 1;
//diag_log format["Recipe Check: %1 %2", _itemIn,_countIn];
// not neccessary
//if (!(_itemIn in magazines player)) exitWith { _missing = _itemIn; _missingQty = _countIn; _proceed = false; };
// match against class and parentClass
_qty = { (_x == _itemIn) || (configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player;
if(_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; };
} forEach _selectedRecipeInput;
// If all parts proceed
if (_proceed) then {
cutText ["Crafting started", "PLAIN DOWN"];
player playActionNow "Medic";
[player,"repair",0,false] call dayz_zombieSpeak;
[player,50,true,(getPosATL player)] spawn player_alertZombies;
r_interrupt = false;
_animState = animationState player;
r_doLoop = true;
_started = false;
_finished = false;
while {r_doLoop} do {
_animState = animationState player;
_isMedic = ["medic",_animState] call fnc_inString;
if (_isMedic) then {
_started = true;
};
if (_started and !_isMedic) then {
r_doLoop = false;
_finished = true;
};
if (r_interrupt) then {
r_doLoop = false;
};
sleep 0.1;
};
r_doLoop = false;
if (_finished) then {
_removed_total = 0; // count total of removed items
_tobe_removed_total = 0; // count total of all to be removed items
// Take items
{
_removed = 0;
_itemIn = _x select 0;
_countIn = _x select 1;
// diag_log format["Recipe Finish: %1 %2", _itemIn,_countIn];
_tobe_removed_total = _tobe_removed_total + _countIn;
{
if( (_removed < _countIn) && ((_x == _itemIn) || configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn)) then {
_num_removed = ([player,_x] call BIS_fnc_invRemove);
_removed = _removed + _num_removed;
_removed_total = _removed_total + _num_removed;
if(_num_removed >= 1) then {
_temp_removed_array set [count _temp_removed_array,_x];
};
};
} forEach magazines player;
} forEach _selectedRecipeInput;
//diag_log format["removed: %1 of: %2", _removed, _tobe_removed_total];
// Only proceed if all parts were removed successfully
if(_removed_total == _tobe_removed_total) then {
// Put items
{
// consumeweapons
{
player removeWeapon _x;
} forEach _consumeweapons;
_itemOut = _x select 0;
_countOut = _x select 1;
//diag_log format["Recipe Output: %1 %2", _itemOut,_countOut];
for "_x" from 1 to _countOut do {
player addMagazine _itemOut;
};
// get display name
_textCreate = getText(configFile >> "CfgMagazines" >> _itemOut >> "displayName");
// Add crafted item
cutText [format["Crafted Item: %1 x %2",_textCreate,_countOut], "PLAIN DOWN"];
} forEach _selectedRecipeOutput;
} else {
// Refund parts since we failed
{player addMagazine _x;} forEach _temp_removed_array;
cutText [format["Missing Parts after first check Item: %1 / %2",_removed_total,_tobe_removed_total], "PLAIN DOWN"];
};
} else {
r_interrupt = false;
if (vehicle player == player) then {
[objNull, player, rSwitchMove,""] call RE;
player playActionNow "stop";
};
cutText ["Canceled crafting.", "PLAIN DOWN"];
};
} else {
_textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName");
cutText [format["Missing %1 more of %2",_missingQty, _textMissing], "PLAIN DOWN"];
};
} else {
_textMissing = getText(configFile >> "CfgWeapons" >> _missing >> "displayName");
cutText [format["Missing Tool: %1",_textMissing], "PLAIN DOWN"];
};
} else {
cutText ["Crafting needs a fire within 2 meters.", "PLAIN DOWN"];
};
TradeInprogress = false;

View File

@@ -1,205 +0,0 @@
/*
DayZ Crafting
Usage: spawn player_goFishing;
Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
*/
private ["_onLadder","_canDo","_selectedRecipeOutput","_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_itemOut","_countOut","_started","_finished","_animState","_isMedic","_removed","_tobe_removed_total","_textCreate","_textMissing","_selectedRecipeInput","_num_removed","_removed_total","_temp_removed_array","_abort","_reason","_isNear","_missingTools","_hastoolweapon","_selectedRecipeTools","_distance","_crafting","_needNear","_consumeweapons","_item"];
if(TradeInprogress) exitWith { cutText ["Crafting already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true;
// temp array of removed parts
_temp_removed_array = [];
_abort = false;
_distance = 3;
_reason = "";
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_canDo = (!r_drag_sqf and !r_player_unconscious and !_onLadder);
_item = _this;
_crafting = "Crafting3";
// check if fire is reqired
_needNear = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "neednearby");
if("fire" in _needNear) then {
_isNear = {inflamed _x} count (position player nearObjects _distance);
if(_isNear == 0) then {
_abort = true;
_reason = "fire";
};
};
if("workshop" in _needNear) then {
_isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], 5]);
if(_isNear == 0) then {
_abort = true;
_reason = "workshop";
};
};
if(_abort) exitWith {
cutText [format["Crafting needs a %1 within %2 meters",_reason,_distance], "PLAIN DOWN"];
TradeInprogress = false;
};
// diag_log format["Checking for fire: %1", _isFireNear];
if (_canDo) then {
// Moved all recipes input and outputs to configs
_selectedRecipeOutput = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "output");
_selectedRecipeInput = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "input");
_selectedRecipeTools = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "requiretools");
_consumeweapons = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "consumeweapons");
_missing = "";
_missingTools = false;
{
_hastoolweapon = _x in weapons player;
if(!_hastoolweapon) exitWith { _missingTools = true; _missing = _x; };
} forEach _selectedRecipeTools;
if(!_missingTools) then {
//diag_log format["Selected Recipe Input: %1", _selectedRecipeInput];
//diag_log format["Selected Recipe Output: %1", _selectedRecipeOutput];
// Dry run to see if all parts are available.
_proceed = true;
{
_itemIn = _x select 0;
_countIn = _x select 1;
//diag_log format["Recipe Check: %1 %2", _itemIn,_countIn];
// not neccessary
//if (!(_itemIn in magazines player)) exitWith { _missing = _itemIn; _missingQty = _countIn; _proceed = false; };
// match against class and parentClass
_qty = { (_x == _itemIn) || (configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player;
if(_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; };
} forEach _selectedRecipeInput;
// If all parts proceed
if (_proceed) then {
cutText ["Crafting started", "PLAIN DOWN"];
player playActionNow "Medic";
[player,"repair",0,false] call dayz_zombieSpeak;
[player,50,true,(getPosATL player)] spawn player_alertZombies;
r_interrupt = false;
_animState = animationState player;
r_doLoop = true;
_started = false;
_finished = false;
while {r_doLoop} do {
_animState = animationState player;
_isMedic = ["medic",_animState] call fnc_inString;
if (_isMedic) then {
_started = true;
};
if (_started and !_isMedic) then {
r_doLoop = false;
_finished = true;
};
if (r_interrupt) then {
r_doLoop = false;
};
sleep 0.1;
};
r_doLoop = false;
if (_finished) then {
_removed_total = 0; // count total of removed items
_tobe_removed_total = 0; // count total of all to be removed items
// Take items
{
_removed = 0;
_itemIn = _x select 0;
_countIn = _x select 1;
// diag_log format["Recipe Finish: %1 %2", _itemIn,_countIn];
_tobe_removed_total = _tobe_removed_total + _countIn;
{
if( (_removed < _countIn) && ((_x == _itemIn) || configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn)) then {
_num_removed = ([player,_x] call BIS_fnc_invRemove);
_removed = _removed + _num_removed;
_removed_total = _removed_total + _num_removed;
if(_num_removed >= 1) then {
_temp_removed_array set [count _temp_removed_array,_x];
};
};
} forEach magazines player;
} forEach _selectedRecipeInput;
//diag_log format["removed: %1 of: %2", _removed, _tobe_removed_total];
// Only proceed if all parts were removed successfully
if(_removed_total == _tobe_removed_total) then {
// Put items
{
// consumeweapons
{
player removeWeapon _x;
} forEach _consumeweapons;
_itemOut = _x select 0;
_countOut = _x select 1;
//diag_log format["Recipe Output: %1 %2", _itemOut,_countOut];
for "_x" from 1 to _countOut do {
player addMagazine _itemOut;
};
// get display name
_textCreate = getText(configFile >> "CfgMagazines" >> _itemOut >> "displayName");
// Add crafted item
cutText [format["Crafted Item: %1 x %2",_textCreate,_countOut], "PLAIN DOWN"];
} forEach _selectedRecipeOutput;
} else {
// Refund parts since we failed
{player addMagazine _x;} forEach _temp_removed_array;
cutText [format["Missing Parts after first check Item: %1 / %2",_removed_total,_tobe_removed_total], "PLAIN DOWN"];
};
} else {
r_interrupt = false;
if (vehicle player == player) then {
[objNull, player, rSwitchMove,""] call RE;
player playActionNow "stop";
};
cutText ["Canceled crafting.", "PLAIN DOWN"];
};
} else {
_textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName");
cutText [format["Missing %1 more of %2",_missingQty, _textMissing], "PLAIN DOWN"];
};
} else {
_textMissing = getText(configFile >> "CfgWeapons" >> _missing >> "displayName");
cutText [format["Missing Tool: %1",_textMissing], "PLAIN DOWN"];
};
} else {
cutText ["Crafting needs a fire within 2 meters.", "PLAIN DOWN"];
};
TradeInprogress = false;

View File

@@ -1,205 +0,0 @@
/*
DayZ Crafting
Usage: spawn player_goFishing;
Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
*/
private ["_onLadder","_canDo","_selectedRecipeOutput","_proceed","_itemIn","_countIn","_missing","_missingQty","_qty","_itemOut","_countOut","_started","_finished","_animState","_isMedic","_removed","_tobe_removed_total","_textCreate","_textMissing","_selectedRecipeInput","_num_removed","_removed_total","_temp_removed_array","_abort","_reason","_isNear","_missingTools","_hastoolweapon","_selectedRecipeTools","_distance","_crafting","_needNear","_consumeweapons","_item"];
if(TradeInprogress) exitWith { cutText ["Crafting already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true;
// temp array of removed parts
_temp_removed_array = [];
_abort = false;
_distance = 3;
_reason = "";
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_canDo = (!r_drag_sqf and !r_player_unconscious and !_onLadder);
_item = _this;
_crafting = "Crafting4";
// check if fire is reqired
_needNear = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "neednearby");
if("fire" in _needNear) then {
_isNear = {inflamed _x} count (position player nearObjects _distance);
if(_isNear == 0) then {
_abort = true;
_reason = "fire";
};
};
if("workshop" in _needNear) then {
_isNear = count (nearestObjects [player, ["Wooden_shed_DZ","WoodShack_DZ","WorkBench_DZ"], 5]);
if(_isNear == 0) then {
_abort = true;
_reason = "workshop";
};
};
if(_abort) exitWith {
cutText [format["Crafting needs a %1 within %2 meters",_reason,_distance], "PLAIN DOWN"];
TradeInprogress = false;
};
// diag_log format["Checking for fire: %1", _isFireNear];
if (_canDo) then {
// Moved all recipes input and outputs to configs
_selectedRecipeOutput = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "output");
_selectedRecipeInput = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "input");
_selectedRecipeTools = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "requiretools");
_consumeweapons = getArray (configFile >> "cfgMagazines" >> _item >> "ItemActions" >> _crafting >> "consumeweapons");
_missing = "";
_missingTools = false;
{
_hastoolweapon = _x in weapons player;
if(!_hastoolweapon) exitWith { _missingTools = true; _missing = _x; };
} forEach _selectedRecipeTools;
if(!_missingTools) then {
//diag_log format["Selected Recipe Input: %1", _selectedRecipeInput];
//diag_log format["Selected Recipe Output: %1", _selectedRecipeOutput];
// Dry run to see if all parts are available.
_proceed = true;
{
_itemIn = _x select 0;
_countIn = _x select 1;
//diag_log format["Recipe Check: %1 %2", _itemIn,_countIn];
// not neccessary
//if (!(_itemIn in magazines player)) exitWith { _missing = _itemIn; _missingQty = _countIn; _proceed = false; };
// match against class and parentClass
_qty = { (_x == _itemIn) || (configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player;
if(_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; };
} forEach _selectedRecipeInput;
// If all parts proceed
if (_proceed) then {
cutText ["Crafting started", "PLAIN DOWN"];
player playActionNow "Medic";
[player,"repair",0,false] call dayz_zombieSpeak;
[player,50,true,(getPosATL player)] spawn player_alertZombies;
r_interrupt = false;
_animState = animationState player;
r_doLoop = true;
_started = false;
_finished = false;
while {r_doLoop} do {
_animState = animationState player;
_isMedic = ["medic",_animState] call fnc_inString;
if (_isMedic) then {
_started = true;
};
if (_started and !_isMedic) then {
r_doLoop = false;
_finished = true;
};
if (r_interrupt) then {
r_doLoop = false;
};
sleep 0.1;
};
r_doLoop = false;
if (_finished) then {
_removed_total = 0; // count total of removed items
_tobe_removed_total = 0; // count total of all to be removed items
// Take items
{
_removed = 0;
_itemIn = _x select 0;
_countIn = _x select 1;
// diag_log format["Recipe Finish: %1 %2", _itemIn,_countIn];
_tobe_removed_total = _tobe_removed_total + _countIn;
{
if( (_removed < _countIn) && ((_x == _itemIn) || configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn)) then {
_num_removed = ([player,_x] call BIS_fnc_invRemove);
_removed = _removed + _num_removed;
_removed_total = _removed_total + _num_removed;
if(_num_removed >= 1) then {
_temp_removed_array set [count _temp_removed_array,_x];
};
};
} forEach magazines player;
} forEach _selectedRecipeInput;
//diag_log format["removed: %1 of: %2", _removed, _tobe_removed_total];
// Only proceed if all parts were removed successfully
if(_removed_total == _tobe_removed_total) then {
// Put items
{
// consumeweapons
{
player removeWeapon _x;
} forEach _consumeweapons;
_itemOut = _x select 0;
_countOut = _x select 1;
//diag_log format["Recipe Output: %1 %2", _itemOut,_countOut];
for "_x" from 1 to _countOut do {
player addMagazine _itemOut;
};
// get display name
_textCreate = getText(configFile >> "CfgMagazines" >> _itemOut >> "displayName");
// Add crafted item
cutText [format["Crafted Item: %1 x %2",_textCreate,_countOut], "PLAIN DOWN"];
} forEach _selectedRecipeOutput;
} else {
// Refund parts since we failed
{player addMagazine _x;} forEach _temp_removed_array;
cutText [format["Missing Parts after first check Item: %1 / %2",_removed_total,_tobe_removed_total], "PLAIN DOWN"];
};
} else {
r_interrupt = false;
if (vehicle player == player) then {
[objNull, player, rSwitchMove,""] call RE;
player playActionNow "stop";
};
cutText ["Canceled crafting.", "PLAIN DOWN"];
};
} else {
_textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName");
cutText [format["Missing %1 more of %2",_missingQty, _textMissing], "PLAIN DOWN"];
};
} else {
_textMissing = getText(configFile >> "CfgWeapons" >> _missing >> "displayName");
cutText [format["Missing Tool: %1",_textMissing], "PLAIN DOWN"];
};
} else {
cutText ["Crafting needs a fire within 2 meters.", "PLAIN DOWN"];
};
TradeInprogress = false;

View File

@@ -6,7 +6,7 @@ call gear_ui_init;
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
if (_onLadder) exitWith {cutText [(localize "str_player_21") , "PLAIN DOWN"]}; if (_onLadder) exitWith {cutText [(localize "str_player_21") , "PLAIN DOWN"]};
if (vehicle player != player) exitWith {cutText ["You may not drink while in a vehicle", "PLAIN DOWN"]}; if (vehicle player != player) exitWith {cutText ["\n\nYou may not drink while in a vehicle", "PLAIN DOWN"]};
//Force players to wait 3 mins to drink again //Force players to wait 3 mins to drink again
//if (dayz_lastDrink < 180) exitWith {cutText ["You may not drink, your not thirsty", "PLAIN DOWN"]}; //if (dayz_lastDrink < 180) exitWith {cutText ["You may not drink, your not thirsty", "PLAIN DOWN"]};

View File

@@ -18,7 +18,9 @@ player removeWeapon _item;
if (_item == "MeleeHatchet") then {_item = "ItemHatchet";}; if (_item == "MeleeHatchet") then {_item = "ItemHatchet";};
if (_item == "MeleeCrowbar") then {_item = "MeleeCrowbar";}; if (_item == "MeleeCrowbar") then {_item = "MeleeCrowbar";};
if (_item == "MeleeMachete") then {_item = "ItemMachete";}; if (_item == "MeleeMachete") then {_item = "ItemMachete";};
if (_item == "MeleeFishingPole") then {_item = "MeleeFishingPole";};
//if (_item == "MeleeFishingPole") then {_item = "MeleeFishingPole";};
//if (_item == "MeleeSledge") then {_item = "MeleeSledge";};
_bag = createVehicle [format["WeaponHolder_%1",_item],getPosATL player,[], 0, "CAN_COLLIDE"]; _bag = createVehicle [format["WeaponHolder_%1",_item],getPosATL player,[], 0, "CAN_COLLIDE"];
_bag setdir (getDir player); _bag setdir (getDir player);

View File

@@ -4,7 +4,7 @@ call gear_ui_init;
_onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1; _onLadder = (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
if (_onLadder) exitWith {cutText [(localize "str_player_21") , "PLAIN DOWN"]}; if (_onLadder) exitWith {cutText [(localize "str_player_21") , "PLAIN DOWN"]};
if (vehicle player != player) exitWith {cutText ["You may not eat while in a vehicle", "PLAIN DOWN"]}; if (vehicle player != player) exitWith {cutText ["\n\nYou may not eat while in a vehicle", "PLAIN DOWN"]};
//Force players to wait 3 mins to eat again //Force players to wait 3 mins to eat again
//if (dayz_lastMeal < 180) exitWith {cutText ["You may not eat, you're already full", "PLAIN DOWN"]}; //if (dayz_lastMeal < 180) exitWith {cutText ["You may not eat, you're already full", "PLAIN DOWN"]};

View File

@@ -5,17 +5,17 @@
*/ */
private ["_itemOut","_position","_isOk","_counter","_rnd","_item","_itemtodrop","_vehicle","_inVehicle"]; private ["_itemOut","_position","_isOk","_counter","_rnd","_item","_itemtodrop","_vehicle","_inVehicle"];
if(TradeInprogress) exitWith { cutText ["Fishing already in progress." , "PLAIN DOWN"]; }; if(TradeInprogress) exitWith { cutText ["\n\nFishing already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true; TradeInprogress = true;
call gear_ui_init; call gear_ui_init;
// find position 5m in front of player // find position 5m in front of player
_position = player modeltoworld [0,5,0]; _position = player modeltoworld [0,5,0];
if(!(surfaceIsWater _position)) exitWith {TradeInprogress = false; cutText ["Must be near a shore or on a boat to fish." , "PLAIN DOWN"]; }; if(!(surfaceIsWater _position)) exitWith {TradeInprogress = false; cutText ["\n\nMust be near a shore or on a boat to fish." , "PLAIN DOWN"]; };
if(dayz_isSwimming) exitWith {TradeInprogress = false; cutText [localize "str_player_26", "PLAIN DOWN"]; }; if(dayz_isSwimming) exitWith {TradeInprogress = false; cutText [localize "str_player_26", "PLAIN DOWN"]; };
if(player getVariable["combattimeout", 0] >= time) exitWith {TradeInprogress = false; cutText ["Canceled Fishing.", "PLAIN DOWN"];}; if(player getVariable["combattimeout", 0] >= time) exitWith {TradeInprogress = false; cutText ["\n\nCanceled Fishing.", "PLAIN DOWN"];};
_isOk = true; _isOk = true;
_counter = 0; _counter = 0;
@@ -31,7 +31,7 @@ while {_isOk} do {
if (r_interrupt or (player getVariable["combattimeout", 0] >= time)) then { if (r_interrupt or (player getVariable["combattimeout", 0] >= time)) then {
_isOk = false; _isOk = false;
cutText ["Canceled Fishing.", "PLAIN DOWN"]; cutText ["\n\nCanceled Fishing.", "PLAIN DOWN"];
} else { } else {
sleep 2; sleep 2;
@@ -60,15 +60,15 @@ while {_isOk} do {
player addMagazine _itemOut; player addMagazine _itemOut;
}; };
cutText ["You caught a fish.", "PLAIN DOWN"]; cutText ["\n\nYou caught a fish.", "PLAIN DOWN"];
_isOk = false; _isOk = false;
} else { } else {
cutText ["Nibble... Nibble...", "PLAIN DOWN"]; cutText ["\n\nNibble... Nibble...", "PLAIN DOWN"];
_counter = _counter + 1; _counter = _counter + 1;
if(_counter == 5) then { if(_counter == 5) then {
_isOk = false; _isOk = false;
sleep 2; sleep 2;
cutText ["You didn't catch anything.", "PLAIN DOWN"]; cutText ["\n\nYou didn't catch anything.", "PLAIN DOWN"];
}; };
}; };
}; };

View File

@@ -5,7 +5,7 @@
*/ */
private ["_isOk","_i","_objName","_objInfo","_lenInfo","_started","_finished","_animState","_isMedic","_proceed","_counter","_itemOut","_countOut","_tree","_distance2d","_distance3d","_trees","_findNearestTree"]; private ["_isOk","_i","_objName","_objInfo","_lenInfo","_started","_finished","_animState","_isMedic","_proceed","_counter","_itemOut","_countOut","_tree","_distance2d","_distance3d","_trees","_findNearestTree"];
if(TradeInprogress) exitWith { cutText ["Harvest already in progress." , "PLAIN DOWN"]; }; if(TradeInprogress) exitWith { cutText ["\n\nHarvest already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true; TradeInprogress = true;
// allowed trees list move this later // allowed trees list move this later
@@ -103,7 +103,7 @@ if (count(_findNearestTree) >= 1) then {
}; };
//diag_log format["DEBUG TREE DAMAGE: %1", _tree]; //diag_log format["DEBUG TREE DAMAGE: %1", _tree];
cutText [format["%1 of %2 has been successfully added to your inventory.", _countOut,_itemOut], "PLAIN DOWN"]; cutText [format["\n\n%1 of %2 has been successfully added to your inventory.", _countOut,_itemOut], "PLAIN DOWN"];
} else { } else {
r_interrupt = false; r_interrupt = false;
@@ -111,12 +111,12 @@ if (count(_findNearestTree) >= 1) then {
[objNull, player, rSwitchMove,""] call RE; [objNull, player, rSwitchMove,""] call RE;
player playActionNow "stop"; player playActionNow "stop";
}; };
cutText ["Canceled Harvesting.", "PLAIN DOWN"]; cutText ["\n\nCanceled Harvesting.", "PLAIN DOWN"];
}; };
} else { } else {
cutText [localize "str_player_23", "PLAIN DOWN"]; cutText ["\n\nYou must be close to a plant to harvest.", "PLAIN DOWN"];
}; };
TradeInprogress = false; TradeInprogress = false;

View File

@@ -1,18 +1,18 @@
private ["_dir","_classname","_box","_location","_item","_config","_create_raw","_create","_qty","_type","_hasCrate","_hasTool"]; private ["_dir","_classname","_box","_location","_item","_config","_create_raw","_create","_qty","_type","_hasCrate","_hasTool"];
if(TradeInprogress) exitWith { cutText ["Open Crate already in progress." , "PLAIN DOWN"]; }; if(TradeInprogress) exitWith { cutText ["\n\nOpen Crate already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true; TradeInprogress = true;
_hasTool = "ItemCrowbar" in items player; _hasTool = "ItemCrowbar" in items player;
if(!_hasTool) exitWith { if(!_hasTool) exitWith {
cutText ["You need a crowbar to open this.", "PLAIN DOWN"]; cutText ["\n\nYou need a crowbar to open this.", "PLAIN DOWN"];
TradeInprogress = false; TradeInprogress = false;
}; };
_item = _this; _item = _this;
_hasCrate = _item in magazines player; _hasCrate = _item in magazines player;
if (!_hasCrate) then { if (!_hasCrate) then {
cutText ["Missing supply crate.", "PLAIN DOWN"]; cutText ["\n\nMissing supply crate.", "PLAIN DOWN"];
TradeInprogress = false; TradeInprogress = false;
}; };
@@ -51,6 +51,6 @@ if(_type == "backpack") then {
player reveal _box; player reveal _box;
cutText ["Opened supply crate.", "PLAIN DOWN"]; cutText ["\n\nOpened supply crate.", "PLAIN DOWN"];
TradeInprogress = false; TradeInprogress = false;

View File

@@ -2,7 +2,7 @@
DayZ Base Building Upgrades DayZ Base Building Upgrades
Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com. Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
*/ */
private ["_location","_dir","_classname","_missing","_text","_proceed","_num_removed","_object","_missingQty","_itemIn","_countIn","_qty","_removed","_removed_total","_tobe_removed_total","_objectID","_objectUID","_temp_removed_array","_textMissing","_newclassname","_requirements","_obj","_upgrade","_lockable","_combination_1_Display","_combination_1","_combination_2","_combination_3","_combination","_combinationDisplay","_objectCharacterID"]; private ["_location","_dir","_classname","_missing","_text","_proceed","_num_removed","_object","_missingQty","_itemIn","_countIn","_qty","_removed","_removed_total","_tobe_removed_total","_objectID","_objectUID","_temp_removed_array","_textMissing","_newclassname","_requirements","_obj","_upgrade","_lockable","_combination_1","_combination_2","_combination_3","_combination","_objectCharacterID","_canBuildOnPlot","_friendlies","_nearestPole","_ownerID","_distance","_needText","_findNearestPoles","_findNearestPole","_IsNearPlot"];
if(TradeInprogress) exitWith { cutText ["Upgrade already in progress." , "PLAIN DOWN"]; }; if(TradeInprogress) exitWith { cutText ["Upgrade already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true; TradeInprogress = true;
@@ -10,9 +10,60 @@ TradeInprogress = true;
player removeAction s_player_upgrade_build; player removeAction s_player_upgrade_build;
s_player_upgrade_build = 1; s_player_upgrade_build = 1;
_distance = 30;
_needText = "Plot Pole";
// check for near plot
_findNearestPoles = nearestObjects [(vehicle player), ["Plastic_Pole_EP1_DZ"], _distance];
_findNearestPole = [];
{
if (alive _x) then {
_findNearestPole set [(count _findNearestPole),_x];
};
} foreach _findNearestPoles;
_IsNearPlot = count (_findNearestPole);
if(_IsNearPlot == 0) then {
_canBuildOnPlot = true;
} else {
// check nearby plots ownership and then for friend status
_nearestPole = _findNearestPole select 0;
// Find owner
_ownerID = _nearestPole getVariable["CharacterID","0"];
// diag_log format["DEBUG BUILDING: %1 = %2", dayz_characterID, _ownerID];
// check if friendly to owner
if(dayz_characterID == _ownerID) then {
_canBuildOnPlot = true;
} else {
_friendlies = player getVariable ["friendlyTo",[]];
// check if friendly to owner
if(_ownerID in _friendlies) then {
_canBuildOnPlot = true;
};
};
};
// exit if not allowed due to plot pole
if(!_canBuildOnPlot) exitWith { TradeInprogress = false; cutText [format["Unable to upgrade %1 nearby.",_needText,_distance] , "PLAIN DOWN"]; };
// get cursortarget from addaction // get cursortarget from addaction
_obj = _this select 3; _obj = _this select 3;
// Find objectID
_objectID = _obj getVariable ["ObjectID","0"];
// Find objectUID
_objectUID = _obj getVariable ["ObjectUID","0"];
if(_objectID == "0" && _objectUID == "0") exitWith {TradeInprogress = false; s_player_upgrade_build = -1; cutText ["Not setup yet.", "PLAIN DOWN"];};
// Get classname // Get classname
_classname = typeOf _obj; _classname = typeOf _obj;
@@ -80,12 +131,6 @@ if ((count _upgrade) > 0) then {
// Get direction // Get direction
_dir = getDir _obj; _dir = getDir _obj;
// Find objectID
_objectID = _obj getVariable ["ObjectID","0"];
// Find objectUID
_objectUID = _obj getVariable ["ObjectUID","0"];
// Current charID // Current charID
_objectCharacterID = _obj getVariable ["CharacterID","0"]; _objectCharacterID = _obj getVariable ["CharacterID","0"];
@@ -107,6 +152,9 @@ if ((count _upgrade) > 0) then {
dayzDeleteObj = [_objectID,_objectUID]; dayzDeleteObj = [_objectID,_objectUID];
publicVariableServer "dayzDeleteObj"; publicVariableServer "dayzDeleteObj";
// sleep a bit to make sure delete happens before create
sleep 1;
if (_lockable == 3) then { if (_lockable == 3) then {
_combination_1 = floor(random 10); _combination_1 = floor(random 10);
@@ -123,8 +171,8 @@ if ((count _upgrade) > 0) then {
// Publish variables // Publish variables
_object setVariable ["CharacterID",_objectCharacterID,true]; _object setVariable ["CharacterID",_objectCharacterID,true];
_object setVariable ["ObjectID",_objectID,true];
_object setVariable ["ObjectUID",_objectUID,true]; //_object setVariable ["ObjectUID",_objectUID,true];
_object setVariable ["OEMPos",_location,true]; _object setVariable ["OEMPos",_location,true];
dayzPublishObj = [_objectCharacterID,_object,[_dir,_location],_classname]; dayzPublishObj = [_objectCharacterID,_object,[_dir,_location],_classname];

View File

@@ -4,7 +4,7 @@ Added Female skin changes - DayZ Epoch - vbawol
*/ */
private ["_item","_onLadder","_hasclothesitem","_config","_text","_myModel","_itemNew","_currentSex","_newSex","_model"]; private ["_item","_onLadder","_hasclothesitem","_config","_text","_myModel","_itemNew","_currentSex","_newSex","_model"];
if(TradeInprogress) exitWith { cutText ["Changing clothes already in progress." , "PLAIN DOWN"] }; if(TradeInprogress) exitWith { cutText ["\n\nChanging clothes already in progress." , "PLAIN DOWN"] };
TradeInprogress = true; TradeInprogress = true;
_item = _this; _item = _this;
@@ -19,7 +19,7 @@ _text = getText (_config >> _item >> "displayName");
if (!_hasclothesitem) exitWith {TradeInprogress = false; cutText [format[(localize "str_player_31"),_text,"wear"] , "PLAIN DOWN"]}; if (!_hasclothesitem) exitWith {TradeInprogress = false; cutText [format[(localize "str_player_31"),_text,"wear"] , "PLAIN DOWN"]};
if (vehicle player != player) exitWith {TradeInprogress = false; cutText ["You may not change clothes while in a vehicle", "PLAIN DOWN"]}; if (vehicle player != player) exitWith {TradeInprogress = false; cutText ["\n\nYou may not change clothes while in a vehicle", "PLAIN DOWN"]};
_myModel = (typeOf player); _myModel = (typeOf player);
_itemNew = "Skin_" + _myModel; _itemNew = "Skin_" + _myModel;
@@ -46,7 +46,7 @@ if ( (isClass(_config >> _itemNew)) ) then {
}; };
} else { } else {
cutText ["You cannot wear a skin of the opposite sex.", "PLAIN DOWN"]; cutText ["\n\nYou cannot wear a skin of the opposite sex.", "PLAIN DOWN"];
}; };
}; };
}; };

View File

@@ -2,7 +2,7 @@
delete object from db with extra waiting by [VB]AWOL delete object from db with extra waiting by [VB]AWOL
parameters: _obj parameters: _obj
*/ */
private ["_obj","_objectID","_objectUID","_started","_finished","_animState","_isMedic","_isOk","_proceed","_counter","_limit","_objType","_sfx","_dis","_itemOut","_countOut","_selectedRemoveOutput","_friendlies","_nearestPole","_ownerID","_refundpart","_isWreck","_findNearestPoles","_findNearestPole","_IsNearPlot","_brokenTool","_removeTool","_isDestructable","_isRemovable","_objOwnerID","_isOwnerOfObj"]; private ["_obj","_objectID","_objectUID","_started","_finished","_animState","_isMedic","_isOk","_proceed","_counter","_limit","_objType","_sfx","_dis","_itemOut","_countOut","_selectedRemoveOutput","_friendlies","_nearestPole","_ownerID","_refundpart","_isWreck","_findNearestPoles","_findNearestPole","_IsNearPlot","_brokenTool","_removeTool","_isDestructable","_isRemovable","_objOwnerID","_isOwnerOfObj","_preventRefund"];
if(TradeInprogress) exitWith { cutText ["Remove already in progress." , "PLAIN DOWN"]; }; if(TradeInprogress) exitWith { cutText ["Remove already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true; TradeInprogress = true;
@@ -159,6 +159,8 @@ if (_proceed) then {
cutText [format["De-constructing %1.",_objType], "PLAIN DOWN"]; cutText [format["De-constructing %1.",_objType], "PLAIN DOWN"];
_preventRefund = false;
_selectedRemoveOutput = []; _selectedRemoveOutput = [];
if(_isWreck) then { if(_isWreck) then {
// Find one random part to give back // Find one random part to give back
@@ -166,10 +168,12 @@ if (_proceed) then {
_selectedRemoveOutput set [count _selectedRemoveOutput,[_refundpart,1]]; _selectedRemoveOutput set [count _selectedRemoveOutput,[_refundpart,1]];
} else { } else {
_selectedRemoveOutput = getArray (configFile >> "CfgVehicles" >> _objType >> "removeoutput"); _selectedRemoveOutput = getArray (configFile >> "CfgVehicles" >> _objType >> "removeoutput");
_preventRefund = (_objectID == "0" && _objectUID == "0");
}; };
// give refund items // give refund items
if((count _selectedRemoveOutput) > 0) then { if((count _selectedRemoveOutput) > 0 and !_preventRefund) then {
// Put itemsg // Put itemsg
{ {
_itemOut = _x select 0; _itemOut = _x select 0;

View File

@@ -127,7 +127,6 @@ for "_x" from 1 to _total_trades do {
} else { } else {
// Return items from botched trade. // Return items from botched trade.
// TODO: this may never happen if so remove
for "_x" from 1 to _removed do { for "_x" from 1 to _removed do {
player addMagazine _part_in; player addMagazine _part_in;
}; };

View File

@@ -88,3 +88,14 @@ _nrTLs= position _twr nearObjects ["#lightpoint",30];
}; };
}; };
}; };
<<<<<<< HEAD
=======
axe_TestMoveHC={
private ["_startPos","_currPos"];
_currPos = _this select 0;
_startPos = [_currPos,50,180,20,0,800,0] call BIS_fnc_findSafePos;
player setPosATL _startPos;
};
>>>>>>> origin/master

View File

@@ -467,7 +467,7 @@ if (!isNull cursorTarget and !_inVehicle and !_isPZombie and (player distance cu
}; };
if ((_cursorTarget isKindOf "ModularItems") or (_cursorTarget isKindOf "Land_DZE_WoodDoor_Base")) then { if ((_cursorTarget isKindOf "ModularItems") or (_cursorTarget isKindOf "Land_DZE_WoodDoor_Base") or (_cursorTarget isKindOf "CinderWallDoor_DZ_Base")) then {
if ((s_player_lastTarget select 0) != _cursorTarget) then { if ((s_player_lastTarget select 0) != _cursorTarget) then {
if (s_player_upgrade_build > 0) then { if (s_player_upgrade_build > 0) then {
player removeAction s_player_upgrade_build; player removeAction s_player_upgrade_build;

View File

@@ -6,14 +6,17 @@ private ["_objectID","_objectUID","_obj","_ownerID","_dir","_pos","_object","_ho
if(TradeInprogress) exitWith { cutText ["Pack tent already in progress." , "PLAIN DOWN"]; }; if(TradeInprogress) exitWith { cutText ["Pack tent already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true; TradeInprogress = true;
player removeAction s_player_packtent;
s_player_packtent = 1;
_obj = _this; _obj = _this;
_ownerID = _obj getVariable["CharacterID","0"]; _ownerID = _obj getVariable["CharacterID","0"];
_objectID = _obj getVariable["ObjectID","0"]; _objectID = _obj getVariable["ObjectID","0"];
_objectUID = _obj getVariable["ObjectUID","0"]; _objectUID = _obj getVariable["ObjectUID","0"];
player playActionNow "Medic"; player playActionNow "Medic";
player removeAction s_player_packtent; if(_objectID == "0" && _objectUID == "0") exitWith {TradeInprogress = false; s_player_packtent = -1; cutText ["Tent not setup yet.", "PLAIN DOWN"];};
s_player_packtent = 1;
if(_ownerID != dayz_characterID) exitWith {TradeInprogress = false; s_player_packtent = -1; cutText [localize "str_fail_tent_pack", "PLAIN DOWN"];}; if(_ownerID != dayz_characterID) exitWith {TradeInprogress = false; s_player_packtent = -1; cutText [localize "str_fail_tent_pack", "PLAIN DOWN"];};
@@ -36,56 +39,59 @@ sleep 3;
_classname = getText (configFile >> "CfgVehicles" >> (typeOf _obj) >> "create"); _classname = getText (configFile >> "CfgVehicles" >> (typeOf _obj) >> "create");
_location = _pos; if(!isNull _obj and alive _obj) then {
//place tent (local) _location = _pos;
//_bag = createVehicle ["WeaponHolder_ItemTent",_pos,[], 0, "CAN_COLLIDE"];
_object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"]; //place tent (local)
_object setdir _dir; //_bag = createVehicle ["WeaponHolder_ItemTent",_pos,[], 0, "CAN_COLLIDE"];
player reveal _object; _object = createVehicle [_classname, _location, [], 0, "CAN_COLLIDE"];
_object setdir _dir;
_object setpos _pos;
player reveal _object;
_holder = _object; _holder = _object;
_weapons = getWeaponCargo _obj; _weapons = getWeaponCargo _obj;
_magazines = getMagazineCargo _obj; _magazines = getMagazineCargo _obj;
_backpacks = getBackpackCargo _obj; _backpacks = getBackpackCargo _obj;
deleteVehicle _obj;
dayzDeleteObj = [_objectID,_objectUID];
publicVariableServer "dayzDeleteObj";
if (isServer) then {
dayzDeleteObj call server_deleteObj;
};
//["dayzDeleteObj",[_objectID,_objectUID]] call callRpcProcedure; //Add weapons
dayzDeleteObj = [_objectID,_objectUID]; _objWpnTypes = _weapons select 0;
publicVariableServer "dayzDeleteObj"; _objWpnQty = _weapons select 1;
if (isServer) then { _countr = 0;
dayzDeleteObj call server_deleteObj; {
_holder addweaponcargoGlobal [_x,(_objWpnQty select _countr)];
_countr = _countr + 1;
} forEach _objWpnTypes;
//Add Magazines
_objWpnTypes = _magazines select 0;
_objWpnQty = _magazines select 1;
_countr = 0;
{
_holder addmagazinecargoGlobal [_x,(_objWpnQty select _countr)];
_countr = _countr + 1;
} forEach _objWpnTypes;
//Add Backpacks
_objWpnTypes = _backpacks select 0;
_objWpnQty = _backpacks select 1;
_countr = 0;
{
_holder addbackpackcargoGlobal [_x,(_objWpnQty select _countr)];
_countr = _countr + 1;
} forEach _objWpnTypes;
cutText [localize "str_success_tent_pack", "PLAIN DOWN"];
}; };
deleteVehicle _obj;
//Add weapons
_objWpnTypes = _weapons select 0;
_objWpnQty = _weapons select 1;
_countr = 0;
{
_holder addweaponcargoGlobal [_x,(_objWpnQty select _countr)];
_countr = _countr + 1;
} forEach _objWpnTypes;
//Add Magazines
_objWpnTypes = _magazines select 0;
_objWpnQty = _magazines select 1;
_countr = 0;
{
_holder addmagazinecargoGlobal [_x,(_objWpnQty select _countr)];
_countr = _countr + 1;
} forEach _objWpnTypes;
//Add Backpacks
_objWpnTypes = _backpacks select 0;
_objWpnQty = _backpacks select 1;
_countr = 0;
{
_holder addbackpackcargoGlobal [_x,(_objWpnQty select _countr)];
_countr = _countr + 1;
} forEach _objWpnTypes;
cutText [localize "str_success_tent_pack", "PLAIN DOWN"];
s_player_packtent = -1; s_player_packtent = -1;
TradeInprogress = false; TradeInprogress = false;

View File

@@ -25,6 +25,8 @@ _objectUID = _obj getVariable["ObjectUID","0"];
player removeAction s_player_packvault; player removeAction s_player_packvault;
s_player_packvault = 1; s_player_packvault = 1;
if(_objectID == "0" && _objectUID == "0") exitWith {TradeInprogress = false; s_player_packvault = -1; cutText [format["%1 not setup yet.",_text], "PLAIN DOWN"];};
if((_ownerID != dayz_combination) and (_ownerID != dayz_playerUID)) exitWith { TradeInprogress = false; s_player_packvault = -1; cutText [format["You cannot pack this %1, you do not know the combination.",_text], "PLAIN DOWN"];}; if((_ownerID != dayz_combination) and (_ownerID != dayz_playerUID)) exitWith { TradeInprogress = false; s_player_packvault = -1; cutText [format["You cannot pack this %1, you do not know the combination.",_text], "PLAIN DOWN"];};
_alreadyPacking = _obj getVariable["packing",0]; _alreadyPacking = _obj getVariable["packing",0];
@@ -102,7 +104,6 @@ if(!isNull _obj and alive _obj) then {
} forEach _objWpnTypes; } forEach _objWpnTypes;
cutText [format["Your %1 has been packed",_text], "PLAIN DOWN"]; cutText [format["Your %1 has been packed",_text], "PLAIN DOWN"];
s_player_packvault = -1;
}; };
s_player_packvault = -1;
TradeInprogress = false; TradeInprogress = false;

View File

@@ -124,6 +124,9 @@ diag_log (str(_backpackMag));
if (_primweapon == "MeleeCrowbar") then { if (_primweapon == "MeleeCrowbar") then {
_newUnit addMagazine 'crowbar_swing'; _newUnit addMagazine 'crowbar_swing';
}; };
if (_primweapon == "MeleeSledge") then {
_newUnit addMagazine 'sledge_swing';
};
if (_primweapon == "MeleeHatchet") then { if (_primweapon == "MeleeHatchet") then {
_newUnit addMagazine 'hatchet_swing'; _newUnit addMagazine 'hatchet_swing';
}; };

View File

@@ -27,6 +27,10 @@ if(!isNull dayz_selectedDoor) then {
_obj animate ["Open_hinge", 1]; _obj animate ["Open_hinge", 1];
}; };
if(_obj animationPhase "Open_latch" == 0) then {
_obj animate ["Open_latch", 1];
};
} else { } else {
DZE_Lock_Door = ""; DZE_Lock_Door = "";
[player,"combo_locked",0,false] call dayz_zombieSpeak; [player,"combo_locked",0,false] call dayz_zombieSpeak;

View File

@@ -41,7 +41,7 @@ class CfgMods
hidePicture = 0; hidePicture = 0;
hideName = 0; hideName = 0;
action = "http://www.dayzepoch.com"; action = "http://www.dayzepoch.com";
version = "1.0.2"; version = "1.0.2.13";
hiveVersion = 0.96; //0.93 hiveVersion = 0.96; //0.93
}; };
}; };
@@ -540,9 +540,7 @@ class CfgBuildingLoot {
{"DZ_TK_Assault_Pack_EP1","object"}, // 16 {"DZ_TK_Assault_Pack_EP1","object"}, // 16
{"DZ_British_ACU","object"}, // 18 {"DZ_British_ACU","object"}, // 18
{ "Winchester1866","weapon" }, { "Winchester1866","weapon" },
{ "ItemTentOld","magazine" }, { "tents","single" },
{ "ItemTentDomed2","magazine" },
{ "ItemTentDomed","magazine" },
{ "","military" }, { "","military" },
{ "","trash" }, { "","trash" },
{ "Crossbow_DZ","weapon" }, { "Crossbow_DZ","weapon" },
@@ -576,10 +574,8 @@ class CfgBuildingLoot {
0.01, 0.01,
0.01, 0.01,
0.01, 0.01,
0.01,
0.01,
0.02, 0.02,
0.12, 0.14,
0.01, 0.01,
0.02, 0.02,
0.02, 0.02,
@@ -617,9 +613,7 @@ class CfgBuildingLoot {
{"DZ_TK_Assault_Pack_EP1","object"}, // 16 {"DZ_TK_Assault_Pack_EP1","object"}, // 16
{"DZ_British_ACU","object"}, // 18 {"DZ_British_ACU","object"}, // 18
{ "Winchester1866","weapon" }, { "Winchester1866","weapon" },
{ "ItemTentOld","magazine" }, { "tents","single" },
{ "ItemTentDomed2","magazine" },
{ "ItemTentDomed","magazine" },
{ "","military" }, { "","military" },
{ "","trash" }, { "","trash" },
{"Crossbow_DZ","weapon"}, {"Crossbow_DZ","weapon"},
@@ -653,10 +647,8 @@ class CfgBuildingLoot {
0.01, 0.01,
0.01, 0.01,
0.01, 0.01,
0.01,
0.01,
0.02, 0.02,
0.12, 0.14,
0.01, 0.01,
0.02, 0.02,
0.02, 0.02,
@@ -786,7 +778,9 @@ class CfgBuildingLoot {
{ "ItemFuelBarrel","magazine"}, { "ItemFuelBarrel","magazine"},
{ "WeaponHolder_ItemMachete", "object"}, { "WeaponHolder_ItemMachete", "object"},
{ "ItemFishingPole","weapon" }, { "ItemFishingPole","weapon" },
{ "ItemLightBulb","magazine"} { "ItemLightBulb","magazine"},
{ "ItemSledgeHandle","magazine"}
}; };
itemChance[] = { itemChance[] = {
0.05, 0.05,
@@ -794,7 +788,7 @@ class CfgBuildingLoot {
0.02, 0.02,
0.04, 0.04,
0.03, 0.03,
0.27, 0.26,
0.03, 0.03,
0.08, 0.08,
0.05, 0.05,
@@ -802,7 +796,8 @@ class CfgBuildingLoot {
0.01, 0.01,
0.03, 0.03,
0.01, 0.01,
0.02 0.02,
0.01
}; };
}; };
class Supermarket: Default { class Supermarket: Default {
@@ -834,9 +829,7 @@ class CfgBuildingLoot {
{"DZ_CompactPack_EP1","object"}, // {"DZ_CompactPack_EP1","object"}, //
{"DZ_TerminalPack_EP1","object"}, // {"DZ_TerminalPack_EP1","object"}, //
{ "Winchester1866","weapon" }, { "Winchester1866","weapon" },
{ "ItemTentOld","magazine" }, { "tents","single" },
{ "ItemTentDomed2","magazine" },
{ "ItemTentDomed","magazine" },
{ "","food" }, { "","food" },
{ "","trash" }, { "","trash" },
{"Crossbow_DZ","weapon"}, {"Crossbow_DZ","weapon"},
@@ -868,10 +861,8 @@ class CfgBuildingLoot {
0.01, 0.01,
0.01, 0.01,
0.01, 0.01,
0.01, 0.30,
0.01, 0.13,
0.29,
0.12,
0.01, 0.01,
0.05, 0.05,
0.02, 0.02,

View File

@@ -82,10 +82,6 @@ if (!isDedicated) then {
player_reloadMag = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_reloadMags.sqf"; player_reloadMag = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_reloadMags.sqf";
player_loadCrate = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_loadCrate.sqf"; player_loadCrate = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_loadCrate.sqf";
player_craftItem = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_craftItem.sqf"; player_craftItem = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_craftItem.sqf";
player_craftItem1 = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_craftItem1.sqf";
player_craftItem2 = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_craftItem2.sqf";
player_craftItem3 = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_craftItem3.sqf";
player_craftItem4 = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_craftItem4.sqf";
player_tentPitch = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\tent_pitch.sqf"; player_tentPitch = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\tent_pitch.sqf";
player_vaultPitch = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\vault_pitch.sqf"; player_vaultPitch = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\vault_pitch.sqf";
player_drink = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_drink.sqf"; player_drink = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_drink.sqf";
@@ -269,14 +265,6 @@ if (!isDedicated) then {
if (player isKindOf "PZombie_VB") exitWith { if (player isKindOf "PZombie_VB") exitWith {
player switchAction "walkf"; player switchAction "walkf";
}; };
if (!r_fracture_legs and (time - dayz_lastCheckBit > 4)) then {
_inBuilding = [player] call fnc_isInsideBuilding;
_nearbyObjects = nearestObjects[getPosATL player, dayz_disallowedVault, 8];
if (!_inBuilding and (count _nearbyObjects == 0)) then {
dayz_lastCheckBit = time;
call player_CombatRoll;
};
};
}; };
//if (_dikCode == 57) then {_handled = true}; // space //if (_dikCode == 57) then {_handled = true}; // space
//if (_dikCode in actionKeys 'MoveForward' or _dikCode in actionKeys 'MoveBack') then {r_interrupt = true}; //if (_dikCode in actionKeys 'MoveForward' or _dikCode in actionKeys 'MoveBack') then {r_interrupt = true};
@@ -312,24 +300,28 @@ if (!isDedicated) then {
dayz_lastCheckBit = time; dayz_lastCheckBit = time;
_nill = execvm "\z\addons\dayz_code\actions\playerstats.sqf"; _nill = execvm "\z\addons\dayz_code\actions\playerstats.sqf";
}; };
// // numpad 8 0x48 now pgup 0xC9
if (_dikCode == 0x48) then { if (_dikCode == 0xC9 or (_dikCode in actionKeys "User15")) then {
DZE_Q = true; DZE_Q = true;
}; };
if (_dikCode == 0x50) then { // numpad 2 0x50 now pgdn 0xD1
if (_dikCode == 0xD1 or (_dikCode in actionKeys "User16")) then {
DZE_Z = true; DZE_Z = true;
}; };
if (_dikCode == 0x4B) then { // numpad 4 0x4B now Q 0x10
if (_dikCode == 0x10 or (_dikCode in actionKeys "User17")) then {
DZE_4 = true; DZE_4 = true;
}; };
if (_dikCode == 0x4D) then { // numpad 6 0x4D now E 0x12
if (_dikCode == 0x12 or (_dikCode in actionKeys "User18")) then {
DZE_6 = true; DZE_6 = true;
}; };
// numpad 5 0x4C now space 0x39
if (_dikCode == 0x4C) then { if (_dikCode == 0x39 or (_dikCode in actionKeys "User19")) then {
DZE_5 = true; DZE_5 = true;
}; };
// esc
if (_dikCode == 0x01) then { if (_dikCode == 0x01) then {
DZE_cancelBuilding = true; DZE_cancelBuilding = true;
}; };

View File

@@ -429,6 +429,10 @@ if(isNil "dayz_maxpos") then {
if(isNil "DZE_teleport") then { if(isNil "DZE_teleport") then {
DZE_teleport = [1000,2000,500,200,800]; DZE_teleport = [1000,2000,500,200,800];
}; };
if(isNil "DZE_BuildingLimit") then {
DZE_BuildingLimit = 150;
};
/* /*
if(isNil "dayz_canBuildInCity") then { if(isNil "dayz_canBuildInCity") then {
@@ -450,7 +454,7 @@ if(isNil "dayz_zedsAttackVehicles") then {
dayz_updateObjects = ["Car", "Helicopter", "Motorcycle", "Ship", "TentStorage", "VaultStorage","LockboxStorage","OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","StorageShed_DZ"]; dayz_updateObjects = ["Car", "Helicopter", "Motorcycle", "Ship", "TentStorage", "VaultStorage","LockboxStorage","OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","StorageShed_DZ"];
dayz_disallowedVault = ["TentStorage", "BuiltItems"]; dayz_disallowedVault = ["TentStorage", "BuiltItems"];
dayz_reveal = ["AllVehicles","WeaponHolder","Land_A_tent","BuiltItems","ModularItems"]; dayz_reveal = ["AllVehicles","WeaponHolder","Land_A_tent","BuiltItems","ModularItems"];
dayz_allowedObjects = ["TentStorage","TentStorageDomed","TentStorageDomed2", "VaultStorageLocked", "Hedgehog_DZ", "Sandbag1_DZ","TrapBear","Fort_RazorWire","WoodGate_DZ","Land_HBarrier1_DZ","Land_HBarrier3_DZ","Fence_corrugated_DZ","M240Nest_DZ","CanvasHut_DZ","ParkBench_DZ","MetalGate_DZ","OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","StorageShed_DZ","Plastic_Pole_EP1_DZ","Generator_DZ","StickFence_DZ","LightPole_DZ","FuelPump_DZ","DesertCamoNet_DZ","ForestCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ","SandNest_DZ","DeerStand_DZ","MetalPanel_DZ","WorkBench_DZ","WoodFloor_DZ","WoodLargeWall_DZ","WoodLargeWallDoor_DZ","WoodLargeWallWin_DZ","WoodSmallWall_DZ","WoodSmallWallWin_DZ","WoodSmallWallDoor_DZ","LockboxStorageLocked","WoodFloorHalf_DZ","WoodFloorQuarter_DZ","WoodStairs_DZ","WoodStairsSans_DZ","WoodSmallWallThird_DZ","WoodLadder_DZ","Land_DZE_GarageWoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_WoodDoor","Land_DZE_GarageWoodDoorLocked","Land_DZE_LargeWoodDoorLocked","Land_DZE_WoodDoorLocked","CinderWallHalf_DZ","CinderWall_DZ"]; dayz_allowedObjects = ["TentStorage","TentStorageDomed","TentStorageDomed2", "VaultStorageLocked", "Hedgehog_DZ", "Sandbag1_DZ","TrapBear","Fort_RazorWire","WoodGate_DZ","Land_HBarrier1_DZ","Land_HBarrier3_DZ","Fence_corrugated_DZ","M240Nest_DZ","CanvasHut_DZ","ParkBench_DZ","MetalGate_DZ","OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","StorageShed_DZ","Plastic_Pole_EP1_DZ","Generator_DZ","StickFence_DZ","LightPole_DZ","FuelPump_DZ","DesertCamoNet_DZ","ForestCamoNet_DZ","DesertLargeCamoNet_DZ","ForestLargeCamoNet_DZ","SandNest_DZ","DeerStand_DZ","MetalPanel_DZ","WorkBench_DZ","WoodFloor_DZ","WoodLargeWall_DZ","WoodLargeWallDoor_DZ","WoodLargeWallWin_DZ","WoodSmallWall_DZ","WoodSmallWallWin_DZ","WoodSmallWallDoor_DZ","LockboxStorageLocked","WoodFloorHalf_DZ","WoodFloorQuarter_DZ","WoodStairs_DZ","WoodStairsSans_DZ","WoodSmallWallThird_DZ","WoodLadder_DZ","Land_DZE_GarageWoodDoor","Land_DZE_LargeWoodDoor","Land_DZE_WoodDoor","Land_DZE_GarageWoodDoorLocked","Land_DZE_LargeWoodDoorLocked","Land_DZE_WoodDoorLocked","CinderWallHalf_DZ","CinderWall_DZ","CinderWallDoorway_DZ","CinderWallDoor_DZ","CinderWallDoorLocked_DZ","CinderWallSmallDoorway_DZ","CinderWallDoorSmall_DZ","CinderWallDoorSmallLocked_DZ","MetalFloor_DZ"];
DZE_LockableStorage = ["VaultStorage","VaultStorageLocked","LockboxStorageLocked","LockboxStorage"]; DZE_LockableStorage = ["VaultStorage","VaultStorageLocked","LockboxStorageLocked","LockboxStorage"];
DZE_LockedStorage = ["VaultStorageLocked","LockboxStorageLocked"]; DZE_LockedStorage = ["VaultStorageLocked","LockboxStorageLocked"];

View File

@@ -247,14 +247,14 @@
<Czech>Stan zde nelze postavit. Plocha musí být rovná a být dostatečně velká.</Czech> <Czech>Stan zde nelze postavit. Plocha musí být rovná a být dostatečně velká.</Czech>
</Key> </Key>
<Key ID="str_player_consumed"> <Key ID="str_player_consumed">
<Original>You have consumed a %1</Original> <Original>\n\nYou have consumed a %1</Original>
<English>You have consumed a %1</English> <English>\n\nYou have consumed a %1</English>
<German>Sie haben ein(e) %1 verbraucht</German> <German>\n\nSie haben ein(e) %1 verbraucht</German>
<Russian>Вы употребили: %1</Russian> <Russian>\n\nВы употребили: %1</Russian>
<Spanish>Consumiste: %1</Spanish> <Spanish>\n\nConsumiste: %1</Spanish>
<Dutch>Je hebt %1 genuttigd</Dutch> <Dutch>\n\nJe hebt %1 genuttigd</Dutch>
<French>Vous avez consommé un(e) %1</French> <French>\n\nVous avez consommé un(e) %1</French>
<Czech>Snědl jsi %1</Czech> <Czech>\n\nSnědl jsi %1</Czech>
</Key> </Key>
<Key ID="str_fireplace_01"> <Key ID="str_fireplace_01">
<Original>You have created a fireplace</Original> <Original>You have created a fireplace</Original>
@@ -327,24 +327,24 @@
<Czech>Jste uzdravováni.</Czech> <Czech>Jste uzdravováni.</Czech>
</Key> </Key>
<Key ID="str_player_01"> <Key ID="str_player_01">
<Original>You have filled %1 bottles with water</Original> <Original>\n\nYou have filled %1 bottles with water</Original>
<English>You have filled %1 bottles with water</English> <English>\n\nYou have filled %1 bottles with water</English>
<German>Sie haben %1 Flasche(n) mit Wasser gefüllt</German> <German>\n\nSie haben %1 Flasche(n) mit Wasser gefüllt</German>
<Russian>Наполнено фляжек с водой: %1</Russian> <Russian>\n\nНаполнено фляжек с водой: %1</Russian>
<Spanish>Llenaste %1 cantimplora(s) con agua</Spanish> <Spanish>\n\nLlenaste %1 cantimplora(s) con agua</Spanish>
<Dutch>Je hebt %1 flessen gevuld met water</Dutch> <Dutch>\n\nJe hebt %1 flessen gevuld met water</Dutch>
<French>Vous avez rempli %1 bouteille(s) avec de l'eau.</French> <French>\n\nVous avez rempli %1 bouteille(s) avec de l'eau.</French>
<Czech>Naplnil jsi %1 lahví vodou.</Czech> <Czech>\n\nNaplnil jsi %1 lahví vodou.</Czech>
</Key> </Key>
<Key ID="str_player_02"> <Key ID="str_player_02">
<Original>You have no empty water bottles</Original> <Original>\n\nYou have no empty water bottles</Original>
<English>You have no empty water bottles</English> <English>\n\nYou have no empty water bottles</English>
<German>Sie haben keine leeren Wasserflaschen</German> <German>\n\nSie haben keine leeren Wasserflaschen</German>
<Russian>У вас нет пустых фляжек.</Russian> <Russian>\n\nУ вас нет пустых фляжек.</Russian>
<Spanish>No tienes cantimploras vacías</Spanish> <Spanish>\n\nNo tienes cantimploras vacías</Spanish>
<Dutch>Je hebt geen lege waterflessen</Dutch> <Dutch>\n\nJe hebt geen lege waterflessen</Dutch>
<French>Vous n'avez aucune bouteille vide.</French> <French>\n\nVous n'avez aucune bouteille vide.</French>
<Czech>Nemáš žádné prázdné láhve na vodu.</Czech> <Czech>\n\nNemáš žádné prázdné láhve na vodu.</Czech>
</Key> </Key>
<Key ID="str_player_03"> <Key ID="str_player_03">
<Original>You need a %1 to repair this</Original> <Original>You need a %1 to repair this</Original>
@@ -507,24 +507,24 @@
<Czech>Máte nesprávnou verzi DAYZ_CODE, stáhněte si prosím aktuální soubor z dayzepoch.com (Vaše verze je %1 a na serveru běží verze %2)</Czech> <Czech>Máte nesprávnou verzi DAYZ_CODE, stáhněte si prosím aktuální soubor z dayzepoch.com (Vaše verze je %1 a na serveru běží verze %2)</Czech>
</Key> </Key>
<Key ID="str_player_20"> <Key ID="str_player_20">
<Original>You must be near a water-source such as a pond or well to refill your water bottles</Original> <Original>\n\nYou must be near a water-source such as a pond or well to refill your water bottles</Original>
<English>You must be near a water-source such as a pond or well to refill your water bottles</English> <English>\n\nYou must be near a water-source such as a pond or well to refill your water bottles</English>
<German>Sie müssen in der nähe einer Wasserquelle wie einem Teich oder Brunnen sein um Wasserflaschen zu füllen</German> <German>\n\nSie müssen in der nähe einer Wasserquelle wie einem Teich oder Brunnen sein um Wasserflaschen zu füllen</German>
<Russian>Вы должны находиться возле водоема или источника воды, чтобы наполнить свои фляги.</Russian> <Russian>\n\nВы должны находиться возле водоема или источника воды, чтобы наполнить свои фляги.</Russian>
<Spanish>Necesitas estar cerca de una fuente de agua como un pozo para rellenar tu cantimplora</Spanish> <Spanish>\n\nNecesitas estar cerca de una fuente de agua como un pozo para rellenar tu cantimplora</Spanish>
<Dutch>Je moet in de buurt van een waterbron zijn, zoals een meer of pomp, om je waterflessen bij te vullen</Dutch> <Dutch>\n\nJe moet in de buurt van een waterbron zijn, zoals een meer of pomp, om je waterflessen bij te vullen</Dutch>
<French>Vous devez être à côté d'une source d'eau comme un bassin ou un puits pour remplir vos bouteilles d'eau.</French> <French>\n\nVous devez être à côté d'une source d'eau comme un bassin ou un puits pour remplir vos bouteilles d'eau.</French>
<Czech>Pro plnění láhve na vodu je nutné být poblíž studny nebo rybníka.</Czech> <Czech>\n\nPro plnění láhve na vodu je nutné být poblíž studny nebo rybníka.</Czech>
</Key> </Key>
<Key ID="str_player_21"> <Key ID="str_player_21">
<Original>You cannot do this while you are on a ladder</Original> <Original>\n\nYou cannot do this while you are on a ladder</Original>
<English>You cannot do this while you are on a ladder</English> <English>\n\nYou cannot do this while you are on a ladder</English>
<German>Sie können dies nicht tun, während Sie an einer Leiter sind</German> <German>\n\nSie können dies nicht tun, während Sie an einer Leiter sind</German>
<Russian>Вы не можете этого делать, пока поднимаетесь по лестнице.</Russian> <Russian>\n\nВы не можете этого делать, пока поднимаетесь по лестнице.</Russian>
<Spanish>No puedes hacer esto mientras estás en una escalera</Spanish> <Spanish>\n\nNo puedes hacer esto mientras estás en una escalera</Spanish>
<Dutch>Je kunt deze actie op een ladder niet uitvoeren</Dutch> <Dutch>\n\nJe kunt deze actie op een ladder niet uitvoeren</Dutch>
<French>Vous ne pouvez pas faire cela en étant sur une échelle.</French> <French>\n\nVous ne pouvez pas faire cela en étant sur une échelle.</French>
<Czech>Akci nelze provést, jelikož jste na žebříku.</Czech> <Czech>\n\nAkci nelze provést, jelikož jste na žebříku.</Czech>
</Key> </Key>
<Key ID="str_player_22"> <Key ID="str_player_22">
<Original>You must have wood in your inventory in order to create a fireplace</Original> <Original>You must have wood in your inventory in order to create a fireplace</Original>
@@ -537,14 +537,14 @@
<Czech>Pro vytvoření ohniště je nutné mít v inventáři dřevo.</Czech> <Czech>Pro vytvoření ohniště je nutné mít v inventáři dřevo.</Czech>
</Key> </Key>
<Key ID="str_player_23"> <Key ID="str_player_23">
<Original>You must be close to a tree to harvest wood.</Original> <Original>\n\nYou must be close to a tree to harvest wood.</Original>
<English>You must be close to a tree to harvest wood.</English> <English>\n\nYou must be close to a tree to harvest wood.</English>
<German>Sie müssen Nähe eines Baums sein, um Holz zu sammeln.</German> <German>\n\nSie müssen Nähe eines Baums sein, um Holz zu sammeln.</German>
<Russian>Вы должны находится в лесу и подойти к дереву, чтобы нарубить дров.</Russian> <Russian>\n\nВы должны находится в лесу и подойти к дереву, чтобы нарубить дров.</Russian>
<Spanish>Debes estar en el bosque y cerca de un árbol para recoger leña.</Spanish> <Spanish>\n\nDebes estar en el bosque y cerca de un árbol para recoger leña.</Spanish>
<Dutch>Je moet in een bos en in de buurt van een boom zijn om hout te hakken.</Dutch> <Dutch>\n\nJe moet in een bos en in de buurt van een boom zijn om hout te hakken.</Dutch>
<French>Vous devez être en forêt et proche d'un arbre pour couper du bois.</French> <French>\n\nVous devez être en forêt et proche d'un arbre pour couper du bois.</French>
<Czech>Pro získání dřeva musíš být v lese blízko stromu.</Czech> <Czech>\n\nPro získání dřeva musíš být v lese blízko stromu.</Czech>
</Key> </Key>
<Key ID="str_player_24"> <Key ID="str_player_24">
<Original>You do not have enough room in your inventory to do that.</Original> <Original>You do not have enough room in your inventory to do that.</Original>
@@ -567,14 +567,14 @@
<Czech>Hromádka dřeva byla úspěšně přidána do tvého inventáře.</Czech> <Czech>Hromádka dřeva byla úspěšně přidána do tvého inventáře.</Czech>
</Key> </Key>
<Key ID="str_player_26"> <Key ID="str_player_26">
<Original>You cannot do this while you are in the water.</Original> <Original>\n\nYou cannot do this while you are in the water.</Original>
<English>You cannot do this while you are in the water.</English> <English>\n\nYou cannot do this while you are in the water.</English>
<German>Sie können dies nicht tun, während Sie sich im Wasser befinden..</German> <German>\n\nSie können dies nicht tun, während Sie sich im Wasser befinden..</German>
<Russian>Это действие невозможно пока вы в воде.</Russian> <Russian>\n\nЭто действие невозможно пока вы в воде.</Russian>
<Spanish>No puedes hacer esto mientras estás en el agua.</Spanish> <Spanish>\n\nNo puedes hacer esto mientras estás en el agua.</Spanish>
<Dutch>Je kunt deze actie niet in het water uitvoeren</Dutch> <Dutch>\n\nJe kunt deze actie niet in het water uitvoeren</Dutch>
<French>Vous ne pouvez pas faire cela lorsque vous êtes dans l'eau.</French> <French>\n\nVous ne pouvez pas faire cela lorsque vous êtes dans l'eau.</French>
<Czech>Tuto akci nelze provést pokud jste ve vodě.</Czech> <Czech>\n\nTuto akci nelze provést pokud jste ve vodě.</Czech>
</Key> </Key>
<Key ID="str_player_27"> <Key ID="str_player_27">
<Original>You have applied a heatpack to your body successfully.</Original> <Original>You have applied a heatpack to your body successfully.</Original>
@@ -607,24 +607,24 @@
<Czech>Úspěšně jsi nabil zásobníky %1 %2. </Czech> <Czech>Úspěšně jsi nabil zásobníky %1 %2. </Czech>
</Key> </Key>
<Key ID="str_player_30"> <Key ID="str_player_30">
<Original>%1 must be on your person to move it to/from your toolbelt.</Original> <Original>\n\n%1 must be on your person to move it to/from your toolbelt.</Original>
<English>%1 must be on your person to move it to/from your toolbelt.</English> <English>\n\n%1 must be on your person to move it to/from your toolbelt.</English>
<German>%1 muss in ihrem Inventar sein um es aus/in ihren Werkzeuggürtel zu packen.</German> <German>\n\n%1 muss in ihrem Inventar sein um es aus/in ihren Werkzeuggürtel zu packen.</German>
<Russian>Для перемещения с/на пояс, предмет %1 должен быть у вас.</Russian> <Russian>\n\nДля перемещения с/на пояс, предмет %1 должен быть у вас.</Russian>
<Spanish>%1 debe estar en tu persona para moverlo hacia/desde el cinturon.</Spanish> <Spanish>\n\n%1 debe estar en tu persona para moverlo hacia/desde el cinturon.</Spanish>
<Dutch>Je moet %1 op je persoon hebben om het van/naar je gereedschapsriem te verplaatsen</Dutch> <Dutch>\n\nJe moet %1 op je persoon hebben om het van/naar je gereedschapsriem te verplaatsen</Dutch>
<French>%1 doit être sur vous pour pouvoir le déplacer de/vers votre ceinture à outils.</French> <French>\n\n%1 doit être sur vous pour pouvoir le déplacer de/vers votre ceinture à outils.</French>
<Czech>TO DECIDE</Czech> <Czech>\n\n%1 must be on your person to move it to/from your toolbelt.</Czech>
</Key> </Key>
<Key ID="str_player_31"> <Key ID="str_player_31">
<Original>%1 must be in your main inventory to %2 it.</Original> <Original>\n\n%1 must be in your main inventory to %2 it.</Original>
<English>%1 must be in your main inventory to %2 it.</English> <English>\n\n%1 must be in your main inventory to %2 it.</English>
<German>%1 muss sich in Ihrem Inventar befinden um es zu %2.</German> <German>\n\n%1 muss sich in Ihrem Inventar befinden um es zu %2.</German>
<Russian>Предмет %1 должен находиться в основном инвентаре чтобы %2 его.</Russian> <Russian>\n\nПредмет %1 должен находиться в основном инвентаре чтобы %2 его.</Russian>
<Spanish>%1 debe estar en tu inventario principal para: %2</Spanish> <Spanish>\n\n%1 debe estar en tu inventario principal para: %2</Spanish>
<Dutch>%1 moet zich in je hoofdinventaris bevinden om het te %2.</Dutch> <Dutch>\n\n%1 moet zich in je hoofdinventaris bevinden om het te %2.</Dutch>
<French>%1 doit être dans votre inventaire principal pour pouvoir le %2</French> <French>\n\n%1 doit être dans votre inventaire principal pour pouvoir le %2</French>
<Czech>%1 musí být ve tvém hlavním inventáři pro %2.</Czech> <Czech>\n\n%1 musí být ve tvém hlavním inventáři pro %2.</Czech>
</Key> </Key>
<Key ID="str_player_beinglooted"> <Key ID="str_player_beinglooted">
<Original>%1 is already being looted by someone else.</Original> <Original>%1 is already being looted by someone else.</Original>

View File

@@ -1084,6 +1084,9 @@ class FSM
"" \n "" \n
"if (player hasWeapon ""MeleeCrowbar"") then {" \n "if (player hasWeapon ""MeleeCrowbar"") then {" \n
" player addMagazine 'crowbar_swing';" \n " player addMagazine 'crowbar_swing';" \n
"};" \n
"if (player hasWeapon ""MeleeSledge"") then {" \n
" player addMagazine 'sledge_swing';" \n
"};" \n "};" \n
"if (player hasWeapon ""MeleeHatchet"") then {" \n "if (player hasWeapon ""MeleeHatchet"") then {" \n
" player addMagazine 'hatchet_swing';" \n " player addMagazine 'hatchet_swing';" \n

View File

@@ -30,7 +30,7 @@ while {true} do {
_bloodChanged = false; _bloodChanged = false;
_size = (sizeOf typeOf _refObj) * _factor; _size = (sizeOf typeOf _refObj) * _factor;
_vel = velocity _refObj; _vel = velocity player;
_speed = round((_vel distance [0,0,0]) * 3.5); _speed = round((_vel distance [0,0,0]) * 3.5);
//reset position //reset position

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -70,7 +70,67 @@ class CfgSkeletons {
}; };
// The last entry gets no comma // The last entry gets no comma
}; };
class locked_steel_garage_skeleton : Default {
isDiscrete=1;
skeletonInherit="";
// The moving objects are here defined
// If two selections are linked together
// they can be written next to each seperated by only a comma
// if they are not linked, they need to be
// seperated by ,"",
skeletonBones[]= {
"garage","","latch",""
};
// The last entry gets no comma
};
class steel_garage_skeleton : Default {
isDiscrete=1;
skeletonInherit="";
// The moving objects are here defined
// If two selections are linked together
// they can be written next to each seperated by only a comma
// if they are not linked, they need to be
// seperated by ,"",
skeletonBones[]= {
"garage","",
};
// The last entry gets no comma
};
class steel_door_skeleton : Default {
isDiscrete=1;
skeletonInherit="";
// The moving objects are here defined
// If two selections are linked together
// they can be written next to each seperated by only a comma
// if they are not linked, they need to be
// seperated by ,"",
skeletonBones[]= {
"door","",""
};
// The last entry gets no comma
};
class locked_steel_door_skeleton : Default {
isDiscrete=1;
skeletonInherit="";
// The moving objects are here defined
// If two selections are linked together
// they can be written next to each seperated by only a comma
// if they are not linked, they need to be
// seperated by ,"",
skeletonBones[]= {
"door","","latch",""
};
// The last entry gets no comma
};
}; };
@@ -78,6 +138,8 @@ class CfgSkeletons {
class CfgModels { class CfgModels {
//load some bases from which you can derivate //load some bases from which you can derivate
class rotation; class rotation;
class translation;
// And again: class default // And again: class default
class Default { class Default {
sectionsInherit=""; sectionsInherit="";
@@ -315,5 +377,175 @@ class CfgModels {
}; };
}; };
class unlocked_steel_garage_door {
sectionsInherit="";
sections[]= {};
skeletonName="steel_garage_skeleton"; // same as in cfgskeletons
};
//New Anim for steel_garage_door.p3d
class steel_garage_door : unlocked_steel_garage_door {
sectionsInherit="unlocked_steel_garage_door";
sections[]={};
// the translation(slide) animation
class Animations {
class Open_door : Rotation { // name of the animation
type="rotation"; // Type of movement
source="user"; // Trigger of the animation
selection="garage"; // the thing that moves
axis="garage_axis"; // take a guess what this does...
memory = 1; // can the axis be found in memory-lod? 1 = yes, 0 = no
angle0=0; // initial angle of the door in radians
angle1=1.7; // final position after playing the animation
};
};
};
class locked_steel_garage_door {
sectionsInherit="";
sections[]= {};
skeletonName="locked_steel_garage_skeleton"; // same as in cfgskeletons
};
//New Anim for steel_garage_locked.p3d
class steel_garage_locked : locked_steel_garage_door {
sectionsInherit="locked_steel_garage_door";
sections[]={};
// the translation(slide) animation
class Animations {
class Open_door : Rotation { // name of the animation
type="rotation"; // Type of movement
source="user"; // Trigger of the animation
selection="garage"; // the thing that moves
axis="garage_axis"; // take a guess what this does...
memory = 1; // can the axis be found in memory-lod? 1 = yes, 0 = no
angle0=0; // initial angle of the door in radians
angle1=1.7; // final position after playing the animation
};
class Open_latch : Translation { // name of the animation
type="translation"; // Type of movement
source="user"; // Trigger of the animation
selection="latch"; // the thing that moves
axis="latch_axis"; // take a guess what this does...
memory = 1; // can the axis be found in memory-lod? 1 = yes, 0 = no
offset0=0; // initial angle of the door in radians
offset1=0.5; // final position after playing the animation
};
};
};
class unlocked_steel_door {
sectionsInherit="";
sections[]= {};
skeletonName="steel_door_skeleton"; // same as in cfgskeletons
};
//New Anim for steel_door.p3d
class steel_door : unlocked_steel_door {
sectionsInherit="unlocked_steel_door";
sections[]={};
// the translation(slide) animation
class Animations {
class Open_door : Rotation { // name of the animation
type="rotation"; // Type of movement
source="user"; // Trigger of the animation
selection="door"; // the thing that moves
axis="door_axis"; // take a guess what this does...
memory = 1; // can the axis be found in memory-lod? 1 = yes, 0 = no
angle0=0; // initial angle of the door in radians
angle1=-2.4; // final position after playing the animation
};
};
};
class locked_steel_door {
sectionsInherit="";
sections[]= {};
skeletonName="locked_steel_door_skeleton"; // same as in cfgskeletons
};
//New Anim for steel_door_locked.p3d
class steel_door_locked : locked_steel_door {
sectionsInherit="locked_steel_door";
sections[]={};
// the translation(slide) animation
class Animations {
class Open_door : Rotation { // name of the animation
type="rotation"; // Type of movement
source="user"; // Trigger of the animation
selection="door"; // the thing that moves
axis="door_axis"; // take a guess what this does...
memory = 1; // can the axis be found in memory-lod? 1 = yes, 0 = no
angle0=0; // initial angle of the door in radians
angle1=-2.4; // final position after playing the animation
};
class Open_latch : Translation { // name of the animation
type="translation"; // Type of movement
source="user"; // Trigger of the animation
selection="latch"; // the thing that moves
axis="latch_axis"; // take a guess what this does...
memory = 1; // can the axis be found in memory-lod? 1 = yes, 0 = no
offset0=0; // initial angle of the door in radians
offset1=-1.42; // final position after playing the animation
};
};
};
}; };

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,8 +1,8 @@
ambient[]={1,1,1,0.5}; ambient[]={0.48627451,0.48627451,0.48627451,0.63999999};
diffuse[]={1,1,1,0.5}; diffuse[]={0.48627451,0.48627451,0.48627451,0.63999999};
forcedDiffuse[]={0,0,0,0}; forcedDiffuse[]={0,0,0,0};
emmisive[]={0,0,0,1}; emmisive[]={0,0,0,1};
specular[]={0.24313726,0.24313726,0.24313726,1}; specular[]={0.34117648,0.34117648,0.34117648,1};
specularPower=100; specularPower=100;
PixelShaderID="Super"; PixelShaderID="Super";
VertexShaderID="Super"; VertexShaderID="Super";

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,92 @@
ambient[]={0.8392157,0.8392157,0.8392157,0.93000001};
diffuse[]={0.8392157,0.8392157,0.8392157,0.92500001};
forcedDiffuse[]={0,0,0,0};
emmisive[]={0,0,0,1};
specular[]={0.26666668,0.26666668,0.26666668,1};
specularPower=100;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="z\addons\dayz_epoch\textures\hemp_nohq.tga";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage4
{
texture="#(argb,8,8,3)color(1,1,1,1,AS)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage5
{
texture="z\addons\dayz_epoch\textures\hemp_smdi.tga";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage6
{
texture="#(ai,32,128,1)fresnel(0.3,0.3)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage7
{
texture="ca\data\env_land_co.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};

Binary file not shown.

View File

@@ -0,0 +1,80 @@
ambient[]={0.67843139,0.67843139,0.67843139,0.76999998};
diffuse[]={0.67843139,0.67843139,0.67843139,0.76899999};
forcedDiffuse[]={0,0,0,1};
emmisive[]={0,0,0,1};
specular[]={0.74509805,0.74509805,0.74509805,0.77999997};
specularPower=100;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="CA\Structures\Data\Metal\metal_plates3_nohq.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage4
{
texture="#(argb,8,8,3)color(1,1,1,1,AS)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage5
{
texture="CA\Structures\Data\Metal\metal_plates3_dtsmdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(1.3,7)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,0};
};
};

View File

@@ -0,0 +1,85 @@
ambient[]={0.67843139,0.67843139,0.67843139,0.15000001};
diffuse[]={0.67843139,0.67843139,0.67843139,0.15000001};
forcedDiffuse[]={0,0,0,1};
emmisive[]={0,0,0,1};
specular[]={0.29019609,0.29019609,0.29019609,0.77999997};
specularPower=100;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="CA\Structures\Data\Metal\metal_rollup_nohq.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage4
{
texture="#(argb,8,8,3)color(1,1,1,1,AS)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage5
{
texture="CA\Structures\Data\Metal\metal_rollup_dtsmdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage6
{
texture="#(ai,64,64,1)fresnel(1.3,7)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,1};
pos[]={0,0,0};
};
};
class Stage7
{
texture="CA\data\env_land_co.paa";
uvSource="none";
};

View File

@@ -0,0 +1,68 @@
ambient[]={1,1,1,0.5};
diffuse[]={1,1,1,0.5};
forcedDiffuse[]={0,0,0,0};
emmisive[]={0,0,0,1};
specular[]={0.24313726,0.24313726,0.24313726,1};
specularPower=100;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="z\addons\dayz_epoch\textures\mortar_nohq.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2
{
texture="CA\data\detail_maps\concrete1_512_dt.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage4
{
texture="#(argb,8,8,3)color(1,1,1,1,AS)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage5
{
texture="CA\data\detail_maps\concrete1_512_dtsmdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,92 @@
ambient[]={0.51372552,0.51372552,0.51372552,0.83999997};
diffuse[]={0.51372552,0.51372552,0.51372552,0.83999997};
forcedDiffuse[]={0,0,0,0};
emmisive[]={0,0,0,1};
specular[]={0.05882353,0.05882353,0.05882353,0.73699999};
specularPower=100;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage1
{
texture="z\addons\dayz_epoch\textures\mortar_pail_nohq.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,1,DT)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage4
{
texture="#(argb,8,8,3)color(1,1,1,1,AS)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage5
{
texture="z\addons\dayz_epoch\textures\mortar_pail_smdi.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage6
{
texture="#(ai,32,128,1)fresnel(0.3,0.35)";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};
class Stage7
{
texture="ca\data\env_land_co.paa";
uvSource="tex";
class uvTransform
{
aside[]={1,0,0};
up[]={0,1,0};
dir[]={0,0,0};
pos[]={0,0,0};
};
};

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More