#include <zombie_escape>
new gi[33][32]
new const grenade_snds[][] =
{
"radio/grenades/ct_flashbang01.wav",
"radio/grenades/ct_flashbang02.wav",
"radio/grenades/ct_flashbang03.wav",
"radio/grenades/ct_grenade01.wav",
"radio/grenades/ct_grenade02.wav",
"radio/grenades/ct_grenade03.wav",
"radio/grenades/ct_smoke01.wav",
"radio/grenades/ct_smoke02.wav",
"radio/grenades/ct_smoke03.wav",
"radio/grenades/t_flashbang01.wav",
"radio/grenades/t_flashbang02.wav",
"radio/grenades/t_flashbang03.wav",
"radio/grenades/t_grenade01.wav",
"radio/grenades/t_grenade02.wav",
"radio/grenades/t_grenade03.wav",
"radio/grenades/t_smoke01.wav",
"radio/grenades/t_smoke02.wav",
"radio/grenades/t_smoke03.wav"
}
new grenade_txts[charsmax(grenade_snds)][65], g_txt_enabled = 1
public plugin_precache()
{
for(new i = 0; i < charsmax(grenade_snds); i++)
precache_sound(grenade_snds[i])
}
public plugin_init()
{
register_plugin("[ZE] Addon: Grenade Status", "2.0", "Jack")
register_event("CurWeapon","grenade_icon","be","1=1")
register_message(get_user_msgid("SendAudio"), "Block_Msg_Audio")
register_message(get_user_msgid("TextMsg"), "Block_Msg_Text")
RegisterHookChain(RG_CBasePlayer_Killed, "Fw_Killed", 1)
new szFilepath[64]; get_localinfo("amxx_configsdir", szFilepath, charsmax(szFilepath))
add(szFilepath, charsmax(szFilepath), "/grenade_messages.ini")
if(!file_exists(szFilepath))
{
g_txt_enabled = 0
return
}
new f = fopen(szFilepath, "rt")
new szData[64], i = 0
while( !feof(f) && i < charsmax(grenade_snds))
{
fgets(f, szData, charsmax(szData))
trim(szData)
if(!szData[0] || szData[0] == ';' || szData[0] == '/' && szData[1] == '/')
continue
copy(grenade_txts[i], charsmax(szData), szData)
i++
}
fclose(f)
}
public ze_user_infected(id) remove_grenade_icon(id)
public Fw_Killed(id) remove_grenade_icon(id)
public Block_Msg_Audio(msg_id, msg_dest, msg_entity)
{
if(get_msg_args() != 3 || get_msg_argtype(2) != ARG_STRING)
return PLUGIN_CONTINUE
new arg2[20]; get_msg_arg_string(2, arg2, charsmax(arg2))
if(equal(arg2[1], "!MRAD_FIREINHOLE"))
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public Block_Msg_Text()
{
if(g_txt_enabled != 1 || get_msg_args() != 5 || get_msg_argtype(3) != ARG_STRING || get_msg_argtype(5) != ARG_STRING) {
return PLUGIN_CONTINUE
}
new arg3[16]
get_msg_arg_string(3, arg3, 15)
if(!equal(arg3, "#Game_radio")) {
return PLUGIN_CONTINUE
}
new arg5[20]
get_msg_arg_string(5, arg5, 19)
if(equal(arg5, "#Fire_in_the_hole"))
{
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public grenade_throw(id, grenid, wpnid)
{
if(!is_user_alive(id)) return
new players[32], pnum, playername[32], flag, temp
get_players(players, pnum, "a")
get_user_name(id, playername, charsmax(playername))
if(get_member(id, m_iTeam) == TEAM_CT) flag = 0 // CS_TEAM_CT no sence to include cstrike for 1 constant
else flag = 9
for(new i = 1; i < pnum + 1; i++)
{
if(!is_user_alive(i)) continue
if(get_member(i, m_iTeam) == get_member(id, m_iTeam)) // Same team?
{
switch(wpnid)
{
case CSW_HEGRENADE: temp = random_num(0, 4) + flag
case CSW_FLASHBANG, CSW_SMOKEGRENADE: temp = random_num(5, 8) + flag
}
client_cmd(i, "spk ^"%s^"", grenade_snds[temp])
ColorPrint(i, "!t%s !y(!gRADIO!y): !t%s !y[!g%s!y]", playername, grenade_txts[temp], get_user_weapon(id) == CSW_HEGRENADE ? "Fire Nade" : "Freeze Nade")
remove_grenade_icon(id)
}
}
}
public grenade_icon(id)
{
if(!is_user_alive(id)) return
remove_grenade_icon(id)
new red, green, blue
if(read_data(2) == CSW_HEGRENADE) // Fire
{
gi[id] = "dmg_heat"
red = 255
green = 0
blue = 0
}
else if(read_data(2) == CSW_FLASHBANG || read_data(2) == CSW_SMOKEGRENADE) // Frost
{
gi[id] = "dmg_cold"
red = 0
green = 255
blue = 255
}
message_begin(MSG_ONE, get_user_msgid("StatusIcon"), {0,0,0}, id)
write_byte(1) // 1- Show || 2- Flash
write_string(gi[id])
write_byte(red)
write_byte(green)
write_byte(blue)
message_end()
}
public remove_grenade_icon(id)
{
if(!is_user_alive(id)) return
message_begin(MSG_ONE, get_user_msgid("StatusIcon"), {0,0,0}, id)
write_byte(0)
write_string(gi[id])
message_end()
}
stock ColorPrint(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^x04"); // Green Color
replace_all(msg, 190, "!y", "^x01"); // Default Color
replace_all(msg, 190, "!t", "^x03"); // Team Color
if (id) players[0] = id; else get_players(players, count, "ch");
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}