Raised This Month: $ Target: $400
 0% 

HELP with antiblock


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Podarok
BANNED
Join Date: Jan 2011
Location: Narnia
Old 07-24-2013 , 12:03   HELP with antiblock
Reply With Quote #1

Here is the plugin :
PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <zombieplague>

#define DISTANCE 120

new g_iTeam[33]
new 
bool:g_bSolid[33]
new 
bool:g_bHasSemiclip[33]
new 
Float:g_fOrigin[33][3]

new 
bool:g_bSemiclipEnabled

new g_iForwardId[3]
new 
g_iMaxPlayers
new g_iCvar[3]

public 
plugin_init( )
{
    
register_plugin"[ZP] Antiblock""0.1""Maslyak" )
    
    
g_iCvar[0] = register_cvar"semiclip_enabled""1" )
    
g_iCvar[1] = register_cvar"semiclip_teamclip""1" )
    
g_iCvar[2] = register_cvar"semiclip_transparancy""1" )
    
    
register_forwardFM_ClientCommand"fwdClientCommand" )
    
    if( 
get_pcvar_numg_iCvar[0] ) )
    {
        
g_iForwardId[0] = register_forwardFM_PlayerPreThink"fwdPlayerPreThink" )
        
g_iForwardId[1] = register_forwardFM_PlayerPostThink"fwdPlayerPostThink" )
        
g_iForwardId[2] = register_forwardFM_AddToFullPack"fwdAddToFullPack_Post")
        
        
g_bSemiclipEnabled true
    
}
    else
        
g_bSemiclipEnabled false
    
    g_iMaxPlayers 
get_maxplayers( )
}

public 
fwdPlayerPreThinkplr )
{
    static 
idlast_think

    
if( last_think plr )
    {
        for( 
id 1id <= g_iMaxPlayersid++ )
        {
            if( 
is_user_aliveid ) )
            {
                if( 
get_pcvar_numg_iCvar[1] ) )
                    
g_iTeam[id] = zp_get_user_zombieid )
                
                
g_bSolid[id] = pevidpev_solid ) == SOLID_SLIDEBOX true false
                pev
idpev_origing_fOrigin[id] )
            }
            else
                
g_bSolid[id] = false
        
}
    }

    
last_think plr

    
if( g_bSolid[plr] )
    {
        for( 
id 1id <= g_iMaxPlayersid++ )
        {
            if( 
g_bSolid[id] && get_distance_fg_fOrigin[plr], g_fOrigin[id] ) <= DISTANCE && id != plr )
            {
                if( 
get_pcvar_numg_iCvar[1] ) && g_iTeam[plr] != g_iTeam[id] )
                    return 
FMRES_IGNORED
                
                
if(!(pev(plrpev_button) & IN_USE))    
                    return 
FMRES_IGNORED
                
                set_pev
idpev_solidSOLID_NOT )
                
g_bHasSemiclip[id] = true
            
}
        }
    }

    return 
FMRES_IGNORED
}

public 
fwdPlayerPostThinkplr )
{
    static 
id

    
for( id 1id <= g_iMaxPlayersid++ )
    {
        if( 
g_bHasSemiclip[id] )
        {
            
set_pevidpev_solidSOLID_SLIDEBOX )
            
g_bHasSemiclip[id] = false
        
}
    }
}

public 
fwdAddToFullPack_Postes_handleeenthosthostflagsplayerpset )
{
    if( 
player )
    {
        if( 
g_bSolid[host] && g_bSolid[ent] && get_distance_fg_fOrigin[host], g_fOrigin[ent] ) <= DISTANCE )
        {
            if( 
get_pcvar_numg_iCvar[1] ) && g_iTeam[host] != g_iTeam[ent] )
                return 
FMRES_IGNORED
            
            
if(!(pev(hostpev_button) & IN_USE))    
                return 
FMRES_IGNORED
                
            set_es
es_handleES_SolidSOLID_NOT // makes semiclip flawless
            
            
if( get_pcvar_numg_iCvar[2] ) == )
            {
                
set_eses_handleES_RenderModekRenderTransAlpha )
                
set_eses_handleES_RenderAmt85 )
            }
            else if( 
get_pcvar_numg_iCvar[2] ) == )
            {
                
set_eses_handleES_EffectsEF_NODRAW )
                
set_eses_handleES_SolidSOLID_NOT )
            }
        }
    }
    
    return 
FMRES_IGNORED
}

// is there a better way to detect changings of g_iCvar[0]?
public fwdClientCommandplr )
{
    
// use the forwards just when needed, for good performance
    
if( !get_pcvar_numg_iCvar[0] ) && g_bSemiclipEnabled )
    {
        
unregister_forwardFM_PlayerPreThinkg_iForwardId[0] )
        
unregister_forwardFM_PlayerPostThinkg_iForwardId[1] )
        
