Better way to do this?
First of all the plugin is working as i wanted. But i think there must be much better way to do the same.
There is a menu , where to pick a player , then choose to take or give a weapon to that player. I want when i take a weapon from a player to have an option to give it back to him. This code is working fine , but how to do this better?
PHP Code:
/*
*=====CVARs=====
*
*takewep_enable "def 1" - 1/0 Enable/Disable Plugin
*takewep_showmsg "def 1" - 1/0 Enable/Disable show activity
*
*/
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#include <fakemeta>
#define PLUGIN "Take Weapons Menu"
#define AUTHOR "AUTHOR"
#define VERSION "1.0"
#define MAX_PLAYERS 32
enum _:WepName {
weapon_p228,
weapon_shield,
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 weapons[32],weapnum,weapname[32]
new player
new gCvarMSG
new gCvarEnable
new bool:gWepName[MAX_PLAYERS + 1][WepName]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("amx_takeweapon","PlayersMenu")
RegisterHam(Ham_Killed, "player","PlayerKilled")
gCvarMSG = register_cvar("takewep_showmsg", "1")
gCvarEnable = register_cvar("takewep_enable", "1")
}
public PlayerKilled(id)
{
gWepName[player][weapon_knife] = false
gWepName[player][weapon_p228] = false
gWepName[player][weapon_shield] = false
gWepName[player][weapon_scout] = false
gWepName[player][weapon_hegrenade] = false
gWepName[player][weapon_xm1014] = false
gWepName[player][weapon_c4] = false
gWepName[player][weapon_mac10] = false
gWepName[player][weapon_aug] = false
gWepName[player][weapon_smokegrenade] = false
gWepName[player][weapon_elite] = false
gWepName[player][weapon_fiveseven] = false
gWepName[player][weapon_ump45] = false
gWepName[player][weapon_sg550] = false
gWepName[player][weapon_galil] = false
gWepName[player][weapon_famas] = false
gWepName[player][weapon_usp] = false
gWepName[player][weapon_awp] = false
gWepName[player][weapon_mp5navy] = false
gWepName[player][weapon_m249] = false
gWepName[player][weapon_m3] = false
gWepName[player][weapon_m4a1] = false
gWepName[player][weapon_tmp] = false
gWepName[player][weapon_g3sg1] = false
gWepName[player][weapon_flashbang] = false
gWepName[player][weapon_deagle] = false
gWepName[player][weapon_sg552] = false
gWepName[player][weapon_ak47] = false
gWepName[player][weapon_p90] = false
gWepName[player][weapon_glock18] = false
}
stock ham_give_weapon(id,weapon[])
{
if(!equal(weapon,"weapon_",7)) return 0;
new wEnt = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,weapon));
if(!pev_valid(wEnt)) return 0;
set_pev(wEnt,pev_spawnflags,SF_NORESPAWN);
dllfunc(DLLFunc_Spawn,wEnt);
if(!ExecuteHamB(Ham_AddPlayerItem,id,wEnt))
{
if(pev_valid(wEnt)) set_pev(wEnt,pev_flags,pev(wEnt,pev_flags) | FL_KILLME);
return 0;
}
ExecuteHamB(Ham_Item_AttachToPlayer,wEnt,id)
return 1;
}
stock ham_strip_weapon(id,weapon[])
{
if(!equal(weapon,"weapon_",7)) return 0;
new wId = get_weaponid(weapon);
if(!wId) return 0;
new wEnt;
while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
if(!wEnt) return 0;
if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt);
if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0;
ExecuteHamB(Ham_Item_Kill,wEnt);
set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId));
// this block should be used for Counter-Strike:
if(wId == CSW_C4)
{
cs_set_user_plant(id,0,0);
cs_set_user_bpammo(id,CSW_C4,0);
}
else if(wId == CSW_SMOKEGRENADE || wId == CSW_FLASHBANG || wId == CSW_HEGRENADE)
cs_set_user_bpammo(id,wId,0);
return 1;
}
public PlayersMenu(id)
{
if(get_pcvar_num(gCvarEnable) == 1)
{
if(get_user_flags(id) & ADMIN_BAN)
{
new menu = menu_create("\rChoose a Player:", "pMenu_handler");
new players[32], pnum, tempid;
new szName[32], szTempid[10];
get_players(players, pnum);
for( new i; i<pnum; i++ )
{
tempid = players[i];
if(is_user_alive(tempid))
{
get_user_name(tempid, szName, charsmax(szName));
num_to_str(tempid, szTempid, charsmax(szTempid));
menu_additem(menu, szName, szTempid, 0);
}
}
menu_display(id, menu, 0);
}
else
{
client_print(id, print_chat, "You have no access to that command")
}
}
return PLUGIN_HANDLED
}
public pMenu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new tempid = str_to_num(data);
player = tempid
if(is_user_alive(tempid))
{
choose_menu(id)
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public choose_menu(id)
{
new menu = menu_create("\bVip Shop", "choose_menu_handler");
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_additem(menu, "Take Weapon", "1", 0)
menu_additem(menu, "Give Weapon", "2", 0)
menu_display(id, menu, 0);
return PLUGIN_HANDLED
}
public choose_menu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
PlayersMenu(id)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], szName[64]
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
take_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 2:
{
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public take_weapons_menu(id)
{
new menu = menu_create("\rChoose a Weapon to Take:", "tMenu_handler");
weapnum = 1
new szAddItemText[555 char]
get_user_weapons(player,weapons,weapnum)
for(new i = 1; i < weapnum; i++)
{
get_weaponname(weapons[i],weapname,31)
format(szAddItemText, charsmax(szAddItemText), "%s", weapname)
menu_additem(menu, szAddItemText, weapons,0)
}
menu_display(id, menu, 0);
}
public tMenu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
choose_menu(id)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new adminname[18]
get_user_name(id, adminname, 17)
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
if(is_user_alive(player))
{
ham_strip_weapon(player, szName)
if(get_pcvar_num(gCvarMSG) == 1)
{
client_print(player,print_chat, "Admin %s took away from you %s" ,adminname , szName)
}
if(containi( szName, "knife") != -1)
gWepName[player][weapon_knife] = true
if(containi( szName, "p228") != -1)
gWepName[player][weapon_p228] = true
if(containi( szName, "shield") != -1)
gWepName[player][weapon_shield] = true
if(containi( szName, "scout") != -1)
gWepName[player][weapon_scout] = true
if(containi( szName, "hegrenade") != -1)
gWepName[player][weapon_hegrenade] = true
if(containi( szName, "xm1014") != -1)
gWepName[player][weapon_xm1014] = true
if(containi( szName, "_c4") != -1)
gWepName[player][weapon_c4] = true
if(containi( szName, "mac10") != -1)
gWepName[player][weapon_mac10] = true
if(containi( szName, "aug") != -1)
gWepName[player][weapon_aug] = true
if(containi( szName, "smokegrenade") != -1)
gWepName[player][weapon_smokegrenade] = true
if(containi( szName, "elite") != -1)
gWepName[player][weapon_elite] = true
if(containi( szName, "fiveseven") != -1)
gWepName[player][weapon_fiveseven] = true
if(containi( szName, "ump45") != -1)
gWepName[player][weapon_ump45] = true
if(containi( szName, "sg550") != -1)
gWepName[player][weapon_sg550] = true
if(containi( szName, "galil") != -1)
gWepName[player][weapon_galil] = true
if(containi( szName, "famas") != -1)
gWepName[player][weapon_famas] = true
if(containi( szName, "usp") != -1)
gWepName[player][weapon_usp] = true
if(containi( szName, "awp") != -1)
gWepName[player][weapon_awp] = true
if(containi( szName, "mp5navy") != -1)
gWepName[player][weapon_mp5navy] = true
if(containi( szName, "m249") != -1)
gWepName[player][weapon_m249] = true
if(containi( szName, "m3") != -1)
gWepName[player][weapon_m3] = true
if(containi( szName, "m4a1") != -1)
gWepName[player][weapon_m4a1] = true
if(containi( szName, "tmp") != -1)
gWepName[player][weapon_tmp] = true
if(containi( szName, "g3sg1") != -1)
gWepName[player][weapon_g3sg1] = true
if(containi( szName, "flashbang") != -1)
gWepName[player][weapon_flashbang] = true
if(containi( szName, "deagle") != -1)
gWepName[player][weapon_deagle] = true
if(containi( szName, "sg552") != -1)
gWepName[player][weapon_sg552] = true
if(containi( szName, "ak47") != -1)
gWepName[player][weapon_ak47] = true
if(containi( szName, "p90") != -1)
gWepName[player][weapon_p90] = true
if(containi( szName, "glock") != -1)
gWepName[player][weapon_glock18] = true
take_weapons_menu(id)
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public give_weapons_menu(id)
{
new menu = menu_create("\rChoose a Weapon to Give:", "gMenu_handler");
if(gWepName[player][weapon_knife])
{
menu_additem(menu, "weapon_knife","1",0)
}
if(gWepName[player][weapon_p228])
{
menu_additem(menu, "weapon_p228","2",0)
}
if(gWepName[player][weapon_shield])
{
menu_additem(menu, "weapon_shield","3",0)
}
if(gWepName[player][weapon_scout])
{
menu_additem(menu, "weapon_scout","4",0)
}
if(gWepName[player][weapon_hegrenade])
{
menu_additem(menu, "weapon_hegrenade","5",0)
}
if(gWepName[player][weapon_xm1014])
{
menu_additem(menu, "weapon_xm1014","6",0)
}
if(gWepName[player][weapon_c4])
{
menu_additem(menu, "weapon_c4","7",0)
}
if(gWepName[player][weapon_mac10])
{
menu_additem(menu, "weapon_mac10","8",0)
}
if(gWepName[player][weapon_aug])
{
menu_additem(menu, "weapon_aug","9",0)
}
if(gWepName[player][weapon_smokegrenade])
{
menu_additem(menu, "weapon_smokegrenade","10",0)
}
if(gWepName[player][weapon_elite])
{
menu_additem(menu, "weapon_elite","11",0)
}
if(gWepName[player][weapon_fiveseven])
{
menu_additem(menu, "weapon_fiveseven","12",0)
}
if(gWepName[player][weapon_ump45])
{
menu_additem(menu, "weapon_ump45","13",0)
}
if(gWepName[player][weapon_sg550])
{
menu_additem(menu, "weapon_sg550","14",0)
}
if(gWepName[player][weapon_galil])
{
menu_additem(menu, "weapon_galil","15",0)
}
if(gWepName[player][weapon_famas])
{
menu_additem(menu, "weapon_famas","16",0)
}
if(gWepName[player][weapon_usp])
{
menu_additem(menu, "weapon_usp","17",0)
}
if(gWepName[player][weapon_awp])
{
menu_additem(menu, "weapon_awp","18",0)
}
if(gWepName[player][weapon_mp5navy])
{
menu_additem(menu, "weapon_mp5navy","19",0)
}
if(gWepName[player][weapon_m249])
{
menu_additem(menu, "weapon_m249","20",0)
}
if(gWepName[player][weapon_m3])
{
menu_additem(menu, "weapon_m3","21",0)
}
if(gWepName[player][weapon_m4a1])
{
menu_additem(menu, "weapon_m4a1","22",0)
}
if(gWepName[player][weapon_tmp])
{
menu_additem(menu, "weapon_tmp","23",0)
}
if(gWepName[player][weapon_g3sg1])
{
menu_additem(menu, "weapon_g3sg1","24",0)
}
if(gWepName[player][weapon_flashbang])
{
menu_additem(menu, "weapon_flashbang","25",0)
}
if(gWepName[player][weapon_deagle])
{
menu_additem(menu, "weapon_deagle","26",0)
}
if(gWepName[player][weapon_sg552])
{
menu_additem(menu, "weapon_sg552","27",0)
}
if(gWepName[player][weapon_ak47])
{
menu_additem(menu, "weapon_ak47","28",0)
}
if(gWepName[player][weapon_p90])
{
menu_additem(menu, "weapon_p90","29",0)
}
if(gWepName[player][weapon_glock18])
{
menu_additem(menu, "weapon_glock18","30",0)
}
menu_display(id, menu, 0);
}
public gMenu_handler(id, menu, item)
{
if( item == MENU_EXIT )
{
choose_menu(id)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new adminname[18]
get_user_name(id, adminname, 17)
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback);
new key = str_to_num(data);
switch(key)
{
case 1:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_knife")
gWepName[player][weapon_knife] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 2:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_p228")
gWepName[player][weapon_p228] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 3:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_shield")
gWepName[player][weapon_shield] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 4:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_scout")
gWepName[player][weapon_scout] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 5:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_hegrenade")
gWepName[player][weapon_hegrenade] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 6:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_xm1014")
gWepName[player][weapon_xm1014] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 7:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_c4")
gWepName[player][weapon_c4] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 8:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_mac10")
gWepName[player][weapon_mac10] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 9:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_aug")
gWepName[player][weapon_aug] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 10:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_smokegrenade")
gWepName[player][weapon_smokegrenade] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 11:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_elite")
gWepName[player][weapon_elite] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 12:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_fiveseven")
gWepName[player][weapon_fiveseven] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 13:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_ump45")
gWepName[player][weapon_ump45] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 14:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_sg550")
gWepName[player][weapon_sg550] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 15:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_galil")
gWepName[player][weapon_galil] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 16:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_famas")
gWepName[player][weapon_famas] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 17:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_usp")
gWepName[player][weapon_usp] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 18:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_awp")
gWepName[player][weapon_awp] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 19:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_mp5navy")
gWepName[player][weapon_mp5navy] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 20:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_m249")
gWepName[player][weapon_m249] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 21:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_m3")
gWepName[player][weapon_m3] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 22:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_m4a1")
gWepName[player][weapon_m4a1] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 23:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_tmp")
gWepName[player][weapon_tmp] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 24:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_g3sg1")
gWepName[player][weapon_g3sg1] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 25:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_flashbang")
gWepName[player][weapon_flashbang] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 26:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_deagle")
gWepName[player][weapon_deagle] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 27:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_sg552")
gWepName[player][weapon_sg552] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 28:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_ak47")
gWepName[player][weapon_ak47] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 29:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_p90")
gWepName[player][weapon_p90] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 30:
{
if(!is_user_alive(player))
return PLUGIN_HANDLED
ham_give_weapon(player,"weapon_glock18")
gWepName[player][weapon_glock18] = false
give_weapons_menu(id)
menu_destroy(menu)
return PLUGIN_HANDLED
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
Edit:
Code editted.
|