This happens when I'm choosing weapon typeing kill in console then after respawn I see menu again and I'm choosing third option after another death when I'm about to be reborn CS i shuting down and I see below code in console. Help me please :|
In menuMain() I've set task cause I thought this error was caused by removing weapons while player was dead.
Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#define PLUGIN "Guns menu"
#define VERSION "1.0"
#define AUTHOR "orglee"
#define MSG_PREFIX "[GUNMENU]"
new g_guns[31][] = {"", "", "weapon_p228", "weapon_scout", "weapon_hegrenade", "weapon_xm1014",
"weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite",
"weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas",
"weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249",
"weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang",
"weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90"}
new g_pistol_names[6][] = {"Glock", "USP",
"Compact", "Deagle",
"Five-Seven", "Dual Bereta"}
new g_pistol_ids[6][] = {"weapon_glock18", "weapon_usp",
"weapon_p228", "weapon_deagle",
"weapon_fiveseven", "weapon_elite"}
new g_rifle_names[14][] = {"Clarion", "M4A1",
"Bullpup", "Galil",
"AK47", "Krieg",
"Scout", "AWP",
"Ingram", "Schmidt",
"UMP", "P90",
"MP5", "M249"}
new g_rifle_ids[14][] = {"weapon_famas", "weapon_m4a1",
"weapon_aug", "weapon_galil",
"weapon_ak47", "weapon_sg552",
"weapon_scout", "weapon_awp",
"weapon_mac10", "weapon_tmp",
"weapon_ump45", "weapon_p90",
"weapon_mp5navy", "weapon_m249"}
new menu_main_keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3
new menu_pistol_keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6
new menu_rifle_keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9
enum E_PLAYER
{
menu_status = 2,
menu_rifle_page = 3
}
new g_players[33][E_PLAYER], gun_pistol[33], gun_rifle[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_concmd("say /guns","menuDisplay")
register_concmd("say guns","menuDisplay")
register_event("ResetHUD", "menuMain", "be")
register_menucmd(register_menuid("Main_Menu"), menu_main_keys, "menuMainHandler")
register_menucmd(register_menuid("Pistol_Menu"), menu_pistol_keys, "menuPistolHandler")
register_menucmd(register_menuid("Rifle_Menu"), menu_rifle_keys, "menuRifleHandler")
}
public client_connect(id)
{
copy(gun_rifle[id], 22, "none")
copy(gun_pistol[id], 22, "none")
g_players[id][menu_status] = 1
g_players[id][menu_rifle_page] = 1
}
public menuDisplay(id)
{
if(!is_user_alive(id)) {
client_print(id, print_chat, "%s Choosing allowed only while player is alive.", MSG_PREFIX)
return
}
g_players[id][menu_status] = 1
menuMain(id)
}
public menuTask(args[])
{
menuMain(args[0])
}
public menuMain(id)
{
if(!is_user_alive(id)) {
// For debuging
client_print(id, print_chat, "Menu off loading saved weapons")
new args[1]
args[0] = id
set_task(2.0, "menuTask", id, args, 1)
}
// Add kevlar after respawn
cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM)
if(g_players[id][menu_status] == 0)
{
client_print(id, print_chat, "Menu wylaczone, przywracam bron")
client_print(id, print_chat, "Pistol: %s, Rifle: %s", gun_pistol[id], gun_rifle[id])
//weaponsDrop(id) - had also troubles here
give_item(id, gun_pistol[id])
give_item(id, gun_rifle[id])
}
else
{
client_print(id, print_chat, "Wyswietlam menu")
new menutext[50]
format(menutext, 191, "\
^n\r1. \wNew set\
^n\r2. \wLoad last\
^n\r3. \wLoad & close")
show_menu(id, menu_main_keys, menutext, -1, "Main_Menu")
}
}
public menuMainHandler(id, key)
{
// New Set
if(key == 0)
{
new menutext[192]
format(menutext, 191, "\^n\r1. \w%s^n\r2. \w%s^n\r3. \w%s^n\r4. \w%s^n\r5. \w%s^n\r6. \w%s",
g_pistol_names[0],
g_pistol_names[1],
g_pistol_names[2],
g_pistol_names[3],
g_pistol_names[4],
g_pistol_names[5])
show_menu(id, menu_pistol_keys, menutext, -1, "Pistol_Menu")
}
// Load Last
else if(key == 1)
{
if(!equal(gun_rifle[id], "none") && !equal(gun_pistol[id], "none"))
{
weaponsDrop(id)
client_print(id, print_chat, "Pistol: %s, Rifle: %s", gun_pistol[id], gun_rifle[id])
give_item(id, gun_pistol[id])
give_item(id, gun_rifle[id])
}
else
{
client_print(id, print_chat, "%s You have to select weapon first.", MSG_PREFIX)
menuMain(id)
}
}
// Load Last and turn menu off
else if(key == 2)
{
if(!equal(gun_rifle[id], "none") && !equal(gun_pistol[id], "none"))
{
weaponsDrop(id)
give_item(id, gun_pistol[id])
give_item(id, gun_rifle[id])
g_players[id][menu_status] = 0
client_print(id, print_chat, "%s Type guns to enable menu.", MSG_PREFIX)
}
else
{
client_print(id, print_chat, "%s You have to select weapon first.", MSG_PREFIX)
menuMain(id)
}
}
return PLUGIN_HANDLED
}
public menuPistolHandler(id, key)
{
weaponsDrop(id)
give_item(id, g_pistol_ids[key])
// Save pistol
copy(gun_pistol[id], 21, g_pistol_ids[key])
client_print(id, print_chat, "RiflePage: %d, MenuStatus: %d, GunPistol: %s, GunRifle: %s",
g_players[id][menu_rifle_page],
g_players[id][menu_status],
gun_pistol[id],
gun_rifle[id])
menuRifle(id)
}
public menuRifle(id)
{
new menutext[192]
if(g_players[id][menu_rifle_page] == 1)
{
format(menutext, 191, "\^n\r1. \w%s^n\r2. \w%s^n\r3. \w%s^n\r4. \w%s^n\r5. \w%s^n\r6. \w%s^n\r7. \w%s^n\r8. \w%s^n\r9. \wNext",
g_rifle_names[0],
g_rifle_names[1],
g_rifle_names[2],
g_rifle_names[3],
g_rifle_names[4],
g_rifle_names[5],
g_rifle_names[6],
g_rifle_names[7])
}
else
{
format(menutext, 191, "\r1. \w%s^n\r2. \w%s^n\r3. \w%s^n\r4. \w%s^n\r5. \w%s^n\r6. \w%s^n\r0. \wPrevious",
g_rifle_names[8],
g_rifle_names[9],
g_rifle_names[10],
g_rifle_names[11],
g_rifle_names[12],
g_rifle_names[13])
}
show_menu(id, menu_rifle_keys, menutext, -1, "Rifle_Menu")
return PLUGIN_HANDLED
}
public menuRifleHandler(id, key)
{
// Next page btn 9
if(key == 8)
{
if(g_players[id][menu_rifle_page] == 1)
{
g_players[id][menu_rifle_page] = 2
}
menuRifle(id)
}
// Back btn 0
else if(key == 9)
{
if(g_players[id][menu_rifle_page]== 2)
{
g_players[id][menu_rifle_page] = 1
}
menuRifle(id)
}
// Weapon already choosen
else
{
new gun_id;
if(g_players[id][menu_rifle_page] == 1) {
gun_id = key
} else {
gun_id = key + 8
}
give_item(id, g_rifle_ids[gun_id])
// save rifle
copy(gun_rifle[id], strlen(g_rifle_ids[gun_id]), g_rifle_ids[gun_id])
// reset meun page number
g_players[id][menu_rifle_page] = 1
}
return PLUGIN_HANDLED
}
public weaponsDrop(id)
{
new weapons[32]
new i, num_weapons
get_user_weapons(id, weapons, num_weapons)
for(i = 0; i < num_weapons; i++)
{
if(weapons[i] != CSW_HEGRENADE && weapons[i] != CSW_FLASHBANG && weapons[i] != CSW_SMOKEGRENADE && weapons[i] != CSW_KNIFE)
{
engclient_cmd(id, "drop", g_guns[weapons[i]])
}
}
}