using std::endl;
char *PACKAGE = "GameServ";
-char *VERSION = "1.2.3 +devel";
+char *VERSION = "1.2.4 +devel";
int sock;
long lastrefresh;
loadNews(newsdata, todaysnews);
if (load_monsters() == false)
+ {
+ log("Error loading monsters");
+ goto end;
+ }
+
+ if (load_levels() == false)
+ {
+ log("Error loading levels");
goto end;
+ }
shuttingdown = false;
}
// 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!");
}
// Save the player data every updateperiod seconds
{
oldTime = currentTime;
log("Saving to %s", playerdata);
+
save_gs_dbase();
saveNews(newsdata, todaysnews);
+ // Send notice to the channel of the update
+ #ifdef DEBUGMODE
+ notice(s_GameServ, c_Forest, "%S player data saved");
+ #endif
}
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;