int maxbfightdistance; // Max levels below a player they can fight player->player
int maxidletime; // Max time (in seconds) a player can be idle for
int idlecheckperiod; // Period for checking every player's idle time
+int level1expire; // Days for level 1 players to expire
+int defaultexpire; // Days for other levels to expire
+long refreshperiod; // Period for refreshing players
long configflags; // Holds the bit representation of some boolean values
// Remote server stuff. This is used for the outgoing connection gameserv needs to make
char *playerdata; // File to store player data in
char *monsterdata; // File to load monster data from
+char *newsdata; // File to store news data in
char *pidfile; // Process ID file
#if defined(P10)
delete [] pidfile;
if (ignoreserverslist)
delete [] ignoreserverslist;
+ if (newsdata)
+ delete [] newsdata;
configflags = 0;
}
{
char *buf, *directive, *value;
- #define numdirectives 22
+ #define numdirectives 25
unload_config_file();
directives[12].desc = "WELCOMEDELAY - Delay (in seconds) to wait before welcoming new users to the network";
directives[13].desc = "FORESTFIGHTS - Number of forest fights players get every day";
directives[14].desc = "UPDATEPERIOD - Number of seconds between every player data save";
- directives[15].desc = "WELCOMEMSG - Message to send to new users on the network";
- directives[16].desc = "PIDFILE - Filename to store the gameserv process ID in";
- directives[17].desc = "MAXAFIGHTDISTANCE - The maximum number of levels above you "\
+ directives[15].desc = "PIDFILE - Filename to store the gameserv process ID in";
+ directives[16].desc = "MAXAFIGHTDISTANCE - The maximum number of levels above you "\
"that you can fight player->player";
- directives[18].desc = "MAXBFIGHTDISTANCE - The maximum number of levels below you "\
+ directives[17].desc = "MAXBFIGHTDISTANCE - The maximum number of levels below you "\
"that you can fight player->player";
- directives[19].desc = "MAXIDLETIME - The maximum amount of time (in seconds) "\
+ directives[18].desc = "MAXIDLETIME - The maximum amount of time (in seconds) "\
"that a player can be idle before something happens";
- directives[20].desc = "IDLECHECKPERIOD - The period (in seconds) in which the entire "\
+ directives[19].desc = "IDLECHECKPERIOD - The period (in seconds) in which the entire "\
"players list will be checked for idlers. See also: "\
"MAXIDLETIME";
- directives[21].desc = "LISTENONC_FOREST - True/False as to "\
+ directives[20].desc = "LISTENONC_FOREST - True/False as to "\
"whether or not to listen for forest "\
"commands on the forest channel";
+ directives[21].desc = "NEWSDATA - File to store daily news in";
+ directives[22].desc = "REFRESHPERIOD - Period (in seconds) to "\
+ "refresh players";
+ directives[23].desc = "LEVEL1EXPIRE - Amount of days until a "\
+ "level 1 player's account is deleted due to "\
+ "inactivity.";
+ directives[24].desc = "DEFAULTEXPIRE - Amount of days until a "\
+ "level 2 and above player's account is "\
+ "deleted due to inactivity";
configflags = 0;
updateperiod = stringtoint(value);
directives[14].done = true;
}
- else if (stricmp(directive, "WELCOMEMSG") == 0)
- {
- value = strtok(NULL, "");
- welcomemsg = new char[strlen(value) + 1];
- strcpy(welcomemsg, value);
- directives[15].done = true;
- }
else if (stricmp(directive, "PIDFILE") == 0)
{
value = strtok(NULL, " ");
pidfile = new char[strlen(value) + 1];
strcpy(pidfile, value);
- directives[16].done = true;
+ directives[15].done = true;
}
else if (stricmp(directive, "MAXAFIGHTDISTANCE") == 0)
{
value = strtok(NULL, " ");
maxafightdistance = stringtoint(value);
- directives[17].done = true;;
+ directives[16].done = true;;
}
else if (stricmp(directive, "MAXBFIGHTDISTANCE") == 0)
{
value = strtok(NULL, " ");
maxbfightdistance = stringtoint(value);
- directives[18].done = true;
+ directives[17].done = true;
}
else if (stricmp(directive, "MAXIDLETIME") == 0)
{
value = strtok(NULL, " ");
maxidletime = stringtoint(value);
- directives[19].done = true;
+ directives[18].done = true;
}
else if (stricmp(directive, "IDLECHECKPERIOD") == 0)
{
value = strtok(NULL, " ");
idlecheckperiod = stringtoint(value);
- directives[20].done = true;
+ directives[19].done = true;
}
else if (stricmp(directive, "LISTENONC_FOREST") == 0)
{
value = strtok(NULL, " ");
if (stricmp(value, "TRUE") == 0)
- setListenOnCF(configflags);
+ setListenOnCF();
+ directives[20].done = true;
+ }
+ else if (stricmp(directive, "NEWSDATA") == 0)
+ {
+ value = strtok(NULL, " ");
+ newsdata = new char [strlen(value) + 1];
+ strcpy(newsdata, value);
directives[21].done = true;
}
+ else if (stricmp(directive, "REFRESHPERIOD") == 0)
+ {
+ value = strtok(NULL, " ");
+ refreshperiod = stringtoint(value);
+ directives[22].done = true;
+ }
+ else if (stricmp(directive, "LEVEL1EXPIRE") == 0)
+ {
+ value = strtok(NULL, " ");
+ level1expire = stringtoint(value);
+ directives[23].done = true;
+ }
+ else if (stricmp(directive, "DEFAULTEXPIRE") == 0)
+ {
+ value = strtok(NULL, " ");
+ defaultexpire = stringtoint(value);
+ directives[24].done = true;
+ }
+ else if (stricmp(directive, "WELCOMEMSG") == 0)
+ {
+ // This directive is optional
+ value = strtok(NULL, "");
+ welcomemsg = new char[strlen(value) + 1];
+ strcpy(welcomemsg, value);
+ setWelcome();
+ }
else if (stricmp(directive, "USEPRIVMSG") == 0)
{
// This directive is optional
- setUsePrivmsg(configflags);
+ setUsePrivmsg();
+ }
+ else if (stricmp(directive, "BOPER") == 0)
+ {
+ // This directive is optional
+ setBOper();
}
else if (stricmp(directive, "IGNORESERVERS") == 0)
{