]>
jfr.im git - irc/gameservirc.git/blob - gameserv/devel.cpp
17 char *PACKAGE
= "GameServ";
18 char *VERSION
= "1.2.6 +devel";
22 List
<aClient
> clients
[U_TABLE_SIZE
];
25 void save_lastrefresh();
26 void load_lastrefresh();
31 int main(int argc
, char *argv
[])
33 char buffer
[1024], buf
[1024];
34 memset(buffer
, 0, 1024);
41 strcpy(conf
, "gameserv.conf");
44 * This needs to be fixed to work for any number of arguments in any
50 if ( argc
> 2 || stricmp(argv
[1], "--help") == 0)
52 cout
<< "Usage: gameserv [options] [configfile]" << endl
;
53 cout
<< "Options:" << endl
;
54 cout
<< "--help Displays this help dialogue" << endl
;
63 if (load_config_file(conf
))
65 cout
<< "Config file loaded ok...\n"
66 << "Turning into a daemon" << endl
;
78 perror("Could not turn into a daemon");
84 loadNews(newsdata
, todaysnews
);
86 if (load_masters() == false)
88 log("Error loading masters");
92 if (load_monsters() == false)
94 log("Error loading monsters");
100 log("Error loading dragon");
104 if (load_levels() == false)
106 log("Error loading levels");
110 shuttingdown
= false;
112 char ignoreservers
[32][256];
114 currentserver
= strtok(ignoreserverslist
, " ");
115 for (int server
= 0; server
< 32 && currentserver
!= NULL
; server
++)
117 strncpy(ignoreservers
[server
], currentserver
, 255);
118 log("Placing %s on the server ignore list", currentserver
);
119 currentserver
= strtok(NULL
, " ");
122 // This loop will retry the connection 3 times
128 item
*tester
= items
.front();
129 cout
<< tester
->getName() << endl
;
130 item
*tester2
= items
.back();
131 cout
<< tester2
->getName() << endl
;
136 // This is where you can test stuff
141 cout << "Enter an item name: ";
144 for (int x = 1; x < 6000001; x++)
146 sprintf(num, "%d", x);
147 tempitem = new weapon((itemname + num));
148 items.push_back(tempitem);
151 item *tester = items.front();
152 cout << tester->getName() << endl;
153 item *tester2 = items.back();
154 cout << tester2->getName() << endl;
163 saveNews(newsdata
, todaysnews
);
171 unload_config_file();
177 // This is where you can test stuff
181 cout
<< "Enter an item name: ";
185 testing
= new char[80];
186 strncpy(testing
, "1~1~Stick~200~-1~15~0~0~0", 80);
187 for (int x
= 1; x
< 6000001; x
++)
189 sprintf(num
, "%d", x
);
190 tempitem
= new weapon("blah");
191 if (!tempitem
->setData(testing
))
193 cout
<< "Error in setData()" << endl
;
196 items
.push_back(tempitem
);
200 aClient
*find(char *nick
)
202 return findbynick(nick
);
205 aClient
*find(const char *nick
)
207 return findbynick(nick
);
212 aClient
*findbyrealnick(char *realnick
)
214 ListNode
<aClient
> *newPtr
;
215 unsigned long hv
= sHASH((unsigned char *) realnick
);
216 newPtr
= clients
[hv
].First();
218 aClient
*client
= NULL
;
222 client
= newPtr
->getData();
223 if (stricmp(client
->getRealNick(), realnick
) == 0)
226 newPtr
= newPtr
->Next();
233 aClient
*findbyrealnick(char *realnick
)
235 return findbynick(realnick
);
240 aClient
*findbynick(char *nick
)
242 ListNode
<aClient
> *newPtr
;
244 unsigned long hv
= sHASH((unsigned char *) nick
);
246 unsigned long hv
= iHASH((unsigned char *) nick
);
249 newPtr
= clients
[hv
].First();
251 aClient
*client
= NULL
;
255 client
= newPtr
->getData();
257 if (strcmp(client
->getNick(), nick
) == 0)
259 if (stricmp(client
->getNick(), nick
) == 0)
263 newPtr
= newPtr
->Next();
268 aClient
*findIRCplayer(const char *nick
)
270 ListNode
<aClient
> *newPtr
;
278 unsigned long hv
= iHASH((unsigned char *) p
->stats
->name
.c_str());
280 for (newPtr
= players
[hv
].First(); newPtr
; newPtr
= newPtr
->Next())
282 p
= newPtr
->getData();
284 if (strcmp(p
->getNick(), nick
) == 0)
286 if (stricmp(p
->getNick(), nick
) == 0)
294 aClient
*findplayer(const char *name
)
296 ListNode
<aClient
> *newPtr
;
298 unsigned long hv
= iHASH((unsigned char *) name
);
299 for (newPtr
= players
[hv
].First(); newPtr
; newPtr
= newPtr
->Next())
301 p
= newPtr
->getData()->stats
;
302 if (stricmp(p
->name
.c_str(), name
) == 0)
303 return newPtr
->getData();
311 ListNode
<aClient
> *newPtr
;
314 for (int x
= 0; x
< U_TABLE_SIZE
; x
++)
316 for (newPtr
= players
[x
].First(); newPtr
; newPtr
= newPtr
->Next())
318 p
= newPtr
->getData()->stats
;
322 if ((time(NULL
) - p
->lastlogin
) / 86400 >= level1expire
)
324 logout(newPtr
->getData());
325 players
[x
].remove(newPtr
->getData());
331 if ((time(NULL
) - p
->lastlogin
) / 86400 >= defaultexpire
)
333 logout(newPtr
->getData());
334 players
[x
].remove(newPtr
->getData());
347 aClient
*findbynick(const char *nick
)
349 ListNode
<aClient
> *newPtr
;
351 unsigned long hv
= sHASH((unsigned char *) nick
);
353 unsigned long hv
= iHASH((unsigned char *) nick
);
356 newPtr
= clients
[hv
].First();
358 aClient
*client
= NULL
;
362 client
= newPtr
->getData();
364 if (strcmp(client
->getNick(), nick
) == 0)
366 if (stricmp(client
->getNick(), nick
) == 0)
370 newPtr
= newPtr
->Next();
378 cout
<< " GGGG AAA MM MM EEEEEEE SSSSS EEEEEEE RRRRRR VV VV " << endl
;
379 cout
<< " GG GG AAAAA MMM MMM EE SS EE RR RR VV VV " << endl
;
380 cout
<< "GG AA AA MM MM MM EEEEE SSSSS EEEEE RRRRRR VV VV " << endl
;
381 cout
<< "GG GGG AAAAAAA MM MM EE SS EE RR RR VV VV " << endl
;
382 cout
<< "G G AA AA MM MM EEEEEEE SSSSS EEEEEEE RR RR VVV" << endl
;
383 cout
<< " GGGGG V\n\n" << endl
;
384 cout
<< "Version: " << VERSION
<< endl
;
387 void load_lastrefresh()
390 infile
.open(".gsrefresh");
394 log("Error opening .gsrefresh");
398 long mytime
= time(NULL
);
400 log("Generating new refresh time");
403 // Just a safety measure... tho no one should
404 // get anywhere near the time as their refreshperiod
405 if (refreshperiod
>= mytime
)
406 refreshperiod
= 86400;
408 lastrefresh
= mytime
- (mytime
% refreshperiod
);
413 infile
>> lastrefresh
;
419 void save_lastrefresh()
423 outfile
.open(".gsrefresh");
427 log("Error creating new file .gsrefresh");
430 outfile
<< lastrefresh
<< endl
;