Code:
#include < amxmodx >
// interval between name changes in seconds
#define NAME_CHANGE_WAIT 10
new Float:g_fLastNameChange[ 33 ];
public plugin_init( )
{
register_plugin( "Name Change Wait", "0.0.1", "Exolent" );
register_message( get_user_msgid( "SayText" ), "MessageSayText" );
}
public client_disconnect( iPlayer )
{
g_fLastNameChange[ iPlayer ] = 0.0;
}
public client_infochanged( iPlayer )
{
new szNewName[ 32 ], szOldName[ 32 ];
get_user_info( iPlayer, "name", szNewName, 31 );
get_user_name( iPlayer, szOldName, 31 );
if( !equal( szNewName, szOldName ) )
{
new Float:fGametime = get_gametime( );
new Float:fDiff = g_fLastNameChange[ iPlayer ] + NAME_CHANGE_WAIT - fGametime;
if( fDiff > 0.0 )
{
set_user_info( iPlayer, "name", szOldName );
client_print( iPlayer, print_center, "You must wait %.1f seconds before changing you name.", fDiff );
}
else
{
g_fLastNameChange[ iPlayer ] = fGametime;
}
}
}
public MessageSayText( iMsgID, iDest, iReceiver )
{
static const Cstrike_Name_Change[ ] = "#Cstrike_Name_Change";
new szMessage[ sizeof( Cstrike_Name_Change ) + 1 ];
get_msg_arg_string( 2, szMessage, sizeof( szMessage ) - 1 );
if( equal( szMessage, Cstrike_Name_Change ) )
{
new szName[ 32 ], iPlayer;
for( new i = 3; i <= 4; i++ )
{
get_msg_arg_string( i, szName, 31 );
iPlayer = get_user_index( szName );
if( is_user_connected( iPlayer ) )
{
if( ( g_fLastNameChange[ iPlayer ] + NAME_CHANGE_WAIT ) > get_gametime( ) )
{
return PLUGIN_HANDLED;
}
break;
}
}
}
return PLUGIN_CONTINUE;
}