unregister_forwardFM_AddToFullPackg_iForwardId[2], )
        
        
g_bSemiclipEnabled false
    
}
    else if( 
get_pcvar_numg_iCvar[0] ) && !g_bSemiclipEnabled )
    {
        
g_iForwardId[0] = register_forwardFM_PlayerPreThink"fwdPlayerPreThink" )
        
g_iForwardId[1] = register_forwardFM_PlayerPostThink"fwdPlayerPostThink" )
        
g_iForwardId[2] = register_forwardFM_AddToFullPack"fwdAddToFullPack_Post")
        
        
g_bSemiclipEnabled true
    
}

I wanna add a feature so that when players they could pass through lasermine entity (here is the spawn code)
PHP Code:
public Spawn(id)
{
    
id -= TASK_PLANT
    
// motor
    
new i_Ent engfunc(EngFunc_CreateNamedEntity,g_EntMine);
    if(!
i_Ent)
    {
        
client_print(idprint_chat,"[Laesrmine Debug] Can't Create Entity");
        return 
PLUGIN_HANDLED_MAIN;
    }
    
set_pev(i_Ent,pev_classname,ENT_CLASS_NAME);

    
engfunc(EngFunc_SetModel,i_Ent,ENT_MODELS);

    
set_pev(i_Ent,pev_solid,SOLID_NOT);
    
set_pev(i_Ent,pev_movetype,MOVETYPE_FLY);

    
set_pev(i_Ent,pev_frame,0);
    
set_pev(i_Ent,pev_body,3);
    
set_pev(i_Ent,pev_sequence,TRIPMINE_WORLD);
    
set_pev(i_Ent,pev_framerate,0);
    
set_pev(i_Ent,pev_takedamage,DAMAGE_YES);
    
set_pev(i_Ent,pev_dmg,100.0);
    
set_user_health(i_Ent,get_pcvar_num(g_LHEALTH));
    new 
Float:vOrigin[3];
    new    
Float:vNewOrigin[3],Float:vNormal[3],Float:vTraceDirection[3],
        
Float:vTraceEnd[3],Float:vEntAngles[3];
    
pev(idpev_originvOrigin);
    
velocity_by_aim(id128vTraceDirection);
    
xs_vec_add(vTraceDirectionvOriginvTraceEnd);
    
engfunc(EngFunc_TraceLinevOriginvTraceEndDONT_IGNORE_MONSTERSid0);
    new 
Float:fFraction;
    
get_tr2(0TR_flFractionfFraction);

    
// -- We hit something!
    
if(fFraction 1.0)
    {
        
// -- Save results to be used later.
        
get_tr2(0TR_vecEndPosvTraceEnd);
        
get_tr2(0TR_vecPlaneNormalvNormal);
    }


    
xs_vec_mul_scalar(vNormal8.0vNormal);
    
xs_vec_add(vTraceEndvNormalvNewOrigin);

    
engfunc(EngFunc_SetSizei_EntFloat:{ -4.0, -4.0, -4.0 }, Float:{ 4.04.04.0 });
    
engfunc(EngFunc_SetOrigini_EntvNewOrigin);

    
// -- Rotate tripmine.
    
vector_to_angle(vNormal,vEntAngles);
    
set_pev(i_Ent,pev_angles,vEntAngles);

    
// -- Calculate laser end origin.
    
new Float:vBeamEnd[3], Float:vTracedBeamEnd[3];
         
    
xs_vec_mul_scalar(vNormal8192.0vNormal);
    
xs_vec_add(vNewOriginvNormalvBeamEnd);

    
engfunc(EngFunc_TraceLinevNewOriginvBeamEndIGNORE_MONSTERS, -10);

    
get_tr2(0TR_vecPlaneNormalvNormal);
    
get_tr2(0TR_vecEndPosvTracedBeamEnd);

    
// -- Save results to be used later.
    
set_pev(i_EntLASERMINE_OWNERid);
    
set_pev(i_Ent,LASERMINE_BEAMENDPOINT,vTracedBeamEnd);
    
set_pev(i_Ent,LASERMINE_TEAM,int:cs_get_user_team(id));
    new 
Float:fCurrTime get_gametime();

    
set_pev(i_Ent,LASERMINE_POWERUPfCurrTime 2.5);
    
set_pev(i_Ent,LASERMINE_STEP,POWERUP_THINK);
    
set_pev(i_Ent,pev_nextthinkfCurrTime 0.2);

    
PlaySound(i_Ent,POWERUP_SOUND);
    
g_deployed[id]++;
    
g_havemine[id]--;
    
DeleteTask(id);
    
ShowAmmo(id);
    return 
1;

Im not even sure what do i have to do to make it work, please help me, at least show me the path what to do to make player pass by the entity
Podarok is offline
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 06:25.


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