#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();
-
int main(int argc, char *argv[])
{
char buffer[1024], buf[1024];
}
// This loop will retry the connection 3 times
+ connected = 1;
+ load_lastrefresh();
- connected = 1;
- load_lastrefresh();
-
+ {
+ 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;
+ }
+ }
+
+ }
{
- string playername;
- Player *p;
-
- cout << "Enter an name: ";
- cin >> playername;
- p = new Player(playername);
-
- cout << "You entered: " << p->name << endl;
- item *testitem, *tempitem;
- weapon *testweapon;
- cout << "Enter a weapon name: ";
- cin >> playername;
- testitem = new weapon(playername);
- testweapon = new weapon(playername, 10000);
-
- cout << "You entered: " << testitem->getName() << endl;
- cout << "Adding the item to your inventory" << endl;
- p->inventory->addItem(testitem);
-
- tempitem = p->inventory->Find(playername);
- cout << "Name: " << tempitem->getName() << endl;
- tempitem = p->inventory->Find(playername);
- cout << "Name: " << tempitem->getName() << endl;
- cout << "Testitem: " << &testitem << " Tempitem: " << &tempitem << endl;
-
-
- delete p;
+ // This is where you can test stuff
+ /*
+ string itemname;
+ item *tempitem;
+
+ cout << "Enter an item name: ";
+ cin >> itemname;
+ char num[16];
+ for (int x = 1; x < 6000001; x++)
+ {
+ sprintf(num, "%d", x);
+ tempitem = new weapon((itemname + num));
+ items.push_back(tempitem);
+ }
+
+ item *tester = items.front();
+ cout << tester->getName() << endl;
+ item *tester2 = items.back();
+ cout << tester2->getName() << endl;
+ items.clear();
+ */
}
end:
unload_config_file();
return 0;
}
-
+
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;