/* Sublime AMXX Editor v3.0.0-beta */
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#define PLUGIN "Armas for Admins"
#define VERSION "1.0.18"
#define AUTHOR "gabs"
#define Get_BitVar(%1,%2) (%1 & (1 << (%2 & 31)))
#define Set_BitVar(%1,%2) %1 |= (1 << (%2 & 31))
#define UnSet_BitVar(%1,%2) %1 &= ~(1 << (%2 & 31))
enum _:wpnInfo
{
wpnInfo_Id,
wpnInfo_Name[32],
wpnInfo_MenuName[32],
wpnInfo_Flags
}
//AÑADE MÁS ARMAS SIGUIENDO LA INFORMACIÓN: https://forums.alliedmods.net/archive/index.php/t-59003.html
new const szArmasPrim[][wpnInfo] =
{
{CSW_AK47, "weapon_ak47", "Rifle AK47", ADMIN_ALL}, /* Esta arma la podran elegir todos*/
{CSW_M4A1, "weapon_m4a1", "Rifle M4A1", ADMIN_BAN}, /* Esta arma solo la usará el que tenga acceso al ban "flag 'd'" */
{CSW_M3, "weapon_m3", "Escopeta M3", ADMIN_RCON} /* Acceso a RCON (basicamente el dueño o el rango mas alto) "flag 'l'" */
}
new const szArmasSec[][wpnInfo] =
{
{CSW_DEAGLE, "weapon_deagle", "Desert Deagle", ADMIN_ALL},
{CSW_USP, "weapon_usp", "USP", ADMIN_ALL},
{CSW_GLOCK18, "weapon_glock18", "GLOCK 18", ADMIN_BAN}
}
new g_iPrim, g_iSec;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event( "HLTV", "fw_NewRound", "a", "1=0", "2=0" );
register_clcmd("say /guns", "MainMenu");
register_clcmd("say /armas", "MainMenu");
}
public fw_NewRound()
{
g_iPrim = 0;
g_iSec = 0;
}
public MainMenu(id)
{
new iMenu, iTitle[32], iText[64];
formatex(iTitle, charsmax(iTitle), "\r[Guns Menú] \wMenú by \rGabs");
iMenu = menu_create(iTitle, "MainMenuHandler");
formatex(iText, charsmax(iText), "%sSeleccionar Primaria", Get_BitVar(g_iPrim, id) ? "\d":"\w");
menu_additem(iMenu, iText);
formatex(iText, charsmax(iText), "%sSeleccionar Secundaria", Get_BitVar(g_iSec, id) ? "\d":"\w");
menu_additem(iMenu, iText);
menu_setprop(iMenu, MPROP_BACKNAME, "Atrás");
menu_setprop(iMenu, MPROP_NEXTNAME, "Siguiente");
menu_setprop(iMenu, MPROP_EXITNAME, "Salir");
menu_display(id, iMenu);
return PLUGIN_HANDLED;
}
public MainMenuHandler(id, iItem, iMenu)
{
if(iItem == MENU_EXIT || !is_user_alive(id))
return PLUGIN_HANDLED;
switch(iItem)
{
case 0:
{
if(Get_BitVar(g_iPrim, id))
{
client_print_color(id, print_team_default, "^4[GUNS]^1 Ya has elegido un arma primaria durante esta ronda!");
return PLUGIN_HANDLED;
}
GunsMenu(id);
return PLUGIN_HANDLED;
}
case 1:
{
if(Get_BitVar(g_iSec, id))
{
client_print_color(id, print_team_default, "^4[GUNS]^1 Ya has elegido un arma secundaria durante esta ronda!");
return PLUGIN_HANDLED;
}
Guns2Menu(id);
return PLUGIN_HANDLED;
}
}
return PLUGIN_HANDLED;
}
public GunsMenu(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED;
new iMenu, iTitle[64], iText[64];
formatex(iTitle, charsmax(iTitle), "\r[Arma Primaria] \wMenú by \rGabs^n\dSelecciona tu arma primaria");
iMenu = menu_create(iTitle, "GunsMenu_Handler");
for(new i = 0; i < sizeof szArmasPrim; i++)
{
new iWpnAmmo;
iWpnAmmo = cs_get_weapon_info(szArmasPrim[i][wpnInfo_Id], CsWeaponInfo:CS_WEAPONINFO_MAX_ROUNDS);
formatex(iText, charsmax(iText), "\r[\w%s\r] [\y%d \w de munición\r]", szArmasPrim[i][wpnInfo_MenuName], iWpnAmmo);
menu_additem(iMenu, iText);
}
menu_setprop(iMenu, MPROP_BACKNAME, "Atrás");
menu_setprop(iMenu, MPROP_NEXTNAME, "Siguiente");
menu_setprop(iMenu, MPROP_EXITNAME, "Salir");
menu_display(id, iMenu);
return PLUGIN_HANDLED;
}
public GunsMenu_Handler(id, iMenu, iItem)
{
if(iItem == MENU_EXIT || !is_user_alive(id))
return PLUGIN_HANDLED;
if(Get_BitVar(g_iPrim, id))
{
client_print_color(id, print_team_default, "^4[GUNS]^1 Ya has elegido un arma primaria durante esta ronda!");
return PLUGIN_HANDLED;
}
if(!(get_user_flags(id) && szArmasPrim[iItem][wpnInfo_Flags]))
{
client_print_color(id, print_team_default, "^4[GUNS]^1 No tienes el flag que se requiere para esta arma. Flag ^3[^1%s^3]^1", szArmasPrim[iItem][wpnInfo_Flags])
return PLUGIN_HANDLED;
}
new iWpnAmmo;
iWpnAmmo = cs_get_weapon_info(szArmasPrim[iItem][wpnInfo_Id], CsWeaponInfo:CS_WEAPONINFO_MAX_ROUNDS);
give_item(id, szArmasPrim[iItem][wpnInfo_Name]);
cs_set_user_bpammo(id, szArmasPrim[iItem][wpnInfo_Id], iWpnAmmo);
client_print_color(id, print_team_default, "^4[GUNS]^1 Se te ha otorgado un ^4%s^1", szArmasPrim[iItem][wpnInfo_MenuName])
Set_BitVar(g_iPrim, id);
return PLUGIN_HANDLED;
}
public Guns2Menu(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED;
new iMenu, iTitle[64], iText[64];
formatex(iTitle, charsmax(iTitle), "\r[Arma Secundaria] \wMenú by \rGabs^n\dSelecciona tu arma secundaria");
iMenu = menu_create(iTitle, "Guns2Menu_Handler");
for(new i = 0; i < sizeof szArmasSec; i++)
{
new iWpnAmmo;
iWpnAmmo = cs_get_weapon_info(szArmasSec[i][wpnInfo_Id], CsWeaponInfo:CS_WEAPONINFO_MAX_ROUNDS);
formatex(iText, charsmax(iText), "\r[\w%s\r] [\y%d \w de munición\r]", szArmasSec[i][wpnInfo_MenuName], iWpnAmmo);
menu_additem(iMenu, iText);
}
menu_setprop(iMenu, MPROP_BACKNAME, "Atrás");
menu_setprop(iMenu, MPROP_NEXTNAME, "Siguiente");
menu_setprop(iMenu, MPROP_EXITNAME, "Salir");
menu_display(id, iMenu);
return PLUGIN_HANDLED;
}
public Guns2Menu_Handler(id, iMenu, iItem)
{
if(iItem == MENU_EXIT || !is_user_alive(id))
return PLUGIN_HANDLED;
if(Get_BitVar(g_iSec, id))
{
client_print_color(id, print_team_default, "^4[GUNS]^1 Ya has elegido un arma secundaria durante esta ronda!");
return PLUGIN_HANDLED;
}
if(!(get_user_flags(id) & szArmasSec[iItem][wpnInfo_Flags]))
{
client_print_color(id, print_team_default, "^4[GUNS]^1 No tienes el flag que se requiere para esta arma. Flag ^3[^1%s^3]^1", szArmasSec[iItem][wpnInfo_Flags])
return PLUGIN_HANDLED;
}
new iWpnAmmo;
iWpnAmmo = cs_get_weapon_info(szArmasSec[iItem][wpnInfo_Id], CsWeaponInfo:CS_WEAPONINFO_MAX_ROUNDS);
give_item(id, szArmasSec[iItem][wpnInfo_Name]);
cs_set_user_bpammo(id, szArmasSec[iItem][wpnInfo_Id], iWpnAmmo);
client_print_color(id, print_team_default, "^4[GUNS]^1 Se te ha otorgado un ^4%s^1", szArmasSec[iItem][wpnInfo_MenuName])
Set_BitVar(g_iSec, id);
return PLUGIN_HANDLED;
}