diff --git a/dayz_code/actions/trade_items.sqf b/dayz_code/actions/trade_items.sqf index d7d1f14ba..4bca29467 100644 --- a/dayz_code/actions/trade_items.sqf +++ b/dayz_code/actions/trade_items.sqf @@ -20,31 +20,44 @@ if (_qty >= _qty_in) then { if(_buy_o_sell == "sell") then { _bos = 1; }; - - ["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; - - diag_log format["DEBUG Starting to wait for answer: %1", dayzTradeObject]; - - waitUntil {!isNil "dayzTradeResult"}; - - diag_log format["DEBUG Complete Trade: %1", dayzTradeResult]; - - if(dayzTradeResult == "PASS") then { - for "_x" from 1 to _qty_in do { - player removeMagazine _part_in; - }; - for "_x" from 1 to _qty_out do { - player addMagazine _part_out; - }; - - // [player,"repair",0,false] call dayz_zombieSpeak; - cutText [format[("Traded %1 %2 for %3 %4"),_qty_in,_textPartIn,_qty_out,_textPartOut], "PLAIN DOWN"]; + if(_buy_o_sell == "buy") then { + _config = (configFile >> "cfgMagazines" >> _part_out); + _isOk = [player,_config] call BIS_fnc_invAdd; } else { - cutText [format[("Insufficient Stock %1"),_textPartOut] , "PLAIN DOWN"]; + _isOk = true; }; - dayzTradeResult = nil; + + if (_isOk) then { + + ["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; + diag_log format["DEBUG Starting to wait for answer: %1", dayzTradeObject]; + + waitUntil {!isNil "dayzTradeResult"}; + + diag_log format["DEBUG Complete Trade: %1", dayzTradeResult]; + + if(dayzTradeResult == "PASS") then { + for "_x" from 1 to _qty_in do { + player removeMagazine _part_in; + }; + + for "_x" from 1 to _qty_out do { + player addMagazine _part_out; + }; + + // [player,"repair",0,false] call dayz_zombieSpeak; + cutText [format[("Traded %1 %2 for %3 %4"),_qty_in,_textPartIn,_qty_out,_textPartOut], "PLAIN DOWN"]; + } else { + cutText [format[("Insufficient Stock %1"),_textPartOut] , "PLAIN DOWN"]; + }; + dayzTradeResult = nil; + + + } else { + cutText [localize "STR_DAYZ_CODE_2", "PLAIN DOWN"]; + }; } else { diff --git a/dayz_code/actions/trade_items_wo_db.sqf b/dayz_code/actions/trade_items_wo_db.sqf index e66a5c77f..992e0ce62 100644 --- a/dayz_code/actions/trade_items_wo_db.sqf +++ b/dayz_code/actions/trade_items_wo_db.sqf @@ -16,17 +16,29 @@ _qty = {_x == _part_in} count magazines player; if (_qty >= _qty_in) then { - for "_x" from 1 to _qty_in do { - player removeMagazine _part_in; + if(_buy_o_sell == "buy") then { + _config = (configFile >> "cfgMagazines" >> _part_out); + _isOk = [player,_config] call BIS_fnc_invAdd; + } else { + _isOk = true; }; - for "_x" from 1 to _qty_out do { - player addMagazine _part_out; - }; - - // [player,"repair",0,false] call dayz_zombieSpeak; - cutText [format[("Traded %1 %2 for %3 %4"),_qty_in,_textPartIn,_qty_out,_textPartOut], "PLAIN DOWN"]; + if (_isOk) then { + for "_x" from 1 to _qty_in do { + player removeMagazine _part_in; + }; + + for "_x" from 1 to _qty_out do { + player addMagazine _part_out; + }; + + // [player,"repair",0,false] call dayz_zombieSpeak; + cutText [format[("Traded %1 %2 for %3 %4"),_qty_in,_textPartIn,_qty_out,_textPartOut], "PLAIN DOWN"]; + + } else { + cutText [localize "STR_DAYZ_CODE_2", "PLAIN DOWN"]; + }; } else { _needed = _qty_in - _qty; cutText [format[("Need %1 More %2"),_needed,_textPartIn] , "PLAIN DOWN"]; diff --git a/dayz_code/actions/trade_weapons.sqf b/dayz_code/actions/trade_weapons.sqf index ebb6a27aa..1d83bc503 100644 --- a/dayz_code/actions/trade_weapons.sqf +++ b/dayz_code/actions/trade_weapons.sqf @@ -23,41 +23,55 @@ if(_buy_o_sell == "buy") then { if (_qty >= _qty_in) then { - ["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; - - waitUntil {!isNil "dayzTradeResult"}; - - diag_log format["DEBUG Complete Trade: %1", dayzTradeResult]; - - if(dayzTradeResult == "PASS") then { - - for "_x" from 1 to _qty_in do { - if(_buy_o_sell == "buy") then { - player removeMagazine _part_in; - } else { - player removeWeapon _part_in; - }; - }; - - for "_x" from 1 to _qty_out do { - if(_buy_o_sell == "buy") then { - player addWeapon _part_out; - } else { - player addMagazine _part_out; - }; - }; - - - // [player,"repair",0,false] call dayz_zombieSpeak; - cutText [format[("Traded %1 %2 for %3 %4"),_qty_in,_textPartIn,_qty_out,_textPartOut], "PLAIN DOWN"]; - - {player removeAction _x} forEach s_player_parts;s_player_parts = []; - s_player_parts_crtl = -1; + if(_buy_o_sell == "buy") then { + _config = (configFile >> "cfgWeapons" >> _part_out); + _isOk = [player,_config] call BIS_fnc_invAdd; } else { - cutText [format[("Insufficient Stock %1"),_textPartOut] , "PLAIN DOWN"]; + _isOk = true; + }; + + + if (_isOk) then { + + ["dayzTradeObject",[_activatingPlayer,_traderID,_bos]] call callRpcProcedure; + + waitUntil {!isNil "dayzTradeResult"}; + + diag_log format["DEBUG Complete Trade: %1", dayzTradeResult]; + + if(dayzTradeResult == "PASS") then { + + for "_x" from 1 to _qty_in do { + if(_buy_o_sell == "buy") then { + player removeMagazine _part_in; + } else { + player removeWeapon _part_in; + }; + }; + + for "_x" from 1 to _qty_out do { + if(_buy_o_sell == "buy") then { + player addWeapon _part_out; + } else { + player addMagazine _part_out; + }; + }; + + + // [player,"repair",0,false] call dayz_zombieSpeak; + cutText [format[("Traded %1 %2 for %3 %4"),_qty_in,_textPartIn,_qty_out,_textPartOut], "PLAIN DOWN"]; + + {player removeAction _x} forEach s_player_parts;s_player_parts = []; + s_player_parts_crtl = -1; + + } else { + cutText [format[("Insufficient Stock %1"),_textPartOut] , "PLAIN DOWN"]; + }; + dayzTradeResult = nil; + } else { + cutText [localize "STR_DAYZ_CODE_2", "PLAIN DOWN"]; }; - dayzTradeResult = nil; } else { _needed = _qty_in - _qty; diff --git a/dayz_code/cfgVehicles.hpp b/dayz_code/cfgVehicles.hpp index 9c577c5c8..66aad6485 100644 --- a/dayz_code/cfgVehicles.hpp +++ b/dayz_code/cfgVehicles.hpp @@ -482,8 +482,6 @@ class Citizen1; // External class reference canCarryBackPack = 1; }; - - class BAF_Soldier_W; class Soldier1_DZ: BAF_Soldier_W { displayName = "Soldier"; diff --git a/dayz_code/init/variables.sqf b/dayz_code/init/variables.sqf index d96eba050..f1070607d 100644 --- a/dayz_code/init/variables.sqf +++ b/dayz_code/init/variables.sqf @@ -6,13 +6,14 @@ BanditW1_DZ = "BanditW1_DZ"; Survivor1_DZ = "Survivor2_DZ"; Survivor2_DZ = "Survivor2_DZ"; SurvivorW2_DZ = "SurvivorW2_DZ"; +SurvivorW3_DZ = "SurvivorW2_DZ"; Sniper1_DZ = "Sniper1_DZ"; Camo1_DZ = "Camo1_DZ"; Soldier1_DZ = "Soldier1_DZ"; Rocket_DZ = "Rocket_DZ"; -AllPlayers = ["Soldier_Crew_PMC","Sniper1_DZ","Camo1_DZ","Soldier1_DZ","Rocket_DZ","Rocker2_DZ","Priest_DZ","Functionary1_EP1_DZ","GUE_Commander_DZ","Ins_Soldier_GL_DZ","Haris_Press_EP1_DZ","Pilot_EP1_DZ","RU_Policeman_DZ","pz_policeman","pz_suit1","pz_suit2","pz_worker1","pz_worker2","pz_worker3","pz_doctor","pz_teacher","pz_hunter","pz_villager1","pz_villager2","pz_villager3","pz_priest"]; -AllPlayersVehicles = ["Soldier_Crew_PMC","Sniper1_DZ","Camo1_DZ","Soldier1_DZ","Rocket_DZ","Rocker2_DZ","Priest_DZ","Functionary1_EP1_DZ","GUE_Commander_DZ","Ins_Soldier_GL_DZ","Haris_Press_EP1_DZ","Pilot_EP1_DZ","RU_Policeman_DZ","pz_policeman","pz_suit1","pz_suit2","pz_worker1","pz_worker2","pz_worker3","pz_doctor","pz_teacher","pz_hunter","pz_villager1","pz_villager2","pz_villager3","pz_priest","AllVehicles"]; +AllPlayers = ["SurvivorW3_DZ","Bandit1_DZ","BanditW1_DZ","Soldier_Crew_PMC","Sniper1_DZ","Camo1_DZ","Soldier1_DZ","Rocket_DZ","Rocker2_DZ","Priest_DZ","Functionary1_EP1_DZ","GUE_Commander_DZ","Ins_Soldier_GL_DZ","Haris_Press_EP1_DZ","Pilot_EP1_DZ","RU_Policeman_DZ","pz_policeman","pz_suit1","pz_suit2","pz_worker1","pz_worker2","pz_worker3","pz_doctor","pz_teacher","pz_hunter","pz_villager1","pz_villager2","pz_villager3","pz_priest"]; +AllPlayersVehicles = ["SurvivorW3_DZ","Bandit1_DZ","BanditW1_DZ","Soldier_Crew_PMC","Sniper1_DZ","Camo1_DZ","Soldier1_DZ","Rocket_DZ","Rocker2_DZ","Priest_DZ","Functionary1_EP1_DZ","GUE_Commander_DZ","Ins_Soldier_GL_DZ","Haris_Press_EP1_DZ","Pilot_EP1_DZ","RU_Policeman_DZ","pz_policeman","pz_suit1","pz_suit2","pz_worker1","pz_worker2","pz_worker3","pz_doctor","pz_teacher","pz_hunter","pz_villager1","pz_villager2","pz_villager3","pz_priest","AllVehicles"]; PZombie_VB = "PZombie_VB"; diff --git a/dayz_server/compile/server_playerLogin.sqf b/dayz_server/compile/server_playerLogin.sqf index a3497ba05..78e175bab 100644 --- a/dayz_server/compile/server_playerLogin.sqf +++ b/dayz_server/compile/server_playerLogin.sqf @@ -79,9 +79,15 @@ if (!_isNew) then { _model = _primary select 7; _hiveVer = _primary select 8; + if ( !(isClass(configFile >> "CfgVehicles" >> _model)) ) then { + _model = "Survivor2_DZ"; + }; + + /* if (!(_model in ["SurvivorW2_DZ","Survivor2_DZ","Sniper1_DZ","Soldier1_DZ","Rocket_DZ","Camo1_DZ","BanditW1_DZ","Bandit1_DZ","SurvivorW2_DZ","Rocker2_DZ","Priest_DZ","Functionary1_EP1_DZ","GUE_Commander_DZ","Ins_Soldier_GL_DZ","Haris_Press_EP1_DZ","Pilot_EP1_DZ","RU_Policeman_DZ","pz_policeman","pz_suit1","pz_suit2","pz_worker1","pz_worker2","pz_worker3","pz_doctor","pz_teacher","pz_hunter","pz_villager1","pz_villager2","pz_villager3","pz_priest","PZombie_VB"])) then { _model = "Survivor2_DZ"; }; + */ } else { _isInfected = _primary select 3; diff --git a/dayz_weapons/config.cpp b/dayz_weapons/config.cpp index 4efad7f29..1b412f5a9 100644 --- a/dayz_weapons/config.cpp +++ b/dayz_weapons/config.cpp @@ -1341,6 +1341,7 @@ class CfgVehicles }; }; class Soldier_Crew_PMC; + class Soldier_Bodyguard_M4_PMC; class Survivor1_DZ: Soldier_Crew_PMC { displayName = "$STR_CHAR_1"; @@ -1375,7 +1376,7 @@ class CfgVehicles init = "(_this select 0) setObjectTexture [0,[""\Ca\Characters_PMC\PMC_soldier\Data\bauer_2_co.paa"",""\Ca\Characters_PMC\PMC_soldier\Data\bauer_3_co.paa"",""\Ca\Characters_PMC\PMC_soldier\Data\bauer_4_co.paa"",""\Ca\Characters_PMC\PMC_soldier\Data\bauer_5_co.paa""] select floor random 4]; (_this select 0) setObjectTexture [1,[""ca\characters_pmc\pmc_soldier\data\bauer_gear_co.paa"",""\Ca\Characters_PMC\PMC_soldier\Data\Bauer_Gear_1_co.paa"",""\Ca\Characters_PMC\PMC_soldier\Data\Bauer_Gear_2_co.paa"",""\Ca\Characters_PMC\PMC_soldier\Data\Bauer_Gear_3_co.paa""] select floor random 4]; (_this select 0) setObjectTexture [2,[""\Ca\Characters_PMC\PMC_soldier\Data\HeadGear_CO.paa"",""\Ca\Characters_PMC\PMC_soldier\Data\HeadGear_1_CO.paa""] select floor random 2]"; }; }; - class SurvivorW2_DZ: Soldier_Crew_PMC + class SurvivorW2_DZ: Soldier_Bodyguard_M4_PMC { displayName = "$STR_CHAR_1"; side = 1; @@ -1574,12 +1575,12 @@ class CfgVehicles side = 1; model = "\dayz\characters\woman_bandit"; hiddenSelections[] = {"Camo"}; - hiddenSelectionsTextures[] = {"\ca\characters_e\woman\baker\data\baker_co.paa"}; + hiddenSelectionsTextures[] = {"\ca\characters_e\woman\baker\data\european_woman_01_co.paa"}; }; class SurvivorW3_DZ: SurvivorW2_DZ { hiddenSelections[] = {"Camo"}; - hiddenSelectionsTextures[] = {"\ca\characters_e\Woman\Baker\Data\european_woman_01_co.paa"}; + hiddenSelectionsTextures[] = {"\ca\characters_e\woman\baker\data\european_woman_01_co.paa"}; }; class Citizen1; class PZombie_VB: Citizen1