}
// Refresh players and clear news if the time is up
- if (loadtime - lastrefresh >= refreshperiod)
+ currentTime = time(NULL);
+ if (currentTime - lastrefresh >= refreshperiod)
{
refreshall();
clearNews(todaysnews);
saveNews(newsdata, todaysnews);
+ lastrefresh = currentTime;
save_lastrefresh();
+ notice(s_GameServ, c_Forest, "Refreshing all players "\
+ "and resetting news! %ld", refreshperiod);
}
// Save the player data every updateperiod seconds
for (newPtr = players[x].First(); newPtr; newPtr = newPtr->Next())
{
p = newPtr->getData()->stats;
+ switch(p->level)
+ {
+ case 1:
+ if ((time(NULL) - p->lastlogin) / 86400 >= level1expire)
+ {
+ logout(newPtr->getData());
+ players[x].remove(newPtr->getData());
+ return;
+ }
+ break;
+
+ default:
+ if ((time(NULL) - p->lastlogin) / 86400 >= defaultexpire)
+ {
+ logout(newPtr->getData());
+ players[x].remove(newPtr->getData());
+ return;
+ }
+ break;
+ }
if (timedOut(p))
{
timeOutEvent(p);
#endif
generate:
+ long mytime = time(NULL);
#ifdef DEBUGMODE
log("Generating new refresh time");
#endif
- lastrefresh = time(NULL);
+
+ // Just a safety measure... tho no one should
+ // get anywhere near the time as their refreshperiod
+ if (refreshperiod >= mytime)
+ refreshperiod = 86400;
+
+ lastrefresh = mytime - (mytime % refreshperiod);
refreshall();
save_lastrefresh();
return;