diff --git a/dayz_code/actions/player_build.sqf b/dayz_code/actions/player_build.sqf
index 197ffc043..5c71a3160 100644
--- a/dayz_code/actions/player_build.sqf
+++ b/dayz_code/actions/player_build.sqf
@@ -93,6 +93,7 @@ if (_hasrequireditem or _bypass) then {
player allowDamage false;
_object = createVehicle [_classname, _built_location, [], 0, "CAN_COLLIDE"];
_object setDir _dir;
+ _object setpos _built_location;
player reveal _object;
cutText [format[localize "str_build_01",_text], "PLAIN DOWN"];
diff --git a/dayz_code/actions/sell_db.sqf b/dayz_code/actions/sell_db.sqf
index fcaf82c64..a496fdad8 100644
--- a/dayz_code/actions/sell_db.sqf
+++ b/dayz_code/actions/sell_db.sqf
@@ -91,7 +91,7 @@ diag_log format["DEBUG Buy: %1", dayzTraderMenuResult];
_count = 0;
if(_type == "CfgVehicles") then {
- _count = {_x == _name} count (position player nearObjects [_name,10]);
+ _count = {(typeOf _x) == _name} count (nearestObjects [player, [_name], 10]);
};
if(_type == "CfgMagazines") then {
_count = {_x == _name} count magazines player;
diff --git a/dayz_code/actions/trade_any_boat.sqf b/dayz_code/actions/trade_any_boat.sqf
index 4383ed381..cb0e93d79 100644
--- a/dayz_code/actions/trade_any_boat.sqf
+++ b/dayz_code/actions/trade_any_boat.sqf
@@ -1,5 +1,8 @@
private["_position","_veh","_location","_isOk","_backpack","_vehType","_trg","_key","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID"];
+if(TradeInprogress) exitWith { cutText ["Trade already in progress." , "PLAIN DOWN"]; };
+TradeInprogress = true;
+
// [part_out,part_in, qty_out, qty_in, loc];
_activatingPlayer = _this select 1;
@@ -93,4 +96,6 @@ if (_qty >= _qty_in) then {
} else {
_needed = _qty_in - _qty;
cutText [format[("Need %1 More %2"),_needed,_textPartIn] , "PLAIN DOWN"];
-};
\ No newline at end of file
+};
+
+TradeInprogress = false;
\ No newline at end of file
diff --git a/dayz_code/actions/trade_any_vehicle.sqf b/dayz_code/actions/trade_any_vehicle.sqf
index ce3a642bc..56f19b3d3 100644
--- a/dayz_code/actions/trade_any_vehicle.sqf
+++ b/dayz_code/actions/trade_any_vehicle.sqf
@@ -1,5 +1,8 @@
private["_position","_veh","_location","_isOk","_backpack","_vehType","_trg","_key","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_obj","_objectID","_objectUID"];
+if(TradeInprogress) exitWith { cutText ["Trade already in progress." , "PLAIN DOWN"]; };
+TradeInprogress = true;
+
// [part_out,part_in, qty_out, qty_in, loc];
_activatingPlayer = _this select 1;
@@ -100,4 +103,6 @@ if (_qty >= _qty_in) then {
} else {
_needed = _qty_in - _qty;
cutText [format[("Need %1 More %2"),_needed,_textPartIn] , "PLAIN DOWN"];
-};
\ No newline at end of file
+};
+
+TradeInprogress = false;
\ No newline at end of file
diff --git a/dayz_code/actions/trade_backpacks.sqf b/dayz_code/actions/trade_backpacks.sqf
index 8998a1850..7d4b2e220 100644
--- a/dayz_code/actions/trade_backpacks.sqf
+++ b/dayz_code/actions/trade_backpacks.sqf
@@ -1,6 +1,9 @@
private["_iarray","_part_out","_part_in","_qty_out","_qty_in","_qty"];
// [part_out,part_in, qty_out, qty_in,];
+if(TradeInprogress) exitWith { cutText ["Trade already in progress." , "PLAIN DOWN"]; };
+TradeInprogress = true;
+
_activatingPlayer = _this select 1;
_part_out = (_this select 3) select 0;
@@ -149,4 +152,6 @@ if (_bulkqty >= 1) then {
_needed = _qty_in - _qty;
cutText [format[("Need %1 More %2"),_needed,_textPartIn] , "PLAIN DOWN"];
};
-};
\ No newline at end of file
+};
+
+TradeInprogress = false;
\ No newline at end of file
diff --git a/dayz_code/actions/trade_items.sqf b/dayz_code/actions/trade_items.sqf
index 51cfce258..ac1aa1be7 100644
--- a/dayz_code/actions/trade_items.sqf
+++ b/dayz_code/actions/trade_items.sqf
@@ -1,6 +1,9 @@
private["_iarray","_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_textPartIn","_textPartOut","_bos","_isOk"];
// [part_out,part_in, qty_out, qty_in,];
+if(TradeInprogress) exitWith { cutText ["Trade already in progress." , "PLAIN DOWN"]; };
+TradeInprogress = true;
+
_activatingPlayer = _this select 1;
_part_out = (_this select 3) select 0;
@@ -144,4 +147,6 @@ if (_bulkqty >= 1) then {
_needed = _qty_in - _qty;
cutText [format[("Need %1 More %2"),_needed,_textPartIn] , "PLAIN DOWN"];
};
-};
\ No newline at end of file
+};
+
+TradeInprogress = false;
\ No newline at end of file
diff --git a/dayz_code/actions/trade_items_wo_db.sqf b/dayz_code/actions/trade_items_wo_db.sqf
index f303096f8..a2e53a380 100644
--- a/dayz_code/actions/trade_items_wo_db.sqf
+++ b/dayz_code/actions/trade_items_wo_db.sqf
@@ -1,6 +1,9 @@
private["_activatingPlayer","_part_out","_part_in","_qty_out","_qty_in","_buy_o_sell","_textPartIn","_textPartOut","_traderID","_counter","_failed","_qty","_isOk","_needed"];
// [part_out,part_in, qty_out, qty_in,];
+if(TradeInprogress) exitWith { cutText ["Trade already in progress." , "PLAIN DOWN"]; };
+TradeInprogress = true;
+
//_activatingPlayer = _this select 1;
_part_out = (_this select 3) select 0;
@@ -13,8 +16,12 @@ _textPartOut = (_this select 3) select 6;
//_traderID = (_this select 3) select 7;
_counter = 0;
+_success = false;
_failed = false;
+_total_in = 0;
+_total_out = 0;
+
_qty = {_x == _part_in} count magazines player;
// find total number of possible trades
@@ -22,6 +29,8 @@ _total_trades = floor (_qty / _qty_in);
if (_qty >= _qty_in) then {
+
+
// trade all items
for "_x" from 1 to _total_trades do {
@@ -53,12 +62,20 @@ if (_qty >= _qty_in) then {
};
cutText [localize "STR_DAYZ_CODE_2", "PLAIN DOWN"];
} else {
- cutText [format[("Traded %1 %2 for %3 %4"),_qty_in,_textPartIn,_qty_out,_textPartOut], "PLAIN DOWN"];
- sleep 2;
+
+ _total_in = _total_in + _qty_in;
+ _total_out = _total_out + _qty_out;
+ _success = true;
+
};
};
+ if(_success) then {
+ cutText [format[("Traded %1 %2 for %3 %4"),_total_in,_textPartIn,_total_out,_textPartOut], "PLAIN DOWN"];
+ };
} else {
_needed = _qty_in - _qty;
cutText [format[("Need %1 More %2"),_needed,_textPartIn] , "PLAIN DOWN"];
-};
\ No newline at end of file
+};
+
+TradeInprogress = false;
\ No newline at end of file
diff --git a/dayz_code/actions/trade_weapons.sqf b/dayz_code/actions/trade_weapons.sqf
index ecdb3638f..4d826c120 100644
--- a/dayz_code/actions/trade_weapons.sqf
+++ b/dayz_code/actions/trade_weapons.sqf
@@ -1,6 +1,9 @@
private ["_part_out","_part_in","_qty_out","_qty_in","_qty","_buy_o_sell","_traderID","_bos","_bulkItem","_bulkqty","_gold_out","_gold_qty_out","_partial_qty_out","_silver_qty_out","_needed","_activatingPlayer","_textPartIn","_textPartOut"];
// [part_out,part_in, qty_out, qty_in,"buy"];
+if(TradeInprogress) exitWith { cutText ["Trade already in progress." , "PLAIN DOWN"]; };
+TradeInprogress = true;
+
_activatingPlayer = _this select 1;
_part_out = (_this select 3) select 0;
@@ -147,4 +150,6 @@ if (_bulkqty >= 1) then {
_needed = _qty_in - _qty;
cutText [format[("Need %1 More %2"),_needed,_textPartIn] , "PLAIN DOWN"];
};
-};
\ No newline at end of file
+};
+
+TradeInprogress = false;
\ No newline at end of file
diff --git a/dayz_code/cfgVehicles.hpp b/dayz_code/cfgVehicles.hpp
index 91027bc5a..ff4f450db 100644
--- a/dayz_code/cfgVehicles.hpp
+++ b/dayz_code/cfgVehicles.hpp
@@ -190,7 +190,6 @@ class Citizen1; // External class reference
transportMaxWeapons = 10;
transportMaxMagazines = 50;
transportmaxbackpacks = 10;
- supplyRadius = 0;
};
diff --git a/dayz_code/compile/fn_selfActions.sqf b/dayz_code/compile/fn_selfActions.sqf
index cbf92f1f9..5a6367868 100644
--- a/dayz_code/compile/fn_selfActions.sqf
+++ b/dayz_code/compile/fn_selfActions.sqf
@@ -76,7 +76,7 @@ if (!isNull cursorTarget and !_inVehicle and (player distance cursorTarget < 6))
_canmove = canmove cursorTarget;
_text = getText (configFile >> "CfgVehicles" >> typeOf cursorTarget >> "displayName");
- // hintSilent (typeOf cursorTarget);
+
_rawmeat = meatraw;
_hasRawMeat = false;
diff --git a/dayz_code/compile/player_spawnCheck.sqf b/dayz_code/compile/player_spawnCheck.sqf
index eaa963f2a..2ebb8456a 100644
--- a/dayz_code/compile/player_spawnCheck.sqf
+++ b/dayz_code/compile/player_spawnCheck.sqf
@@ -8,6 +8,8 @@ _maxZombies = dayz_maxLocalZombies;
_maxWildZombies = 3;
_age = -1;
+
+
_nearbyBuildings = [];
_radius = 300;
_position = getPosATL player;
@@ -40,6 +42,7 @@ switch (_nearbytype) do {
_spawnZombies = count (_position nearEntities ["zZombie_Base",_radius+100]) < _maxZombies;
+
if ("ItemMap_Debug" in items player) then {
deleteMarkerLocal "MaxZeds";
deleteMarkerLocal "Counter";
@@ -97,11 +100,13 @@ if (_nearbyCount < 1) exitwith {};
[_radius, _position, _inVehicle, _dateNow, _age, _locationstypes, _nearestCity] call player_spawnlootCheck;
};
if ((time - dayz_spawnWait) > dayz_spawnDelay) then {
- if (dayz_spawnZombies < dayz_maxLocalZombies) then {
- if (_spawnZombies) then {
- [_radius, _position, _inVehicle, _dateNow, _age, _locationstypes, _nearestCity, _maxZombies] call player_spawnzedCheck;
-};
+ if (dayz_spawnZombies < _maxZombies) then {
+ if (_spawnZombies) then {
+ hintSilent format["Spawning %1 / %2
total: %3 ",dayz_spawnZombies,_maxZombies,count (_position nearEntities ["zZombie_Base",_radius+100])];
+ [_radius, _position, _inVehicle, _dateNow, _age, _locationstypes, _nearestCity, _maxZombies] call player_spawnzedCheck;
+ };
} else {
+ hintSilent format["Waiting %1 / %2
total: %3",dayz_spawnZombies,_maxZombies,count (_position nearEntities ["zZombie_Base",_radius+100])];
dayz_spawnWait = time;
dayz_spawnZombies = 0;
};
diff --git a/dayz_code/compile/player_spawnzedCheck.sqf b/dayz_code/compile/player_spawnzedCheck.sqf
index 9370645bf..db02def58 100644
--- a/dayz_code/compile/player_spawnzedCheck.sqf
+++ b/dayz_code/compile/player_spawnzedCheck.sqf
@@ -9,9 +9,11 @@ _locationstypes = _this select 5;
_nearestCity = _this select 6;
_maxZombies = _this select 7;
+/*
if (_inVehicle) then {
_maxZombies = _maxZombies / 2;
};
+*/
_zombied = (_x getVariable ["zombieSpawn",-0.1]);
_dateNow = (DateToNumber date);
diff --git a/dayz_code/compile/zombie_generate.sqf b/dayz_code/compile/zombie_generate.sqf
index 984028b79..42e0fb7e1 100644
--- a/dayz_code/compile/zombie_generate.sqf
+++ b/dayz_code/compile/zombie_generate.sqf
@@ -27,8 +27,10 @@ if (_doLoiter) then {
//diag_log ("Spawned: " + str([_type, _position, [], _radius, _method]));
_agent = createAgent [_type, _position, [], _radius, _method];
-dayzSpawnZed = [_agent];
-publicVariableServer "dayzSpawnZed";
+if(!(_agent == objNull)) then {
+ dayzSpawnZed = [_agent];
+ publicVariableServer "dayzSpawnZed";
+};
if (_doLoiter) then {
_agent setPosATL _position;
diff --git a/dayz_code/config.cpp b/dayz_code/config.cpp
index 5c0bd3c38..f22244952 100644
--- a/dayz_code/config.cpp
+++ b/dayz_code/config.cpp
@@ -33,7 +33,7 @@ class CfgMods
hidePicture = 0;
hideName = 0;
action = "http://www.dayzepoch.com";
- version = "0.963";
+ version = "0.97";
hiveVersion = 0.96; //0.93
};
};
diff --git a/dayz_code/init/variables.sqf b/dayz_code/init/variables.sqf
index 4c8f9f09b..9325f0d9b 100644
--- a/dayz_code/init/variables.sqf
+++ b/dayz_code/init/variables.sqf
@@ -264,7 +264,11 @@ dayz_maxAnimals = 5;
DAYZ_agentnumber = 0;
dayz_animalDistance = 800;
dayz_zSpawnDistance = 1000;
-dayz_maxLocalZombies = 40;
+
+if(isNil "dayzTraderMenuResult") then {
+ dayz_maxLocalZombies = 40;
+};
+
dayz_spawnPos = getPosATL player;
//init global arrays for Loot Chances
@@ -356,6 +360,7 @@ if(!isDedicated) then {
dayzGearSave = false;
dayz_unsaved = false;
UnlockInprogress = false;
+ TradeInprogress = false;
dayz_scaleLight = 0;
dayzDebug = false;
dayzState = -1;
diff --git a/dayz_code/rscTitles.hpp b/dayz_code/rscTitles.hpp
index d34bc10d3..874768caf 100644
--- a/dayz_code/rscTitles.hpp
+++ b/dayz_code/rscTitles.hpp
@@ -87,7 +87,7 @@ class RscDisplayMain : RscStandardDisplay
class DAYZ_Version : CA_Version
{
idc = -1;
- text = "DayZ Epoch 0.963 (1.7.5.1)";
+ text = "DayZ Epoch 0.97 (1.7.5.1)";
y = "(SafeZoneH + SafeZoneY) - (1 - 0.95)";
};
class CA_TitleMainMenu;
diff --git a/dayz_server/system/server_monitor.sqf b/dayz_server/system/server_monitor.sqf
index 3951a3073..94a3c1438 100644
--- a/dayz_server/system/server_monitor.sqf
+++ b/dayz_server/system/server_monitor.sqf
@@ -103,8 +103,8 @@ diag_log "HIVE: Starting";
_object addMPEventHandler ["MPKilled",{_this call vehicle_handleServerKilled;}];
};
- _object setpos _pos;
_object setdir _dir;
+ _object setpos _pos;
_object setDamage _damage;
if (count _intentory > 0) then {