Raised This Month: $51 Target: $400
 12% 

[REQ] Wallhang


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
JoaoVieira
Senior Member
Join Date: May 2013
Location: Portugal
Old 02-09-2016 , 11:51   [REQ] Wallhang
Reply With Quote #1

Can some one put this plugin automatic set for terrorist's ? and no shop?

PHP Code:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>

#include "furien.inc"
#include "furien_shop.inc"

#define VERSION "0.0.2"

#define XTRA_OFS_PLAYER            5
#define m_Activity                73
#define m_IdealActivity            74
#define m_flNextAttack            83
#define m_afButtonPressed        246

#define FIRST_PLAYER_ID    1
#define MAX_PLAYERS        32

#define PLAYER_JUMP        6

#define ACT_HOP 7

//#define FBitSet(%1,%2)        (%1 & %2)

new g_iMaxPlayers
#define IsPlayer(%1)    ( FIRST_PLAYER_ID <= %1 <= g_iMaxPlayers )

#define IsHidden(%1)    IsPlayer(%1)

#define KNIFE_DRAW            3

new g_bHasWallHang
#define SetUserWallHang(%1)        g_bHasWallHang |=    1<<(%1&31)
#define RemoveUserWallHang(%1)    g_bHasWallHang &=    ~(1<<(%1&31))
#define HasUserWallHang(%1)        g_bHasWallHang &    1<<(%1&31)

new g_bHanged
#define SetUserHanged(%1)    g_bHanged |=    1<<(%1&31)
#define RemoveUserHanged(%1)    g_bHanged &=    ~(1<<(%1&31))
#define IsUserHanged(%1)        g_bHanged &    1<<(%1&31)

new Float:g_fVecMins[MAX_PLAYERS+1][3]
new 
Float:g_fVecMaxs[MAX_PLAYERS+1][3]
new 
Float:g_fVecOrigin[MAX_PLAYERS+1][3]

new 
g_iCost[2]

new 
bool:g_bRoundEnd

public plugin_init()
{
    
register_plugin("Furien WallHang"VERSION"ConnorMcLeod")

    new 
szConfigFile[128]
    
get_localinfo("amxx_configsdir"szConfigFilecharsmax(szConfigFile))
    
format(szConfigFilecharsmax(szConfigFile), "%s/furien/items/wallhang.ini"szConfigFile);

    new 
fp fopen(szConfigFile"rt")
    if( !
fp )
    {
        return
    }

    new 
szFurienName[32], szAntiName[32]

    new 
szDatas[64], szKey[16], szValue[32]
    while( !
feof(fp) )
    {
        
fgets(fpszDatascharsmax(szDatas))
        
trim(szDatas)
        if(!
szDatas[0] || szDatas[0] == ';' || szDatas[0] == '#' || (szDatas[0] == '/' && szDatas[1] == '/'))
        {
            continue
        }

        
parse(szDatasszKeycharsmax(szKey), szValuecharsmax(szValue))

        switch( 
szKey[0] )
        {
            case 
'A':
            {
                switch( 
szKey[7] )
                {
                    case 
'M':
                    {
                        if( 
equal(szKey"ANTI_NAME" ) )
                        {
                            
copy(szAntiNamecharsmax(szAntiName), szValue)
                        }
                    }
                    case 
'S':
                    {
                        if( 
equal(szKey"ANTI_COST" ) )
                        {
                            
g_iCost[AntiFurien] = str_to_num(szValue)
                        }
                    }
                }
            }
            case 
'F':
            {
                switch( 
szKey[9] )
                {
                    case 
'M':
                    {
                        if( 
equal(szKey"FURIEN_NAME" ) )
                        {
                            
copy(szFurienNamecharsmax(szAntiName), szValue)
                        }
                    }
                    case 
'S':
                    {
                        if( 
equal(szKey"FURIEN_COST" ) )
                        {
                            
g_iCost[Furien] = str_to_num(szValue)
                        }
                    }
                }
            }
        }
    }
    
fclosefp )

    if( 
g_iCost[Furien] || g_iCost[AntiFurien] )
    {
        
furien_register_item(szFurienNameg_iCost[Furien], szAntiNameg_iCost[AntiFurien], "furien_buy_wallhang")

        
RegisterHam(Ham_Player_Jump"player""Player_Jump")

        
RegisterHam(Ham_Touch"func_wall""World_Touch")
        
RegisterHam(Ham_Touch"func_breakable""World_Touch")
        
RegisterHam(Ham_Touch"worldspawn""World_Touch")

        
g_iMaxPlayers get_maxplayers()    

        
register_event("HLTV""Event_HLTV_New_Round""a""1=0""2=0")
        
register_logevent("Logevent_Round_End"2"1=Round_End")
    }
}

public 
Event_HLTV_New_Round()
{
    
g_bRoundEnd false
}

