ok good this inc gunxpmod_Shop.sma This are good ?
php code:
#include <amxmodx>
#include <gunxpmod>
#define PLUGIN "Gun Xp Mod Shop"
#define AUTHOR "DVBufu"
#define VERSION "1.4"
#define MAX_UNLOCKS 25
#define MAX_UNLOCKS_NAME_SIZE 64
#define MAX_UNLOCKS_DESC_SIZE 128
new g_menuPosition[33], gSelected[33];
enum _:iUnlocks
{
UL_Knife,
UL_Pistol,
UL_Rifle,
UL_Grenade,
UL_Item
};
//all
new g_numberofitems[iUnlocks];
new g_itemindex[iUnlocks][MAX_UNLOCKS+1];
new g_itemcost[iUnlocks][MAX_UNLOCKS+1];
new g_itemlevel[iUnlocks][MAX_UNLOCKS+1];
new g_itemaccess[iUnlocks][MAX_UNLOCKS+1];
new g_itemname[iUnlocks][MAX_UNLOCKS+1][MAX_UNLOCKS_NAME_SIZE+1];
new g_itemdesc[iUnlocks][MAX_UNLOCKS+1][MAX_UNLOCKS_DESC_SIZE+1];
new g_itemwpn[iUnlocks][MAX_UNLOCKS+1];
new bool:g_PlayerItem[33][iUnlocks][MAX_UNLOCKS+1];
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_dictionary("gunxpmod.txt");
register_clcmd("say /unlocks", "menus")
register_clcmd("say unlocks", "menus")
register_clcmd("say /ul", "menus")
register_clcmd("say ul", "menus")
register_menucmd(register_menuid("Unlocks Shop"), 1023, "action_item_upgrades");
}
public motd(id) {
show_motd(id, "http://master.cs-golden.lt/paslaugos/ordergame/vip_order_game.php?get=gold", "VIP Buy");
return PLUGIN_HANDLED;
}
public client_connect(id)
{
static i, j
for(i = 0; i < iUnlocks; ++i)
for(j = 0; j <= MAX_UNLOCKS; ++j)
g_PlayerItem[id][i][j] = false;
}
public menus(id)
{
new menu = menu_create("Tienda de Mejoras", "upgrades_menu");
new call = menu_makecallback("Call_Back");
gSelected[id] = 0;
new szMsg[256];
format(szMsg, 255, "Cuchillos (%s%d\w/\r%d\w)", (GetItemCount(g_PlayerItem[id][UL_Knife], g_numberofitems[UL_Knife]) == g_numberofitems[UL_Knife]) ? "\r" : "\y", GetItemCount(g_PlayerItem[id][UL_Knife], g_numberofitems[UL_Knife]), g_numberofitems[UL_Knife]);
menu_additem(menu, szMsg, _, _, g_numberofitems[UL_Knife] ? -1 : call);
format(szMsg, 255, "Pistolas (%s%d\w/\r%d\w)", (GetItemCount(g_PlayerItem[id][UL_Pistol], g_numberofitems[UL_Pistol]) == g_numberofitems[UL_Pistol]) ? "\r" : "\y", GetItemCount(g_PlayerItem[id][UL_Pistol], g_numberofitems[UL_Pistol]), g_numberofitems[UL_Pistol]);
menu_additem(menu, szMsg, _, _, g_numberofitems[UL_Pistol] ? -1 : call);
format(szMsg, 255, "Rifles (%s%d\w/\r%d\w)", (GetItemCount(g_PlayerItem[id][UL_Rifle], g_numberofitems[UL_Rifle]) == g_numberofitems[UL_Rifle]) ? "\r" : "\y", GetItemCount(g_PlayerItem[id][UL_Rifle], g_numberofitems[UL_Rifle]), g_numberofitems[UL_Rifle]);
menu_additem(menu, szMsg, _, _, g_numberofitems[UL_Rifle] ? -1 : call);
format(szMsg, 255, "Granadas (%s%d\w/\r%d\w)", (GetItemCount(g_PlayerItem[id][UL_Grenade], g_numberofitems[UL_Grenade]) == g_numberofitems[UL_Grenade]) ? "\r" : "\y", GetItemCount(g_PlayerItem[id][UL_Grenade], g_numberofitems[UL_Grenade]), g_numberofitems[UL_Grenade]);
menu_additem(menu, szMsg, _, _, g_numberofitems[UL_Grenade] ? -1 : call);
format(szMsg, 255, "Items (%s%d\w/\r%d\w)", (GetItemCount(g_PlayerItem[id][UL_Item], g_numberofitems[UL_Item]) == g_numberofitems[UL_Item]) ? "\r" : "\y", GetItemCount(g_PlayerItem[id][UL_Item], g_numberofitems[UL_Item]), g_numberofitems[UL_Item]);
menu_additem(menu, szMsg, _, _, g_numberofitems[UL_Item] ? -1 : call);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public Call_Back(id, menu, item)
return ITEM_DISABLED;
public upgrades_menu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
gSelected[id] = item;
g_menuPosition[id] = 0;
display_item_upgrades(id, 0, item);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public plugin_natives()
{
register_native("register_gxm_item", "register_unlock")
register_native("register_item_gxm", "register_unlock")
}
public register_unlock(plugin, params)
{
static item_section
item_section = get_param(5)-1
g_numberofitems[item_section]++;
g_itemindex[item_section][g_numberofitems[item_section]] = plugin;
get_string(1, g_itemname[item_section][g_numberofitems[item_section]], MAX_UNLOCKS_NAME_SIZE)
get_string(2, g_itemdesc[item_section][g_numberofitems[item_section]], MAX_UNLOCKS_DESC_SIZE)
g_itemcost[item_section][g_numberofitems[item_section]] = get_param(3);
g_itemlevel[item_section][g_numberofitems[item_section]] = get_param(4);
g_itemaccess[item_section][g_numberofitems[item_section]] = get_param(6) ? get_param(6) : 0;
g_itemwpn[item_section][g_numberofitems[item_section]] = get_param(7);
}
//ALL
public display_item_upgrades(id, pos, selection)
{
if(!is_user_alive(id))
return;
static menuBody[510], len;
len = 0;
gSelected[id] = selection;
if(pos < 0)
return;
new start = pos * 8
if(start >= g_numberofitems[selection])
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[selection])
end = g_numberofitems[selection];
new b = 0
for(new a = start; a < end; ++a)
{
new i = a + 1
new money, level
money = get_user_xp(id)
level = get_user_level(id)
if( g_PlayerItem[id][selection][i] )
len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_BOUGHT", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])
else if(g_itemaccess[selection][i] == !(get_user_flags(id)))
len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_ACCESS1", ++b, g_itemname[selection][i]);
else if(g_itemaccess[selection][i] == !(get_user_flags(id)))
len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_ACCESS2", ++b, g_itemname[selection][i]);
else if(g_itemaccess[selection][i] == ! (get_user_flags(id)))
len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP_ACCESS3", ++b, g_itemname[selection][i]);
else if(level < g_itemlevel[selection][i])
len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])
else if(PatrArTuri(id, g_itemwpn[selection][i]))
len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_NO_MORE", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])
else if( money < g_itemcost[selection][i] )
len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "INACTIVE_MENU_SHOP", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])
else
{
keys |= (1<<b)
switch(g_itemaccess[selection][i])
{
case 1:
len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "ACTIVE_MENU_SHOP2", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])
case 2:
len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "ACTIVE_MENU_SHOP2", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])
case 3:
len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "ACTIVE_MENU_SHOP2", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])
default:
len += formatex(menuBody[len], sizeof menuBody - 1 - len,"%L", id, "ACTIVE_MENU_SHOP", ++b, g_itemname[selection][i], g_itemcost[selection][i], g_itemlevel[selection][i])
}
}
}
if(end != g_numberofitems[selection])
{
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], gSelected[id]);
case 9: display_item_upgrades(id, --g_menuPosition[id], gSelected[id]);
default:
{
if(!is_user_alive(id))
return PLUGIN_HANDLED;
++key
new money
new plugin_id = g_itemindex[gSelected[id]][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[gSelected[id]][item_id];
if(money >= cost)
{
callfunc_begin_i(func, plugin_id)
callfunc_push_int(id)
callfunc_end()
g_PlayerItem[id][gSelected[id]][item_id] = true
new overall = money - cost
set_user_xp(id, overall)
client_printcolor(1, "/yItem Mejorado, Item: /g%s.", g_itemname[gSelected[id]][item_id])
client_printcolor(1, "/yDescripcion: /g%s.", g_itemdesc[gSelected[id]][item_id])
display_item_upgrades(id, g_menuPosition[id], gSelected[id]);
}
}
}
return PLUGIN_HANDLED;
}
stock client_printcollor ( const id, const input[], any:... )
{
new iCount = 1, iPlayers[32]
new sNewMsg[191]
vformat( sNewMsg, charsmax ( sNewMsg ), input, 3 )
//format ( sNewMsg, charsmax ( sNewMsg ), "^4[x^1 %s", sNewMsg )
replace_all ( sNewMsg, charsmax ( sNewMsg ), "/g", "^4") // green txt
replace_all ( sNewMsg, charsmax ( sNewMsg ), "/y", "^1") // orange txt
replace_all ( sNewMsg, charsmax ( sNewMsg ), "/t", "^3") // team txt
if ( id )
iPlayers[0] = id
else
get_players ( iPlayers, iCount, "ch" )
for ( new i; i < iCount; i++ )
{
if ( is_user_connected ( iPlayers[i] ) )
{
message_begin ( MSG_ONE_UNRELIABLE, get_user_msgid ( "SayText" ), _, iPlayers[i] )
write_byte ( iPlayers[i])
write_string ( sNewMsg)
message_end ()
}
}
}
stock bool
atrArTuri(id, wpn)
{
static i, j
for(i = 0; i < iUnlocks; ++i)
{
for(j = 0; j <= MAX_UNLOCKS; ++j)
{
if(g_PlayerItem[id][i][j])
{
if(g_itemwpn[i][j] == wpn)
return true
}
}
}
return false
}
GetItemCount(array[], size)
{
new count = 0;
for(new i = 1; i <= size; i++)
if(array[i])
count++;
return count;
}