Senior Member
|
07-21-2023
, 15:41
Re: shop menu
|
#3
|
Quote:
Originally Posted by lexzor
Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>
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
}
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)
}
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 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:
{
}
}
return PLUGIN_HANDLED
}
public reset_user_power(id)
{
id -= TASK_RESET_POWER
g_iCurrentPower[id] = NO_POWER_SELECTED
}
|
Correct now ? how will I do , speed, invisibility, regenerate life, and how does it show time when I use it ?
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <hamsandwich>
native csr_get_user_points(id);
native csr_set_user_points(id, amount);
static const NO_POWER_SELECTED = -1
static const TASK_RESET_POWER = 13312
enum
{
DOUBLE_DAMAGE,
INVISIBILITY,
REGLIFE,
SPEED
}
enum _:g_Mag_Cvar
{
CVAR_DAMAGE_PRICE,
CVAR_INVISI_PRICE,
CVAR_REGLIFE_PRICE,
CVAR_SPEED_PRICE,
CVAR_ICE_PRICE,
CVAR_AWP_PRICE,
CVAR_TECTEC_PRICE,
CVAR_SCOUT_PRICE,
CVAR_GRENADE_PRICE,
CVAR_SHIELD_PRICE
}
new g_Cvar[g_Mag_Cvar], pCash[33]
new g_iCurrentPower[MAX_PLAYERS + 1]
public plugin_init()
{
register_plugin("Shop Menu", "1.0", "SETT")
RegisterHam(Ham_TakeDamage, "player", "Ham_TakeDamage_Pre", 0)
g_Cvar[CVAR_DAMAGE_PRICE] = create_cvar("csr_damage", "500")
g_Cvar[CVAR_INVISI_PRICE] = create_cvar("csr_invisibily", "500")
g_Cvar[CVAR_REGLIFE_PRICE] = create_cvar("csr_reglife", "500")
g_Cvar[CVAR_SPEED_PRICE] = create_cvar("csr_speed", "500")
g_Cvar[CVAR_ICE_PRICE] = create_cvar("csr_ice", "500")
g_Cvar[CVAR_AWP_PRICE] = create_cvar("csr_awp", "500")
g_Cvar[CVAR_TECTEC_PRICE] = create_cvar("csr_tec", "500")
g_Cvar[CVAR_SCOUT_PRICE] = create_cvar("csr_scout", "500")
g_Cvar[CVAR_GRENADE_PRICE] = create_cvar("csr_grenade", "500")
g_Cvar[CVAR_SHIELD_PRICE] = create_cvar("csr_grenade", "500")
register_clcmd("say /loja", "xShopMenu")
}
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 client_connect(id)
{
g_iCurrentPower[id] = NO_POWER_SELECTED
}
public xShopMenu(id)
{
new szTitle[256]
formatex(szTitle, charsmax(szTitle), "\rShop Menu \d|| \wExtra items^n \dCASH %d", csr_get_user_points(id))
new pMenu = menu_create(szTitle, "xShopMenuHandle")
formatex(szTitle, charsmax(szTitle), "Damage 2x \r[Doubre Damage] \d[%d]", get_pcvar_num(g_Cvar[CVAR_DAMAGE_PRICE])),
menu_additem(pMenu, szTitle, "0");
formatex(szTitle, charsmax(szTitle), "Invisibility \r[15 Second] \d[%d]", get_pcvar_num(g_Cvar[CVAR_INVISI_PRICE])),
menu_additem(pMenu, szTitle, "1");
formatex(szTitle, charsmax(szTitle), "Regenerating Life \r[Regeret Life] \d[%d]", get_pcvar_num(g_Cvar[CVAR_REGLIFE_PRICE])),
menu_additem(pMenu, szTitle, "2");
formatex(szTitle, charsmax(szTitle), "Speed \r[15] \d[%d]", get_pcvar_num(g_Cvar[CVAR_SPEED_PRICE]));
menu_additem(pMenu, szTitle, "3"),
formatex(szTitle, charsmax(szTitle), "Ice Grenade \r[Freeze] \d[%d]", get_pcvar_num(g_Cvar[CVAR_ICE_PRICE])),
menu_additem(pMenu, szTitle, "4");
formatex(szTitle, charsmax(szTitle), "AWP \r[Weapon] \d[%d]", get_pcvar_num(g_Cvar[CVAR_AWP_PRICE])),
menu_additem(pMenu, szTitle, "5");
formatex(szTitle, charsmax(szTitle), "TEC TEC \r[Weapon] \d[%d]", get_pcvar_num(g_Cvar[CVAR_TECTEC_PRICE])),
menu_additem(pMenu, szTitle, "6");
formatex(szTitle, charsmax(szTitle), "Scout \r[Weapon] \d[%d]", get_pcvar_num(g_Cvar[CVAR_SCOUT_PRICE])),
menu_additem(pMenu, szTitle, "7");
formatex(szTitle, charsmax(szTitle), "KIT Grenade \r[Grenade] \r[%d]", get_pcvar_num(g_Cvar[CVAR_GRENADE_PRICE])),
menu_additem(pMenu, szTitle, "8");
formatex(szTitle, charsmax(szTitle), "KIT Grenade \r[Grenade] \r[%d]", get_pcvar_num(g_Cvar[CVAR_SHIELD_PRICE])),
menu_additem(pMenu, szTitle, "9");
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)
return PLUGIN_HANDLED
}
public xShopMenuHandle(id, pMenu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(pMenu)
return PLUGIN_HANDLED
}
new szData[6], szName[64], access, callback;
menu_item_getinfo(pMenu, item, access, szData, charsmax(szData), szName, charsmax(szName), callback);
pCash[id] = csr_get_user_points(id)
new pKey = str_to_num(szData)
{
switch(pKey)
{
case 0:
{
if(pCash[id] >= get_pcvar_num(g_Cvar[CVAR_DAMAGE_PRICE]))
{
g_iCurrentPower[id] = DOUBLE_DAMAGE
set_task(30.0, "reset_user_power", id + TASK_RESET_POWER)
}
else
{
client_print_color(id, print_team_default, "You Dont Have Enough Cash")
}
}
case 1:
{
if(pCash[id] >= get_pcvar_num(g_Cvar[CVAR_INVISI_PRICE]))
{
}
else
{
client_print_color(id, print_team_default, "You Dont Have Enough Cash")
}
}
case 2:
{
if(pCash[id] >= get_pcvar_num(g_Cvar[CVAR_REGLIFE_PRICE]))
{
}
else
{
client_print_color(id, print_team_default, "You Dont Have Enough Cash")
}
}
case 3:
{
if(pCash[id] >= get_pcvar_num(g_Cvar[CVAR_SPEED_PRICE]))
{
}
else
{
client_print_color(id, print_team_default, "You Dont Have Enough Cash")
}
}
case 4:
{
if(pCash[id] >= get_pcvar_num(g_Cvar[CVAR_ICE_PRICE]))
{
csr_set_user_points(id, clamp(pCash[id] - get_pcvar_num(g_Cvar[CVAR_ICE_PRICE])))
//client_cmd("say /frostnade")
client_print_color(id, print_team_default, "You Have Bought ICE")
}
else
{
client_print_color(id, print_team_default, "You Dont Have Enough Cash")
}
}
case 5:
{
if(pCash[id] >= get_pcvar_num(g_Cvar[CVAR_AWP_PRICE]))
{
csr_set_user_points(id, clamp(pCash[id] - get_pcvar_num(g_Cvar[CVAR_AWP_PRICE])))
give_item(id, "weapon_awp")
client_print_color(id, print_team_default, "You Have Bought AWP")
}
else
{
client_print_color(id, print_team_default, "You Dont Have Enough Cash")
}
}
case 6:
{
if(pCash[id] >= get_pcvar_num(g_Cvar[CVAR_TECTEC_PRICE]))
{
csr_set_user_points(id, clamp(pCash[id] - get_pcvar_num(g_Cvar[CVAR_TECTEC_PRICE])))
give_item(id, "weapon_awp")
client_print_color(id, print_team_default, "You Have Bought TEC TEC")
}
else
{
client_print_color(id, print_team_default, "You Dont Have Enough Cash")
}
}
case 7:
{
if(pCash[id] >= get_pcvar_num(g_Cvar[CVAR_SCOUT_PRICE]))
{
csr_set_user_points(id, clamp(pCash[id] - get_pcvar_num(g_Cvar[CVAR_SCOUT_PRICE])))
give_item(id, "weapon_scout")
client_print_color(id, print_team_default, "You Have Bought SCOUT")
}
else
{
client_print_color(id, print_team_default, "You Dont Have Enough Cash")
}
}
case 8:
{
if(pCash[id] >= get_pcvar_num(g_Cvar[CVAR_GRENADE_PRICE]))
{
csr_set_user_points(id, clamp(pCash[id] - get_pcvar_num(g_Cvar[CVAR_GRENADE_PRICE])))
give_item(id, "weapon_hegranade")
give_item(id, "weapon_smokegrenade")
give_item(id, "weapon_flashbang")
client_print_color(id, print_team_default, "You Have Bought KIT")
}
else
{
client_print_color(id, print_team_default, "You Dont Have Enough Cash")
}
}
case 9:
{
if(pCash[id] >= get_pcvar_num(g_Cvar[CVAR_SHIELD_PRICE]))
{
csr_set_user_points(id, clamp(pCash[id] - get_pcvar_num(g_Cvar[CVAR_SHIELD_PRICE])))
give_item(id, "weapon_shield")
client_print_color(id, print_team_default, "You Have Bought SHIELD")
}
else
{
client_print_color(id, print_team_default, "You Dont Have Enough Cash")
}
}
}
}
return PLUGIN_HANDLED
}
public reset_user_power(id)
{
id -= TASK_RESET_POWER
g_iCurrentPower[id] = NO_POWER_SELECTED
}
|
|