AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Solved [ H3LP ] Stock to freeze/unfreeze player ? (https://forums.alliedmods.net/showthread.php?t=296406)

CrazY. 04-19-2017 19:09

[ H3LP ] Stock to freeze/unfreeze player ?
 
Hey, I need a stock to freeze/unfreeze a player but don't freeze he camera. Anyone ?

Natsheh 04-19-2017 20:46

Re: [ H3LP ] Stock to freeze/unfreeze player ?
 
Set his speed to zero hook pre primary & secondary attack, set his next primary & second attack delay to get_gametime + 99999 then return max value

Or use set_pev(id, pev_flags, pev(id, pev_flags)|FL_FROZEN)

CrazY. 04-19-2017 21:45

Re: [ H3LP ] Stock to freeze/unfreeze player ?
 
Trying...

edon1337 04-20-2017 06:30

Re: [ H3LP ] Stock to freeze/unfreeze player ?
 
Code:
set_user_frozen( id, bool:bFrozen ) {     if( bFrozen )     set_pev( id, pev_flags, pev( id, pev_flags ) | FL_FROZEN ) ;     set_pev( id, pev_flags, pev( id, pev_flags ) & ~ FL_FROZEN ) ; }

Code:
set_user_frozen( id, true ) // freeze set_user_frozen( id, false ) // unfreeze

HamletEagle 04-20-2017 06:39

Re: [ H3LP ] Stock to freeze/unfreeze player ?
 
While passing 1/0 will work, you should just use true/false since bFrozen is tagged as bool(to be consistent).

CrazY. 04-20-2017 08:38

Re: [ H3LP ] Stock to freeze/unfreeze player ?
 
Well, the frozen work, but this stock is blocking to move the camera. I think I need do something like of natahe have said.

sirerick 04-20-2017 09:20

Re: [ H3LP ] Stock to freeze/unfreeze player ?
 
example:

PHP Code:

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <engine>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"

#if AMXX_VERSION_NUM < 183
new Ham:Ham_Player_ResetMaxSpeed Ham_Item_PreFrame
#endif

new g_frozen[33]

public 
plugin_init() {
    
register_plugin(PLUGINVERSIONAUTHOR)
    
RegisterHam(Ham_Player_ResetMaxSpeed"player""fw_Player_ResetMaxSpeed"1)
    
register_forward(FM_CmdStart"fw_Start")
    
RegisterHam(Ham_Spawn"player""fw_PlayerSpawn_Post"1)

    
// Add your code here...
}
public 
client_putinserver(id)
{
    
g_frozen[id] = false
}
public 
fw_PlayerSpawn_Post(id)
{
    
// Not alive or didn't join a team yet
    
if(!is_user_alive(id))
        return;
        
    
set_task(5.0"block_speed"id)
    
}
public 
block_speed(id)
{
    if(!
is_user_alive(id))
        return;

    
    
g_frozen[id] = true
    ExecuteHamB
(Ham_Player_ResetMaxSpeedid)
}
public 
fw_Player_ResetMaxSpeed(id)
{
    if(!
is_user_alive(id))
        return;

    new 
Float:current_maxspeed
    pev
(idpev_maxspeedcurrent_maxspeed)
    
    if (
g_frozen[id])
    {
        
set_pevidpev_maxspeed1.0 )
        
entity_set_vector(idEV_VEC_velocityFloat:{0.0,0.0,0.0})
    }
}
public 
fw_Start(iduc_handleseed)
{
    static 
button button get_uc uc_handleUC_Buttons )
    static 
oldbutton oldbutton entity_get_int idEV_INT_oldbuttons )

    if(!
is_user_alive(id))
        return
        
    if (
g_frozen[id])
    {
        if(
button IN_ATTACK || button IN_ATTACK2)
        {
            
set_uc(uc_handle,UC_Buttons,(button & ~IN_ATTACK) & ~IN_ATTACK2)
        }
        else if( !(
oldbutton IN_JUMP) )
        {
            
entity_set_int(idEV_INT_oldbuttonsoldbutton IN_JUMP)
        }
    }



CrazY. 04-20-2017 10:18

Re: [ H3LP ] Stock to freeze/unfreeze player ?
 
Well, with some modifications, thats work.

Thanks, solved.

Natsheh 04-20-2017 11:34

Re: [ H3LP ] Stock to freeze/unfreeze player ?
 
