diff --git a/SQF/dayz_anim/weapon/saw_idle.rtm b/SQF/dayz_anim/weapon/saw_idle.rtm new file mode 100644 index 000000000..112395c1d Binary files /dev/null and b/SQF/dayz_anim/weapon/saw_idle.rtm differ diff --git a/SQF/dayz_code/Configs/CfgMagazines.hpp b/SQF/dayz_code/Configs/CfgMagazines.hpp index 5e4d3602a..b7cce619c 100644 --- a/SQF/dayz_code/Configs/CfgMagazines.hpp +++ b/SQF/dayz_code/Configs/CfgMagazines.hpp @@ -103,6 +103,72 @@ class CfgMagazines { 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 ItemMixOil : CA_Magazine { + scope = 2; + displayName = "2-Stroke Engine Oil"; + picture = "\CA\weapons\data\equip\m_m240_ca.paa"; // TODO: Icon + count = 1; + type = "256"; + descriptionShort = ""; + class ItemActions + { + class Crafting + { + text = "Mix Chainsaw Gas"; // TODO: localize + script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;"; + neednearby[] = {"workshop"}; + requiretools[] = {"ItemToolbox"}; + output[] = {{"CSGAS",1},{"ItemJerrycanEmpty",1}}; + input[] = {{"ItemMixOil",1},{"ItemJerrycan",1}}; + }; + }; + }; + + class CSGAS : CA_Magazine { + scope = 2; + type = VSoft; + displayName = "Gas"; + descriptionShort = "Gas for Chainsaw"; + count = 1000; + picture = "\CA\weapons\data\equip\m_m240_ca.paa"; + ammo = "Chainsaw_Swing_Ammo"; + + initSpeed = 100; + maxLeadSpeed = 15; + tracersEvery = 0; + lastRoundsTracer = 0; + + optics = false; + distanceZoomMin = 0; + distanceZoomMax = 0; + + showEmpty = 0; + autoReload = true; + canLock = LockNo; + + // + burst = 1; + multiplier = 1; + ffMagnitude = 0.1; + ffFrequency = 1; + ffCount = 1; + + class HitEffects { + hit_blood = "ImpactBlood"; + hit_concrete = "ImpactConcrete"; + hit_foliage = "ImpactWood"; + hit_foliage_green = "ImpactWood"; + hit_glass = "ImpactGlass"; + hit_glass_thin = "ImpactGlassThin"; + hit_metal = "ImpactMetal"; + hit_plaster = "ImpactPlaster"; + hit_rubber = "ImpactRubber"; + hit_wood = "ImpactWood"; + }; + }; + class 200Rnd_762x51_M240 : 100Rnd_762x51_M240 { count = 200; }; @@ -389,7 +455,7 @@ class CfgMagazines { scope = 2; count = 1; type = 256; - displayName = "HowTo: Wood Ramp"; + displayName = "Wood Ramp"; model = "\z\addons\dayz_epoch\models\doc_ramp.p3d"; picture = "\z\addons\dayz_epoch\pictures\equip_doc_ramp_ca.paa"; descriptionShort = "Document used in building a wooden ramp."; @@ -998,8 +1064,8 @@ class CfgMagazines { { text = $STR_EPOCH_PLAYER_211; script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;"; - neednearby[] = {"fire"}; - requiretools[] = {"ItemToolbox"}; + neednearby[] = {}; + requiretools[] = {}; output[] = {{"ItemGoldBar",10}}; input[] = {{"ItemGoldBar10oz",1}}; }; @@ -1020,8 +1086,8 @@ class CfgMagazines { { text = $STR_EPOCH_PLAYER_210; script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;"; - neednearby[] = {"fire"}; - requiretools[] = {"ItemToolbox"}; + neednearby[] = {}; + requiretools[] = {}; output[] = {{"ItemSilverBar10oz",1}}; input[] = {{"ItemSilverBar",10}}; }; @@ -1043,8 +1109,8 @@ class CfgMagazines { { text = $STR_EPOCH_PLAYER_211; script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;"; - neednearby[] = {"fire"}; - requiretools[] = {"ItemToolbox"}; + neednearby[] = {}; + requiretools[] = {}; output[] = {{"ItemSilverBar",10}}; input[] = {{"ItemSilverBar10oz",1}}; }; @@ -1065,8 +1131,8 @@ class CfgMagazines { { text = $STR_EPOCH_PLAYER_210; script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;"; - neednearby[] = {"fire"}; - requiretools[] = {"ItemToolbox"}; + neednearby[] = {}; + requiretools[] = {}; output[] = {{"ItemCopperBar10oz",1}}; input[] = {{"ItemCopperBar",10}}; }; @@ -1088,8 +1154,8 @@ class CfgMagazines { { text = $STR_EPOCH_PLAYER_211; script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;"; - neednearby[] = {"fire"}; - requiretools[] = {"ItemToolbox"}; + neednearby[] = {}; + requiretools[] = {}; output[] = {{"ItemCopperBar",10}}; input[] = {{"ItemCopperBar10oz",1}}; }; @@ -1132,8 +1198,8 @@ class CfgMagazines { { text = $STR_EPOCH_PLAYER_211; script = ";['Crafting','CfgMagazines', _id] spawn player_craftItem;"; - neednearby[] = {"fire"}; - requiretools[] = {"ItemToolbox"}; + neednearby[] = {}; + requiretools[] = {}; output[] = {{"ItemAluminumBar",10}}; input[] = {{"ItemAluminumBar10oz",1}}; }; @@ -4839,6 +4905,7 @@ class CfgMagazines { }; #include "CfgMagazines\MeleeSwing.hpp" + #include "CfgMagazines\Fuelcan.hpp" class HandGrenade_Stone; class ItemTrashToiletpaper : HandGrenade_Stone { diff --git a/SQF/dayz_code/Configs/CfgWeapons.hpp b/SQF/dayz_code/Configs/CfgWeapons.hpp index 567dfa10e..27b86caa7 100644 --- a/SQF/dayz_code/Configs/CfgWeapons.hpp +++ b/SQF/dayz_code/Configs/CfgWeapons.hpp @@ -1,3 +1,70 @@ +class Mode_SemiAuto +{ + multiplier = 1; + burst = 1; + dispersion = 0.0002; + sound[] = {"",10,1}; + soundBegin[] = {"sound",1}; + soundEnd[] = {}; + soundLoop[] = {}; + soundContinuous = 0; + soundBurst = 1; + reloadTime = 0.1; + ffCount = 1; + ffMagnitude = 0.5; + ffFrequency = 11; + flash = "gunfire"; + flashSize = 0.1; + recoil = "Empty"; + recoilProne = "Empty"; + autoFire = 0; + aiRateOfFire = 0.5; + aiRateOfFireDistance = 500; + useAction = 0; + useActionTitle = ""; + showToPlayer = 1; + minRange = 30; + minRangeProbab = 0.25; + midRange = 300; + midRangeProbab = 0.58; + maxRange = 600; + maxRangeProbab = 0.04; + artilleryDispersion = 1; + artilleryCharge = 1; + displayName = "Semi"; +}; +class Mode_Burst: Mode_SemiAuto +{ + sound[] = {"",10,1}; + soundLoop[] = {"sound",1}; + soundEnd[] = {"sound",1}; + soundBurst = 1; + burst = 3; + dispersion = 0.0005; + minRange = 10; + minRangeProbab = 0.3; + midRange = 60; + midRangeProbab = 0.58; + maxRange = 150; + maxRangeProbab = 0.04; + displayName = "Burst"; +}; +class Mode_FullAuto: Mode_SemiAuto +{ + dispersion = 0.0005; + sound[] = {"",10,1}; + soundEnd[] = {"sound",1}; + soundContinuous = 0; + reloadTime = 0.08; + autoFire = 1; + minRange = 1; + minRangeProbab = 0.2; + midRange = 30; + midRangeProbab = 0.58; + maxRange = 80; + maxRangeProbab = 0.04; + displayName = "Full"; +}; class CfgWeapons { class Pecheneg; @@ -12,6 +79,108 @@ class CfgWeapons { class ItemCore; class Crossbow; class Rifle; + + class ChainSaw: Rifle + { + scope = 2; + + /* + bullet1[] = {"ca\sounds\weapons\shells\big_shell_wood_01",0.0707946,1,15}; + bullet2[] = {"ca\sounds\weapons\shells\big_shell_wood_02",0.0707946,1,15}; + bullet3[] = {"ca\sounds\weapons\shells\big_shell_wood_03",0.0707946,1,15}; + bullet4[] = {"ca\sounds\weapons\shells\big_shell_wood_04",0.0707946,1,15}; + bullet5[] = {"ca\sounds\weapons\shells\big_shell_wood_05",0.0707946,1,15}; + bullet6[] = {"ca\sounds\weapons\shells\big_shell_wood_06",0.0707946,1,15}; + bullet7[] = {"ca\sounds\weapons\shells\big_shell_wood_07",0.0707946,1,15}; + bullet8[] = {"ca\sounds\weapons\shells\big_shell_dirt_04",0.0707946,1,15}; + bullet9[] = {"ca\sounds\weapons\shells\big_shell_soft_01",0.0707946,1,15}; + bullet10[] = {"ca\sounds\weapons\shells\big_shell_soft_02",0.0707946,1,15}; + bullet11[] = {"ca\sounds\weapons\shells\big_shell_soft_03",0.0707946,1,15}; + bullet12[] = {"ca\sounds\weapons\shells\big_shell_soft_04",0.0707946,1,15}; + */ + + //soundBullet[] = {"bullet1",0.083,"bullet2",0.083,"bullet3",0.083,"bullet4",0.083,"bullet5",0.083,"bullet6",0.083,"bullet7",0.083,"bullet8",0.083,"bullet9",0.083,"bullet10",0.083,"bullet11",0.083,"bullet12",0.083}; + + emptySound[] = {"",10,1}; + soundBullet[] = {"emptySound",1}; + + + model = "\z\addons\dayz_epoch\models\chainsaw.p3d"; + + picture = "\CA\weapons\data\equip\w_m240_ca.paa"; + + displayName = "Chainsaw"; + + cursor = ""; + cursoraim = "\ca\Weapons\Data\clear_empty"; + + modes[] = {"manual"}; + handAnim[]= + { + "OFP2_ManSkeleton", + "\z\addons\dayz_code\anim\saw_idle.rtm" + }; + class manual: Mode_FullAuto + { + recoil = "recoil_auto_machinegun_10outof10"; + recoilProne = "recoil_auto_machinegun_prone_10outof10"; + + dispersion = 0.2; + + begin1[] = {"\dayz_sfx\chainsaw\running2.ogg",1.77828,1,1000}; + soundBegin[] = {"begin1",1}; + + //end1[] = {"\dayz_sfx\chainsaw\running2.ogg",1.77828,1,1000}; + //soundEnd[] = {"end1",1}; + + distanceZoomMin = 50; + distanceZoomMax = 50; + canDrop = 0; + UiPicture = "\CA\weapons\data\Ico\i_regular_CA.paa"; + optics = 1; + modelOptics = "-"; + + burst = 1; + multiplier = 1; + + soundContinuous = 0; + soundBurst = 0; + + useAction = 0; + useActionTitle = ""; + + // from hatchet + minRange = 0.5; + minRangeProbab = 0.8; + midRange = 1; + midRangeProbab = 1.5; + maxRange = 2; + maxRangeProbab = 2.5; + + showToPlayer = 1; + //reloadTime = 0.0708762; + reloadTime = 0.12; + displayName = "Gas"; + }; + aiDispersionCoefY = 21; + aiDispersionCoefX = 21; + dexterity = 0.51; + reloadMagazineSound[] = {"\dayz_sfx\effects\action_refuel_0.ogg",0.1,1,20}; + drySound[] = {"\dayz_sfx\chainsaw\start-attempt.ogg",0.01,1,10}; + magazines[] = {"CSGAS"}; + class Library + { + libTextDesc = "Horlite Chainsaw"; + }; + descriptionShort = "Horlite Chainsaw"; + }; + + + + + + + class MeleeWeapon : Rifle { canDrop = true; }; diff --git a/SQF/dayz_code/Configs/cfgAmmo.hpp b/SQF/dayz_code/Configs/cfgAmmo.hpp index c1ee5592c..24ca27d7e 100644 --- a/SQF/dayz_code/Configs/cfgAmmo.hpp +++ b/SQF/dayz_code/Configs/cfgAmmo.hpp @@ -58,7 +58,7 @@ class CfgAmmo { }; class Melee; class Machete_Swing_Ammo : Melee { - hit = 6; + hit = 3; simulation = "shotSpread"; minRange = 0.5; minRangeProbab = 0.8; @@ -73,14 +73,29 @@ class CfgAmmo { soundEngine[] = {"", db-80, 4}; }; class Hatchet_Swing_Ammo : Melee { - hit = 6; - simulation = "shotSpread"; - minRange = 0.5; + hit = 9; + simulation = "shotBullet"; + minRange = 1; minRangeProbab = 0.8; midRange = 2; - midRangeProbab = 3.5; - maxRange = 5; - maxRangeProbab = 5; + midRangeProbab = 1.5; + maxRange = 3; + maxRangeProbab = 2.5; + explosive = 0; + simulationStep = 0.001; + timeToLive = 0.03; + soundHit[] = {"", db-90, 1}; + soundEngine[] = {"", db-80, 4}; + }; + class Chainsaw_Swing_Ammo : Melee { + hit = 9; + simulation = "shotBullet"; + minRange = 1; + minRangeProbab = 0.8; + midRange = 2; + midRangeProbab = 1.5; + maxRange = 3; + maxRangeProbab = 2.5; explosive = 0; simulationStep = 0.001; timeToLive = 0.03; @@ -88,7 +103,7 @@ class CfgAmmo { soundEngine[] = {"", db-80, 4}; }; class Crowbar_Swing_Ammo : Melee { - hit = 4; + hit = 2; simulation = "shotSpread"; minRange = 0.5; minRangeProbab = 0.8; @@ -118,7 +133,7 @@ class CfgAmmo { soundEngine[] = {"", db-80, 4}; }; class Sledge_Swing_Ammo : Melee { - hit = 15; + hit = 12; simulation = "shotBullet"; minRange = 1; minRangeProbab = 0.8; diff --git a/SQF/dayz_code/Configs/dialog.hpp b/SQF/dayz_code/Configs/dialog.hpp index 5b5893eae..954bdfe0b 100644 --- a/SQF/dayz_code/Configs/dialog.hpp +++ b/SQF/dayz_code/Configs/dialog.hpp @@ -186,7 +186,7 @@ class TraderDialog }; class RscShortcutButtonTraderDialog_1700: RscShortcutButtonTraderDialog { - idc = -1; + idc = 12004; text = $STR_EPOCH_PLAYER_291; x = 0.635221 * safezoneW + safezoneX; y = 0.720064 * safezoneH + safezoneY; @@ -196,7 +196,7 @@ class TraderDialog }; class RscShortcutButtonTraderDialog_1701: RscShortcutButtonTraderDialog { - idc = -1; + idc = 12005; text = $STR_EPOCH_PLAYER_292; x = 0.540566 * safezoneW + safezoneX; y = 0.720064 * safezoneH + safezoneY; @@ -261,5 +261,13 @@ class TraderDialog w = 0.0743718 * safezoneW; h = 0.027508 * safezoneH; }; + class RscStructuredText_1100: RscStructuredText + { + idc = 12006; + x = 0.359214 * safezoneW + safezoneX; + y = 0.227167 * safezoneH + safezoneY; + w = 0.369767 * safezoneW; + h = 0.0543546 * safezoneH; + }; }; }; diff --git a/SQF/dayz_code/actions/list_playerDeaths.sqf b/SQF/dayz_code/actions/list_playerDeaths.sqf index 2a970df0d..7233829ee 100644 --- a/SQF/dayz_code/actions/list_playerDeaths.sqf +++ b/SQF/dayz_code/actions/list_playerDeaths.sqf @@ -1,10 +1,5 @@ private []; -// attempt to remove newspaper if called without args -if (count _this == 0) then { - player removeMagazine "ItemNewspaper"; -}; - PVDZE_plr_DeathB = [player]; publicVariableServer "PVDZE_plr_DeathB"; diff --git a/SQF/dayz_code/actions/list_playerDeathsAlt.sqf b/SQF/dayz_code/actions/list_playerDeathsAlt.sqf new file mode 100644 index 000000000..7221eb555 --- /dev/null +++ b/SQF/dayz_code/actions/list_playerDeathsAlt.sqf @@ -0,0 +1,16 @@ +private []; + +player removeMagazine "ItemNewspaper"; + +PVDZE_plr_DeathB = [player]; +publicVariableServer "PVDZE_plr_DeathB"; + +waitUntil {!isNil "PVDZE_plr_DeathBResult"}; + +if((count PVDZE_plr_DeathBResult) > 0) then { + // load death message board ui + call EpochDeathBoardLoad; +} else { + cutText [(localize "str_epoch_player_36"), "PLAIN DOWN"]; + PVDZE_plr_DeathBResult = nil; +}; \ No newline at end of file diff --git a/SQF/dayz_code/anim/model.cfg b/SQF/dayz_code/anim/model.cfg new file mode 100644 index 000000000..827c98332 --- /dev/null +++ b/SQF/dayz_code/anim/model.cfg @@ -0,0 +1,157 @@ +class CfgSkeletons { +class Default {isDiscrete=1;skeletonInherit="";skeletonBones[]={};}; +class OFP2_ManSkeleton { +isDiscrete=0; +skeletonInherit=""; +skeletonBones[]= { +"Pelvis","", +"Spine","Pelvis", +"Spine1","Spine", +"Spine2","Spine1", +"Spine3","Spine2", +"Camera","Pelvis", +"weapon","Spine1", +"launcher","Spine1", +//Head skeleton in hierarchy +"neck","Spine3", +"neck1","neck", +"head","neck1", +"HeadCutScene","head", +"jaw","head", +"chin","head", +"jaw_rf","head", +"jaw_rm","head", +"jaw_rs","head", +"jaw_lf","head", +"jaw_lm","head", +"jaw_ls","head", +"ear_r","head", +"ear_l","head", +"lip_lc","head", +"lip_lwlb","head", +"lip_lwlf","head", +"lip_lwm","head", +"lip_lwrf","head", +"lip_lwrb","head", +"lip_rc","head", +"lip_uprb","head", +"lip_uprf","head", +"lip_upm","head", +"lip_uplf","head", +"lip_uplb","head", +"nose_tip","head", +"nose_r","head", +"nose_l","head", +"zig_lt","head", +"zig_lm","head", +"zig_lb","head", +"zig_rt","head", +"zig_rm","head", +"zig_rb","head", +"cheek_r","head", +"cheek_l","head", +"eyebrow_lb","head", +"eyebrow_lm","head", +"eyebrow_lf","head", +"corr","head", +"eyebrow_rf","head", +"eyebrow_rm","head", +"eyebrow_rb","head", +"eye_upr","head", +"eye_lwr","head", +"eye_upl","head", +"eye_lwl","head", +"cheek_rf","head", +"cheek_rm","head", +"cheek_rb","head", +"cheek_lf","head", +"cheek_lm","head", +"cheek_lb","head", +"forehead_l","head", +"forehead_m","head", +"forehead_r","head", +"l_eye","head", +"r_eye","head", +"l_pupila","head", +"r_pupila","head", +"neck_t","head", +"neck_b","head", +"neck_r","head", +"neck_l","head", +"tongue_b","head", +"tongue_m","head", +"tongue_f","head", +//Left upper side +"LeftShoulder","Spine3", +"LeftArm","LeftShoulder", +"LeftArmRoll","LeftArm", +"LeftForeArm","LeftArmRoll", +"LeftForeArmRoll","LeftForeArm", +"LeftHand","LeftForeArmRoll", +"LeftHandRing","LeftHand", +"LeftHandRing1","LeftHandRing", +"LeftHandRing2","LeftHandRing1", +"LeftHandRing3","LeftHandRing2", +"LeftHandPinky1","LeftHandRing", +"LeftHandPinky2","LeftHandPinky1", +"LeftHandPinky3","LeftHandPinky2", +"LeftHandMiddle1","LeftHand", +"LeftHandMiddle2","LeftHandMiddle1", +"LeftHandMiddle3","LeftHandMiddle2", +"LeftHandIndex1","LeftHand", +"LeftHandIndex2","LeftHandIndex1", +"LeftHandIndex3","LeftHandIndex2", +"LeftHandThumb1","LeftHand", +"LeftHandThumb2","LeftHandThumb1", +"LeftHandThumb3","LeftHandThumb2", +//Right upper side +"RightShoulder","Spine3", +"RightArm","RightShoulder", +"RightArmRoll","RightArm", +"RightForeArm","RightArmRoll", +"RightForeArmRoll","RightForeArm", +"RightHand","RightForeArmRoll", +"RightHandRing","RightHand", +"RightHandRing1","RightHandRing", +"RightHandRing2","RightHandRing1", +"RightHandRing3","RightHandRing2", +"RightHandPinky1","RightHandRing", +"RightHandPinky2","RightHandPinky1", +"RightHandPinky3","RightHandPinky2", +"RightHandMiddle1","RightHand", +"RightHandMiddle2","RightHandMiddle1", +"RightHandMiddle3","RightHandMiddle2", +"RightHandIndex1","RightHand", +"RightHandIndex2","RightHandIndex1", +"RightHandIndex3","RightHandIndex2", +"RightHandThumb1","RightHand", +"RightHandThumb2","RightHandThumb1", +"RightHandThumb3","RightHandThumb2", +//Left lower side +"LeftUpLeg","Pelvis", +"LeftUpLegRoll","LeftUpLeg", +"LeftLeg","LeftUpLegRoll", +"LeftLegRoll","LeftLeg", +"LeftFoot","LeftLegRoll", +"LeftToeBase","LeftFoot", +//Right lower side +"RightUpLeg","Pelvis", +"RightUpLegRoll","RightUpLeg", +"RightLeg","RightUpLegRoll", +"RightLegRoll","RightLeg", +"RightFoot","RightLegRoll", +"RightToeBase","RightFoot" +}; +pivotsModel=""; +}; +}; +class CfgModels { +class Default {sectionsInherit="";sections[]={};skeletonName="";}; +class ArmaMan : Default { +sections[]={"osobnost","Head_Injury","Body_Injury","l_leg_in jury","l_arm_injury","r_arm_injury","r_leg_injury" ,"clan","clan_sign","Camo","CamoB"}; +skeletonName = "OFP2_ManSkeleton"; +}; + + +class saw_idle : ArmaMan {}; +}; \ No newline at end of file diff --git a/SQF/dayz_code/compile/player_fired.sqf b/SQF/dayz_code/compile/player_fired.sqf index 76884d6dd..4f0b3a778 100644 --- a/SQF/dayz_code/compile/player_fired.sqf +++ b/SQF/dayz_code/compile/player_fired.sqf @@ -16,12 +16,15 @@ dayz_firedCooldown = time; dayz_combat = 1; if (_ammo isKindOf "Melee") exitWith { - _unit playActionNow "GestureSwing"; - - [1,1] call dayz_HungerThirst; + + + if(_weapon != "Chainsaw") then { + _unit playActionNow "GestureSwing"; + [1,1] call dayz_HungerThirst; + }; // harvest wood check - _id = _this spawn player_harvest; + _this call player_harvest; }; //Smoke Grenade diff --git a/SQF/dayz_code/compile/player_harvest.sqf b/SQF/dayz_code/compile/player_harvest.sqf index 5448d6570..fc0891854 100644 --- a/SQF/dayz_code/compile/player_harvest.sqf +++ b/SQF/dayz_code/compile/player_harvest.sqf @@ -4,7 +4,7 @@ _weapon = _this select 1; _ammo = _this select 4; _projectile = _this select 6; -if (_ammo isKindOf "Hatchet_Swing_Ammo") then { +if (_ammo isKindOf "Hatchet_Swing_Ammo" or _ammo isKindOf "Chainsaw_Swing_Ammo") then { _findNearestTree = []; { @@ -37,24 +37,36 @@ if (_ammo isKindOf "Hatchet_Swing_Ammo") then { _damage = damage _tree; if (DZE_TEMP_treedmg < _damage) then { - //diag_log ("DAMAGE: " + str(damage _tree)); - - _countOut = 1; - _itemOut = "PartWoodPile"; - - _nearByPile= nearestObjects [getPosATL player, ["WeaponHolder"],2]; - if (count _nearByPile == 0) then { - _item = createVehicle ["WeaponHolder", getPosATL player, [], 1, "CAN_COLLIDE"]; - _item addMagazineCargoGlobal [_itemOut,_countOut]; - player reveal _item; - } else { - _item = _nearByPile select 0; - _item addMagazineCargoGlobal [_itemOut,_countOut]; + if (_damage < 0.95) then { + if("" == typeOf _tree) then { + _tree setDamage 0.95; + }; }; - _distance = 60; - [_unit,_distance,false,getPosATL player] spawn player_alertZombies; + //diag_log ("DAMAGE: " + str(damage _tree)); + if (round(random 1) > 0.5) then { + + _countOut = 1; + _itemOut = "PartWoodPile"; + + if(_weapon == "Chainsaw") then { + _itemOut = "PartWoodLumber"; + }; + + _nearByPile= nearestObjects [getPosATL player, ["WeaponHolder"],2]; + if (count _nearByPile == 0) then { + _item = createVehicle ["WeaponHolder", getPosATL player, [], 1, "CAN_COLLIDE"]; + _item addMagazineCargoGlobal [_itemOut,_countOut]; + player reveal _item; + } else { + _item = _nearByPile select 0; + _item addMagazineCargoGlobal [_itemOut,_countOut]; + }; + + _distance = 60; + [player,_distance,false,getPosATL player] spawn player_alertZombies; + }; }; DZE_TEMP_treedmg = _damage; }; diff --git a/SQF/dayz_code/compile/player_traderMenu.sqf b/SQF/dayz_code/compile/player_traderMenu.sqf index 5e412dabd..4c1a99528 100644 --- a/SQF/dayz_code/compile/player_traderMenu.sqf +++ b/SQF/dayz_code/compile/player_traderMenu.sqf @@ -3,6 +3,9 @@ TraderDialogCatList = 12000; TraderDialogItemList = 12001; TraderDialogBuyPrice = 12002; TraderDialogSellPrice = 12003; +TraderDialogBuyBtn = 12004; +TraderDialogSellBtn = 12005; +TraderDialogCurrency = 12006; TraderCurrentCatIndex = -1; TraderCatList = -1; @@ -41,17 +44,17 @@ TraderDialogLoadItemList = { _item = _x select 1; _name = _item select 0; _type = _item select 1; - switch (true) do { - case (_type == 1): { + switch (true) do { + case (_type == 1): { _type = "CfgMagazines"; }; - case (_type == 2): { + case (_type == 2): { _type = "CfgVehicles"; }; - case (_type == 3): { + case (_type == 3): { _type = "CfgWeapons"; - }; - }; + }; + }; // Display Name of item _textPart = getText(configFile >> _type >> _name >> "displayName"); @@ -59,7 +62,7 @@ TraderDialogLoadItemList = { _qty = _x select 2; // Buy Data from array - _buy = _x select 3; + _buy = _x select 3; _bqty = _buy select 0; _bname = _buy select 1; _btype = _buy select 2; @@ -164,7 +167,17 @@ TraderDialogShowPrices = { if (_index < 0) exitWith {}; while {count TraderItemList < 1} do { sleep 1; }; _item = TraderItemList select _index; + + _qty = {_x == (_item select 3)} count magazines player; + ctrlSetText [TraderDialogBuyPrice, format["%1 %2", _item select 2, _item select 4]]; + + if(_qty == 0) then { + ctrlEnable [TraderDialogBuyBtn, false]; + } else { + ctrlEnable [TraderDialogBuyBtn, true]; + }; + ctrlSetText [TraderDialogSellPrice, format["%1 %2", _item select 5, _item select 7]]; }; diff --git a/SQF/dayz_code/init/compiles.sqf b/SQF/dayz_code/init/compiles.sqf index 3073fc06a..9621dfc41 100644 --- a/SQF/dayz_code/init/compiles.sqf +++ b/SQF/dayz_code/init/compiles.sqf @@ -108,7 +108,7 @@ if (!isDedicated) then { player_sleep = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_sleep.sqf"; //player_mineOre = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\player_mineOre.sqf"; player_antiWall = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_antiWall.sqf"; - player_deathBoard = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\list_playerDeaths.sqf"; + player_deathBoard = compile preprocessFileLineNumbers "\z\addons\dayz_code\actions\list_playerDeathsAlt.sqf"; player_upgradeVehicle = compile preprocessFileLineNumbers "\z\addons\dayz_code\compile\player_upgradeVehicle.sqf"; diff --git a/SQF/dayz_epoch/models/model.cfg b/SQF/dayz_epoch/models/model.cfg index 3d46925e7..572e72f6e 100644 --- a/SQF/dayz_epoch/models/model.cfg +++ b/SQF/dayz_epoch/models/model.cfg @@ -1,15 +1,131 @@ //The Class "CfgSkeletons" defines all moving objects. class CfgSkeletons { + + class Head + { + isDiscrete = 0; + skeletonInherit = ""; + skeletonBones[] = + { + "neck","", + "neck1","neck", + "head","neck1", + "lBrow","head", + "mBrow","head", + "rBrow","head", + "lMouth","head", + "mMouth","head", + "rMouth","head", + "eyelids","head", + "LLip","head" + }; + }; + + class OFP2_ManSkeleton + { + isDiscrete = 0; + skeletonInherit = "Head"; + skeletonBones[] = + { + "weapon","", + "launcher","", + "Camera","", + "Spine","", + "Spine1","", + "Spine2","", + "Spine3","", + "Pelvis","", + //Left upper side + "LeftShoulder","", + "LeftArm","", + "LeftArmRoll","", + "LeftForeArm","", + "LeftForeArmRoll","", + "LeftHand","", + "LeftHandRing","", + "LeftHandRing1","", + "LeftHandRing2","", + "LeftHandRing3","", + "LeftHandPinky1","", + "LeftHandPinky2","", + "LeftHandPinky3","", + "LeftHandMiddle1","", + "LeftHandMiddle2","", + "LeftHandMiddle3","", + "LeftHandIndex1","", + "LeftHandIndex2","", + "LeftHandIndex3","", + "LeftHandThumb1","", + "LeftHandThumb2","", + "LeftHandThumb3","", + + //Right upper side + "RightShoulder","", + "RightArm","", + "RightArmRoll","", + "RightForeArm","", + "RightForeArmRoll","", + "RightHand","", + "RightHandRing","", + "RightHandRing1","", + "RightHandRing2","", + "RightHandRing3","", + "RightHandPinky1","", + "RightHandPinky2","", + "RightHandPinky3","", + "RightHandMiddle1","", + "RightHandMiddle2","", + "RightHandMiddle3","", + "RightHandIndex1","", + "RightHandIndex2","", + "RightHandIndex3","", + "RightHandThumb1","", + "RightHandThumb2","", + "RightHandThumb3","", + //Left lower side + "LeftUpLeg","", + "LeftUpLegRoll","", + "LeftLeg","", + "LeftLegRoll","", + "LeftFoot","", + "LeftToeBase","", + //Right lower side + "RightUpLeg","", + "RightUpLegRoll","", + "RightLeg","", + "RightLegRoll","", + "RightFoot","", + "RightToeBase","" + }; + }; + + //Always create class "default" first. //Your actual config-entry should be a derivate of this. - class Default { + + class Default; + + class Default_Mod : Default { isDiscrete = 1; skeletonInherit = ""; skeletonBones[] = {}; }; + + class Chain_Saw: Default + { + skeletonInherit = "Default"; + skeletonBones[] = + { + "stozar","", + "vlajka","" + }; + }; + + + //the derivate of your skeleton from claa "Default". - class wood_door_skeleton : Default { + class wood_door_skeleton : Default_Mod { isDiscrete=1; skeletonInherit=""; @@ -24,7 +140,7 @@ class CfgSkeletons { // The last entry gets no comma }; - class locked_wood_door_skeleton : Default { + class locked_wood_door_skeleton : Default_Mod { isDiscrete=1; skeletonInherit=""; @@ -40,7 +156,7 @@ class CfgSkeletons { }; //the derivate of your skeleton from claa "Default". - class garage_door_skeleton : Default { + class garage_door_skeleton : Default_Mod { isDiscrete=1; skeletonInherit=""; @@ -56,7 +172,7 @@ class CfgSkeletons { }; // locked garage door - class locked_garage_door_skeleton : Default { + class locked_garage_door_skeleton : Default_Mod { isDiscrete=1; skeletonInherit=""; @@ -71,7 +187,7 @@ class CfgSkeletons { // The last entry gets no comma }; - class locked_steel_garage_skeleton : Default { + class locked_steel_garage_skeleton : Default_Mod { isDiscrete=1; skeletonInherit=""; @@ -86,7 +202,7 @@ class CfgSkeletons { // The last entry gets no comma }; - class steel_garage_skeleton : Default { + class steel_garage_skeleton : Default_Mod { isDiscrete=1; skeletonInherit=""; @@ -100,7 +216,7 @@ class CfgSkeletons { }; // The last entry gets no comma }; - class steel_door_skeleton : Default { + class steel_door_skeleton : Default_Mod { isDiscrete=1; skeletonInherit=""; @@ -115,7 +231,7 @@ class CfgSkeletons { // The last entry gets no comma }; - class locked_steel_door_skeleton : Default { + class locked_steel_door_skeleton : Default_Mod { isDiscrete=1; skeletonInherit=""; @@ -140,13 +256,31 @@ class CfgModels { class rotation; class translation; - // And again: class default - class Default { - sectionsInherit=""; - sections[]={}; - skeleton=""; - class Animations {}; + class Default; + + class chainsaw : Default { + sections[] = {"latka"}; }; + + class Head: Default { + sections[] = + { + "osobnost", + "brejle" + }; + skeletonName = "Head"; + }; + class ArmaMan : Default + { + sections[] = + { + "osobnost","Head_Injury","Body_Injury","l_leg_inju ry","l_arm_injury","r_arm_injury","r_leg_injury" , + "clan" + }; + skeletonName = "OFP2_ManSkeleton"; + }; + + // Your own "class default" class wood_door { diff --git a/SQF/dayz_epoch/textures/Saw_co.paa b/SQF/dayz_epoch/textures/Saw_co.paa new file mode 100644 index 000000000..061f032ab Binary files /dev/null and b/SQF/dayz_epoch/textures/Saw_co.paa differ diff --git a/SQF/dayz_epoch/textures/Saw_smdi.paa b/SQF/dayz_epoch/textures/Saw_smdi.paa new file mode 100644 index 000000000..30127cd9d Binary files /dev/null and b/SQF/dayz_epoch/textures/Saw_smdi.paa differ diff --git a/SQF/dayz_epoch/textures/chainsaw.rvmat b/SQF/dayz_epoch/textures/chainsaw.rvmat new file mode 100644 index 000000000..34ac60236 --- /dev/null +++ b/SQF/dayz_epoch/textures/chainsaw.rvmat @@ -0,0 +1,92 @@ +ambient[]={0.49019608,0.49019608,0.49019608,1}; +diffuse[]={0.49019608,0.49019608,0.49019608,1}; +forcedDiffuse[]={0,0,0,0}; +emmisive[]={0,0,0,1}; +specular[]={0.65490198,0.65490198,0.65490198,1}; +specularPower=200; +PixelShaderID="Super"; +VertexShaderID="Super"; +class Stage1 +{ + texture="z\addons\dayz_epoch\textures\saw_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\Saw_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.3,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/cs_parts.rvmat b/SQF/dayz_epoch/textures/cs_parts.rvmat new file mode 100644 index 000000000..82a86bda1 --- /dev/null +++ b/SQF/dayz_epoch/textures/cs_parts.rvmat @@ -0,0 +1,92 @@ +ambient[]={0.47843137,0.47843137,0.47843137,1}; +diffuse[]={0.47843137,0.47843137,0.47843137,1}; +forcedDiffuse[]={0,0,0,0}; +emmisive[]={0,0,0,1}; +specular[]={0.70588237,0.70588237,0.70588237,0.16}; +specularPower=200; +PixelShaderID="Super"; +VertexShaderID="Super"; +class Stage1 +{ + texture="z\addons\dayz_epoch\textures\cs_parts_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\cs_parts_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.3,7.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}; + }; +}; diff --git a/SQF/dayz_epoch/textures/cs_parts_co.paa b/SQF/dayz_epoch/textures/cs_parts_co.paa new file mode 100644 index 000000000..6a445adcd Binary files /dev/null and b/SQF/dayz_epoch/textures/cs_parts_co.paa differ diff --git a/SQF/dayz_epoch/textures/cs_parts_nohq.paa b/SQF/dayz_epoch/textures/cs_parts_nohq.paa new file mode 100644 index 000000000..df63a1ada Binary files /dev/null and b/SQF/dayz_epoch/textures/cs_parts_nohq.paa differ diff --git a/SQF/dayz_epoch/textures/cs_parts_smdi.paa b/SQF/dayz_epoch/textures/cs_parts_smdi.paa new file mode 100644 index 000000000..93688a282 Binary files /dev/null and b/SQF/dayz_epoch/textures/cs_parts_smdi.paa differ diff --git a/SQF/dayz_epoch/textures/saw_nohq.paa b/SQF/dayz_epoch/textures/saw_nohq.paa new file mode 100644 index 000000000..8a4ff2bf7 Binary files /dev/null and b/SQF/dayz_epoch/textures/saw_nohq.paa differ diff --git a/SQF/dayz_sfx/chainsaw/running1.ogg b/SQF/dayz_sfx/chainsaw/running1.ogg new file mode 100644 index 000000000..16edd47f4 Binary files /dev/null and b/SQF/dayz_sfx/chainsaw/running1.ogg differ diff --git a/SQF/dayz_sfx/chainsaw/running2.ogg b/SQF/dayz_sfx/chainsaw/running2.ogg new file mode 100644 index 000000000..6331b1d25 Binary files /dev/null and b/SQF/dayz_sfx/chainsaw/running2.ogg differ diff --git a/SQF/dayz_sfx/chainsaw/start-attempt.ogg b/SQF/dayz_sfx/chainsaw/start-attempt.ogg new file mode 100644 index 000000000..a6a46c7ba Binary files /dev/null and b/SQF/dayz_sfx/chainsaw/start-attempt.ogg differ