void check_auth_state( char_data * ch ) { auth_data *old_auth; if( !( old_auth = get_auth_name( ch->name ) ) ) return; if( old_auth->state == AUTH_OFFLINE || old_auth->state == AUTH_LINK_DEAD ) { old_auth->state = AUTH_ONLINE; save_auth_list( ); } else if( old_auth->state == AUTH_CHANGE_NAME ) { ch->printf( "&R\r\nThe MUD Administrators have found the name %s\r\n" "to be unacceptable. You must choose a new one.\r\n" "The name you choose must be medieval and original.\r\n" "No titles, descriptive words, or names close to any existing\r\n" "Immortal's name. See 'help name'.\r\n", ch->name ); } else if( old_auth->state == AUTH_AUTHED ) { ch->pcdata->authed_by.clear( ); if( !old_auth->authed_by.empty( ) ) { ch->pcdata->authed_by = old_auth->authed_by; old_auth->authed_by.clear( ); } else ch->pcdata->authed_by = "The Code"; ch->printf( "\r\n>he MUD Administrators have accepted the name %s.\r\nYou are now free to roam %s.\r\n", ch->name, sysdata->mud_name.c_str( ) ); ch->unset_pcflag( PCFLAG_UNAUTHED ); remove_from_auth( ch->name ); } }
void fread_pfile( FILE * fp, time_t tdiff, char *fname, bool count ) { char *word; char *name = NULL; char *clan = NULL; short level = 0; short file_ver = 0; int pact2; bool fMatch; ROOM_INDEX_DATA *plr_home; char homebuf[MSL]; for( ;; ) { word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER( word[0] ) ) { case '*': fMatch = TRUE; fread_to_eol( fp ); break; case 'A': KEY( "Act2", pact2, fread_number( fp ) ); break; case 'C': KEY( "Clan", clan, fread_string( fp ) ); break; case 'E': if( !strcmp( word, "End" ) ) goto timecheck; break; case 'T': KEY( "Toplevel", level, fread_number( fp ) ); break; case 'N': KEY( "Name", name, fread_string( fp ) ); break; case 'P': if ( !str_cmp( word, "PlrHome" ) ) { plr_home = get_room_index( fread_number( fp ) ); break; } break; case 'V': KEY( "Version", file_ver, fread_number( fp ) ); break; } if( !fMatch ) fread_to_eol( fp ); } timecheck: if( count == FALSE && !IS_SET( pact2, ACT_EXEMPT ) ) { if( (level < 10) && (tdiff > sysdata.newbie_purge) ) { if( unlink( fname ) == -1 ) perror( "Unlink" ); else { sprintf( homebuf, "%s%c/%s.home", PLAYER_DIR, tolower(name[0]), name); if ( !remove(homebuf) ) { STRFREE( plr_home->name ); plr_home->name = STRALLOC( "An Empty Apartment" ); REMOVE_BIT( plr_home->room_flags , ROOM_PLR_HOME ); SET_BIT( plr_home->room_flags , ROOM_EMPTY_HOME ); fold_area( plr_home->area, plr_home->area->filename, FALSE ); } days = sysdata.newbie_purge; sprintf( log_buf, "Player %s was deleted. Exceeded time limit of %d days.", name, days ); log_string( log_buf ); #ifdef AUTO_AUTH remove_from_auth( name ); #endif deleted++; } } if( (level < LEVEL_IMMORTAL) && (tdiff > sysdata.regular_purge) ) { if( level < LEVEL_IMMORTAL ) { if( unlink( fname ) == -1 ) perror( "Unlink" ); else { sprintf( homebuf, "%s%c/%s.home", PLAYER_DIR, tolower(name[0]), name); if ( !remove(homebuf) ) { STRFREE( plr_home->name ); plr_home->name = STRALLOC( "An Empty Apartment" ); REMOVE_BIT( plr_home->room_flags , ROOM_PLR_HOME ); SET_BIT( plr_home->room_flags , ROOM_EMPTY_HOME ); fold_area( plr_home->area, plr_home->area->filename, FALSE ); } days = sysdata.regular_purge; sprintf( log_buf, "Player %s was deleted. Exceeded time limit of %d days.", name, days ); log_string( log_buf ); #ifdef AUTO_AUTH remove_from_auth( name ); #endif deleted++; } } } } if( clan != NULL ) { CLAN_DATA *guild = get_clan( clan ); if( guild ) guild->members++; } if( name ) STRFREE(name); if( clan ) STRFREE(clan); return; }
void fread_pfile( FILE * fp, time_t tdiff, char *fname, bool count ) { const char *word; char *name = NULL; char *clan = NULL; char *deity = NULL; short level = 0; short file_ver = 0; EXT_BV pact; bool fMatch; for( ;; ) { word = feof( fp ) ? "End" : fread_word( fp ); fMatch = FALSE; switch ( UPPER( word[0] ) ) { case '*': fMatch = TRUE; fread_to_eol( fp ); break; case 'A': KEY( "Act", pact, fread_bitvector( fp ) ); break; case 'C': KEY( "Clan", clan, fread_string( fp ) ); break; case 'D': KEY( "Deity", deity, fread_string( fp ) ); break; case 'E': if( !strcmp( word, "End" ) ) goto timecheck; break; case 'L': KEY( "Level", level, fread_number( fp ) ); break; case 'N': KEY( "Name", name, fread_string( fp ) ); break; case 'V': KEY( "Version", file_ver, fread_number( fp ) ); break; } if( !fMatch ) fread_to_eol( fp ); } timecheck: if( count == FALSE && !xIS_SET( pact, PLR_EXEMPT ) ) { if( level < 10 && tdiff > sysdata.newbie_purge ) { if( unlink( fname ) == -1 ) perror( "Unlink" ); else { days = sysdata.newbie_purge; snprintf( log_buf, MAX_STRING_LENGTH, "Player %s was deleted. Exceeded time limit of %d days.", name, days ); log_string( log_buf ); #ifdef AUTO_AUTH remove_from_auth( name ); #endif deleted++; return; } } if( level < LEVEL_IMMORTAL && tdiff > sysdata.regular_purge ) { if( level < LEVEL_IMMORTAL ) { if( unlink( fname ) == -1 ) perror( "Unlink" ); else { days = sysdata.regular_purge; snprintf( log_buf, MAX_STRING_LENGTH, "Player %s was deleted. Exceeded time limit of %d days.", name, days ); log_string( log_buf ); #ifdef AUTO_AUTH remove_from_auth( name ); #endif deleted++; return; } } } } if( clan != NULL ) { CLAN_DATA *guild = get_clan( clan ); if( guild ) guild->members++; } if( deity != NULL ) { DEITY_DATA *god = get_deity( deity ); if( god ) god->worshippers++; } if( clan ) STRFREE( clan ); if( name ) STRFREE( name ); if( deity ) STRFREE( deity ); return; }