Code:
#include <amxmodx>
#include <fakemeta_util>
#include <engine>
#define PLUGIN "Countdown Timer & Freeze"
#define VERSION "1.0"
#define AUTHOR "Bugsy & Supremache"
#define MAX_PLAYERS 32
const TaskStartCountdown = 34234243;
const TaskCountdown = 34234244;
const TaskRemoveFreeze = 34234245;
new const PrecacheSoundList[ 11 ][] =
{
"",
"fvox/one.wav",
"fvox/two.wav",
"fvox/three.wav",
"fvox/four.wav",
"fvox/five.wav",
"fvox/six.wav",
"fvox/seven.wav",
"fvox/eight.wav",
"fvox/nine.wav",
"fvox/ten.wav"
};
new g_iCountdown
new g_iFrost[MAX_PLAYERS+1]
new RemoveFreezetime;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_logevent( "EventRoundStart" , 2 , "1=Round_Start" )
RemoveFreezetime = register_cvar("remove_freeze", "15.0")
}
public plugin_precache()
{
for ( new i = 0 ; i < sizeof( PrecacheSoundList ); i++ ) {
if ( PrecacheSoundList[ i ][ 0 ] != EOS )
precache_sound( PrecacheSoundList[ i ] )
}
}
public client_disconnect(id)
{
g_iFrost[id] = false;
}
public EventRoundStart()
{
if ( !task_exists( TaskStartCountdown ) && !task_exists( TaskCountdown ) && !task_exists( TaskRemoveFreeze ) ) {
set_task( 4.0 , "StartCountdown" , TaskStartCountdown );
set_task( get_pcvar_float(RemoveFreezetime), "RemoveFreeze", TaskRemoveFreeze)
}
}
public StartCountdown()
{
set_task( 1.0 , "ZombieCountdown" , TaskCountdown , .flags="a" , .repeat= ( g_iCountdown = 10 ) )
}
public ZombieCountdown()
{
emit_sound( 0 , CHAN_VOICE , PrecacheSoundList[ g_iCountdown ] , 1.0 , ATTN_NORM , 0 , PITCH_NORM )
set_hudmessage(179, 0, 0, -1.0, 0.28, 2, 0.02, 1.0, 0.01, 0.1, 10);
show_hudmessage(0, "Infection in %i", g_iCountdown-- );
new iPlayers[32], iNum
get_players(iPlayers, iNum, "ch")
for(new iPlayer, i; i < iNum; i++) {
iPlayer = iPlayers[i]
if(!is_user_alive(iPlayer)) return
new flags=pev(iPlayer,pev_flags)
if (!(flags&FL_FROZEN))
flags|=FL_FROZEN,set_pev(iPlayer, pev_flags, flags)
g_iFrost[iPlayer] = true;
}
}
public RemoveFreeze() {
new iPlayers[32], iNum
get_players(iPlayers, iNum, "ch")
for(new iPlayer, i; i < iNum; i++) {
iPlayer = iPlayers[i]
if(!is_user_alive(iPlayer)) return
new flags = pev(iPlayer,pev_flags)
if (flags&FL_FROZEN)
flags&=~FL_FROZEN,set_pev(iPlayer,pev_flags,flags)
g_iFrost[iPlayer] = false;
static Float:vec[3], Float:amt
entity_get_vector(iPlayer,EV_VEC_rendercolor,vec)
amt=entity_get_float(iPlayer,EV_FL_renderamt)
if (vec[0]==0.0 && vec[1]==90.0 && vec[2]==128.0&&amt==30.0)
fm_set_rendering(iPlayer)
}
}
// Glow color when user be freeze
/*
public client_PreThink(id)
{
if (g_iFrost[id] && is_user_alive(id))
{
set_rendering(id, kRenderFxGlowShell, 0, 90, 180, kRenderNormal, 30)
}
}
*/