/**
* rmplayer - deletes a player's save file and all related files.
*/
#include <login.h>
inherit COMMAND_BASE;
/** @ignore yes */
private void sure( string response, string player ) {
if( PO ) {
user_event("inform", "Illegal attempt to delete a player in "+
file_name(TO)+".", "admin");
unguarded( (: log_file, "CHEAT", ctime(time())+": illegal attempt "
"to delete a player.\nTrace: " + back_trace() :) );
write("No.\n");
return;
}
if( response == "YES" ) {
string olduid;
if( find_player(player) ) {
write("Sorry, you cannot delete an online player.\n");
return;
}
write("Ok. Deleting...\n");
olduid = geteuid();
seteuid("Root");
if( adminp(TP) ) {
BULK_DELETE_H->delete_related_files( player, 1 );
if( file_exists( LOGIN_OBJ->query_player_file_name(player)+".o") )
unguarded( (: rm,
LOGIN_OBJ->query_player_file_name(player)+".o" :) );
if( file_exists(
LOGIN_OBJ->query_delete_player_file_name(player)+".o") )
unguarded( (: rm,
LOGIN_OB->query_delete_player_file_name(player)+".o" :) );
} else {
user_event("inform", "Illegal attempt to delete a player in "+
file_name(TO)+".", "admin");
unguarded( (: log_file, "CHEAT", ctime(time())+": illegal attempt "
"to delete a player.\nTrace: " + back_trace() :) );
}
seteuid(olduid);
return;
}
write("Ok. Not deleting\n");
return;
} /* sure() */
/** @ignore yes */
protected int cmd( string player ) {
if( !adminp( previous_object(-1)) ) {
unguarded( (: log_file, "CHEAT", ctime(time())+
": illegal attempt to delete a player.\nTrace: "+back_trace() :) );
return notify_fail("Sorry: only admin can delete players.\n");
}
if( find_player(player) )
return notify_fail("Sorry, you cannot delete online players.\n");
if( creatorp(player) )
return notify_fail("Sorry, but "+player+" is a creator, please "
"demote them first.\n");
if( !PLAYER_H->test_user(player) )
return notify_fail("Sorry, but "+player+" isn't a player.\n");
if( !adminp(previous_object(-1) ) && adminp(player) ) {
unguarded( (: log_file, "CHEAT", ctime(time())+": Illegal attempt "
"to delete an Admin.\nTrace: "+back_trace() :) );
return notify_fail("Sorry. You cannot delete an admin.\n");
}
write("This will permanently delete the player " + player + ".\n" +
"THIS IS PERMANENT.\n" +
"Are you sure? (only \"YES\" will delete the player) ");
input_to( (: sure :), 0, player );
return 1;
} /* cmd() */
/** @ignore yes */
mixed query_patterns() {
return ({ "<word'player name'>", (: cmd($4[0]) :) });
} /* query_patterns() */