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(id, amount);
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 iAttacker, Float:fDamage, iDamgeBits)
{
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(4, fDamage * 2.0)
return HAM_HANDLED
}
return HAM_IGNORED
}
public fwResetMaxSpeed(id)
{
if(is_user_alive(id))
{
if(pev_valid(id))
{
set_pev(id, pev_speed, pev(id, pev_speed) * 1.2)
}
}
}
public client_connect(id)
{
g_iCurrentPower[id] = NO_POWER_SELECTED
}
public xShopMenu(id)
{
new szTitle[256]
formatex(szTitle, charsmax(szTitle), "Shop Menu")
new pMenu = menu_create(szTitle, "xShopMenuHandle")
formatex(szTitle, charsmax(szTitle), "Damage 2x[Doubre Damage][]150");
menu_additem(pMenu, szTitle, "1");
formatex(szTitle, charsmax(szTitle), "Invisibility[15 Second][]500");
//you are using data parametere of menu_additem wrong, loon in item handler
menu_additem(pMenu, szTitle, "2");
menu_setprop(pMenu, MPROP_EXIT, MEXIT_ALL)
menu_setprop(pMenu, MPROP_BACKNAME, "Voltar")
menu_setprop(pMenu, MPROP_NEXTNAME, "Proximo")
menu_setprop(pMenu, MPROP_EXITNAME, "Sair")
menu_display(id, pMenu, 0)
// you don't need that in that case if you don't use return in your function
// return PLUGIN_HANDLED
}
public xShopMenuHandle(id, pMenu, item)
{
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(pMenu, item, _, szMenuItemData, charsmax(szMenuItemData), _, _, _)
new iMenuItemData = str_to_num(szMenuItemData)
client_print(id, print_chat, "Yay, u pressed button %i but it's data is %i", item, iMenuItemData)
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(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0)
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(id, pev_health, pev(id, pev_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(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0)
g_iCurrentPower[id] = NO_POWER_SELECTED
}
public reset_user_power(id)
{
id -= TASK_RESET_POWER
g_iCurrentPower[id] = NO_POWER_SELECTED
}