]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv/tcpclient.cpp
fixed some bugs
[irc/gameservirc.git] / gameserv / tcpclient.cpp
index dccf1c9dd870de905597717546844521c082fdea..14b3d6e67b4af9df0e979039132af5277be59ce7 100644 (file)
 #include <stdlib.h>
 #include <fcntl.h>
 #include <signal.h>
+
 //#include <sys/types.h>
 //#include <sys/wait.h>
 //#include <errno.h>
 
-using std::ofstream;
-using std::ifstream;
-using std::cerr;
-using std::endl;
+using namespace std;
 
 char *PACKAGE = "GameServ";
-char *VERSION = "1.2.5 +devel";
+char *VERSION = "1.3.1 +devel";
 
 int sock;
 long lastrefresh;
+long lastrollover;
 
 List<aClient> clients[U_TABLE_SIZE];
 
 void save_lastrefresh();
 void load_lastrefresh();
+void load_lastrollover();
+void save_lastrollover();
 void prettyIntro();
 void check_idles();
 
@@ -102,32 +103,50 @@ int main(int argc, char *argv[])
         perror("Could not turn into a daemon");
         exit(3);
     }
+  if (load_items() == 0)
+    {
+      log("Error loading items");
+      goto end;
+    }
+
+  if (load_store() == 0)
+    {
+      log("Error loading store");
+      goto end;
+    }
+  if (load_tavern() == 0)
+    {
+      log("Error loading tavern");
+      goto end;
+    }
+
   load_gs_dbase();
   loadNews(newsdata, todaysnews);
 
-  if (load_masters() == false)
-  {
-       log("Error loading masters");
-       goto end;
-  }
 
+  if (load_masters() == false)
+    {
+      log("Error loading masters");
+      goto end;
+    }
+  
   if (load_monsters() == false)
-  {
-       log("Error loading monsters");
-       goto end;
-  }
-
+    {
+      log("Error loading monsters");
+      goto end;
+    }
+  
   if (!load_dragon())
-  {
-       log("Error loading dragon");
-       goto end;
-  }
-
+    {
+      log("Error loading dragon");
+      goto end;
+    }
+  
   if (load_levels() == false)
-  {
-       log("Error loading levels");
-       goto end;
-  }
+    {
+      log("Error loading levels");
+      goto end;
+    }
 
     shuttingdown = false;
 
