diff --git a/world/net.cpp b/world/net.cpp index b5c29fecb..86f794af0 100644 --- a/world/net.cpp +++ b/world/net.cpp @@ -349,6 +349,8 @@ int main(int argc, char** argv) { time_t realtime; eqTime = database.LoadTime(realtime); zoneserver_list.worldclock.SetCurrentEQTimeOfDay(eqTime, realtime); + Timer EQTimeTimer(600000); + EQTimeTimer.Start(600000); Log.Out(Logs::General, Logs::World_Server, "Loading launcher list.."); launcher_list.LoadList(); @@ -473,6 +475,16 @@ int main(int argc, char** argv) { database.PurgeExpiredInstances(); } + if (EQTimeTimer.Check()) + { + TimeOfDay_Struct tod; + zoneserver_list.worldclock.GetCurrentEQTimeOfDay(time(0), &tod); + if (!database.SaveTime(tod.minute, tod.hour, tod.day, tod.month, tod.year)) + Log.Out(Logs::General, Logs::World_Server, "Failed to save eqtime."); + else + Log.Out(Logs::General, Logs::World_Server, "EQTime successfully saved."); + } + //check for timeouts in other threads timeout_manager.CheckTimeouts(); loginserverlist.Process(); @@ -522,10 +534,6 @@ int main(int argc, char** argv) { void CatchSignal(int sig_num) { Log.Out(Logs::General, Logs::World_Server,"Caught signal %d",sig_num); - TimeOfDay_Struct eqTime; - zoneserver_list.worldclock.GetCurrentEQTimeOfDay(time(0), &eqTime); - if (!database.SaveTime(eqTime.minute, eqTime.hour, eqTime.day, eqTime.month, eqTime.year)) - Log.Out(Logs::General, Logs::World_Server, "Failed to save eqtime."); RunLoops = false; }