X was killed for being an AFK.
Code: Select all
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
new const Version[] = "0.4";
#define MAX_PLAYERS 32
const ButtonBits = ( IN_FORWARD | IN_BACK | IN_MOVELEFT | IN_MOVERIGHT | IN_JUMP | IN_DUCK | IN_USE | IN_ATTACK | IN_ATTACK2 | IN_SCORE );
new g_LastMoveTime[ MAX_PLAYERS + 1 ];
new g_iSysTime;
new g_pSlayTime;
new g_pFreezeTime;
new bool:g_bInRound;
public plugin_init()
{
register_plugin( "AFK Slay" , Version , "bugsy" );
g_pSlayTime = register_cvar( "as_slaytime" , "30" );
g_pFreezeTime = get_cvar_pointer( "mp_freezetime" );
RegisterHam( Ham_Spawn , "player" , "HamSpawn_Post" , true );
register_forward( FM_CmdStart , "CmdStart" );
register_logevent( "RoundStart" , 2 , "1=Round_Start" );
register_logevent( "RoundEnd" , 2 , "1=Round_End" );
set_task( 1.0 , "CheckAFK" , .flags="b" );
}
public HamSpawn_Post( iPlayer )
{
if ( is_user_alive( iPlayer ) )
{
g_LastMoveTime[ iPlayer ] = g_iSysTime + ( g_bInRound ? 0 : get_pcvar_num( g_pFreezeTime ) );
}
}
public RoundStart()
{
g_bInRound = true;
}
public RoundEnd()
{
g_bInRound = false;
}
public CmdStart( id , handle , seed )
{
if ( g_bInRound && ( get_uc( handle , UC_Buttons ) & ButtonBits ) )
{
g_LastMoveTime[ id ] = g_iSysTime;
}
}
public CheckAFK()
{
new iPlayers[ 32 ] , iNum , iPlayer;
g_iSysTime = get_systime();
get_players( iPlayers , iNum , "ae" , "CT" );
for ( new i = 0 ; i < iNum ; i++ )
{
iPlayer = iPlayers[ i ];
if ( g_LastMoveTime[ iPlayer ] && ( ( g_iSysTime - g_LastMoveTime[ iPlayer ] ) >= get_pcvar_num( g_pSlayTime ) ) )
{
user_kill( iPlayer );
}
}
}