// UNCOMMENT IF YOU USE ANOTHER MOD THAN CS and CS-CZ
//#define NO_CS_CZ
/***************************************************************************************************/
#include <amxmodx>
new count_puke[33]
new bool:PukeFlag[33]
new bool:aim[33]
new counter[33]
#if !defined NO_CS_CZ
new player_origins[33][3]
#endif
public puke_on_player(id)
{
if (get_cvar_num("amx_maxpukes")==0)
return PLUGIN_HANDLED
if (!is_user_alive(id) )
return PLUGIN_HANDLED
if ( (get_cvar_num("amx_puke_admin")==1) && !(get_user_flags(id) & ADMIN_LEVEL_A) )
{
console_print(id, "[AMX] Nincs elerhetoseged a parancs hasznalatahoz.")
return PLUGIN_HANDLED
}
if(PukeFlag[id])
return PLUGIN_HANDLED
#if !defined NO_CS_CZ
new player_origin[3], players[32], inum=0, dist, last_dist=99999, last_id
get_user_origin(id,player_origin,0)
get_players(players,inum,"b")
if (inum>0) {
for (new i=0;i<inum;i++) {
if (players[i]!=id) {
dist = get_distance(player_origin,player_origins[players[i]])
if (dist<last_dist) {
last_id = players[i]
last_dist = dist
}
}
}
if (last_dist<80) {
#endif
if (count_puke[id] > get_cvar_num("amx_maxpukes") ){
client_print(id,print_chat,"Hanyni csak %d alkalommal birsz egy korben !", id), get_cvar_num("amx_maxpukes")
return PLUGIN_CONTINUE
}
new player_name[32]
get_user_name(id, player_name, 31)
#if !defined NO_CS_CZ
new dead_name[32]
get_user_name(last_id, dead_name, 31)
client_print(0,print_chat,"%s lehanyta %s Halott Testet !! HaHaHaHa !!", player_name, dead_name)
#else
client_print(0,print_chat,"%s Okad !!", id), player_name)
#endif
count_puke[id]+=1
new ids[1]
ids[0]=id
PukeFlag[id]=true
aim[id]=false
counter[id]=0
new rand_sound=random_num(0,1)
switch(rand_sound)
{
case 0: emit_sound(id, CHAN_VOICE, "puke/puke.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
case 1: emit_sound(id, CHAN_VOICE, "puke/puke2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
}
set_task(0.3,"make_puke",2412+id,ids,1,"a",9)
#if !defined NO_CS_CZ
}
else
{
client_print(id,print_chat,"Nincs halott test a kozeledben.")
return PLUGIN_HANDLED
}
}
#endif
return PLUGIN_HANDLED
}
public sqrt(num)
{
new div = num
new result = 1
while (div > result) {
div = (div + result) / 2
result = num / div
}
return div
}
public make_puke(ids[])
{
new id=ids[0]
new vec[3]
new aimvec[3]
new velocityvec[3]
new length
get_user_origin(id,vec, 1)
get_user_origin(id,aimvec,3)
new distance = get_distance(vec,aimvec)
new speed = floatround(distance*1.9)
velocityvec[0]=aimvec[0]-vec[0]
velocityvec[1]=aimvec[1]-vec[1]
velocityvec[2]=aimvec[2]-vec[2]
length=sqrt(velocityvec[0]*velocityvec[0]+velocityvec[1]*velocityvec[1]+velocityvec[2]*velocityvec[2])
velocityvec[0]=velocityvec[0]*speed/length
velocityvec[1]=velocityvec[1]*speed/length
velocityvec[2]=velocityvec[2]*speed/length
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(101)
write_coord(vec[0])
write_coord(vec[1])
write_coord(vec[2]-2)
write_coord(velocityvec[0])
write_coord(velocityvec[1])
write_coord(velocityvec[2])
write_byte(82) // color
write_byte(160) // speed
message_end()
counter[id]++
if(counter[id]==9)
PukeFlag[id]=false
}
public death_event()
{
new victim = read_data(2)
#if !defined NO_CS_CZ
get_user_origin(victim,player_origins[victim],0)
#endif
if(PukeFlag[victim])
reset_puke(victim)
return PLUGIN_CONTINUE
}
public reset_puke(id)
{
if(task_exists(2412+id))
remove_task(2412+id)
emit_sound(id,CHAN_VOICE,"puke/puke.wav", 0.0, ATTN_NORM, 0, PITCH_NORM)
PukeFlag[id]=false
return PLUGIN_CONTINUE
}
public reset_hud(id)
{
if(task_exists(2412+id))
remove_task(2412+id)
emit_sound(id,CHAN_VOICE,"puke/puke.wav", 0.0, ATTN_NORM, 0, PITCH_NORM)
PukeFlag[id]=false
count_puke[id]=1
return PLUGIN_CONTINUE
}
public puke_help(id)
{
client_print(id, print_chat, "Bindeld be a hanyashoz ezt: puke")
client_print(id, print_chat, "Nyisd meg a konzolt es irdd bele: bind ^"key^" ^"puke^"")
client_print(id, print_chat, "ex: bind ^"x^" ^"puke^"")
return PLUGIN_CONTINUE
}
public handle_say(id)
{
new said[192]
read_args(said,192)
remove_quotes(said)
if( ((containi(said, "puke") != -1) && !(containi(said, "/puke") != -1) ) ||( ((containi(said, "vomir") != -1) && !(containi(said, "/vomir") != -1) ) ) )
{
client_print(id, print_chat, "[AMX] Hanyas segitseghez irdd a chatbe: /puke")
}
return PLUGIN_CONTINUE
}
public plugin_precache()
{
if (file_exists("sound/puke/puke.wav"))
precache_sound("puke/puke.wav")
if (file_exists("sound/puke/puke2.wav"))
precache_sound("puke/puke2.wav")
return PLUGIN_CONTINUE
}
public client_connect(id)
{
PukeFlag[id]=false
count_puke[id]=1
return PLUGIN_CONTINUE
}
public client_disconnect(id)
{
reset_hud(id)
return PLUGIN_CONTINUE
}
public plugin_init()
{
register_plugin("AMX Puke","0.2","KRoTaL")
register_clcmd("puke","puke_on_player",0,"- Puke on a dead player")
register_clcmd("vomir","puke_on_player",0,"- Puke on a dead player")
register_clcmd("say /puke","puke_help",0,"- Displays puke help")
register_clcmd("say","handle_say")
register_cvar("amx_maxpukes","1")
register_cvar("amx_puke_admin","0")
register_event("DeathMsg","death_event","a")
register_event("ResetHUD", "reset_hud", "be")
return PLUGIN_CONTINUE
}