#include #include #include #include #define MAX_PLAYERS 32 new bool:g_hs_mode new display_hud new bool:g_RestartAttempt[MAX_PLAYERS+1] new g_fwid new HamHook:fw_TraceAttack; new g_iMaxPlayers; _Un_RegisterHamForwards(on = 0) { on ? EnableHamForward(fw_TraceAttack) : DisableHamForward(fw_TraceAttack); } public plugin_init() { register_plugin("HeadShot Mod", "1.1b", "ConnorMcLeod") register_dictionary("hs_only.txt") register_event("TextMsg", "eRestartAttempt", "a", "2=#Game_will_restart_in") register_event("ResetHUD", "eResetHUD", "be") register_concmd("amx_hs_mode", "switchCmd", ADMIN_KICK, "- <0|1> : Hs Only Mode = Disabled|Enabled") register_clcmd("clcmd_fullupdate", "fullupdateCmd") display_hud = register_cvar("amx_hs_display", "1") fw_TraceAttack = RegisterHam(Ham_TraceAttack, "player", "Forward_TraceAttack"); g_iMaxPlayers = get_maxplayers(); } public fullupdateCmd() { return PLUGIN_HANDLED_MAIN } public eRestartAttempt() { new players[MAX_PLAYERS], num get_players(players, num, "a") for (new i; i < num; ++i) g_RestartAttempt[players[i]] = true } public eResetHUD(id) { if (g_RestartAttempt[id]) { g_RestartAttempt[id] = false return } event_player_spawn(id) } event_player_spawn(id) { if( g_hs_mode && get_pcvar_num(display_hud) ) display_status(id); } public switchCmd(id, level, cid) { if(!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED new arg[2] read_argv(1, arg, 1) new temp = str_to_num(arg) switch(temp) { case 0: { if(!g_hs_mode) { client_print(id, print_console, "Hs Only Mod already Disabled") } else { unregister_forward(FM_TraceLine, g_fwid, 1) g_hs_mode = false client_print(id, print_console, "Hs Only Mod Disabled") } } case 1: { if(g_hs_mode) { client_print(id, print_console, "Hs Only Mod already Enabled") } else { g_fwid = register_forward(FM_TraceLine, "forward_traceline", 1) g_hs_mode = true client_print(id, print_console, "Hs Only Mod Enabled") display_status() } } default: { client_print(id, print_console, "amx_hs_mode <0|1> : Hs Only Mode = Disabled|Enabled") } } _Un_RegisterHamForwards(display_hud); return PLUGIN_HANDLED } public Forward_TraceAttack(id, attacker, Float:dmg, Float:dir[3], tr, dmgbit) { if(id != attacker && get_tr2(tr, TR_iHitgroup) != HIT_HEAD && get_pcvar_num(display_hud)) { if(1 <= attacker <= g_iMaxPlayers) { if(!get_pcvar_num(display_hud) && get_user_weapon(attacker) == CSW_KNIFE) { return HAM_IGNORED; } return HAM_SUPERCEDE; } } return HAM_IGNORED; } display_status(id=0){ switch( get_pcvar_num(display_hud) ) { case 1: { set_hudmessage(255, 10, 0, 0.05, 0.60, 2, 0.1, 6.0, 0.1, 0.15, -1) show_hudmessage(id, "%L", id ? id : LANG_PLAYER, "HS_MODE_ON") } case 2:client_print(id, print_chat, "%L", id ? id : LANG_PLAYER, "HS_MODE_ON") } }