]>
jfr.im git - irc/gameservirc.git/blob - gameserv/devel.cpp
18 char *PACKAGE
= "GameServ";
19 char *VERSION
= "1.3.2 +devel";
24 list
<aClient
*> clients
[U_TABLE_SIZE
];
27 void save_lastrefresh();
28 void load_lastrefresh();
32 int main(int argc
, char *argv
[])
34 char buffer
[1024], buf
[1024];
35 memset(buffer
, 0, 1024);
42 strcpy(conf
, "gameserv.conf");
45 * This needs to be fixed to work for any number of arguments in any
51 if ( argc
> 2 || stricmp(argv
[1], "--help") == 0)
53 cout
<< "Usage: gameserv [options] [configfile]" << endl
;
54 cout
<< "Options:" << endl
;
55 cout
<< "--help Displays this help dialogue" << endl
;
64 if (load_config_file(conf
))
66 cout
<< "Config file loaded ok...\n"
67 << "Turning into a daemon" << endl
;
79 perror("Could not turn into a daemon");
85 loadNews(newsdata
, todaysnews
);
87 if (load_masters() == false)
89 log("Error loading masters");
93 if (load_monsters() == false)
95 log("Error loading monsters");
101 log("Error loading dragon");
105 if (load_levels() == false)
107 log("Error loading levels");
111 shuttingdown
= false;
113 char ignoreservers
[32][256];
115 currentserver
= strtok(ignoreserverslist
, " ");
116 for (int server
= 0; server
< 32 && currentserver
!= NULL
; server
++)
118 strncpy(ignoreservers
[server
], currentserver
, 255);
119 log("Placing %s on the server ignore list", currentserver
);
120 currentserver
= strtok(NULL
, " ");
123 // This loop will retry the connection 3 times
128 aClient
*tempPtr
, *tempPtr2
;
130 list
<aClient
*>::iterator iter
;
131 char *nick
= "testing";
132 unsigned long hv
= iHASH((unsigned char *) nick
);
133 tempPtr
= new aClient(nick
);
134 tempPtr2
= new aClient("testing2");
136 tempPtr
->stats
= new Player
;
137 clients
[hv
].push_back(tempPtr
);
138 clients
[hv
].push_back(tempPtr
);
139 clients
[hv
].push_back(tempPtr
);
140 clients
[hv
].push_back(tempPtr
);
141 clients
[hv
].push_back(tempPtr2
);
142 clients
[hv
].push_back(tempPtr2
);
143 clients
[hv
].push_back(tempPtr2
);
144 delete tempPtr
->stats
;
147 tempPtr
= find(nick
);
150 //iter = find((clients[0].begin()), (clients[0].end()), tempPtr);
151 // cout << "Nick: " << (*iter)->getNick() << endl;
152 clients
[hv
].remove(tempPtr
);
153 for (unsigned long x
= 0; x
< U_TABLE_SIZE
; x
++)
155 for (iter
= clients
[x
].begin(); iter
!= clients
[x
].end(); iter
++)
157 cout
<< (*iter
)->getNick() << endl
;
163 // This is where you can test stuff
168 cout << "Enter an item name: ";
171 for (int x = 1; x < 6000001; x++)
173 sprintf(num, "%d", x);
174 tempitem = new weapon((itemname + num));
175 items.push_back(tempitem);
178 item *tester = items.front();
179 cout << tester->getName() << endl;
180 item *tester2 = items.back();
181 cout << tester2->getName() << endl;
190 saveNews(newsdata
, todaysnews
);
198 unload_config_file();
202 aClient
*find(char *nick
)
204 return findbynick(nick
);
207 aClient
*find(const char *nick
)
209 return findbynick(nick
);
214 aClient
*findbyrealnick(char *realnick
)
216 ListNode
<aClient
*> *newPtr
;
217 unsigned long hv
= sHASH((unsigned char *) realnick
);
218 newPtr
= clients
[hv
].First();
220 aClient
*client
= NULL
;
224 client
= newPtr
->getData();
225 if (stricmp(client
->getRealNick(), realnick
) == 0)
228 newPtr
= newPtr
->Next();
235 aClient
*findbyrealnick(char *realnick
)
237 return findbynick(realnick
);
242 aClient
*findbynick(char *nick
)
244 list
<aClient
*>::iterator iter
;
246 unsigned long hv
= sHASH((unsigned char *) nick
);
248 unsigned long hv
= iHASH((unsigned char *) nick
);
251 aClient
*client
= NULL
;
253 for(iter
= clients
[hv
].begin(); iter
!= clients
[hv
].end(); iter
++)
257 if (strcmp(client
->getNick(), nick
) == 0)
260 if (stricmp(client
->getNick(), nick
) == 0)
270 aClient
*findIRCplayer(const char *nick
)
272 list
<aClient
*>::iterator iter
;
280 unsigned long hv
= iHASH((unsigned char *) p
->stats
->getName().c_str());
282 for (iter
= players
[hv
].begin(); iter
!= players
[hv
].end(); iter
++)
286 if (strcmp(p
->getNick(), nick
) == 0)
289 if (stricmp(p
->getNick(), nick
) == 0)
298 aClient
*findplayer(const char *name
)
300 list
<aClient
*>::iterator iter
;
302 unsigned long hv
= iHASH((unsigned char *) name
);
303 for (iter
= players
[hv
].begin(); iter
!= players
[hv
].end(); iter
++)
306 if (stricmp(p
->getName().c_str(), name
) == 0)
315 list
<aClient
*>::iterator iter
;
319 for (int x
= 0; x
< U_TABLE_SIZE
; x
++)
321 for (iter
= players
[x
].begin(); iter
!= players
[x
].end(); iter
++)
325 switch(p
->getLevel())
328 if ((time(NULL
) - p
->lastlogin
) / 86400 >= level1expire
)
331 players
[x
].remove((*iter
));
337 if ((time(NULL
) - p
->lastlogin
) / 86400 >= defaultexpire
)
340 players
[x
].remove((*iter
));
353 aClient
*findbynick(const char *nick
)
355 list
<aClient
*>::iterator iter
;
357 unsigned long hv
= sHASH((unsigned char *) nick
);
359 unsigned long hv
= iHASH((unsigned char *) nick
);
362 aClient
*client
= NULL
;
364 for (iter
= clients
[hv
].begin(); iter
!= clients
[hv
].end(); iter
++)
368 if (strcmp(client
->getNick(), nick
) == 0)
370 if (stricmp(client
->getNick(), nick
) == 0)
381 cout
<< " GGGG AAA MM MM EEEEEEE SSSSS EEEEEEE RRRRRR VV VV " << endl
;
382 cout
<< " GG GG AAAAA MMM MMM EE SS EE RR RR VV VV " << endl
;
383 cout
<< "GG AA AA MM MM MM EEEEE SSSSS EEEEE RRRRRR VV VV " << endl
;
384 cout
<< "GG GGG AAAAAAA MM MM EE SS EE RR RR VV VV " << endl
;
385 cout
<< "G G AA AA MM MM EEEEEEE SSSSS EEEEEEE RR RR VVV" << endl
;
386 cout
<< " GGGGG V\n\n" << endl
;
387 cout
<< "Version: " << VERSION
<< endl
;
390 void load_lastrefresh()
393 infile
.open(".gsrefresh");
397 log("Error opening .gsrefresh");
401 long mytime
= time(NULL
);
403 log("Generating new refresh time");
406 // Just a safety measure... tho no one should
407 // get anywhere near the time as their refreshperiod
408 if (refreshperiod
>= mytime
)
409 refreshperiod
= 86400;
411 lastrefresh
= mytime
- (mytime
% refreshperiod
);
416 infile
>> lastrefresh
;
422 void save_lastrefresh()
426 outfile
.open(".gsrefresh");
430 log("Error creating new file .gsrefresh");
433 outfile
<< lastrefresh
<< endl
;