#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "emlen.h"
bool
is_cheating (CHAR_DATA * ch) /*TRUE IF CHEAT, FALSE IF NO */
{
return FALSE;
}
void
load_playerbase (void)
{
FILE *fp;
PLAYERBASE_DATA *play;
char buff[500];
playerbase_zero = NULL;
if ((fp = fopen ("pbase.dat", "r")) == NULL)
{
return;
}
while (1)
{
strcpy (buff, fread_word (fp));
if (!str_cmp (buff, "END"))
break;
play = new_player ();
strcpy (play->player_name, buff);
strcpy (buff, fread_word (fp));
strcpy (play->email_address, buff);
play->player_last_login = fread_number (fp);
play->player_good = fread_number (fp);
play->player_level = fread_number (fp);
play->player_nodelete = fread_number (fp);
}
fclose (fp);
return;
}
void
reload_pbase (CHAR_DATA * ch, char *argy)
{
PLAYERBASE_DATA *play;
PLAYERBASE_DATA *pn;
DEFINE_COMMAND ("z_reload_pbase", reload_pbase, POSITION_DEAD, 110, LOG_ALWAYS, "This command reloads the pbase datafile.")
for (play = playerbase_zero; play != NULL; play = pn)
{
pn = play->next;
free (play);
}
load_playerbase ();
return;
}
void
p_refresh (CHAR_DATA * ch, char *argy)
{
char buf[200];
DEFINE_COMMAND ("z_refresh", p_refresh, POSITION_DEAD, 110, LOG_ALWAYS, "Resets all players' inactivity counters.")
sprintf (buf, "util -refresh");
system (buf);
reload_pbase (ch, argy);
return;
}
void
clean_up (CHAR_DATA * ch, char *argy)
{
char buf[200];
DEFINE_COMMAND ("z_clean_pfile", clean_up, POSITION_DEAD, 110, LOG_ALWAYS, "Deletes pfiles of all people not in the pfile database!! Dangerous.")
sprintf (buf, "util -cleanup &");
system (buf);
return;
}
void
clean_oldchars (CHAR_DATA * ch, char *argy)
{
char buf[200];
DEFINE_COMMAND ("z_clean_oldchars", clean_oldchars, POSITION_DEAD, 110, LOG_ALWAYS, "Cleans up people who haven't logged in for quite a while. Lags the mud.")
sprintf (buf, "util -deleteold");
system (buf);
reload_pbase (ch, argy);
return;
}
void
update_pbase (CHAR_DATA * ch)
{
bool ffund;
PLAYERBASE_DATA *player;
ffund = FALSE;
if (!str_cmp (NAME (ch), "Orin"))
return;
for (player = playerbase_zero; player != NULL; player = player->next)
{
if (player->player_level != -1 && !str_cmp (player->player_name, NAME (ch)))
{
if (ch->pcdata->level != ((player->player_level > 200) ? (player->player_level - 200) : player->player_level))
{
player->player_last_login = (int) ch->pcdata->logon;
if (player->email_address[0] == '\0')
strcpy (player->email_address, ch->pcdata->email);
player->player_good = !(IS_EVIL (ch));
player->player_level = ((ch->pcdata->remort_times > 0) ? (ch->pcdata->level + 200) : ch->pcdata->level);
save_playerbase ();
return;
}
ffund = TRUE;
break;
}
}
if (ffund == FALSE)
{
bool isfree;
isfree = FALSE;
player = new_player ();
strcpy (player->player_name, NAME (ch));
player->player_last_login = (int) ch->pcdata->logon;
player->player_good = !(IS_EVIL (ch));
strcpy (player->email_address, ch->pcdata->email);
player->player_level = ch->pcdata->level;
player->player_nodelete = FALSE;
isfree = TRUE;
save_playerbase ();
}
return;
}
void
fcheck_pbase (char *n)
{
bool ffund;
PLAYERBASE_DATA *player;
ffund = FALSE;
if (!str_cmp (n, "Orin"))
return;
for (player = playerbase_zero; player != NULL; player = player->next)
{
if (!str_cmp (player->player_name, n))
return;
}
player = new_player ();
strcpy (player->player_name, n);
player->player_last_login = (int) current_time;
player->player_good = 1;
strcpy (player->email_address, "not_recorded_yet");
player->player_level = 5;
player->player_nodelete = FALSE;
save_playerbase ();
return;
}