Jump to content

Cerere modificare plugin.


MadaraZMNew

Recommended Posts

daca se poate sa mi_se modifice acest plugin semi-clip

Cand tin apasat pe "E" Sa trec prin Echipa mea

Acest plugin este setat fara sa, Apas "E"  si trece si prin zombie si prin Human  "HELP PLEASE"

 

#include <amxmodx>
#include <fakemeta>

#pragma semicolon 1

#define DISTANCE 120.0
#define UPDATE_FREQ 0.2

new bool:g_bSemiclip[33][33];
new bool:g_bHasSemiclip[33];
new bool:g_bSemiclipEnabled;

new g_iTaskId;
new g_iForwardId[3];
new g_iMaxPlayers;
new g_iCvar[3];

public plugin_init( )
{
    register_plugin( "(Team-)Semiclip", "1.5", "Russu" );
    
    g_iCvar[0] = register_cvar( "semiclip_enabled", "1" );
    g_iCvar[1] = register_cvar( "semiclip_teamclip", "1" );
    g_iCvar[2] = register_cvar( "semiclip_transparancy", "0" );
    
    register_forward( FM_Think, "fwdThink" );
    register_forward( FM_ClientCommand, "fwdClientCommand" );
    
    if( get_pcvar_num( g_iCvar[0] ) )
    {
        g_iForwardId[0] = register_forward( FM_PlayerPreThink, "fwdPlayerPreThink" );
        g_iForwardId[1] = register_forward( FM_PlayerPostThink, "fwdPlayerPostThink" );
        g_iForwardId[2] = register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 );
        
        g_bSemiclipEnabled = true;
    }
    else
        g_bSemiclipEnabled = false;
    
    g_iMaxPlayers = get_maxplayers( );
    
    new ent = engfunc( EngFunc_CreateNamedEntity, engfunc( EngFunc_AllocString, "info_target" ) );
    set_pev( ent, pev_classname, "task_semiclip" );
    set_pev( ent, pev_nextthink, get_gametime( ) + 1.01 );
    g_iTaskId = ent;
}

public fwdPlayerPreThink( plr )
{
    static id;
    
    if( is_user_alive( plr ) )
    {
        for( id = 1 ; id <= g_iMaxPlayers ; id++ )
        {
            if( pev( id, pev_solid ) == SOLID_SLIDEBOX && g_bSemiclip[plr][id] && id != plr )
            {
                set_pev( id, pev_solid, SOLID_NOT );
                g_bHasSemiclip[id] = true;
            }
        }
    }
}

public fwdPlayerPostThink( plr )
{
    static id;

    if( is_user_alive( plr ) )
    {
        for( id = 1 ; id <= g_iMaxPlayers ; id++ )
        {
            if( g_bHasSemiclip[id] )
            {
                set_pev( id, pev_solid, SOLID_SLIDEBOX );
                g_bHasSemiclip[id] = false;
            }
        }
    }
}

public fwdThink( ent )
{
    static i, j;
    static team[33];
    static Float:origin[33][3];
    
    if( ent == g_iTaskId )
    {
        if( get_pcvar_num( g_iCvar[0] ) )
        {
            for( i = 1 ; i <= g_iMaxPlayers ; i++ )
            {
                if( is_user_alive( i ) )
                {
                    pev( i, pev_origin, origin );
                        
                    if( get_pcvar_num( g_iCvar[1] ) )
                        team = get_user_team( i );
                    
                    for( j = 1 ; j <= g_iMaxPlayers ; j++ )
                    {
                        if( is_user_alive( j ) )
                        {
                            if( get_pcvar_num( g_iCvar[1] ) && team != team[j] )
                            {
                                g_bSemiclip[j] = false;
                                g_bSemiclip[j] = false;
                                
                            }    
                            else if( floatabs( origin[0] - origin[j][0] ) < DISTANCE && floatabs( origin[1] - origin[j][1] ) < DISTANCE && floatabs( origin[2] - origin[j][2] ) < ( DISTANCE * 2 ) )
                            {
                                g_bSemiclip[j] = true;
                                g_bSemiclip[j] = true;
                            }
                            else
                            {
                                g_bSemiclip[j] = false;
                                g_bSemiclip[j] = false;
                            }
                        }
                    }
                }
            }
        }
        
        set_pev( ent, pev_nextthink, get_gametime( ) + UPDATE_FREQ );
    }
}

public fwdAddToFullPack_Post( es_handle, e, ent, host, hostflags, player, pset )
{
    if( player )
    {
        if( g_bSemiclip[host][ent] )
        {
            set_es( es_handle, ES_Solid, SOLID_NOT ); // makes semiclip flawless
            
            if( get_pcvar_num( g_iCvar[2] ) == 1 )
            {
                set_es( es_handle, ES_RenderMode, kRenderTransAlpha );
                set_es( es_handle, ES_RenderAmt, 85 );
            }
            else if( get_pcvar_num( g_iCvar[2] ) == 2 )
            {
                set_es( es_handle, ES_Effects, EF_NODRAW );
                set_es( es_handle, ES_Solid, SOLID_NOT );
            }
        }
    }
}

// is there a better way to detect changings of g_iCvar[0]?
public fwdClientCommand( plr )
{
    // use the forwards just when needed, for good performance
    if( !get_pcvar_num( g_iCvar[0] ) && g_bSemiclipEnabled )
    {
        unregister_forward( FM_PlayerPreThink, g_iForwardId[0] );
        unregister_forward( FM_PlayerPostThink, g_iForwardId[1] );
        unregister_forward( FM_AddToFullPack, g_iForwardId[2], 1 );
        
        g_bSemiclipEnabled = false;
    }
    else if( get_pcvar_num( g_iCvar[0] ) && !g_bSemiclipEnabled )
    {
        g_iForwardId[0] = register_forward( FM_PlayerPreThink, "fwdPlayerPreThink" );
        g_iForwardId[1] = register_forward( FM_PlayerPostThink, "fwdPlayerPostThink" );
        g_iForwardId[2] = register_forward( FM_AddToFullPack, "fwdAddToFullPack_Post", 1 );
        
        g_bSemiclipEnabled = true;
    }
}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...