Anyway ... the thing is ... I don't know what's the problem with my code ... but every time I start the the server with my plugin enabled .... the server crashes and shows this error:
Anyway ... this is the code I made:
Code:
#include <amxmodx>
#include <fakemeta>
#include <zombie_plague_advance>
#include <zp_dsohud>
#include <xs>
new g_kills[33], g_victims[33]
new g_firstblood, g_maxplayers
new cvar_resettime, cvar_remove_killspr
#define NUM_KILLS 8
#define OTHER_KILLS 5
new const zombie_dying_sound[] = "MassEffect/KillSprites/scream.wav" // Boss Dying Sound
new normal_kill[NUM_KILLS][] =
{
"sprites/MassEffect/KillSprites/kill_1.spr",
"sprites/MassEffect/KillSprites/kill_2.spr",
"sprites/MassEffect/KillSprites/kill_3.spr",
"sprites/MassEffect/KillSprites/kill_4.spr",
"sprites/MassEffect/KillSprites/kill_5.spr",
"sprites/MassEffect/KillSprites/kill_6.spr",
"sprites/MassEffect/KillSprites/kill_7.spr",
"sprites/MassEffect/KillSprites/kill_8.spr"
}
new headshot_kill[NUM_KILLS][] =
{
"sprites/MassEffect/KillSprites/kill_1_hs.spr",
"sprites/MassEffect/KillSprites/kill_2_hs.spr",
"sprites/MassEffect/KillSprites/kill_3_hs.spr",
"sprites/MassEffect/KillSprites/kill_4_hs.spr",
"sprites/MassEffect/KillSprites/kill_5_hs.spr",
"sprites/MassEffect/KillSprites/kill_6_hs.spr",
"sprites/MassEffect/KillSprites/kill_7_hs.spr",
"sprites/MassEffect/KillSprites/kill_8_hs.spr"
}
new knife_kill[NUM_KILLS][] =
{
"sprites/MassEffect/KillSprites/kill_1_knife.spr",
"sprites/MassEffect/KillSprites/kill_2_knife.spr",
"sprites/MassEffect/KillSprites/kill_3_knife.spr",
"sprites/MassEffect/KillSprites/kill_4_knife.spr",
"sprites/MassEffect/KillSprites/kill_5_knife.spr",
"sprites/MassEffect/KillSprites/kill_6_knife.spr",
"sprites/MassEffect/KillSprites/kill_7_knife.spr",
"sprites/MassEffect/KillSprites/kill_8_knife.spr"
}
new grenade_kill[NUM_KILLS][] =
{
"sprites/MassEffect/KillSprites/kill_1_grenade.spr",
"sprites/MassEffect/KillSprites/kill_2_grenade.spr",
"sprites/MassEffect/KillSprites/kill_3_grenade.spr",
"sprites/MassEffect/KillSprites/kill_4_grenade.spr",
"sprites/MassEffect/KillSprites/kill_5_grenade.spr",
"sprites/MassEffect/KillSprites/kill_6_grenade.spr",
"sprites/MassEffect/KillSprites/kill_7_grenade.spr",
"sprites/MassEffect/KillSprites/kill_8_grenade.spr"
}
new wall_kill[NUM_KILLS][] =
{
"sprites/MassEffect/KillSprites/kill_1_wall.spr",
"sprites/MassEffect/KillSprites/kill_2_wall.spr",
"sprites/MassEffect/KillSprites/kill_3_wall.spr",
"sprites/MassEffect/KillSprites/kill_4_wall.spr",
"sprites/MassEffect/KillSprites/kill_5_wall.spr",
"sprites/MassEffect/KillSprites/kill_6_wall.spr",
"sprites/MassEffect/KillSprites/kill_7_wall.spr",
"sprites/MassEffect/KillSprites/kill_8_wall.spr"
}
new boss_kill[OTHER_KILLS][] =
{
"sprites/MassEffect/KillSprites/kill_boss.spr",
"sprites/MassEffect/KillSprites/kill_boss_hs.spr",
"sprites/MassEffect/KillSprites/kill_boss_knife.spr",
"sprites/MassEffect/KillSprites/kill_boss_grenade.spr",
"sprites/MassEffect/KillSprites/kill_boss_wall.spr"
}
new last_kill[OTHER_KILLS][] =
{
"sprites/MassEffect/KillSprites/kill_last.spr",
"sprites/MassEffect/KillSprites/kill_last_hs.spr",
"sprites/MassEffect/KillSprites/kill_last_knife.spr",
"sprites/MassEffect/KillSprites/kill_last_grenade.spr",
"sprites/MassEffect/KillSprites/kill_last_wall.spr"
}
new first_kill[OTHER_KILLS][] =
{
"sprites/MassEffect/KillSprites/kill_first.spr",
"sprites/MassEffect/KillSprites/kill_first_hs.spr",
"sprites/MassEffect/KillSprites/kill_first_knife.spr",
"sprites/MassEffect/KillSprites/kill_first_grenade.spr",
"sprites/MassEffect/KillSprites/kill_first_wall.spr"
}
new revenge_kill[OTHER_KILLS][] =
{
"sprites/MassEffect/KillSprites/kill_revenge.spr",
"sprites/MassEffect/KillSprites/kill_revenge_hs.spr",
"sprites/MassEffect/KillSprites/kill_revenge_knife.spr",
"sprites/MassEffect/KillSprites/kill_revenge_grenade.spr",
"sprites/MassEffect/KillSprites/kill_revenge_wall.spr"
}
new normal_kill_sounds[][] =
{
"MassEffect/KillSprites/gotit.wav", // 1 KILL Sound & Revenge
"MassEffect/KillSprites/doublekill.wav", // 2 KILL Sound
"MassEffect/KillSprites/triplekill.wav", // 3 KILL Sound
"MassEffect/KillSprites/multikill.wav", // 4 KILL Sound
"MassEffect/KillSprites/megakill.wav", // 5 KILL Sound
"MassEffect/KillSprites/monsterkill.wav", // 6 KILL Sound
"MassEffect/KillSprites/incredible.wav", // 7 KILL Sound
"MassEffect/KillSprites/outofworld.wav" // 8 KILL Sound & Boss Kill Sound
}
new other_kill_sounds[][] =
{
"MassEffect/KillSprites/excellent.wav", // Last KILL Sound
"MassEffect/KillSprites/ohgod.wav", // First KILL Sound
"MassEffect/KillSprites/crazy.wav", // Grenade KILL Sound
"MassEffect/KillSprites/humililation.wav", // Knife KILL Sound
"MassEffect/KillSprites/headshot.wav", // HeadShot KILL Sound
"MassEffect/KillSprites/cantbelive.wav" // More Than 8 KILL Sound & Wall KILL Sound
}
public plugin_init()
{
register_plugin("[ZP] Effects Killer", "0.0.1", "kapitana")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_event("DeathMsg", "DeathMsg", "a")
cvar_resettime = register_cvar("reset_killtimes", "15")
cvar_remove_killspr = register_cvar("remove_killsprites", "5")
g_maxplayers = get_maxplayers()
}
public plugin_precache()
{
new i
for(i = 0; i < NUM_KILLS; i++)
{
engfunc(EngFunc_PrecacheModel, normal_kill[i])
engfunc(EngFunc_PrecacheModel, headshot_kill[i])
engfunc(EngFunc_PrecacheModel, knife_kill[i])
engfunc(EngFunc_PrecacheModel, grenade_kill[i])
engfunc(EngFunc_PrecacheModel, wall_kill[i])
}
for(i = 0; i < OTHER_KILLS; i++)
{
engfunc(EngFunc_PrecacheModel, boss_kill[i])
engfunc(EngFunc_PrecacheModel, last_kill[i])
engfunc(EngFunc_PrecacheModel, first_kill[i])
engfunc(EngFunc_PrecacheModel, revenge_kill[i])
}
for(i = 0; i < sizeof(normal_kill_sounds); i++)
{
engfunc(EngFunc_PrecacheSound, normal_kill_sounds[i])
}
for(i = 0; i < sizeof(other_kill_sounds); i++)
{
engfunc(EngFunc_PrecacheSound, other_kill_sounds[i])
}
engfunc(EngFunc_PrecacheSound, zombie_dying_sound)
}
public event_round_start()
{
g_firstblood = false
static i
for(i = 1; i <= g_maxplayers; i++)
{
g_kills[i] = 0
g_victims[i] = 0
remove_task(i)
zp_remove_hud_sprite(i)
}
}
public client_disconnect(id)
{
g_kills[id] = 0
g_victims[id] = 0
remove_task(id)
}
public DeathMsg()
{
static killer, victim
killer = read_data(1)
victim = read_data(2)
if(!is_user_connected(killer) || !is_user_alive(killer) || is_user_bot(killer) || killer == victim || zp_get_user_zombie(killer))
return;
static headshot, weapon[12]
headshot = read_data(3)
read_data(4, weapon, charsmax(weapon))
g_kills[killer]++
g_victims[victim] = killer
if(g_kills[killer] > 7) g_kills[killer] = 1
if(zp_get_user_assassin(victim) || zp_get_user_nemesis(victim) || zp_get_user_dragon(victim))
{
if(equali(weapon, "knife")) zp_display_hud_sprite(killer, boss_kill[2], 0.05)
else if(equali(weapon, "grenade")) zp_display_hud_sprite(killer, boss_kill[3], 0.05)
else if(!fm_is_ent_visible(killer, victim)) zp_display_hud_sprite(killer, boss_kill[4], 0.05)
else if(headshot) zp_display_hud_sprite(killer, boss_kill[1], 0.05)
else zp_display_hud_sprite(killer, boss_kill[0], 0.05)
client_cmd(killer, "spk %s", normal_kill_sounds[7])
emit_sound(victim, CHAN_BODY, zombie_dying_sound[0], 1.0, ATTN_NORM, 0, PITCH_HIGH)
}
else if(zp_get_user_last_zombie(victim))
{
if(equali(weapon, "knife")) zp_display_hud_sprite(killer, last_kill[2], 0.05)
else if(equali(weapon, "grenade")) zp_display_hud_sprite(killer, last_kill[3], 0.05)
else if(!fm_is_ent_visible(killer, victim)) zp_display_hud_sprite(killer, last_kill[4], 0.05)
else if(headshot) zp_display_hud_sprite(killer, last_kill[1], 0.05)
else zp_display_hud_sprite(killer, last_kill[0], 0.05)
client_cmd(killer, "spk %s", other_kill_sounds[0])
}
else if(!g_firstblood)
{
g_firstblood = true
if(equali(weapon, "knife")) zp_display_hud_sprite(killer, first_kill[2], 0.05)
else if(equali(weapon, "grenade")) zp_display_hud_sprite(killer, first_kill[3], 0.05)
else if(!fm_is_ent_visible(killer, victim)) zp_display_hud_sprite(killer, first_kill[4], 0.05)
else if(headshot) zp_display_hud_sprite(killer, first_kill[1], 0.05)
else zp_display_hud_sprite(killer, first_kill[0], 0.05)
client_cmd(killer, "spk %s", other_kill_sounds[1])
}
else if(victim == g_victims[killer])
{
g_victims[killer] = 0
if(equali(weapon, "knife")) zp_display_hud_sprite(killer, revenge_kill[2], 0.05)
else if(equali(weapon, "grenade")) zp_display_hud_sprite(killer, revenge_kill[3], 0.05)
else if(!fm_is_ent_visible(killer, victim)) zp_display_hud_sprite(killer, revenge_kill[4], 0.05)
else if(headshot) zp_display_hud_sprite(killer, revenge_kill[1], 0.05)
else zp_display_hud_sprite(killer, revenge_kill[0], 0.05)
client_cmd(killer, "spk %s", normal_kill_sounds[0])
}
else if(equali(weapon, "knife"))
{
zp_display_hud_sprite(killer, knife_kill[g_kills[killer] - 1], 0.05)
client_cmd(killer, "spk %s", other_kill_sounds[3])
}
else if(equali(weapon, "grenade"))
{
zp_display_hud_sprite(killer, grenade_kill[g_kills[killer] - 1], 0.05)
client_cmd(killer, "spk %s", other_kill_sounds[2])
}
else if(!fm_is_ent_visible(killer, victim))
{
zp_display_hud_sprite(killer, wall_kill[g_kills[killer] - 1], 0.05)
client_cmd(killer, "spk %s", other_kill_sounds[5])
}
else if(headshot)
{
zp_display_hud_sprite(killer, headshot_kill[g_kills[killer] - 1], 0.05)
client_cmd(killer, "spk %s", other_kill_sounds[4])
}
else
{
zp_display_hud_sprite(killer, normal_kill[g_kills[killer] - 1], 0.05)
client_cmd(killer, "spk %s", normal_kill_sounds[g_kills[killer] - 1])
}
// else
// {
// ShowSprite(victim, other_kills[5])
// client_cmd(victim, "spk %s", other_kill_sounds[5])
// }
set_task(get_pcvar_float(cvar_resettime), "reset_kills", killer)
set_task(get_pcvar_float(cvar_remove_killspr), "remove_sprite", killer)
}
public reset_kills(id)
{
if(!is_user_connected(id))
return
g_kills[id] = 0
}
public remove_sprite(id)
{
zp_remove_hud_sprite(id)
}
stock bool:fm_is_ent_visible(index, entity)
{
new Float:origin[3], Float:view_ofs[3], Float:eyespos[3]
pev(index, pev_origin, origin)
pev(index, pev_view_ofs, view_ofs)
xs_vec_add(origin, view_ofs, eyespos)
new Float:entpos[3]
pev(entity, pev_origin, entpos)
engfunc(EngFunc_TraceLine, eyespos, entpos, 0, index)
switch (pev(entity, pev_solid)) {
case SOLID_BBOX..SOLID_BSP: return global_get(glb_trace_ent) == entity
}
new Float:fraction
global_get(glb_trace_fraction, fraction)
if (fraction == 1.0)
return true
return false
}