Not tested.
Code:
#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <fun>
#define IsPlayer(%1) (1<=%1<=maxplayers)
new bool:b_Rebel[33] // rebel or not
new iKills[33] // non-rebels killed
new varKills
new maxplayers
public plugin_init()
{
register_plugin( "Rebel System", "1.0", "Wrecked" ) // :avast:
register_event( "DeathMsg", "EVENT_DeathMsg", "a" )
varKills = register_cvar( "rebel_kills", "3" )
RegisterHam( Ham_Spawn, "player", "HAM_Spawn_Post", 1 )
RegisterHam( Ham_TakeDamage, "player", "HAM_TakeDamage_Post", 1 )
maxplayers = get_maxplayers()
}
public EVENT_DeathMsg()
{
new iKiller = read_data( 1 )
new iVictim = read_data( 2 )
if( !IsPlayer( iKiller ) || cs_get_user_team( iKiller ) != CS_TEAM_CT
|| b_Rebel[iVictim] )
{
return;
}
iKills[iKiller]++
if( iKills[iKiller] >= get_pcvar_num( varKills ) )
{
user_kill( iKiller )
new name[32]
get_user_name( iKiller, name, 31 )
client_print( 0, print_chat, "%s was killed for killing too many non-rebels!", name )
}
}
public HAM_TakeDamage( iVictim, inflictor, iAttacker, float:dmg, dmgbits )
{
if( IsPlayer( iAttacker ) && !b_Rebel[iAttacker] && cs_get_user_team( iAttacker ) == CS_TEAM_T )
{
b_Rebel[iAttacker] = true
new name[32]
get_user_name( iAttacker, name, 31 )
client_print( 0, print_chat, "%s is now a rebel!", name )
set_user_rendering( iAttacker, kRenderFxGlowShell, 255, 0, 0, kRenderNormal, 25 )
}
}
public HAM_Spawn_Post( id )
{
b_Rebel[id] = false
iKills[id] = 0
if( is_user_alive( id ) )
{
set_user_rendering( id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 25 )
}
}