public 
Logevent_Round_End()
{
    
g_bRoundEnd true
    g_bHanged 
0
}

public 
client_putinserverid )
{
    
RemoveUserWallHangid )
    
RemoveUserHangedid )
}

public 
furien_team_change/*iFurien */ )
{
    if( !
g_iCost[Furien] || !g_iCost[AntiFurien] )
    {
        
g_bHasWallHang 0
        g_bHanged 
0
    
}
}

public 
furien_round_restart()
{
    
g_bHasWallHang 0
    g_bHanged 
0
}

public 
furien_buy_wallhangid )
{
    new 
iTeam furien_get_user_team(id)
    if( 
iTeam == -)
    {
        return 
ShopCloseMenu
    
}

    new 
iItemCost g_iCost[iTeam]
    if( 
iItemCost <= )
    {
        return 
ShopTeamNotAvail
    
}

    if( ~
HasUserWallHang(id) )
    {
        if( 
furien_try_buy(idiItemCost) )
        {
            
SetUserWallHangid )
            return 
ShopBought
        
}
        else
        {
            return 
ShopNotEnoughMoney
        
}
    }
    return 
ShopAlreadyHaveOne
}

public 
Player_Jump(id)
{
    if(    
g_bRoundEnd
    
||    ~HasUserWallHang(id)
    ||    ~
IsUserHanged(id)
    ||    !
is_user_alive(id)    )
    {
        return 
HAM_IGNORED
    
}

    if( (
pev(idpev_flags) & FL_WATERJUMP) || pev(idpev_waterlevel) >= )
    {
        return 
HAM_IGNORED
    
}

    static 
afButtonPressed afButtonPressed get_pdata_int(idm_afButtonPressed)

    if( ~
afButtonPressed IN_JUMP )
    {
        return 
HAM_IGNORED
    
}

    
RemoveUserHanged(id)

    new 
Float:fVecVelocity[3]

    
velocity_by_aim(id600fVecVelocity)
    
set_pev(idpev_velocityfVecVelocity)

    
set_pdata_int(idm_ActivityACT_HOP)
    
set_pdata_int(idm_IdealActivityACT_HOP)
    
set_pev(idpev_gaitsequencePLAYER_JUMP)
    
set_pev(idpev_frame0.0)
    
set_pdata_int(idm_afButtonPressedafButtonPressed & ~IN_JUMP)

    return 
HAM_SUPERCEDE
}


public 
client_PostThink(id)
{
    if( 
HasUserWallHang(id) && IsUserHanged(id) )
    {
        
engfunc(EngFunc_SetSizeidg_fVecMinsid ], g_fVecMaxsid ])
        
engfunc(EngFunc_SetOriginidg_fVecOriginid ])
        
set_pev(idpev_velocity0)
        
set_pdata_float(idm_flNextAttack1.0XTRA_OFS_PLAYER)
    }
}

public 
World_Touch(iEntid)
{
    if(    !
g_bRoundEnd
    
&&    IsPlayer(id)
    &&    
HasUserWallHang(id)
    &&    ~
IsUserHanged(id)
    &&    
is_user_alive(id)
    &&    
pev(idpev_button) & IN_USE
    
&&    ~pev(idpev_flags) & FL_ONGROUND    )
    {
        
SetUserHanged(id)
        
pev(idpev_minsg_fVecMins[id])
        
pev(idpev_maxsg_fVecMaxs[id])
        
pev(idpev_origing_fVecOrigin[id])
    }

JoaoVieira is offline
JoaoVieira
Senior Member
Join Date: May 2013
Location: Portugal
Old 02-09-2016 , 12:01   Re: [REQ] Wallhang
Reply With Quote #2

Ok , alot of searching and i found it.

PHP Code:
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>

#define VERSION "0.0.2"

#define XTRA_OFS_PLAYER            5
#define m_Activity                73
#define m_IdealActivity            74
#define m_flNextAttack            83
#define m_afButtonPressed        246

#define FIRST_PLAYER_ID    1
#define MAX_PLAYERS        32

#define PLAYER_JUMP        6

#define ACT_HOP 7

//#define FBitSet(%1,%2)        (%1 & %2)

new g_iMaxPlayers
#define IsPlayer(%1)    ( FIRST_PLAYER_ID <= %1 <= g_iMaxPlayers )

#define IsHidden(%1)    IsPlayer(%1)

#define KNIFE_DRAW            3

new g_bHasWallHang
#define SetUserWallHang(%1)        g_bHasWallHang |=    1<<(%1&31)
#define RemoveUserWallHang(%1)    g_bHasWallHang &=    ~(1<<(%1&31))
#define HasUserWallHang(%1)        g_bHasWallHang &    1<<(%1&31)

new g_bHanged
#define SetUserHanged(%1)    g_bHanged |=    1<<(%1&31)
#define RemoveUserHanged(%1)    g_bHanged &=    ~(1<<(%1&31))
#define IsUserHanged(%1)        g_bHanged &    1<<(%1&31)

new Float:g_fVecMins[MAX_PLAYERS+1][3]
new 
Float:g_fVecMaxs[MAX_PLAYERS+1][3]
new 
Float:g_fVecOrigin[MAX_PLAYERS+1][3]

new 
bool:g_bRoundEnd

public plugin_init()
{
    
register_plugin("Furien WallHang"VERSION"ConnorMcLeod")

    
RegisterHam(Ham_Player_Jump"player""Player_Jump")

    
RegisterHam(  Ham_Spawn,  "player",  "Ham_PlayerSpawnPost",  true  );
    
RegisterHam(  Ham_Killed,  "player",  "Ham_PlayerKilledPost"true  );
    
RegisterHam(Ham_Touch"func_wall""World_Touch")
    
RegisterHam(Ham_Touch"func_breakable""World_Touch")
    
RegisterHam(Ham_Touch"worldspawn""World_Touch")

    
g_iMaxPlayers get_maxplayers()    

    
register_event("HLTV""Event_HLTV_New_Round""a""1=0""2=0")
    
register_logevent("Logevent_Round_End"2"1=Round_End")
}

public 
Ham_PlayerSpawnPost(  id  )
{
    if( 
is_user_alive(  id  )  )
    {
        if( 
get_user_team(  id  )  ==  1  )
        {
            
SetUserWallHang(id);
            
RemoveUserHangedid );
        }
        else
        {
            
RemoveUserWallHang(id);
            
RemoveUserHangedid );
        }
    }
}