here try this ...

PHP Code:


#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>

#define PLUGIN "Freeze"
#define VERSION "1.0"
#define AUTHOR "Natsheh"

new user_frozen;

#define set_user_frozen(%1)    (user_frozen |= (1<<(%1-1)))
#define remove_user_frozen(%1)    (user_frozen &= ~(1<<(%1-1)))
#define check_user_frozen(%1)    (user_frozen & (1<<(%1-1)))

#define    m_flNextPrimaryAttack    46
#define    m_flNextSecondaryAttack    47
#define       m_pPlayer   41


public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    for(new 
CSW_P228sWpnname[32]; <= CSW_P90i++)
    {
        
get_weaponname(isWpnnamecharsmax(sWpnname))
        if(
strlen(sWpnname) <= 7) continue;
        
        
RegisterHam(Ham_Item_DropsWpnname"fw_weapon_drop_pre")
        
RegisterHam(Ham_CS_Item_CanDropsWpnname"fw_weapon_drop_pre")
        
RegisterHam(Ham_Item_DeploysWpnname"fw_weapon_deploy_post",1)
        
RegisterHam(Ham_CS_Item_GetMaxSpeedsWpnname"fw_weapon_maxspeed_pre")
    }
    
    
register_clcmd("say /freeze""clcmd_freeze")
}

public 
clcmd_freeze(id)
{
    
freeze_player(idcheck_user_frozen(id) ? false:true);
    
client_print(idprint_center"* %sFrozen *", (check_user_frozen(id) ? "":"un"))
}

public 
fw_weapon_maxspeed_pre(const wpn)
{
    if(
check_user_frozen(get_pdata_cbase(wpn,m_pPlayer,4)))
    {
        
SetHamReturnFloat(-1.0)
        return 
HAM_SUPERCEDE;
    }
    
    return 
HAM_IGNORED;
}

public 
fw_weapon_drop_pre(const wpn)
{
    if(
check_user_frozen(get_pdata_cbase(wpn,m_pPlayer,4)))
    {
        
set_pdata_float(wpn,m_flNextPrimaryAttack,0.0,4)
        
set_pdata_float(wpn,m_flNextSecondaryAttack,0.0,4)
    }
}

public 
fw_weapon_deploy_post(const wpn)
{
    if(
check_user_frozen(get_pdata_cbase(wpn,m_pPlayer,4)))
    {
        static 
Float:gtimegtime get_gametime();
        
set_pdata_float(wpn,m_flNextPrimaryAttack,gtime 999.0,4)
        
set_pdata_float(wpn,m_flNextSecondaryAttack,gtime 999.0,4)
    }
}

freeze_player(idbool:bFreeze=false)
{
    if(!
bFreeze)
    {
        
remove_user_frozen(id)
        
        new 
wpns[32], wnumsWpnname[24], wpn;
        
get_user_weapons(idwpnswnum)
        
        for(new 
0wnumi++)
        {
            
get_weaponname(wpns[i], sWpnnamecharsmax(sWpnname))
            
            if((
wpn fm_find_ent_byowner(idsWpnname)) > -1)
            {
                
set_pdata_float(wpn,m_flNextPrimaryAttack,0.0,4)
                
set_pdata_float(wpn,m_flNextSecondaryAttack,0.0,4)
            }
        }
        
        
set_pev(idpev_maxspeed250.0);
    }
    else
    {
        
set_user_frozen(id);
        
        new 
sWpnname[24], wpn;
        
get_weaponname(get_user_weapon(id), sWpnnamecharsmax(sWpnname))
        
        if((
wpn fm_find_ent_byowner(idsWpnname)) > -1ExecuteHamB(Ham_Item_Deploywpn);
        
set_pev(idpev_maxspeed, -1.0)
    }
}

stock fm_find_ent_byowner(id, const wpnname[])
{
    new 
ent = -1;
    while ( ((
ent engfunc(EngFunc_FindEntityByStringent"classname"wpnname)) > 0) && pev(entpev_owner) != id) { }
    
    return (
pev_valid(ent) && pev(ent,pev_owner) == id) ? ent:-1;



CrazY. 04-20-2017 12:10

Re: [ H3LP ] Stock to freeze/unfreeze player ?
 
I dont need support to weapons, but your code work also. Thanks ! :D


All times are GMT -4. The time now is 17:47.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.