Hey, can someone explain me how does this menu work? (it's from gunxp mod by xBatista)
PHP Code:
public item_upgrades(id)
{
display_item_upgrades(id, g_menuPosition[id] = 0);
return PLUGIN_HANDLED;
}
public display_item_upgrades(id, pos)
{
if(!is_user_alive(id))
return;
static menuBody[510], len;
len = 0
if(pos < 0)
{
return;
}
new start = pos * 8
if(start >= g_numberofitems)
{
start = pos = g_menuPosition[id]
}
len += formatex(menuBody[len], sizeof menuBody - 1 - len, "%L", LANG_SERVER, "TITLE_MENU_SHOP", get_user_xp(id), get_user_max_level(id))
new end = start + 8
new keys = MENU_KEY_0
if(end > g_numberofitems)
{
end = g_numberofitems
}
new b = 0
for(new a = start; a < end; ++a)
{
new i = a + 1
new money
money = get_user_xp(id)
if( money < g_itemcost[i] )
{
if( g_PlayerItem[id][i] )
{
len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_BOUGHT", ++b, g_itemname[i], g_itemcost[i])
}
else
{
len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP", ++b, g_itemname[i], g_itemcost[i])
}
}
else if( g_PlayerItem[id][i] )
{
len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_BOUGHT", ++b, g_itemname[i], g_itemcost[i])
}
else
{
keys |= (1<<b)
len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "ACTIVE_MENU_SHOP", ++b, g_itemname[i], g_itemcost[i])
}
}
if(end != g_numberofitems)
{
len += formatex(menuBody[len], sizeof menuBody - 1 - len, "^n\r9. \w%L\r^n0. \w%L", id, "NEXT_MENU", id, pos ? "BACK_MENU" : "EXIT_MENU")
keys |= MENU_KEY_9
}
else
{
len += formatex(menuBody[len], sizeof menuBody - 1 - len, "^n\r0. \w%L", id, pos ? "BACK_MENU" : "EXIT_MENU")
}
show_menu(id, keys, menuBody, -1, "Unlocks Shop")
}
public action_item_upgrades(id, key)
{
switch(key)
{
case 8: display_item_upgrades(id, ++g_menuPosition[id]);
case 9: display_item_upgrades(id, --g_menuPosition[id]);
default:
{
if(!is_user_alive(id))
{
return PLUGIN_HANDLED;
}
++key
new money
new plugin_id = g_itemindex[g_menuPosition[id] * 8 + key]
new item_id = g_menuPosition[id] * 8 + key
new func = get_func_id("gxm_item_enabled", plugin_id)
money = get_user_xp(id)
new cost = g_itemcost[item_id]
if(money >= cost)
{
callfunc_begin_i(func, plugin_id)
callfunc_push_int(id)
callfunc_end()
g_PlayerItem[id][item_id] = true
new overall = money - cost
set_user_xp(id, overall)
client_printcolor(id, "/yItem Bought Successfully, Item: /g%s.", g_itemname[item_id])
client_printcolor(id, "/yDescription:/g%s.", g_itemdesc[item_id])
display_item_upgrades(id, g_menuPosition[id]);
}
}
}
return PLUGIN_HANDLED;
}