Untested
PHP Code:
#include <amxmodx>
#include <hamsandwich>
#include <engine>
#define MAX_PLAYERS 32
enum LimitTypes
{
Immunity,
Kick,
Reservation
}
new const TriggerLimit[ LimitTypes ] =
{
999999,
2,
1
};
enum PlayerData
{
TriggerCount,
LimitTypes:LimitType
}
new g_TriggerData[ MAX_PLAYERS + 1 ][ PlayerData ];
public plugin_init()
{
RegisterHam( Ham_TraceAttack , "func_button" , "Ham_UseButton" )
register_logevent( "RoundStart" , 2 , "1=Round_Start" )
}
public client_authorized( id )
{
new iFlags = get_user_flags( id );
if ( iFlags & ADMIN_IMMUNITY )
{
g_TriggerData[ id ][ LimitType ] = Immunity;
}
else if ( iFlags & ADMIN_KICK )
{
g_TriggerData[ id ][ LimitType ] = Kick;
}
else if ( iFlags & ADMIN_RESERVATION )
{
g_TriggerData[ id ][ LimitType ] = Reservation;
}
}
public Ham_UseButton( iEnt , iAttacker , Float:fDamage , Float:vDirection[ 3 ] , TraceHandle , iDamageBits )
{
if( ( g_TriggerData[ iAttacker ][ TriggerCount ] < TriggerLimit[ g_TriggerData[ iAttacker ][ LimitType ] ] ) && is_valid_ent( iEnt ) && is_user_alive( iAttacker ) )
{
ExecuteHamB( Ham_Touch , iEnt , iAttacker )
entity_set_float( iEnt , EV_FL_frame , 0.0 )
g_TriggerData[ iAttacker ][ TriggerCount ]++;
}
}
public RoundStart()
{
for ( new i = 0 ; i < sizeof( g_TriggerData ) ; i++ )
g_TriggerData[ i ][ TriggerCount ] = 0;
}
__________________