public 
Ham_PlayerKilledPost(  id  )
{
    
    
RemoveUserHangedid );
    return 
HAM_IGNORED;
    
}
public 
Event_HLTV_New_Round()
{
    
g_bRoundEnd false
}

public 
Logevent_Round_End()
{
    
g_bRoundEnd true
    g_bHanged 
0
}

public 
client_putinserverid )
{
    
RemoveUserWallHangid )
    
RemoveUserHangedid )
}

public 
furien_round_restart()
{
    
g_bHasWallHang 0
    g_bHanged 
0
}

public 
Player_Jump(id)
{
    if(    
g_bRoundEnd
    
||    ~HasUserWallHang(id)
    ||    ~
IsUserHanged(id)
    ||    !
is_user_alive(id)    )
    {
        return 
HAM_IGNORED
    
}

    if( (
pev(idpev_flags) & FL_WATERJUMP) || pev(idpev_waterlevel) >= )
    {
        return 
HAM_IGNORED
    
}

    static 
afButtonPressed afButtonPressed get_pdata_int(idm_afButtonPressed)

    if( ~
afButtonPressed IN_JUMP )
    {
        return 
HAM_IGNORED
    
}

    
RemoveUserHanged(id)

    new 
Float:fVecVelocity[3]

    
velocity_by_aim(id600fVecVelocity)
    
set_pev(idpev_velocityfVecVelocity)

    
set_pdata_int(idm_ActivityACT_HOP)
    
set_pdata_int(idm_IdealActivityACT_HOP)
    
set_pev(idpev_gaitsequencePLAYER_JUMP)
    
set_pev(idpev_frame0.0)
    
set_pdata_int(idm_afButtonPressedafButtonPressed & ~IN_JUMP)

    return 
HAM_SUPERCEDE
}


public 
client_PostThink(id)
{
    if( 
HasUserWallHang(id) && IsUserHanged(id) )
    {
        
engfunc(EngFunc_SetSizeidg_fVecMinsid ], g_fVecMaxsid ])
        
engfunc(EngFunc_SetOriginidg_fVecOriginid ])
        
set_pev(idpev_velocity0)
        
//set_pdata_float(id, m_flNextAttack, 1.0, XTRA_OFS_PLAYER)
    
}
}

public 
World_Touch(iEntid)
{
    if(    !
g_bRoundEnd
    
&&    IsPlayer(id)
    &&    
HasUserWallHang(id)
    &&    ~
IsUserHanged(id)
    &&    
is_user_alive(id)
    &&    
pev(idpev_button) & IN_USE
    
&&    ~pev(idpev_flags) & FL_ONGROUND    )
    {
        
SetUserHanged(id)
        
pev(idpev_minsg_fVecMins[id])
        
pev(idpev_maxsg_fVecMaxs[id])
        
pev(idpev_origing_fVecOrigin[id])
    }

Here if some want it

#EDIT
But there is a bug , sometimes press E and the player just Die But its alive , i cannot explain º-º

Last edited by JoaoVieira; 02-09-2016 at 12:12.
JoaoVieira is offline
Reply



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 17:41.


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