PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <zev2_core>
#define PLUGIN "Zombie Escape V2: Shop"
#define VERSION "1.0.0"
#define AUTHOR "Kia"
// ===============================================================================
// Variables
// ===============================================================================
/* Enums */
enum _:ItemData
{
ItemName[32],
ItemTeam,
ItemCost,
ItemPlugin,
ItemFuncID
}
/* Arrays */
new Array:g_aItems
/* Integer */
new g_iTotalItems
new g_iCredits[33]
// ===============================================================================
// plugin_natives
// ===============================================================================
public plugin_natives()
{
register_library("zev2_shop")
register_native("ZEV2_AddItem", "Native_ZEV2_AddItem")
register_native("ZEV2_GetUserCredits", "Native_ZEV2_GetUserCreidts")
register_native("ZEV2_SetUserCredits", "Native_ZEV2_SetUserCreidts")
}
// ===============================================================================
// Native_ZEV2_AddItem
// ===============================================================================
public Native_ZEV2_AddItem(iPlugin, iParams)
{
new eItemData[ItemData]
get_string(1, eItemData[ItemName], charsmax(eItemData[ItemName]))
eItemData[ItemTeam] = get_param(2)
eItemData[ItemCost] = get_param(3)
eItemData[ItemPlugin] = iPlugin
new szHandler[ 32 ];
get_string(4, szHandler, charsmax( szHandler ) );
eItemData[ ItemFuncID ] = get_func_id( szHandler, iPlugin );
ArrayPushArray(g_aItems, eItemData)
g_iTotalItems++
return (g_iTotalItems - 1)
}
// ===============================================================================
// Native_ZEV2_GetUserCreidts
// ===============================================================================
public Native_ZEV2_GetUserCreidts(iPlayer)
return g_iCredits[get_param(1)]
// ===============================================================================
// Native_ZEV2_SetUserCreidts
// ===============================================================================
public Native_ZEV2_SetUserCreidts(iPlayer, iAmount)
{
new iPlayer = get_param(1);
g_iCredits[iPlayer] = max(0, get_param(2));
return g_iCredits[iPlayer];
}
// ===============================================================================
// plugin_init
// ===============================================================================
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
/* Arrays */
g_aItems = ArrayCreate(ItemData)
/* ClCMDs */
register_clcmd("say /shop", "CreditShop")
}
// ===============================================================================
// WeaponShop
// ===============================================================================
public CreditShop(id, iPage)
{
if(!g_iTotalItems || !is_user_alive(id))
return;
iPage = clamp(iPage, 0, (g_iTotalItems - 1) / 7 )
new szMenuString[64]
formatex(szMenuString, charsmax(szMenuString), "Zombie Escape V2 - Item Shop^nYour Credits : \y%i", g_iCredits[id])
new menu = menu_create(szMenuString, "CreditShop_handler")
new eItemData[ItemData]
new szItem[64]
new szNum[3]
new bool:bZombieReq
for(new i = 0; i < g_iTotalItems; i++)
{
ArrayGetArray(g_aItems, i, eItemData)
formatex(szItem, charsmax(szItem), "%s - \y%i Credits", eItemData[ItemName], eItemData[ItemCost])
num_to_str(i, szNum, charsmax(szNum))
bZombieReq = eItemData[ItemTeam] == 2 ? true : false
if(bZombieReq && ZEV2_IsUserZombie(id))
if(g_iCredits[id] >= eItemData[ItemCost])
menu_additem(menu, szItem, szNum, 0)
else
menu_additem(menu, szItem, szNum, 1<<31)
else if(!bZombieReq && !ZEV2_IsUserZombie(id))
if(g_iCredits[id] >= eItemData[ItemCost])
menu_additem(menu, szItem, szNum, 0)
else
menu_additem(menu, szItem, szNum, 1<<31)
}
menu_display(id, menu, iPage)
}
public CreditShop_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new iAccess, szNum[3], hCallback;
menu_item_getinfo(menu, item, iAccess, szNum, charsmax(szNum), _, _, hCallback)
menu_destroy(menu)
// get item index from menu
new iItemIndex = str_to_num(szNum)
new eItemData[ItemData]
ArrayGetArray(g_aItems, iItemIndex, eItemData)
g_iCredits[id] -= eItemData[ItemCost]
callfunc_begin_i(eItemData[ItemFuncID], eItemData[ItemPlugin])
callfunc_push_int(id)
callfunc_end()
return PLUGIN_HANDLED
}
public Native_GetItemId(const text[])
{
new eItemData[ItemData]
for(new i = 0; i < g_iTotalItems; i++)
{
if(equali(text, eItemData[ItemName[i]])
return -1
}
}
I will register native after i know that the function should work good.