method causes the selection of weapons by numbers on the keyboard stop working. This situation occurs at the restart of the round.
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#define PLUGIN "Damage Fire"
#define VERSION "1.0"
#define AUTHOR "NST"
#define MAX_KILLS 50
#define is_valid_player(%1) (1 <= %1 <= 32)
new max_show = 16, max_len = 15
new kills[33][MAX_KILLS][4], list_victims[2000], num_victims[33], g_hudmsg2, cvar_show_damage
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event("Damage", "on_damage", "b", "2!0", "3=0", "4!0")
register_logevent("logevent_round_end", 2, "1=Round_End")
// cvar
cvar_show_damage = register_cvar("nst_show_damage_fire","0")
// msg
g_hudmsg2 = CreateHudSyncObj()
}
// Log Event Round End
public logevent_round_end()
{
// OK
for (new id = 1; id < 33; id++)
{
if (!is_user_connected(id)) {
continue;
}
show_victims(id)
}
}
public on_damage(id)
{
// OK
static attacker; attacker = get_user_attacker(id)
static damage; damage = read_data(2)
if (!is_user_connected(id) || !is_user_connected(attacker) || attacker==id) return;
new damage_fire
new health_old = get_user_health(id)+damage
if (damage <= health_old) damage_fire = damage
else damage_fire = health_old
new i = 0, e = 0, check_e = 0, victim_id = 1
while (i < MAX_KILLS && check_e != 1 && victim_id > 0)
{
victim_id = kills[attacker][i][0]
if (victim_id == id && kills[attacker][i][1] != 1) {
e = i
check_e = 1
}
i += 1
}
if (e == 0 && check_e != 1) {
e = num_victims[attacker]
num_victims[attacker] += 1
}
if (e < MAX_KILLS)
{
kills[attacker][e][0] = id
kills[attacker][e][1] = 0
kills[attacker][e][2] += damage_fire
}
if (get_pcvar_num(cvar_show_damage))
{
set_hudmessage(255, 0, 0, -1.0, 0.55, 2, 0.1, 2.0, 0.1, 0.1, -1)
ShowSyncHudMsg(attacker, g_hudmsg2, "%i", damage)
}
}
public client_death(killer, victim, wpnindex, hitplace, TK, id)
{
// OK
if (!is_user_connected(victim) || !is_user_connected(killer) || killer==victim) return;
if (wpnindex != CSW_C4)
{
// UPDATE VICTIMS OF VICTIM
new headshot = (hitplace == HIT_HEAD) ? 1 : 0
new vic_wpn, num_vic = num_victims[killer]
if (num_vic<=0 || num_vic>=MAX_KILLS) return;
if (headshot && wpnindex) vic_wpn = 1
else if (wpnindex == CSW_KNIFE) vic_wpn = 2
else if (wpnindex == CSW_HEGRENADE) vic_wpn = 3
else vic_wpn = 4
kills[killer][(num_vic-1)][3] = vic_wpn
for (new e = 0; e < 33; e++)
{
for (new ee = 0; ee < num_victims[e]; ee++)
{
if (kills[e][ee][0] == victim) kills[e][ee][1] = 1
}
}
// SHOW VICTIMS OF PLAYER
show_victims(victim)
}
}
reset_victims(idpl)
{
// OK
for (new i = 0; i < MAX_KILLS; i++)
{
kills[idpl][i][0] = 0
kills[idpl][i][1] = 0
kills[idpl][i][2] = 0
kills[idpl][i][3] = 0
}
num_victims[idpl] = 0
}
show_victims(idpl)
{
new i = 0, victim_id = 1, num_die = 0
while (i < MAX_KILLS && victim_id > 0)
{
victim_id = kills[idpl][i][0]
if (victim_id > 0)
{
if (kills[idpl][i][3] > 0 || kills[idpl][i][2] >= 100) num_die += 1
if (i < max_show)
{
new victim_idwpn = kills[idpl][i][3]
new victim_wpn[10]
if (victim_idwpn == 1) victim_wpn = "[HS]"
else if (victim_idwpn == 2) victim_wpn = "[KF]"
else if (victim_idwpn == 3) victim_wpn = "[HE]"
else victim_wpn = ""
new victim_name[33], victim_row[33], victim_name_fix[33]
get_user_name(kills[idpl][i][0],victim_name,33)
new num_name = strlen(victim_name)
if (num_name > max_len) {
copy(victim_name_fix,(max_len-3),victim_name)
add (victim_name_fix,max_len,"...")
}
else victim_name_fix = victim_name
format (victim_row ,33, "%s: %i %s^n", victim_name_fix, kills[idpl][i][2], victim_wpn)
add (list_victims,1999,victim_row)
}
}
i += 1
}
new num_player = num_victims[idpl]
new add1[10]
if (num_player > 0)
{
if (num_player > max_show) add1 = "...."
format(list_victims, 2000, "%i Player / %i Die^n%s %s", num_player, num_die, list_victims, add1)
// TODO: For some reason, the execution of this code snippet causes the selection
// of weapons by numbers on the keyboard stop working. By Questor
// >>>>>>>>>>>>>
// https://forums.alliedmods.net/showthread.php?t=52044
show_menu(idpl, 5, list_victims, 5, "list_victims")
// <<<<<<<<<<<<<
}
reset_victims(idpl)
list_victims = ""
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
*/