I've never played zombie plague or something similar... I don't know if it will work
Code:
#include <amxmodx>
#include <zombieplague>
#include <hamsandwich>
#include <fun>
#include <fakemeta>
#include <engine>
#define TASKID 1337
new freeze_time,iTime,plr_solid[33],max_zombies
new spawn_back, Float:his_original_spawn[33][3];
new bool:isFreeze[33];
public plugin_init()
{
freeze_time = register_cvar("zp_freeze_time","20")
spawn_back = register_cvar("zp_spawn_back","1")
register_event("CurWeapon", "cur_weapon_knife", "be", "1=1", "2=29")
register_forward(FM_UpdateClientData, "block_moving", 1)
RegisterHam(Ham_Player_PreThink, "player", "fwd_Player_PreThink");
RegisterHam(Ham_Spawn,"player","Player_spawn_post",1)
max_zombies = get_maxplayers();
}
public cur_weapon_knife(id)
{
if( task_exists( TASKID ) )
remove_task( TASKID )
iTime = get_pcvar_num(freeze_time)
if(is_user_alive(id) && zp_get_user_first_zombie(id))
{
freeze_player(id)
isFreeze[id] = true;
set_task( 1.0, "countdown", TASKID, _, _, "a", get_pcvar_num(freeze_time) )
}
return PLUGIN_HANDLED;
}
public freeze_player(id)
{
//set_user_maxspeed(id,1.0)
plr_solid[id] = SOLID_NOT;
set_pev(id, pev_solid, SOLID_NOT);
set_user_godmode( id, 1 );
set_rendering(id,kRenderFxGlowShell,50,50,50,kRenderTransAdd,50)
}
public unfreeze_player(id)
{
//set_user_maxspeed(id,250.0)
set_user_godmode( id );
plr_solid[id] = SOLID_SLIDEBOX;
set_pev(id, pev_solid, SOLID_SLIDEBOX);
set_user_rendering(id)
if(get_pcvar_num(spawn_back))
back_to_the_spawn(id)
}
public countdown()
{
for(new id; id < max_zombies;id++)
{
if(is_user_connected(id) && zp_get_user_zombie(id))
{
if( iTime >= 2 )
{
iTime--
set_dhudmessage(id, 125, 200, -1.0, 0.50, 0, 0.0, 0.5, 0.01, 1.0)
show_dhudmessage(id, "Unfreeze start in %i seconds",iTime)
}
else if( iTime == 1 )
{
iTime--
set_dhudmessage(id, 125, 200, -1.0, 0.50, 0, 0.0, 0.5, 0.01, 1.0)
show_dhudmessage(id, "GO! GO! GO!")
if(isFreeze[id])
{
unfreeze_player(id)
isFreeze[id] = false;
}
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////// Teleport To The Spawn ///////////////////////////////////////////
public Player_spawn_post(id)
{
if(is_user_alive(id) && get_pcvar_num(spawn_back))
{
set_task(1.0,"get_spawn_origin",id)
return;
}
}
public get_spawn_origin(id)
{
pev(id,pev_origin,his_original_spawn[id]);
}
public back_to_the_spawn(id)
{
if(is_user_alive(id))
{
entity_set_origin(id,his_original_spawn[id])
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
public block_moving(id, weapons, cd)
{
if(isFreeze[id])
{
set_cd(cd, CD_flNextAttack, 0.1)
if((entity_get_int(id, EV_INT_button) & (IN_MOVELEFT | IN_MOVERIGHT | IN_BACK | IN_FORWARD )))
set_cd(cd, CD_MaxSpeed, 0.1)
}
}
public fwd_Player_PreThink(id)
{
if(isFreeze[id])
{
set_pev(id, pev_oldbuttons, pev(id, pev_oldbuttons)|IN_JUMP|IN_DUCK);
}
}