| groofshark |
05-19-2015 19:46 |
what's wrong here?
PHP Code:
#define PLUGIN "Pro Shop"
#define VERSION "0.0.1"
#define AUTHOR "groofshark"
#include <amxmodx>
#include <hamsandwich>
#define MAX_PLAYERS 32
#define MAX_ITEMS 2
enum ( <<=1 )
{
ExtraHP = 1,
ExtraArmor,
SilentFootsteps
}
new g_pItems[MAX_PLAYERS + 1]
#define ActivatePlayerItem(%1, %2) ( g_pItems[%1] |= %2 )
#define DeactivatePlayerItem(%1, %2) ( g_pItems[%1] &= ~%2 )
new g_pItemsCounter[MAX_PLAYERS + 1]
#define ResetPlayerItemCounter(%1) ( g_pItemsCounter[%1] = 0 )
enum _:UniqueMenuOptions
{
_Items,
_ItemsStatus
}
new g_bUnique[MAX_PLAYERS + 1][UniqueMenuOptions]
#define UniqueMenuOptions(%1, %2) ( %1 & (1<<%2) )
#define ActivateUMO(%1, %2) ( %1 |= (1<<%2) )
#define DeactivateUMO(%1, %2) ( %1 &= ~(1<<%2) )
public plugin_init()
{
register_plugin( PLUGIN, VERSION, AUTHOR )
RegisterHam(Ham_Spawn, "player", "CBase_Player_Spawn_P", true)
register_clcmd("say /shop", "ClCmd_Shop")
register_clcmd("say_team /shop", "ClCmd_Shop")
}
public CBase_Player_Spawn_P(id)
{
if( is_user_alive(id) )
{
ResetPlayerItemCounter(id)
ActivatePlayerItem(id, ExtraHP)
ActivatePlayerItem(id, ExtraArmor)
ActivatePlayerItem(id, SilentFootsteps)
switch( UniqueMenuOptions(id, _Items) )
{
case 1..3: DeactivateUMO(id, _ItemsStatus)
}
}
}
public ClCmd_Shop(id)
{
new szTemp[500 char]
formatex(szTemp, charsmax(szTemp), "\r[Shop] \yItems Menu")
new iMenu = menu_create(szTemp, "Items_Menu_Handler")
new iCallback = menu_makecallback("Items_Menu_Callback")
formatex(szTemp, charsmax(szTemp), "Extra HP")
menu_additem(iMenu, szTemp, "1")
formatex(szTemp, charsmax(szTemp), "Extra AP")
menu_additem(iMenu, szTemp, "2")
formatex(szTemp, charsmax(szTemp), "Silent Footsteps")
menu_additem(iMenu, szTemp, "3")
menu_display(id, iMenu)
}
public Items_Menu_Handler(id, iMenu, iItem)
{
if( iItem == MENU_EXIT )
{
menu_destroy(iMenu)
return PLUGIN_HANDLED
}
switch(iItem)
{
case 0: // Option #1 from menu
{
ActivatePlayerItem(id, ExtraHP)
if( g_Items[id] & ExtraHP )
{
set_user_health(id, get_user_health(iPlayer) + 50)
}
}
case 1: // Option #2 from menu
{
ActivatePlayerItem(id, ExtraAP)
if( g_Items[id] & ExtraArmor )
{
set_user_armor(id, 100)
}
}
case 2: // Option #3 from menu
{
ActivatePlayerItem(id, SilentFootsteps)
if( g_Items[id] & SilentFootsteps )
{
set_user_footsteps(id, 1)
}
}
}
}
return PLUGIN_HANDLED
}
|