Thread: [Solved] plugin
View Single Post
raizo11
BANNED
Join Date: Dec 2013
Location: https://t.me/pump_upp
Old 04-26-2022 , 16:53   Re: plugin
Reply With Quote #7

I've never played zombie plague or something similar... I don't know if it will work

Try now

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);
    }
}

Last edited by raizo11; 04-27-2022 at 20:26.
raizo11 is offline
Send a message via ICQ to raizo11 Send a message via AIM to raizo11 Send a message via MSN to raizo11 Send a message via Yahoo to raizo11 Send a message via Skype™ to raizo11