#include <amxmodx>
#include <cstrike>
#include <hamsandwich>
#pragma semicolon 1
#define PLUGIN_NAME "Duel Menu"
#define PLUGIN_VERSION "Psilon"
#define PLUGIN_AUTHOR "WPMG Team"
#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) %1 |= (1 << (%2 & 31))
#define reset_bit(%1,%2) %1 &= ~(1 << (%2 & 31))
#define is_alive(%1) get_bit(g_bAlive, %1)
#define set_alive(%1) set_bit(g_bAlive, %1)
#define reset_alive(%1) reset_bit(g_bAlive, %1)
#define is_ct(%1) get_bit(g_bCT, %1)
#define set_ct(%1) set_bit(g_bCT, %1)
#define reset_ct(%1) reset_bit(g_bCT, %1)
#define register_menu_duel() register_menucmd(register_menuid(MENU_DUEL_NAME), MENU_DUEL_KEYS, "CMenu__Duel")
#define MENU_DUEL_NAME "Duel"
#define MENU_DUEL_KEYS MENU_KEY_1|MENU_KEY_2
#define MENU_DUEL_TEXT "Вы Будете Играть \rДуель\w ???^n^n\r1.\w Да Буду^n\r2. Нет Не Буду"
#define KEY1 0
#define CShowMenu__Duel(%1) show_menu(%1, MENU_DUEL_KEYS, MENU_DUEL_TEXT, -1, MENU_DUEL_NAME)
// Bools
new g_bAlive;
new g_bCT;
// Integers
new g_iMaxPlayers;
// Init
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
RegisterHam(Ham_Spawn, "player", "CPlayer__Spawn_Post", 1);
RegisterHam(Ham_Killed, "player", "CPlayer__Killed_Post", 1);
register_event("TeamInfo", "CEvent__TeamInfo", "a");
register_menu_duel();
g_iMaxPlayers = get_maxplayers();
}
// Events
public client_disconnect(id) reset_alive(id);
public CEvent__TeamInfo()
{
new szTeam[2];
read_data(2, szTeam, 1);
if (szTeam[0] == 'C') set_ct(read_data(1));
else reset_ct(read_data(1));
}
// Ham Forwards
public CPlayer__Spawn_Post(id)
{
if (!is_user_alive(id)) return;
if (!_:cs_get_user_team(id)) return;
set_alive(id);
}
public CPlayer__Killed_Post(id)
{
reset_alive(id);
if (!is_ct(id)) return;
new iAliveCT, iLastCT;
for (new i = 1; i <= g_iMaxPlayers; i++)
{
if (!is_alive(i)) continue;
if (!is_ct(i)) continue;
iLastCT = i;
iAliveCT++;
}
if (iAliveCT > 1 || !iLastCT) return;
CShowMenu__Duel(iLastCT);
}
public CMenu__Duel(id, key)
{
if (key == KEY1) return client_cmd(id, "say /duel");
return PLUGIN_HANDLED;
}