PHP Code:
#include <amxmodx>
#include <fakemeta>
#include <engine>
#include <hamsandwich>
#include <zombieplague>
#define XPOS -1.0
#define YPOS -1.0
new mindistance[33]
new dist[33]
new is_radio_on[33] = 0
new player_has_radio[33]
new sound_noise[4][] =
{
"zombie_plague/shradio/18000.wav",
"zombie_plague/shradio/18001.wav",
"zombie_plague/shradio/18002.wav",
"zombie_plague/shradio/18003.wav"
}
public plugin_precache()
{
for (new i = 0; i < 4; i++)
precache_sound(sound_noise[i])
}
public plugin_init()
{
register_plugin("[ZP] Silent hill radio", "1.0", "HoRRoR")
register_clcmd("say /radio","radio_button")
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
}
public client_connect(id)
{
player_has_radio[id] = 1
}
public radio_button(id)
{
new text[100]
if (is_radio_on[id] != 1 && player_has_radio[id] != 0)
{
if (is_user_alive(id) && !zp_get_user_zombie(id) && !zp_get_user_nemesis(id))
{
format(text,99,"^x04[ZP]^x01 Radio switched ^x03ON")
message_begin(MSG_ONE,get_user_msgid("SayText"),{0,0,0},id)
write_byte(id)
write_string(text)
message_end()
set_task(5.0,"check_radio",id,_,_,"b")
is_radio_on[id] = 1
}
}
else if (is_radio_on[id] == 1 && player_has_radio[id] != 0)
{
format(text,99,"^x04[ZP]^x01 Radio switched ^x03OFF")
message_begin(MSG_ONE,get_user_msgid("SayText"),{0,0,0},id)
write_byte(id)
write_string(text)
message_end()
remove_task(id)
remove_task(id+100)
is_radio_on[id] = 0
}
return PLUGIN_HANDLED;
}
public check_radio(id)
{
mindistance[id] = 8192
dist[id] = 8190
for (new i = 1; i <= get_maxplayers(); i++)
{
if (zp_get_user_zombie(i) && is_valid_ent(i))
dist[id] = get_entity_distance(id, i)
if (dist[id] < mindistance[id])
{
mindistance[id] = dist[id]
}
}
// client_print(id,print_chat,"[DEBUG] Distance is: %d", mindistance[id])
if (mindistance[id] < 300)
emit_sound(id, CHAN_AUTO, sound_noise[3], 1.0, ATTN_NORM, 0, PITCH_NORM)
else if (mindistance[id] >= 300 && mindistance[id] < 450)
emit_sound(id, CHAN_AUTO, sound_noise[2], 1.0, ATTN_NORM, 0, PITCH_NORM)
else if (mindistance[id] >= 450 && mindistance[id] < 600)
emit_sound(id, CHAN_AUTO, sound_noise[1], 1.0, ATTN_NORM, 0, PITCH_NORM)
else if (mindistance[id] >= 600)
emit_sound(id, CHAN_AUTO, sound_noise[0], 1.0, ATTN_NORM, 0, PITCH_NORM)
set_task(0.15,"hud_radio_wave1",id+100)
set_task(0.30,"hud_radio_wave2",id+100)
set_task(0.45,"hud_radio_wave3",id+100)
}
public hud_radio_wave1(taskid)
{
new id
id = taskid - 100;
set_hudmessage(200, 200, 200, XPOS, YPOS, 0, 0.5, 0.0, 0.0, 0.5, -1)
show_hudmessage(id, "( )")
}
public hud_radio_wave2(taskid)
{
new id
id = taskid - 100;
set_hudmessage(200, 200, 200, XPOS, YPOS, 0, 0.5, 0.0, 0.0, 0.5, -1)
show_hudmessage(id, "( )")
}
public hud_radio_wave3(taskid)
{
new id
id = taskid - 100;
set_hudmessage(200, 200, 200, XPOS, YPOS, 0, 0.5, 0.0, 0.0, 0.5, -1)
show_hudmessage(id, "( )")
}
public zp_user_infected_post(id)
{
if (player_has_radio[id] != 0)
{
new text[100]
format(text,99,"^x04[ZP]^x01 Radio switched ^x03OFF")
message_begin(MSG_ONE,get_user_msgid("SayText"),{0,0,0},id)
write_byte(id)
write_string(text)
message_end()
remove_task(id)
remove_task(id+100)
is_radio_on[id] = 0
player_has_radio[id] = 0
}
}
public fw_PlayerKilled(id)
{
if (player_has_radio[id] != 0)
{
new text[100]
format(text,99,"^x04[ZP]^x01 Radio switched ^x03OFF")
message_begin(MSG_ONE,get_user_msgid("SayText"),{0,0,0},id)
write_byte(id)
write_string(text)
message_end()
remove_task(id)
remove_task(id+100)
is_radio_on[id] = 0
player_has_radio[id] = 0
}
}