From abdb3e0e42e998da795d9858b6a0f72dadd450ee Mon Sep 17 00:00:00 2001 From: ebayShopper Date: Sat, 10 Jun 2017 10:07:19 -0400 Subject: [PATCH] Fix survival time not counted after clothes change Vanilla commits: https://github.com/DayZMod/DayZ/commit/cf4fde633539a6980f3ca4297cd37c558d4fca03 https://github.com/DayZMod/DayZ/commit/74dd04616f81f580057927bad37be98156a7b123 --- .../playerstats/epeen_setText_journal.sqf | 2 +- SQF/dayz_code/init/variables.sqf | 1 - SQF/dayz_code/system/player_monitor.fsm | 1 + .../system/scheduler/sched_medical.sqf | 2 -- SQF/dayz_server/compile/server_playerSetup.sqf | 2 +- SQF/dayz_server/compile/server_playerSync.sqf | 18 +++++++++++++----- 6 files changed, 16 insertions(+), 10 deletions(-) diff --git a/SQF/dayz_code/actions/playerstats/epeen_setText_journal.sqf b/SQF/dayz_code/actions/playerstats/epeen_setText_journal.sqf index ef14bd3a8..4c9c564cc 100644 --- a/SQF/dayz_code/actions/playerstats/epeen_setText_journal.sqf +++ b/SQF/dayz_code/actions/playerstats/epeen_setText_journal.sqf @@ -21,7 +21,7 @@ _1 = name player; dayz_currentGlobalZombies = count entities "zZombie_Base"; //Work out survival time -_currentTime = floor (dayz_sessionTime / 60); +_currentTime = floor ((diag_tickTime - dayz_loginTime) / 60); _totalMins = (player getVariable "SurvivalTime") + _currentTime; _days = floor (_totalMins / 1440); _totalMins = (_totalMins - (_days * 1440)); diff --git a/SQF/dayz_code/init/variables.sqf b/SQF/dayz_code/init/variables.sqf index 81eb01680..7e275c898 100644 --- a/SQF/dayz_code/init/variables.sqf +++ b/SQF/dayz_code/init/variables.sqf @@ -660,7 +660,6 @@ if (!isDedicated) then { Dayz_freefall = [ time, 0, 0.1 ]; dayz_getoutTime = 0; dayz_hitByTime = 0; - dayz_sessionTime = 0; //Approximate time elapsed since login in seconds skipGearSound = false; TimeOutDisplayed = false; voice_actions = ["voiceOverNet","PushToTalk","PushToTalkAll","PushToTalkCommand","PushToTalkDirect","PushToTalkGroup","PushToTalkSide","PushToTalkVehicle"]; diff --git a/SQF/dayz_code/system/player_monitor.fsm b/SQF/dayz_code/system/player_monitor.fsm index 0f73c1d5f..2d1e3252f 100644 --- a/SQF/dayz_code/system/player_monitor.fsm +++ b/SQF/dayz_code/system/player_monitor.fsm @@ -862,6 +862,7 @@ class FSM "dayz_lastDrink = (_lastDrank * 60);" \n "dayz_zombiesLocal = 0; //Used to record how many local zombies being tracked" \n "dayz_Survived = [_days,_hours,_mins,(_survival select 3)]; //total alive dayz" \n + "dayz_loginTime = diag_tickTime;" \n "" \n "//load in medical details" \n "r_player_dead = player getVariable[""USEC_isDead"",false];" \n diff --git a/SQF/dayz_code/system/scheduler/sched_medical.sqf b/SQF/dayz_code/system/scheduler/sched_medical.sqf index 840e7afd0..acf698a4c 100644 --- a/SQF/dayz_code/system/scheduler/sched_medical.sqf +++ b/SQF/dayz_code/system/scheduler/sched_medical.sqf @@ -58,8 +58,6 @@ sched_medical = { // 1 second } else { [] spawn fnc_usec_playerHandleBlood; }; - - dayz_sessionTime = dayz_sessionTime + 1; [_unconHdlr] }; diff --git a/SQF/dayz_server/compile/server_playerSetup.sqf b/SQF/dayz_server/compile/server_playerSetup.sqf index b1fc332f4..b6543ea86 100644 --- a/SQF/dayz_server/compile/server_playerSetup.sqf +++ b/SQF/dayz_server/compile/server_playerSetup.sqf @@ -231,7 +231,7 @@ if (dayz_townGenerator) then { }; //record time started -_playerObj setVariable ["lastTime",time]; +_playerObj setVariable ["lastTime",diag_ticktime]; //set server-side inventory variable to monitor player gear if (count _inventory > 2) then { diff --git a/SQF/dayz_server/compile/server_playerSync.sqf b/SQF/dayz_server/compile/server_playerSync.sqf index 39dfdd941..6950041f3 100644 --- a/SQF/dayz_server/compile/server_playerSync.sqf +++ b/SQF/dayz_server/compile/server_playerSync.sqf @@ -41,7 +41,7 @@ _bankCoins = _character getVariable [Z_BankVariable, -1]; _coins = _character getVariable [Z_MoneyVariable, -1]; //should getting coins fail set the variable to an invalid value to prevent overwritting the in the DB _lastPos = _character getVariable ["lastPos",_charPos]; _usec_Dead = _character getVariable ["USEC_isDead",false]; -_lastTime = _character getVariable ["lastTime",diag_ticktime]; +_lastTime = _character getVariable ["lastTime",-1]; _modelChk = _character getVariable ["model_CHK",""]; _temp = round (_character getVariable ["temperature",100]); _lastMagazines = _character getVariable ["ServerMagArray",[[],""]]; @@ -116,10 +116,18 @@ if (!_usec_Dead) then { }; _character setVariable ["medForceUpdate",false,true]; -_character addScore _kills; -_timeGross = (diag_ticktime - _lastTime); -_timeSince = floor (_timeGross / 60); -_timeLeft = (_timeGross - (_timeSince * 60)); +_character addScore _kills; +/* + Assess how much time has passed, for recording total time on server + Note "lastTime" is -1 after clothes change +*/ +if (_lastTime == -1) then { + _character setVariable ["lastTime",diag_tickTime,false]; +} else { + _timeGross = (diag_tickTime - _lastTime); + _timeSince = floor (_timeGross / 60); + _timeLeft = (_timeGross - (_timeSince * 60)); +}; /* Get character state details */