@@ -146,7 +165,7 @@ int main(int argc, char *argv[])
  {
     connected = 1;
     load_lastrefresh();
-
+    load_lastrollover();
 
     long int loadtime = time(NULL);
     long int currentTime;
@@ -160,7 +179,8 @@ int main(int argc, char *argv[])
     bool loaded = false;
 
     ignore_pipe();
-    sock = make_connection(remoteport, SOCK_STREAM, remoteserver);
+    sock = conn(remoteserver, remoteport, localhost, 0);
+    //    sock = make_connection(remoteport, SOCK_STREAM, remoteserver);
     if (sock == -1) {
        fprintf(stderr,"make_connection failed.\n");
     unload_config_file();
@@ -169,11 +189,10 @@ int main(int argc, char *argv[])
     log("%S socket connected.");
 
 #ifdef UNREAL
-       raw("PROTOCTL NICKv2 VHP");
        raw("PASS :%s", remotepass);
        raw("SERVER %s 1 :%s", servername, servername);
-       raw("NICK %S 1 %d %S %s %s %d +w%s %s :%s v%s", time(NULL), gshost, 
-               servername, time(NULL), (isBOper() ? "o" : ""), gshost, PACKAGE, VERSION);
+       raw("NICK %S 1 %d %s %s %s %d :%s v%s", time(NULL), gsident, gshost, 
+               servername, time(NULL), PACKAGE, VERSION);
        raw(":%S JOIN %s", c_Forest);
        raw(":%S MODE %s +tn", c_Forest);
 #elif defined(BAHAMUT)
@@ -279,6 +298,18 @@ int main(int argc, char *argv[])
 
        // Refresh players and clear news if the time is up
        currentTime = time(NULL);
+
+       if (isRolloverForestFights())
+         {
+           if (currentTime - lastrollover >= rolloverperiod)
+             {
+               rolloverall();
+               lastrollover = currentTime;
+               save_lastrollover();
+               notice(s_GameServ, c_Forest, "Adding %d forest fights to all players!", numrolloverfights);
+             }
+         }
+
        if (currentTime - lastrefresh >= refreshperiod)
        {
            refreshall();
@@ -291,7 +322,6 @@ int main(int argc, char *argv[])
        }
 
        // Save the player data every updateperiod seconds
-       currentTime = time(NULL);
        if (currentTime - oldTime >= updateperiod)
        {
            oldTime = currentTime;
@@ -539,7 +569,7 @@ int main(int argc, char *argv[])
            {
                #ifdef DEBUGMODE
                    log("Player %s (IRC: %s) joined %s", 
-                       joiner->stats->name.c_str(), 
+                       joiner->stats->getName().c_str(), 
                        #ifdef P10
                            joiner->getRealNick(),
                        #else
@@ -682,7 +712,7 @@ aClient *findIRCplayer(const char *nick)
     if (!is_playing(p))
        return NULL;
 
-    unsigned long hv = iHASH((unsigned char *) p->stats->name.c_str());
+    unsigned long hv = iHASH((unsigned char *) p->stats->getName().c_str());
 
     for (newPtr = players[hv].First(); newPtr; newPtr = newPtr->Next())
     {
@@ -700,17 +730,17 @@ aClient *findIRCplayer(const char *nick)
 
 aClient *findplayer(const char *name)
 {
-    ListNode <aClient> *newPtr;
-    Player *p = NULL;
-    unsigned long hv = iHASH((unsigned char *) name);
-    for (newPtr = players[hv].First(); newPtr; newPtr = newPtr->Next())
+  ListNode <aClient> *newPtr;
+  Player *p = NULL;
+  unsigned long hv = iHASH((unsigned char *) name);
+  for (newPtr = players[hv].First(); newPtr; newPtr = newPtr->Next())
     {
-       p = newPtr->getData()->stats;
-       if (stricmp(p->name.c_str(), name) == 0)
+         p = newPtr->getData()->stats;
+         if (stricmp(p->getName().c_str(), name) == 0)
            return newPtr->getData();
-       p = NULL;
+         p = NULL;
     }
-    return NULL;
+  return NULL;
 }
 
 void check_idles()
@@ -723,7 +753,7 @@ void check_idles()
        for (newPtr = players[x].First(); newPtr; newPtr = newPtr->Next())
        {
            p = newPtr->getData()->stats;
-           switch(p->level)
+           switch(p->getLevel())
            {
                case 1:
                if ((time(NULL) - p->lastlogin) / 86400 >= level1expire)
@@ -844,14 +874,15 @@ void closeall(int fd)
 
 void prettyIntro()
 {
-cout << endl;
-cout << "  GGGG     AAA   MM    MM EEEEEEE  SSSSS  EEEEEEE RRRRRR  VV     VV " << endl;
-cout << " GG  GG   AAAAA  MMM  MMM EE      SS      EE      RR   RR VV     VV " << endl;
-cout << "GG       AA   AA MM MM MM EEEEE    SSSSS  EEEEE   RRRRRR   VV   VV  " << endl;
-cout << "GG   GGG AAAAAAA MM    MM EE           SS EE      RR  RR    VV VV   " << endl;
-cout << "G     G  AA   AA MM    MM EEEEEEE  SSSSS  EEEEEEE RR   RR    VVV" << endl;
-cout << " GGGGG                                                        V\n\n" << endl;
-cout << "Version: " << VERSION << endl;
+  cout << endl;
+  cout << "  GGGG     AAA   MM    MM EEEEEEE  SSSSS  EEEEEEE RRRRRR  VV     VV " << endl;
+  cout << " GG  GG   AAAAA  MMM  MMM EE      SS      EE      RR   RR VV     VV " << endl;
+  cout << "GG       AA   AA MM MM MM EEEEE    SSSSS  EEEEE   RRRRRR   VV   VV  " << endl;
+  cout << "GG   GGG AAAAAAA MM    MM EE           SS EE      RR  RR    VV VV   " << endl;
+  cout << "G     G  AA   AA MM    MM EEEEEEE  SSSSS  EEEEEEE RR   RR    VVV" << endl;
+  cout << " GGGGG                                                        V\n\n" << endl;
+  cout << "Version: " << VERSION << endl;
+  cout << "http://www.gameserv.us - http://www.sourceforge.net/projects/gameservirc" << endl;
 }
 
 void load_lastrefresh()
@@ -871,21 +902,51 @@ void load_lastrefresh()
        #endif
 
        // Just a safety measure... tho no one should
-       // get anywhere near the time as their refreshperiod
+       // get anywhere near the actual time as their refreshperiod
        if (refreshperiod >= mytime)
+         {
+           log("Refresh period is greater than or equal to the actual time... setting it to 86400");
            refreshperiod = 86400;
-
+         }
+       
        lastrefresh = mytime - (mytime % refreshperiod);
+
        refreshall();
        save_lastrefresh();
        return;
     }
     infile >> lastrefresh;
+
     infile.close();
     if (lastrefresh < 0)
        goto generate;
 }
 
+void load_lastrollover()
+{
+  ifstream infile;
+  infile.open(".gsrollover");
+  if (infile.fail())
+    {
+#ifdef DEBUGMODE
+      log("Error opening .gsrollover");
+#endif
+      
+    generate:
+      long mytime = time(NULL);
+#ifdef DEBUGMODE
+      log("Generating new rollover time");
+#endif
+      lastrollover = mytime;
+      return;
+    }
+  infile >> lastrollover;
+  
+  infile.close();
+  if (lastrollover < 0)
+    goto generate;
+}
+
 void save_lastrefresh()
 {
     ofstream outfile;
@@ -897,7 +958,22 @@ void save_lastrefresh()
        log("Error creating new file .gsrefresh");
        return;
     }
-    outfile << lastrefresh << endl;
+    outfile << lastrefresh << endl << lastrollover;
+
+    outfile.close();
+}
+
+void save_lastrollover()
+{
+    ofstream outfile;
 
+    outfile.open(".gsrollover");
+
+    if (outfile.fail())
+    {
+       log("Error creating new file .gsrollover");
+       return;
+    }
+    outfile << lastrollover << endl;
     outfile.close();
 }