Can't understand the code
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; }
|