X-Git-Url: https://jfr.im/git/irc/gameservirc.git/blobdiff_plain/9d057db5601ca755277ff5869cc49301f8e9707e..0eeaca4c0e2a8bb571b1182ead50094c03268b81:/gameserv/tcpclient.cpp diff --git a/gameserv/tcpclient.cpp b/gameserv/tcpclient.cpp index b3077d7..12cc359 100644 --- a/gameserv/tcpclient.cpp +++ b/gameserv/tcpclient.cpp @@ -20,21 +20,26 @@ #include #include #include +#include #include -#include #include int sock; +long timestamp; + List clients; +void save_timestamp(); +void load_timestamp(); + int main(int argc, char *argv[]) { - char buffer[1024], buf[1024], input[1024], uplink[80], kb[1024]; + char buffer[1024], buf[1024]; int connected = 1; char *cmd, *source = NULL; srand(time(NULL)); - - load_config_file(); + + load_config_file(); if (argc == 1) { argc = 3; @@ -72,7 +77,10 @@ int main(int argc, char *argv[]) printf("Server: %s\n",buffer); init_monsters(); + init_masters(); load_gs_dbase(); + load_timestamp(); + while (connected) { if (sock_gets(sock,buffer,sizeof(buffer)) == -1) { connected = 0; @@ -96,7 +104,7 @@ int main(int argc, char *argv[]) if (buffer[0] == ':') { aClient *tempPtr; - if (tempPtr = find((source + 1))) + if ((tempPtr = find((source + 1)))) { char *nick; nick = strtok(NULL, " "); @@ -114,10 +122,10 @@ int main(int argc, char *argv[]) } } else if (stricmp(cmd, "QUIT") == 0) { aClient *quitter; - if (quitter = find(source + 1)) + if ((quitter = find(source + 1))) clients.remove(quitter); - if (quitter = findplayer(source + 1)) - players.remove(quitter); + if ((quitter = findplayer(source + 1))) + quitter->setNick("NULL"); } else if (stricmp(cmd, "PRIVMSG") == 0) { char *rest, *dest; @@ -137,6 +145,11 @@ int main(int argc, char *argv[]) // source << endl; } } + save_gs_dbase(); + save_timestamp(); + delete_monsters(); + delete_masters(); + printf("\n"); close(sock); unload_config_file(); @@ -205,3 +218,46 @@ aClient *findbynick(const char *nick) return client; } +void load_timestamp() +{ + ifstream infile; + + infile.open(".gstimestamp"); + + if (infile.fail()) + { + cerr << "Error opening .gstimestamp" << endl; + cerr << "Generating new timestamp" << endl; + generate: + timestamp = midnight(); + save_timestamp(); + return; + } + + infile >> timestamp; + infile.close(); + if (timestamp < 1000000) + goto generate; +} + +void save_timestamp() +{ + ofstream outfile; + + outfile.open(".gstimestamp"); + + if (outfile.fail()) + { + cerr << "Error creating new file." << endl; + return; + } + + outfile << timestamp << endl; + + outfile.close(); +} + +long int midnight(long int offset) +{ + return (time(NULL) - (time(NULL) % 86400)) + (offset * 3600); +}