#include "options.h"
-#include "list.h"
#include "aClient.h"
#include "extern.h"
#include "flags.h"
#include <fstream>
#include <iostream>
+#include <list>
+#include <algorithm>
int sock = 1;
using namespace std;
char *PACKAGE = "GameServ";
-char *VERSION = "1.2.6 +devel";
+char *VERSION = "1.3.2 +devel";
long lastrefresh;
+long lastrollover;
-List<aClient> clients[U_TABLE_SIZE];
+list<aClient*> clients[U_TABLE_SIZE];
list <item*> items;
void save_lastrefresh();
void load_lastrefresh();
void prettyIntro();
void check_idles();
-void testitems();
int main(int argc, char *argv[])
{
connected = 1;
load_lastrefresh();
- {
- testitems();
- item *tester = items.front();
- cout << tester->getName() << endl;
- item *tester2 = items.back();
- cout << tester2->getName() << endl;
- items.clear();
- }
-
+ {
+ aClient *tempPtr, *tempPtr2;
+
+ list<aClient*>::iterator iter;
+ char *nick = "testing";
+ unsigned long hv = iHASH((unsigned char *) nick);
+ tempPtr = new aClient(nick);
+ tempPtr2 = new aClient("testing2");
+
+ tempPtr->stats = new Player;
+ clients[hv].push_back(tempPtr);
+ clients[hv].push_back(tempPtr);
+ clients[hv].push_back(tempPtr);
+ clients[hv].push_back(tempPtr);
+ clients[hv].push_back(tempPtr2);
+ clients[hv].push_back(tempPtr2);
+ clients[hv].push_back(tempPtr2);
+ delete tempPtr->stats;
+
+
+ tempPtr = find(nick);
+
+
+ //iter = find((clients[0].begin()), (clients[0].end()), tempPtr);
+ // cout << "Nick: " << (*iter)->getNick() << endl;
+ clients[hv].remove(tempPtr);
+ for (unsigned long x = 0; x < U_TABLE_SIZE; x++)
+ {
+ for (iter = clients[x].begin(); iter != clients[x].end(); iter++)
+ {
+ cout << (*iter)->getNick() << endl;
+ }
+ }
+
+ }
{
// This is where you can test stuff
/*
return 0;
}
-void testitems()
-{
- // This is where you can test stuff
- string itemname;
- item *tempitem;
-
- cout << "Enter an item name: ";
- cin >> itemname;
- char num[16];
- char *testing;
- testing = new char[80];
- strncpy(testing, "1~1~Stick~200~-1~15~0~0~0", 80);
- for (int x = 1; x < 6000001; x++)
- {
- sprintf(num, "%d", x);
- tempitem = new weapon("blah");
- if (!tempitem->setData(testing))
- {
- cout << "Error in setData()" << endl;
- break;
- }
- items.push_back(tempitem);
- }
-}
-
aClient *find(char *nick)
{
return findbynick(nick);
aClient *findbyrealnick(char *realnick)
{
- ListNode <aClient> *newPtr;
+ ListNode <aClient*> *newPtr;
unsigned long hv = sHASH((unsigned char *) realnick);
newPtr = clients[hv].First();
aClient *findbynick(char *nick)
{
- ListNode <aClient> *newPtr;
+ list<aClient*>::iterator iter;
#ifdef P10
unsigned long hv = sHASH((unsigned char *) nick);
#else
unsigned long hv = iHASH((unsigned char *) nick);
#endif
- newPtr = clients[hv].First();
-
aClient *client = NULL;
- while (newPtr)
- {
- client = newPtr->getData();
+ for(iter = clients[hv].begin(); iter != clients[hv].end(); iter++)
+ {
+ client = (*iter);
#ifdef P10
- if (strcmp(client->getNick(), nick) == 0)
+ if (strcmp(client->getNick(), nick) == 0)
+ {
#else
- if (stricmp(client->getNick(), nick) == 0)
+ if (stricmp(client->getNick(), nick) == 0)
+ {
#endif
- return client;
- client = NULL;
- newPtr = newPtr->Next();
- }
- return client;
+ return client;
+ }
+ client = NULL;
+ }
+ return client;
}
-
+
aClient *findIRCplayer(const char *nick)
{
- ListNode <aClient> *newPtr;
+ list<aClient*>::iterator iter;
aClient *p = NULL;
p = find(nick);
if (!is_playing(p))
- return NULL;
+ 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())
- {
- p = newPtr->getData();
+ for (iter = players[hv].begin(); iter != players[hv].end(); iter++)
+ {
+ p = (*iter);
#ifdef P10
- if (strcmp(p->getNick(), nick) == 0)
+ if (strcmp(p->getNick(), nick) == 0)
+ {
#else
- if (stricmp(p->getNick(), nick) == 0)
+ if (stricmp(p->getNick(), nick) == 0)
+ {
#endif
- return p;
- p = NULL;
- }
- return NULL;
-}
-
-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())
- {
- p = newPtr->getData()->stats;
- if (stricmp(p->name.c_str(), name) == 0)
- return newPtr->getData();
- p = NULL;
- }
+ return p;
+ }
+ p = NULL;
+ }
return NULL;
}
-
-void check_idles()
-{
- ListNode <aClient> *newPtr;
- Player *p = NULL;
-
- for (int x = 0; x < U_TABLE_SIZE; x++)
- {
- for (newPtr = players[x].First(); newPtr; newPtr = newPtr->Next())
+ aClient *findplayer(const char *name)
{
- p = newPtr->getData()->stats;
- switch(p->level)
- {
- case 1:
- if ((time(NULL) - p->lastlogin) / 86400 >= level1expire)
+ list<aClient*>::iterator iter;
+ Player *p = NULL;
+ unsigned long hv = iHASH((unsigned char *) name);
+ for (iter = players[hv].begin(); iter != players[hv].end(); iter++)
{
- logout(newPtr->getData());
- players[x].remove(newPtr->getData());
- return;
+ p = (*iter)->stats;
+ if (stricmp(p->getName().c_str(), name) == 0)
+ return (*iter);
+ p = NULL;
}
- break;
-
- default:
- if ((time(NULL) - p->lastlogin) / 86400 >= defaultexpire)
+ return NULL;
+ }
+
+ void check_idles()
+ {
+ list<aClient*>::iterator iter;
+
+ Player *p = NULL;
+
+ for (int x = 0; x < U_TABLE_SIZE; x++)
{
- logout(newPtr->getData());
- players[x].remove(newPtr->getData());
- return;
+ for (iter = players[x].begin(); iter != players[x].end(); iter++)
+ {
+ p = (*iter)->stats;
+
+ switch(p->getLevel())
+ {
+ case 1:
+ if ((time(NULL) - p->lastlogin) / 86400 >= level1expire)
+ {
+ logout((*iter));
+ players[x].remove((*iter));
+ return;
+ }
+ break;
+
+ default:
+ if ((time(NULL) - p->lastlogin) / 86400 >= defaultexpire)
+ {
+ logout((*iter));
+ players[x].remove((*iter));
+ return;
+ }
+ break;
+ }
+ if (timedOut(p))
+ {
+ timeOutEvent(p);
+ }
+ }
}
- break;
- }
- if (timedOut(p))
- {
- timeOutEvent(p);
- }
}
- }
-}
-
-aClient *findbynick(const char *nick)
-{
- ListNode <aClient> *newPtr;
+
+ aClient *findbynick(const char *nick)
+ {
+ list<aClient*>::iterator iter;
#ifdef P10
- unsigned long hv = sHASH((unsigned char *) nick);
+ unsigned long hv = sHASH((unsigned char *) nick);
#else
- unsigned long hv = iHASH((unsigned char *) nick);
+ unsigned long hv = iHASH((unsigned char *) nick);
#endif
-
- newPtr = clients[hv].First();
-
- aClient *client = NULL;
-
- while (newPtr)
- {
- client = newPtr->getData();
+
+ aClient *client = NULL;
+
+ for (iter = clients[hv].begin(); iter != clients[hv].end(); iter++)
+ {
+ client = (*iter);
#ifdef P10
- if (strcmp(client->getNick(), nick) == 0)
+ if (strcmp(client->getNick(), nick) == 0)
#else
- if (stricmp(client->getNick(), nick) == 0)
+ if (stricmp(client->getNick(), nick) == 0)
#endif
+ return client;
+ client = NULL;
+ }
return client;
- client = NULL;
- newPtr = newPtr->Next();
- }
- return client;
-}
-
+ }
+
void prettyIntro()
{
cout << endl;