diff --git a/SQF/dayz_code/Configs/CfgMagazines.hpp b/SQF/dayz_code/Configs/CfgMagazines.hpp
index 66a7cebf1..67b5baa48 100644
--- a/SQF/dayz_code/Configs/CfgMagazines.hpp
+++ b/SQF/dayz_code/Configs/CfgMagazines.hpp
@@ -1,6 +1,134 @@
class CfgMagazines {
class CA_Magazine; // External class reference
+ // Ammmo
+ class 100Rnd_762x54_PK : CA_Magazine {
+ scope = 2;
+ displayName = "PKM Mag.";
+ picture = "\CA\weapons\data\equip\m_pk_ca.paa";
+ ammo = "B_762x54_Ball";
+ count = 100;
+ type = "256";
+ initSpeed = 850;
+ sound[] = {"\ca\Weapons\Data\Sound\PK_1_SS", 3.16228, 1, 1500};
+ tracersEvery = 4;
+ lastRoundsTracer = 4;
+ nameSound = "mgun";
+ descriptionShort = "Caliber: 7.62x54mm
Rounds: 100
Used in: PK";
+ model = "\ca\CommunityConfigurationProject_E\Gameplay_ActualModelsOfWeaponMagazinesVisibleOnTheGround\p3d\100Rnd_762x54_PK.p3d";
+ };
+
+ class 29Rnd_30mm_AGS30 : CA_Magazine {
+ scope = 2;
+ displayName = "HE Rounds";
+ picture = "\CA\weapons\data\equip\m_m240_ca.paa";
+ ammo = "G_30mm_HE";
+ count = 29;
+ type = "256";
+ initSpeed = 185;
+ maxLeadSpeed = 100;
+ nameSound = "grenadelauncher";
+ weight = 16;
+ };
+
+ class 50Rnd_127x107_DSHKM : CA_Magazine {
+ scope = 2;
+ displayName = "DShKM";
+ picture = "\CA\weapons\data\equip\m_m240_ca.paa";
+ model = "\z\addons\dayz_epoch\models\dshkm_mag.p3d";
+ ammo = "B_127x107_Ball";
+ count = 50;
+ type = "256";
+ initSpeed = 850;
+ maxLeadSpeed = 200;
+ tracersEvery = 3;
+ lastRoundsTracer = 5;
+ nameSound = "mgun";
+ weight = 4;
+ };
+ class 100Rnd_127x99_M2 : CA_Magazine {
+ scope = 2;
+ displayName = "M2 Machine Gun";
+ picture = "\CA\weapons\data\equip\m_m240_ca.paa";
+ ammo = "B_127x99_Ball";
+ count = 100;
+ type = "256";
+ initSpeed = 930;
+ maxLeadSpeed = 200;
+ tracersEvery = 3;
+ lastRoundsTracer = 5;
+ nameSound = "mgun";
+ weight = 8;
+ };
+ class 2000Rnd_762x51_M134 : CA_Magazine {
+ count = 2000;
+ scope = 2;
+ displayName = "M134 7.62 Nato";
+ picture = "\CA\weapons\data\equip\m_m240_ca.paa";
+ ammo = "B_762x51_3RndBurst";
+ type = "256";
+ maxLeadSpeed = 200;
+ tracersEvery = 5;
+ nameSound = "mgun";
+ weight = 50;
+ };
+ class 48Rnd_40mm_MK19 : CA_Magazine {
+ scope = 2;
+ displayName = "Mk. 19 40mm";
+ picture = "\CA\weapons\data\equip\m_m240_ca.paa";
+ ammo = "G_40mm_HE";
+ count = 48;
+ type = "256";
+ initSpeed = 240;
+ maxLeadSpeed = 100;
+ nameSound = "grenadelauncher";
+ weight = 25;
+ };
+
+ class 100Rnd_762x51_M240 : CA_Magazine {
+ scope = 2;
+ displayName = "100Rnd. M240";
+ picture = "\CA\weapons\data\equip\m_m240_ca.paa";
+ count = 100;
+ type = "256";
+ ammo = "B_762x51_Ball";
+ initSpeed = 900;
+ tracersEvery = 4;
+ lastRoundsTracer = 4;
+ nameSound = "mgun";
+ descriptionShort = "Caliber: 7.62x51mm NATO
Rounds: 100
Used in: M240, Mk 48 Mod 0";
+ model = "\ca\CommunityConfigurationProject_E\Gameplay_ActualModelsOfWeaponMagazinesVisibleOnTheGround\p3d\100Rnd_762x51_M240.p3d";
+ };
+ class 200Rnd_762x51_M240 : 100Rnd_762x51_M240 {
+ count = 200;
+ };
+
+ class 200Rnd_556x45_M249 : CA_Magazine {
+ scope = 2;
+ displayName = "200Rnd. M249 Belt";
+ picture = "\CA\weapons\data\equip\m_m249_ca.paa";
+ ammo = "B_556x45_Ball";
+ count = 200;
+ type = "256";
+ initSpeed = 915;
+ sound[] = {"\ca\Weapons\Data\Sound\M249_1_SS", 17.7828, 1, 1300};
+ reloadMagazineSound[] = {"\ca\Weapons\Data\Sound\FAL_reload", 0.01, 1, 20};
+ tracersEvery = 4;
+ lastRoundsTracer = 4;
+ nameSound = "mgun";
+ descriptionShort = "Caliber: 5.56x45 mm NATO
Rounds: 200
Used in: M249 SAW";
+ model = "\ca\CommunityConfigurationProject_E\Gameplay_ActualModelsOfWeaponMagazinesVisibleOnTheGround\p3d\200Rnd_556x45_M249.p3d";
+ };
+
+ class 100Rnd_556x45_M249 : 200Rnd_556x45_M249 {
+ displayName = "M249 Mag.";
+ descriptionShort = "Caliber: 5.56x45mm NATO
Rounds: 100
Used in: M249";
+ count = 100;
+ picture = "\CA\weapons_E\Data\icons\m_m245_CA.paa";
+ };
+
+
+ // Items
class ItemHotwireKit: CA_Magazine
{
scope = 2;
@@ -2457,6 +2585,12 @@ class CfgMagazines {
picture = "\dayz_equip\textures\equip_woodPile_ca.paa";
descriptionShort = "$STR_EQUIP_DESC_40";
class ItemActions {
+ class Build {
+ text = "Build Fire";
+ script = "spawn player_build;";
+ require[] = {"ItemMatchbox_DZE"};
+ create = "Land_Fire_DZ";
+ };
class Crafting
{
text = "Craft Lumber";
diff --git a/SQF/dayz_code/Configs/CfgWeapons.hpp b/SQF/dayz_code/Configs/CfgWeapons.hpp
index ff9c3b1ca..9301b8734 100644
--- a/SQF/dayz_code/Configs/CfgWeapons.hpp
+++ b/SQF/dayz_code/Configs/CfgWeapons.hpp
@@ -21,6 +21,15 @@ class CfgWeapons {
class DMR; // External class reference
+ class ItemMatchbox_DZE: ItemCore
+ {
+ scope = 2;
+ displayName = "$STR_EQUIP_NAME_3";
+ model = "\dayz_equip\models\matchbox_gear.p3d";
+ picture = "\dayz_equip\textures\equip_matchbox_ca.paa";
+ descriptionShort = "$STR_EQUIP_DESC_3";
+ };
+
class ItemKnife: ItemCore
{
scope = 2;
diff --git a/SQF/dayz_code/Configs/rscTitles.hpp b/SQF/dayz_code/Configs/rscTitles.hpp
index 00c1cf857..edcc2674e 100644
--- a/SQF/dayz_code/Configs/rscTitles.hpp
+++ b/SQF/dayz_code/Configs/rscTitles.hpp
@@ -149,7 +149,7 @@ class RscDisplayMain : RscStandardDisplay
class DAYZ_Version : CA_Version
{
idc = -1;
- text = "DayZ Epoch 1.0.2.3";
+ text = "DayZ Epoch 1.0.2.38";
y = "(SafeZoneH + SafeZoneY) - (1 - 0.95)";
};
delete CA_TitleMainMenu;
diff --git a/SQF/dayz_code/actions/player_build.sqf b/SQF/dayz_code/actions/player_build.sqf
index c546d9b21..e59c0594b 100644
--- a/SQF/dayz_code/actions/player_build.sqf
+++ b/SQF/dayz_code/actions/player_build.sqf
@@ -2,7 +2,7 @@
DayZ Base Building
Made for DayZ Epoch please ask permission to use/edit/distrubute email vbawol@veteranbastards.com.
*/
-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","_zheightdirection","_ztick"];
+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","_zheightdirection","_tick"];
if(TradeInprogress) exitWith { cutText ["\n\nBuilding already in progress." , "PLAIN DOWN"]; };
TradeInprogress = true;
@@ -15,11 +15,21 @@ _isWater = dayz_isSwimming;
_cancel = false;
_reason = "";
_canBuildOnPlot = false;
-DZE_BuildingZ = 0;
-DZE_cancelBuilding = false;
+DZE_Q = false;
+DZE_Z = false;
+
+DZE_Q_alt = false;
+DZE_Z_alt = false;
+
+DZE_Q_ctrl = false;
+DZE_Z_ctrl = false;
DZE_5 = false;
+DZE_4 = false;
+DZE_6 = false;
+
+DZE_cancelBuilding = false;
call gear_ui_init;
closeDialog 1;
@@ -42,6 +52,10 @@ if(isNumber (configFile >> "CfgVehicles" >> _classname >> "lockable")) then {
_offset = getArray (configFile >> "CfgVehicles" >> _classname >> "offset");
+if((count _offset) <= 0) then {
+ _offset = [0,1.5,0];
+};
+
_isPole = (_classname == "Plastic_Pole_EP1_DZ");
_distance = 30;
@@ -127,20 +141,51 @@ if (_hasrequireditem) then {
_position = getPosATL _object;
+ cutText ["Planning construction: PgUp = raise, PgDn = lower, Q or E = flip 180, and Space-Bar to build.", "PLAIN DOWN"];
+
while {_isOk} do {
_zheightchanged = false;
_zheightdirection = "";
_rotate = false;
+ _tick = 1;
if (DZE_Q) then {
DZE_Q = false;
_zheightdirection = "up";
_zheightchanged = true;
+ _tick = 10;
};
if (DZE_Z) then {
DZE_Z = false;
_zheightdirection = "down";
+ _zheightchanged = true;
+ _tick = 10;
+ };
+
+
+ if (DZE_Q_alt) then {
+ DZE_Q_alt = false;
+ _zheightdirection = "up_alt";
+ _zheightchanged = true;
+ _tick = 100;
+ };
+ if (DZE_Z_alt) then {
+ DZE_Z_alt = false;
+ _zheightdirection = "down_alt";
+ _zheightchanged = true;
+ _tick = 100;
+ };
+
+
+ if (DZE_Q_ctrl) then {
+ DZE_Q_ctrl = false;
+ _zheightdirection = "up_ctrl";
+ _zheightchanged = true;
+ };
+ if (DZE_Z_ctrl) then {
+ DZE_Z_ctrl = false;
+ _zheightdirection = "down_ctrl";
_zheightchanged = true;
};
@@ -167,13 +212,27 @@ if (_hasrequireditem) then {
_position = getPosATL _object;
// make z height stick to ticks
- _ztick = (round((_position select 2)*10)/10);
+ // _ztick = (round((_position select 2)*100)/100);
if(_zheightdirection == "up") then {
- _position = [(_position select 0),(_position select 1), (_ztick+0.1)];
+ _position = [(_position select 0),(_position select 1), ((_position select 2)+0.1)];
};
if(_zheightdirection == "down") then {
- _position = [(_position select 0),(_position select 1), (_ztick-0.1)];
+ _position = [(_position select 0),(_position select 1), ((_position select 2)-0.1)];
+ };
+
+ if(_zheightdirection == "up_alt") then {
+ _position = [(_position select 0),(_position select 1), ((_position select 2)+1)];
+ };
+ if(_zheightdirection == "down_alt") then {
+ _position = [(_position select 0),(_position select 1), ((_position select 2)-1)];
+ };
+
+ if(_zheightdirection == "up_ctrl") then {
+ _position = [(_position select 0),(_position select 1), ((_position select 2)+0.01)];
+ };
+ if(_zheightdirection == "down_ctrl") then {
+ _position = [(_position select 0),(_position select 1), ((_position select 2)-0.01)];
};
_object setDir (getDir _object);
@@ -184,11 +243,9 @@ if (_hasrequireditem) then {
_object attachTo [player];
- diag_log format["DEBUG AChange BUILDING POS: %1", _position];
-
};
- cutText ["Planning construction: PgUp = raise, PgDn = lower, Q or E = flip 180, and Space-Bar to build.", "PLAIN DOWN"];
+
sleep 1;
@@ -211,14 +268,17 @@ if (_hasrequireditem) then {
deleteVehicle _object;
};
- if(_counter >= 50) exitWith {
+ if(_counter >= 500) exitWith {
_isOk = false;
_cancel = true;
_reason = "Ran out of time to find position.";
detach _object;
deleteVehicle _object;
};
- _counter = _counter + 1;
+
+ cutText [format["%1",(500-_counter)], "PLAIN DOWN"];
+
+ _counter = _counter + _tick;
if (player getVariable["combattimeout", 0] >= time) exitWith {
_isOk = false;
@@ -235,6 +295,8 @@ if (_hasrequireditem) then {
detach _object;
deleteVehicle _object;
};
+
+
};
// No building on roads
@@ -388,8 +450,13 @@ if (_hasrequireditem) then {
} else {
_tmpbuilt setVariable ["CharacterID",dayz_characterID,true];
- dayzPublishObj = [dayz_characterID,_tmpbuilt,[_dir,_location],_classname];
- publicVariableServer "dayzPublishObj";
+ // fire?
+ if(_tmpbuilt isKindOf "Land_Fire") then {
+ _tmpbuilt spawn player_fireMonitor;
+ } else {
+ dayzPublishObj = [dayz_characterID,_tmpbuilt,[_dir,_location],_classname];
+ publicVariableServer "dayzPublishObj";
+ };
};
diff --git a/SQF/dayz_code/actions/player_chopWood.sqf b/SQF/dayz_code/actions/player_chopWood.sqf
index 6aa5acfe1..ffdc3651c 100644
--- a/SQF/dayz_code/actions/player_chopWood.sqf
+++ b/SQF/dayz_code/actions/player_chopWood.sqf
@@ -55,6 +55,8 @@ if (count(_findNearestTree) >= 1) then {
player playActionNow "Medic";
[player,20,true,(getPosATL player)] spawn player_alertZombies;
+
+ closeDialog 1;
r_interrupt = false;
_animState = animationState player;
diff --git a/SQF/dayz_code/actions/player_craftItem.sqf b/SQF/dayz_code/actions/player_craftItem.sqf
index 18ecb2b5a..2eb2bc999 100644
--- a/SQF/dayz_code/actions/player_craftItem.sqf
+++ b/SQF/dayz_code/actions/player_craftItem.sqf
@@ -19,7 +19,7 @@ class ItemActions
};
};
*/
-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"];
+private ["_tradeComplete","_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;
@@ -71,6 +71,7 @@ if (_canDo) then {
_inputWeapons = getArray (configFile >> _baseClass >> _item >> "ItemActions" >> _crafting >> "inputweapons");
_craft_doLoop = true;
+ _tradeComplete = 0;
while {_craft_doLoop} do {
@@ -178,12 +179,14 @@ if (_canDo) then {
player addMagazine _itemOut;
};
+ _tradeComplete = _tradeComplete+1;
+
_textCreate = getText(configFile >> "CfgMagazines" >> _itemOut >> "displayName");
- // Add crafted item
- cutText [format["\n\nCrafted Item: %1 x %2",_textCreate,_countOut], "PLAIN DOWN"];
- // sleep here
- sleep 1;
+ // Add crafted item
+ cutText [format["\n\nCrafted Item: %1 x %2",_textCreate,_countOut], "PLAIN DOWN"];
+ // sleep here
+ sleep 1;
} forEach _selectedRecipeOutput;
};
@@ -207,7 +210,7 @@ if (_canDo) then {
} else {
_textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName");
- cutText [format["\n\nMissing %1 more of %2",_missingQty, _textMissing], "PLAIN DOWN"];
+ cutText [format["\n\n%3 complete, missing %1 more of %2",_missingQty, _textMissing,_tradeComplete], "PLAIN DOWN"];
_craft_doLoop = false;
};
} else {
diff --git a/SQF/dayz_code/compile/player_gearSet.sqf b/SQF/dayz_code/compile/player_gearSet.sqf
index 1d29cd84c..9a80f6594 100644
--- a/SQF/dayz_code/compile/player_gearSet.sqf
+++ b/SQF/dayz_code/compile/player_gearSet.sqf
@@ -35,7 +35,8 @@ if (count _inventory > 0) then {
//Add weapons
{
if (_x == "Crossbow") then { _x = "Crossbow_DZ" }; // Convert Crossbow to Crossbow_DZ
-
+ if (_x == "ItemMatchbox") then { _x = "ItemMatchbox_DZE" }; // Convert Crossbow to Crossbow_DZ
+
//Is item legal?
_isOK = isClass(configFile >> "CfgWeapons" >> _x);
if (_isOK) then {
diff --git a/SQF/dayz_code/config.cpp b/SQF/dayz_code/config.cpp
index 006a48bd8..d3b5d1650 100644
--- a/SQF/dayz_code/config.cpp
+++ b/SQF/dayz_code/config.cpp
@@ -41,7 +41,7 @@ class CfgMods
hidePicture = 0;
hideName = 0;
action = "http://www.dayzepoch.com";
- version = "1.0.2.37";
+ version = "1.0.2.38";
hiveVersion = 0.96; //0.93
};
};
@@ -877,7 +877,10 @@ class CfgBuildingLoot {
{ "Pecheneg_DZ","weapon"},
{"100Rnd_762x54_PK","magazine"},
{"2000Rnd_762x51_M134","magazine"},
-
+ {"29Rnd_30mm_AGS30","magazine"},
+ {"50Rnd_127x107_DSHKM","magazine"},
+ {"48Rnd_40mm_MK19","magazine"},
+ {"100Rnd_127x99_M2","magazine"},
};
itemChance[] = {
0.02,
@@ -890,7 +893,7 @@ class CfgBuildingLoot {
0.02,
0.01,
0.02,
- 0.39,
+ 0.35,
0.19,
0.05,
0.01,
@@ -903,6 +906,10 @@ class CfgBuildingLoot {
0.01,
0.01,
0.01,
+ 0.01,
+ 0.01,
+ 0.01,
+ 0.01
};
};
class HeliCrash_No50s: Default {
@@ -934,6 +941,10 @@ class HeliCrash_No50s: Default {
{"G36K_camo","weapon"},
{"100Rnd_762x54_PK","magazine"},
{"2000Rnd_762x51_M134","magazine"},
+ {"29Rnd_30mm_AGS30","magazine"},
+ {"50Rnd_127x107_DSHKM","magazine"},
+ {"48Rnd_40mm_MK19","magazine"},
+ {"100Rnd_127x99_M2","magazine"},
};
itemChance[] = {
0.01,
@@ -957,7 +968,11 @@ class HeliCrash_No50s: Default {
0.01,
0.01,
0.01,
- 0.01
+ 0.01,
+ 0.01,
+ 0.01,
+ 0.01,
+ 0.01,
};
};
class Hospital: Default {
@@ -1203,6 +1218,10 @@ class HeliCrash_No50s: Default {
{ "militaryclothes","single" },
{"NVGoggles","weapon"},
{"2000Rnd_762x51_M134","magazine"},
+ {"29Rnd_30mm_AGS30","magazine"},
+ {"50Rnd_127x107_DSHKM","magazine"},
+ {"48Rnd_40mm_MK19","magazine"},
+ {"100Rnd_127x99_M2","magazine"},
};
itemChance[] = {
0.01,
@@ -1242,7 +1261,12 @@ class HeliCrash_No50s: Default {
0.05,
0.03,
0.08,
- 0.34,
+ 0.30,
+ 0.01,
+ 0.01,
+ 0.01,
+ 0.01,
+ 0.01,
0.01,
0.01,
0.01,
@@ -1250,7 +1274,6 @@ class HeliCrash_No50s: Default {
0.01,
0.01,
0.01,
- 0.01
};
};
class Hunting: Default {
diff --git a/SQF/dayz_code/init/compiles.sqf b/SQF/dayz_code/init/compiles.sqf
index 77119c500..a71c4f674 100644
--- a/SQF/dayz_code/init/compiles.sqf
+++ b/SQF/dayz_code/init/compiles.sqf
@@ -260,6 +260,12 @@ if (!isDedicated) then {
dayz_spaceInterrupt = {
private ["_dikCode", "_handled"];
_dikCode = _this select 1;
+ _shift = _this select 2;
+ _ctrl = _this select 3;
+ _alt = _this select 4;
+
+ //diag_log format["Keypress: %1", _this];
+
_handled = false;
if (_dikCode in (actionKeys "GetOver")) then {
@@ -268,7 +274,7 @@ if (!isDedicated) then {
} else {
_inBuilding = [player] call fnc_isInsideBuilding;
_nearbyObjects = nearestObjects[getPosATL player, dayz_disallowedVault, 8];
- if (_inBuilding or (count _nearbyObjects > 0)) then {
+ if (!r_player_unconscious and (_inBuilding or (count _nearbyObjects > 0))) then {
[objNull, player, rSwitchMove,"GetOver"] call RE;
player playActionNow "GetOver";
};
@@ -308,14 +314,39 @@ if (!isDedicated) then {
dayz_lastCheckBit = time;
_nill = execvm "\z\addons\dayz_code\actions\playerstats.sqf";
};
- // numpad 8 0x48 now pgup 0xC9
- if (_dikCode == 0xC9 or (_dikCode in actionKeys "User15")) then {
+
+ // numpad 8 0x48 now pgup 0xC9 1
+ if ((_dikCode == 0xC9 and (!_alt or !_ctrl)) or (_dikCode in actionKeys "User15")) then {
DZE_Q = true;
};
// numpad 2 0x50 now pgdn 0xD1
- if (_dikCode == 0xD1 or (_dikCode in actionKeys "User16")) then {
+ if ((_dikCode == 0xD1 and (!_alt or !_ctrl)) or (_dikCode in actionKeys "User16")) then {
DZE_Z = true;
};
+
+
+ // numpad 8 0x48 now pgup 0xC9 0.1
+ if ((_dikCode == 0xC9 and (_alt and !_ctrl)) or (_dikCode in actionKeys "User13")) then {
+ DZE_Q_alt = true;
+ };
+ // numpad 2 0x50 now pgdn 0xD1
+ if ((_dikCode == 0xD1 and (_alt and !_ctrl)) or (_dikCode in actionKeys "User14")) then {
+ DZE_Z_alt = true;
+ };
+
+
+ // numpad 8 0x48 now pgup 0xC9 0.01
+ if ((_dikCode == 0xC9 and (!_alt and _ctrl)) or (_dikCode in actionKeys "User7")) then {
+ DZE_Q_ctrl = true;
+ };
+ // numpad 2 0x50 now pgdn 0xD1
+ if ((_dikCode == 0xD1 and (!_alt and _ctrl)) or (_dikCode in actionKeys "User8")) then {
+ DZE_Z_ctrl = true;
+ };
+
+
+
+
// numpad 4 0x4B now Q 0x10
if (_dikCode == 0x10 or (_dikCode in actionKeys "User17")) then {
DZE_4 = true;
diff --git a/SQF/dayz_code/init/variables.sqf b/SQF/dayz_code/init/variables.sqf
index 7ace9e3bf..7e0e59853 100644
--- a/SQF/dayz_code/init/variables.sqf
+++ b/SQF/dayz_code/init/variables.sqf
@@ -612,6 +612,13 @@ if(!isDedicated) then {
DZE_CanPickup = true;
DZE_Q = false;
DZE_Z = false;
+
+ DZE_Q_alt = false;
+ DZE_Z_alt = false;
+
+ DZE_Q_ctrl = false;
+ DZE_Z_ctrl = false;
+
DZE_5 = false;
DZE_4 = false;
DZE_6 = false;
diff --git a/SQF/dayz_code/system/player_monitor.fsm b/SQF/dayz_code/system/player_monitor.fsm
index 6ed95412a..e06d30934 100644
--- a/SQF/dayz_code/system/player_monitor.fsm
+++ b/SQF/dayz_code/system/player_monitor.fsm
@@ -695,6 +695,7 @@ class FSM
" _countr = 0;" \n
" {" \n
" if (_x == ""Crossbow"") then { _x = ""Crossbow_DZ"" };" \n
+ " if (_x == ""ItemMatchbox"") then { _x = ""ItemMatchbox_DZE"" };" \n
" dayz_myBackpack addWeaponCargoGlobal [_x,(_backpackWpnQtys select _countr)];" \n
" _countr = _countr + 1;" \n
" } forEach _backpackWpnTypes;" \n
diff --git a/SQF/dayz_epoch/models/dshkm_mag.p3d b/SQF/dayz_epoch/models/dshkm_mag.p3d
new file mode 100644
index 000000000..8a67f3577
Binary files /dev/null and b/SQF/dayz_epoch/models/dshkm_mag.p3d differ
diff --git a/SQF/dayz_epoch/textures/dshkm.rvmat b/SQF/dayz_epoch/textures/dshkm.rvmat
new file mode 100644
index 000000000..6ac9e9d04
--- /dev/null
+++ b/SQF/dayz_epoch/textures/dshkm.rvmat
@@ -0,0 +1,92 @@
+ambient[]={0.80784315,0.80784315,0.80784315,1};
+diffuse[]={0.80784315,0.80784315,0.80784315,1};
+forcedDiffuse[]={0,0,0,0};
+emmisive[]={0,0,0,1};
+specular[]={0.66274512,0.7764706,0.60784316,1};
+specularPower=200;
+PixelShaderID="Super";
+VertexShaderID="Super";
+class Stage1
+{
+ texture="z\addons\dayz_epoch\textures\dshkm_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\dshkm_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(1.7,7.0)";
+ 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};
+ };
+};
diff --git a/SQF/dayz_epoch/textures/dshkm_co.paa b/SQF/dayz_epoch/textures/dshkm_co.paa
new file mode 100644
index 000000000..4dd9b73ed
Binary files /dev/null and b/SQF/dayz_epoch/textures/dshkm_co.paa differ
diff --git a/SQF/dayz_epoch/textures/dshkm_nohq.paa b/SQF/dayz_epoch/textures/dshkm_nohq.paa
new file mode 100644
index 000000000..c9d6b8293
Binary files /dev/null and b/SQF/dayz_epoch/textures/dshkm_nohq.paa differ
diff --git a/SQF/dayz_epoch/textures/dshkm_smdi.paa b/SQF/dayz_epoch/textures/dshkm_smdi.paa
new file mode 100644
index 000000000..7060df5cb
Binary files /dev/null and b/SQF/dayz_epoch/textures/dshkm_smdi.paa differ
diff --git a/SQF/dayz_server/system/server_monitor.sqf b/SQF/dayz_server/system/server_monitor.sqf
index a4fae310c..fb8e126ca 100644
--- a/SQF/dayz_server/system/server_monitor.sqf
+++ b/SQF/dayz_server/system/server_monitor.sqf
@@ -175,7 +175,7 @@ if (isServer and isNil "sm_done") then {
};
_object setdir _dir;
- _object setpos _pos;
+ _object setposATL _pos;
_object setDamage _damage;
if (count _intentory > 0) then {
@@ -192,6 +192,7 @@ if (isServer and isNil "sm_done") then {
_countr = 0;
{
if (_x == "Crossbow") then { _x = "Crossbow_DZ" }; // Convert Crossbow to Crossbow_DZ
+ if (_x == "ItemMatchbox") then { _x = "ItemMatchbox_DZE" }; // Convert Crossbow to Crossbow_DZ
_isOK = isClass(configFile >> "CfgWeapons" >> _x);
if (_isOK) then {
_block = getNumber(configFile >> "CfgWeapons" >> _x >> "stopThis") == 1;