I put this together for you so you can get an idea for what I recommended above:
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
new const Version[] = "0.1";
#define MAX_PLAYERS 32
const DaySeconds = 86400;
new g_Vault , g_szAuthID[ MAX_PLAYERS + 1 ][ 34 ];
public plugin_init()
{
register_plugin( "Temp Admin" , Version , "bugsy" );
register_concmd( "add_admin" , "AddAdmin" );
register_concmd( "remove_admin" , "RemoveAdmin" );
g_Vault = nvault_open( "tempAdmin" );
}
public plugin_end()
{
nvault_close( g_Vault );
}
public client_authorized( id )
{
new szFlags[ 25 ] , iTS , szMsg[ 64 ];
get_user_authid( id , g_szAuthID[ id ] , charsmax( g_szAuthID[] ) );
//Check if user has a record in the vault
if ( nvault_lookup( g_Vault , g_szAuthID[ id ] , szFlags , charsmax( szFlags ) , iTS ) )
{
//A record exists, check if the timestamp for the record is greater than now.
//If it is, then this player should be given flags because his time has not expired yet.
if ( iTS > get_systime() )
{
formatex( szMsg , charsmax( szMsg ) , "* You have admin for %0.1f more days" , float( iTS - get_systime() ) / float( DaySeconds ) );
set_user_flags( id , read_flags( szFlags ) );
}
else
{
copy( szMsg , charsmax( szMsg ) , "* You no longer have admin powers" );
nvault_remove( g_Vault , g_szAuthID[ id ] );
}
set_task( 7.0 , "PrintMsg" , id , szMsg , sizeof( szMsg ) );
}
}
public client_disconnect( id )
{
remove_task( id );
}
public PrintMsg( const szMsg[] , id )
{
client_print( id , print_chat , szMsg );
}
public AddAdmin( id )
{
new iPlayer , szPlayer[ 33 ] , iDays , szDays[ 4 ] , szFlags[ 25 ];
read_argv( 1 , szPlayer , charsmax( szPlayer ) );
if ( ( iPlayer = cmd_target( id , szPlayer ) ) )
{
read_argv( 2 , szDays , charsmax( szDays ) );
read_argv( 3 , szFlags , charsmax( szFlags ) );
iDays = str_to_num( szDays );
//Set a record in the vault and then set the timestamp for when the temp admin period ends.
//This is done using a unix timestamp: now + X days..
nvault_set( g_Vault , g_szAuthID[ iPlayer ] , szFlags );
nvault_touch( g_Vault , g_szAuthID[ iPlayer ] , get_systime() + ( iDays * DaySeconds ) );
client_print( iPlayer , print_chat , "* You have been given admin for %d days" , iDays );
}
}
public RemoveAdmin( id )
{
nvault_remove( g_Vault , g_szAuthID[ id ] );
}
__________________