View Single Post
lexzor
Veteran Member
Join Date: Nov 2020
Old 07-24-2023 , 13:33   Re: event_playerkiller
Reply With Quote #6

maybe this will help u:

PHP Code:
#include <amxmodx> 
#include <amxmisc> 
#include <cstrike> 
#include <fun> 
#include <hamsandwich>
#include <fakemeta>

native csr_get_user_points(id);
native csr_set_user_points(idamount);
native csr_save_user_points(id);

static const 
NO_POWER_SELECTED = -1
static const TASK_RESET_POWER 13312

enum
{
    
DOUBLE_DAMAGE,
    
INVISIBILITY,
    
HP_REGEN
}

enum ( += 1231)
{
    
INV_TASK 1321,
    
REGEN_TASK
}

new 
g_iCurrentPower[MAX_PLAYERS 1]

public 
plugin_init()
{
    
register_plugin("Shop Menu""1.0""SETT")

    
register_clcmd("say /loja""xShopMenu")

    
RegisterHam(Ham_TakeDamage"player""Ham_TakeDamage_Pre"0)
    
RegisterHam(Ham_CS_Player_ResetMaxSpeed"player""fwResetMaxSpeed")
}

public 
Ham_TakeDamage_Pre(const iVictim, const iAttackerFloat:fDamageiDamgeBits)
{
    if(
iVictim == iAttacker)
    {
        return 
HAM_IGNORED
    
}

    
//check everytime someone get damage if it's attacker has de double damage power selected 
    
if(g_iCurrentPower[iAttacker] == DOUBLE_DAMAGE)
    {
        
//set the damage value x2
        
SetHamParamFloat(4fDamage 2.0)
        return 
HAM_HANDLED
    
}

    return 
HAM_IGNORED
}

public 
fwResetMaxSpeed(id)
{
    if(
is_user_alive(id))
    {
        if(
pev_valid(id))
        {
            
set_pev(idpev_speedpev(idpev_speed) * 1.2)
        }
    }
}

public 
client_connect(id)
{
    
g_iCurrentPower[id] = NO_POWER_SELECTED
}

public 
xShopMenu(id)
{
    new 
szTitle[256]
    
formatex(szTitlecharsmax(szTitle), "Shop Menu")

    new 
pMenu menu_create(szTitle"xShopMenuHandle")

    
formatex(szTitlecharsmax(szTitle), "Damage 2x[Doubre Damage][]150");
    
menu_additem(pMenuszTitle"1"); 

    
formatex(szTitlecharsmax(szTitle), "Invisibility[15 Second][]500");
    
//you are using data parametere of menu_additem wrong, loon in item handler
    
menu_additem(pMenuszTitle"2");

    
menu_setprop(pMenuMPROP_EXITMEXIT_ALL)
    
menu_setprop(pMenuMPROP_BACKNAME"Voltar")
    
menu_setprop(pMenuMPROP_NEXTNAME"Proximo")
    
menu_setprop(pMenuMPROP_EXITNAME"Sair")

    
menu_display(idpMenu0)

    
// you don't need that in that case if you don't use return in your function
    // return PLUGIN_HANDLED
}

public 
xShopMenuHandle(idpMenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(pMenu)
        return 
PLUGIN_HANDLED
    
}

    
/**
        item value it's the value of the pressed user button, if you want to use that data parameter of the menu_additem to something like this
     */

    
new szMenuItemData[3]
    
menu_item_getinfo(pMenuitem_szMenuItemDatacharsmax(szMenuItemData), ___)
    new 
iMenuItemData str_to_num(szMenuItemData)
    
client_print(idprint_chat"Yay, u pressed button %i but it's data is  %i"itemiMenuItemData)

    switch(
item)
    {
        case 
0:
        {
            
//let's say the user choose the damage button

            //you set him the power
            
g_iCurrentPower[id] = DOUBLE_DAMAGE
            
//don't forget you want to reset it, let's say you want to give him this power 30 seconds

            
set_task(30.0"reset_user_power"id TASK_RESET_POWER)
        }
        case 
1//inv
        
{
            
g_iCurrentPower[id] = INVISIBILITY
            
            set_user_rendering
(idkRenderFxNone000kRenderTransAlpha0)
            
set_task(5.0"make_player_visible"id INV_TASK)
        }
        case 
2// regen
        
{
            
g_iCurrentPower[id] = HP_REGEN

            set_task
(1.0"add_player_hp"id HP_REGEN, .flags "b")
            
set_task(25.0"remove_hp_regen_power"id 231312)

        }
    }
    return 
PLUGIN_HANDLED


public 
add_player_hp(id)
{
    if(
is_user_alive(id) && pev_valid(id))
    {
        
set_pev(idpev_healthpev(idpev_health) + 2)
    }
}

public 
remove_hp_regen_power(id)
{
    
g_iCurrentPower[id] = NO_POWER_SELECTED
    
if(task_exists(id HP_REGEN))
    {
        
remove_task(id HP_REGEN)
    }
}

public 
make_player_visible(id)
{
    
id -= INV_TASK

    set_user_rendering
(idkRenderFxNone000kRenderTransAlpha0)
    
g_iCurrentPower[id] = NO_POWER_SELECTED
}

public 
reset_user_power(id)
{
    
id -= TASK_RESET_POWER

    g_iCurrentPower
[id] = NO_POWER_SELECTED

lexzor is offline