#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <cstrike>
#include <zombieplague>
#include <hamsandwich>
new const INI_FILE[] = "weapon_menu.cfg"
new g_PistolName[30][128], g_PistolTodo[30][128], Float:g_PistolCost[30], Float:g_PistolBullets[30], g_PistolCounter, PistolCost[30][10], PistolBullets[30][10]
new g_ShotgunName[30][128], g_ShotgunTodo[30][128], Float:g_ShotgunCost[30], Float:g_ShotgunBullets[30], g_ShotgunCounter, ShotgunCost[30][10], ShotgunBullets[30][10]
new g_AutomateName[30][128], g_AutomateTodo[30][128], Float:g_AutomateCost[30], Float:g_AutomateBullets[30], g_AutomateCounter, AutomateCost[30][10], AutomateBullets[30][10]
new g_RifleName[30][128], g_RifleTodo[30][128], Float:g_RifleCost[30], Float:g_RifleBullets[30], g_RifleCounter, RifleCost[30][10], RifleBullets[30][10]
new g_MachinegunName[30][128], g_MachinegunTodo[30][128], Float:g_MachinegunCost[30], Float:g_MachinegunBullets[30], g_MachinegunCounter, MachinegunCost[30][10], MachinegunBullets[30][10]
new g_ExtendgunName[30][128], g_ExtendgunTodo[30][128], Float:g_ExtendgunCost[30], Float:g_ExtendgunBullets[30], g_ExtendgunCounter, ExtendgunCost[30][10], ExtendgunBullets[30][10]
new g_ItemName[30][128], g_ItemTodo[30][128], Float:g_ItemCost[30], g_ItemCounter, ItemCost[30][10]
new g_KnifeName[30][128], g_KnifeTodo[30][128], Float:g_KnifeCost[30], g_KnifeCounter, KnifeCost[30][10]
new g_WeaponCallBack
new g_ShotgunMenu, g_PistolMenu, g_MainMenu, g_AutomateMenu, g_RifleMenu, g_MachinegunMenu, g_ExtendgunMenu, g_ItemMenu, g_KnifeMenu
new g_Category
new PMessage[128], SMessage[128], AMessage[128], RMessage[128], MMessage[128], EMessage[128], IMessage[128], KMessage[128]
public plugin_init()
{
register_plugin("Easy Weapon Menu", "1.0", "Sugarv")
//Main Menu create and additem
g_MainMenu = menu_create("Purchase menu", "main_handler")
RegisterHam(Ham_Spawn, "player", "spawn", 1)
menu_additem(g_MainMenu, "Pistol")
menu_additem(g_MainMenu, "Shotgun")
menu_additem(g_MainMenu, "Automate")
menu_additem(g_MainMenu, "Rifle")
menu_additem(g_MainMenu, "Machinegun")
menu_additem(g_MainMenu, "Extend Gun")
menu_additem(g_MainMenu, "Items")
menu_additem(g_MainMenu, "Melee")
//Create Sub menu
g_PistolMenu = menu_create("Pistols", "pistol_handler")
g_ShotgunMenu = menu_create("Shotguns", "shotgun_handler")
g_AutomateMenu = menu_create("Automate", "automate_handler")
g_RifleMenu = menu_create("Rifle", "rifle_handler")
g_MachinegunMenu = menu_create("Machinegun", "machinegun_handler")
g_ExtendgunMenu = menu_create("Extend Gun", "extendgun_handler")
g_ItemMenu = menu_create("Items", "item_handler")
g_KnifeMenu = menu_create("Melee", "knife_handler")
//Make callback function
g_WeaponCallBack = menu_makecallback("WeaponsCallBackFunc")
//Add item in Sub menu
for(new iP = 0; iP < g_PistolCounter; iP++)
{
formatex(PMessage, 127, "%s \y%d$", g_PistolName[iP], floatround(g_PistolCost[iP]))
menu_additem(g_PistolMenu, PMessage, _, _, g_WeaponCallBack)
}
for(new iS = 0; iS < g_ShotgunCounter; iS++)
{
formatex(SMessage, 127, "%s \y%d$", g_ShotgunName[iS], floatround(g_ShotgunCost[iS]))
menu_additem(g_ShotgunMenu, SMessage, _, _, g_WeaponCallBack)
}
for(new iA = 0; iA < g_AutomateCounter; iA++)
{
formatex(AMessage, 127, "%s \y%d$", g_AutomateName[iA], floatround(g_AutomateCost[iA]))
menu_additem(g_AutomateMenu, AMessage, _, _, g_WeaponCallBack)
}
for(new iR = 0; iR < g_RifleCounter; iR++)
{
formatex(RMessage, 127, "%s \y%d$", g_RifleName[iR], floatround(g_RifleCost[iR]))
menu_additem(g_RifleMenu, RMessage, _, _, g_WeaponCallBack)
}
for(new iM = 0; iM < g_MachinegunCounter; iM++)
{
formatex(MMessage, 127, "%s \y%d$", g_MachinegunName[iM], floatround(g_MachinegunCost[iM]))
menu_additem(g_MachinegunMenu, MMessage, _, _, g_WeaponCallBack)
}
for(new iE = 0; iE < g_ExtendgunCounter; iE++)
{
formatex(EMessage, 127, "%s \y%d$", g_ExtendgunName[iE], floatround(g_ExtendgunCost[iE]))
menu_additem(g_ExtendgunMenu, EMessage, _, _, g_WeaponCallBack)
}
for(new iI = 0; iI < g_ItemCounter; iI++)
{
formatex(IMessage, 127, "%s \y%d$", g_ItemName[iI], floatround(g_ItemCost[iI]))
menu_additem(g_ItemMenu, IMessage, _, _, g_WeaponCallBack)
}
for(new iK = 0; iK < g_KnifeCounter; iK++)
{
formatex(KMessage, 127, "%s \y%d$", g_KnifeName[iK], floatround(g_KnifeCost[iK]))
menu_additem(g_KnifeMenu, KMessage, _, _, g_WeaponCallBack)
}
}
public plugin_precache()
{
new cfgdir[64], filepath[100], linedata[1024]
get_configsdir(cfgdir, charsmax(cfgdir))
formatex(filepath, charsmax(filepath), "%s/%s", cfgdir, INI_FILE)
if (file_exists(filepath))
{
new file = fopen(filepath,"rt")
while (!feof(file))
{
fgets(file, linedata, charsmax(linedata))
if(linedata[0] == 'P')//Pistol
g_Category = 0
if(linedata[0] == 'S')//Shotgun
g_Category = 1
if(linedata[0] == 'A')//Automate
g_Category = 2
if(linedata[0] == 'R')//Rifle
g_Category = 3
if(linedata[0] == 'M')//Machinegun
g_Category = 4
if(linedata[0] == 'E')//Extendgun
g_Category = 5
if(linedata[0] == 'I')//Item
g_Category = 6
if(linedata[0] == 'K')//Knifes
g_Category = 7
if(linedata[0] == '"')
{
switch(g_Category)
{
case 0:
{
parse(linedata, g_PistolName[g_PistolCounter], 127, g_PistolTodo[g_PistolCounter], 127, PistolCost[g_PistolCounter], 9, PistolBullets[g_PistolCounter], 9)
g_PistolCost[g_PistolCounter] = floatstr(PistolCost[g_PistolCounter])
g_PistolBullets[g_PistolCounter] = floatstr(PistolBullets[g_PistolCounter])
g_PistolCounter++
}
case 1:
{
parse(linedata, g_ShotgunName[g_ShotgunCounter], 127, g_ShotgunTodo[g_ShotgunCounter], 127, ShotgunCost[g_ShotgunCounter], 9, ShotgunBullets[g_ShotgunCounter], 9)
g_ShotgunCost[g_ShotgunCounter] = floatstr(ShotgunCost[g_ShotgunCounter])
g_ShotgunBullets[g_ShotgunCounter] = floatstr(ShotgunBullets[g_ShotgunCounter])
g_ShotgunCounter++
}
case 2:
{
parse(linedata, g_AutomateName[g_AutomateCounter], 127, g_AutomateTodo[g_AutomateCounter], 127, AutomateCost[g_AutomateCounter], 9, AutomateBullets[g_AutomateCounter], 9)
g_AutomateCost[g_AutomateCounter] = floatstr(AutomateCost[g_AutomateCounter])
g_AutomateBullets[g_AutomateCounter] = floatstr(AutomateBullets[g_AutomateCounter])
g_AutomateCounter++
}
case 3:
{
parse(linedata, g_RifleName[g_RifleCounter], 127, g_RifleTodo[g_RifleCounter], 127, RifleCost[g_RifleCounter], 9, RifleBullets[g_RifleCounter], 9)
g_RifleCost[g_RifleCounter] = floatstr(RifleCost[g_RifleCounter])
g_RifleBullets[g_RifleCounter] = floatstr(RifleBullets[g_RifleCounter])
g_RifleCounter++
}
case 4:
{
parse(linedata, g_MachinegunName[g_MachinegunCounter], 127, g_MachinegunTodo[g_MachinegunCounter], 127, MachinegunCost[g_MachinegunCounter], 9, MachinegunBullets[g_MachinegunCounter], 9)
g_MachinegunCost[g_MachinegunCounter] = floatstr(MachinegunCost[g_MachinegunCounter])
g_MachinegunBullets[g_MachinegunCounter] = floatstr(MachinegunBullets[g_MachinegunCounter])
g_MachinegunCounter++
}
case 5:
{
parse(linedata, g_ExtendgunName[g_ExtendgunCounter], 127, g_ExtendgunTodo[g_ExtendgunCounter], 127, ExtendgunCost[g_ExtendgunCounter], 9, ExtendgunBullets[g_ExtendgunCounter], 9)
g_ExtendgunCost[g_ExtendgunCounter] = floatstr(ExtendgunCost[g_ExtendgunCounter])
g_ExtendgunBullets[g_ExtendgunCounter] = floatstr(ExtendgunBullets[g_ExtendgunCounter])
g_ExtendgunCounter++
}
case 6:
{
parse(linedata, g_ItemName[g_ItemCounter], 127, g_ItemTodo[g_ItemCounter], 127, ItemCost[g_ItemCounter], 9)
g_ItemCost[g_ItemCounter] = floatstr(ItemCost[g_ItemCounter])
g_ItemCounter++
}
case 7:
{
parse(linedata, g_KnifeName[g_KnifeCounter], 127, g_KnifeTodo[g_KnifeCounter], 127, KnifeCost[g_KnifeCounter], 9)
g_KnifeCost[g_KnifeCounter] = floatstr(KnifeCost[g_KnifeCounter])
g_KnifeCounter++
}
}
}
}
}
}
public spawn(id)
{
if(is_user_alive(id))
menu_display(id, g_MainMenu, 0)
}
public main_handler(id, menu, item)
{
switch(item)
{
case 0:
{
menu_display(id, g_PistolMenu, 0)
}
case 1:
{
menu_display(id, g_ShotgunMenu, 0)
}
case 2:
{
menu_display(id, g_AutomateMenu, 0)
}
case 3:
{
menu_display(id, g_RifleMenu, 0)
}
case 4:
{
menu_display(id, g_MachinegunMenu, 0)
}
case 5:
{
menu_display(id, g_ExtendgunMenu, 0)
}
case 6:
{
menu_display(id, g_ItemMenu, 0)
}
case 7:
{
menu_display(id, g_KnifeMenu, 0)
}
}
}
public pistol_handler(id, menu, item)
{
if((g_PistolTodo[item][0] == 'w') && (g_PistolTodo[item][1] == 'e') && (g_PistolTodo[item][2] == 'a'))
{
give_item(id, g_PistolTodo[item])
cs_set_user_bpammo(id, get_weaponid(g_PistolTodo[item]), floatround(g_PistolBullets[item]))
cs_set_user_money(id, cs_get_user_money(id) - floatround(g_PistolCost[item]))
}
else
zp_force_buy_extra_item(id, zp_get_extra_item_id(g_PistolTodo[item]), true)
}
public shotgun_handler(id, menu, item)
{
give_item(id, g_ShotgunTodo[item])
cs_set_user_bpammo(id, get_weaponid(g_ShotgunTodo[item]), floatround(g_ShotgunBullets[item]))
cs_set_user_money(id, cs_get_user_money(id) - floatround(g_ShotgunCost[item]))
}
public automate_handler(id, menu, item)
{
give_item(id, g_AutomateTodo[item])
cs_set_user_bpammo(id, get_weaponid(g_AutomateTodo[item]), floatround(g_AutomateBullets[item]))
cs_set_user_money(id, cs_get_user_money(id) - floatround(g_AutomateCost[item]))
}
public rifle_handler(id, menu, item)
{
give_item(id, g_RifleTodo[item])
cs_set_user_bpammo(id, get_weaponid(g_RifleTodo[item]), floatround(g_RifleBullets[item]))
cs_set_user_money(id, cs_get_user_money(id) - floatround(g_RifleCost[item]))
}
public machinegun_handler(id, menu, item)
{
give_item(id, g_MachinegunTodo[item])
cs_set_user_bpammo(id, get_weaponid(g_MachinegunTodo[item]), floatround(g_MachinegunBullets[item]))
cs_set_user_money(id, cs_get_user_money(id) - floatround(g_MachinegunCost[item]))
}
public extendgun_handler(id, menu, item)
{
give_item(id, g_ExtendgunTodo[item])
cs_set_user_bpammo(id, get_weaponid(g_ExtendgunTodo[item]), floatround(g_ExtendgunBullets[item]))
cs_set_user_money(id, cs_get_user_money(id) - floatround(g_ExtendgunCost[item]))
}
public item_handler(id, menu, item)
{
give_item(id, g_ItemTodo[item])
cs_set_user_money(id, cs_get_user_money(id) - floatround(g_ItemCost[item]))
}
public knife_handler(id, menu, item)
{
give_item(id, g_KnifeTodo[item])
cs_set_user_money(id, cs_get_user_money(id) - floatround(g_KnifeCost[item]))
}
public WeaponsCallBackFunc(id, menu, item)
{
if(menu == g_PistolMenu)
{
if(cs_get_user_money(id) < g_PistolCost[item])
return ITEM_DISABLED;
}
if(menu == g_ShotgunMenu)
{
if(cs_get_user_money(id) < g_ShotgunCost[item])
return ITEM_DISABLED;
}
if(menu == g_AutomateMenu)
{
if(cs_get_user_money(id) < g_AutomateCost[item])
return ITEM_DISABLED;
}
if(menu == g_RifleMenu)
{
if(cs_get_user_money(id) < g_RifleCost[item])
return ITEM_DISABLED;
}
if(menu == g_MachinegunMenu)
{
if(cs_get_user_money(id) < g_MachinegunCost[item])
return ITEM_DISABLED;
}
if(menu == g_ExtendgunMenu)
{
if(cs_get_user_money(id) < g_ExtendgunCost[item])
return ITEM_DISABLED;
}
if(menu == g_ItemMenu)
{
if(cs_get_user_money(id) < g_ItemCost[item])
return ITEM_DISABLED;
}
if(menu == g_KnifeMenu)
{
if(cs_get_user_money(id) < g_Knife