把/write_short(get_sprname(idspr)); // sprites换成
write_string(get_sprname(idspr)); // sprite name 就可以编译。不知道为什么。
/* 本插件由 AMXX-Studio 中文版自动生成 */
/* UTF-8 func by
http://www.DT-Club.net */
#include <amxmodx>
#include <fakemeta>
new damage_player[33] = {0,...}, cvar_time_show, spr_current[33]
public plugin_init()
{
register_plugin("NST Zombie3 Combo","1.0","NST")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_event("DeathMsg", "Death", "a")
cvar_time_show = register_cvar("spr_time_show","3.0")
}
public event_round_start()
{
new g_reset_value[33]
damage_player = g_reset_value
spr_current = g_reset_value
}
public Death()
{
hide_spr(read_data(2), 1)
hide_spr(read_data(2), 2)
}
public client_damage(attacker,victim,damage,wpnindex,hitplace,TA)
{
if (!is_user_connected(victim) || !is_user_connected(attacker) || attacker==victim) return;
new damage_victim = get_user_health(victim)+damage// get damage attack
new damage_fire_old = min(damage_victim, damage)
UpdateLevelHumanDamage(attacker, damage_fire_old) // update level of human for damage
UpdateEvolutionDamage(victim, damage_fire_old)// damage victim
//client_print(attacker, print_chat, "%i", g_dmg_attack[attacker])
}
UpdateLevelHumanDamage(attacker, damage)
{
if (!is_user_connected(attacker)) return;
new damage_fire = damage// check level max
new damage_old = damage_player[attacker]
new damage_new = damage_player[attacker] + damage_fire
new aaa_new = get_aaa(damage_new)
new aaa_old = get_aaa(damage_old)
if (aaa_new != aaa_old) show_spr(attacker, aaa_new)// up damage
damage_player[attacker] = damage_new// set damage
//client_print(attacker, print_chat, "%i - %i", attacker, damage)
}
UpdateEvolutionDamage(victim, damage)
{
if (!is_user_connected(victim)) return;
new damage_fire = damage// check level max
new damage_old = damage_player[victim]
new damage_new = damage_player[victim] + damage_fire
new aaa_new = get_aaa(damage_new)
new aaa_old = get_aaa(damage_old)
if (aaa_new != aaa_old) sprdmg_action(victim, aaa_new)// up damage
damage_player[victim] = damage_new// set damage
//client_print(victim, print_chat, "%i - %i", victim, damage)
}
sprdmg_action(id, idspr)
{
if (!is_user_connected(id)) return
static Float:origin[3];
pev(id,pev_origin,origin);
//message_begin(MSG_BROADCAST,SVC_TEMPENTITY);
message_begin(MSG_PAS,SVC_TEMPENTITY);
write_byte(TE_EXPLOSION); // TE_EXPLOSION
write_coord(floatround(origin[0])); // origin x
write_coord(floatround(origin[1])); // origin y
write_coord(floatround(origin[2])); // origin z
//write_short(get_sprname(idspr)); // sprites
write_string(get_sprname(idspr)); // sprite name
write_byte(10); // scale in 0.1's
write_byte(20); // framerate
write_byte(14); // flags
message_end(); // message end
}
show_spr(id, idspr)
{
if (!is_user_connected(id)) return
hide_spr(id, 1)// hide spr old
spr_current[id] = idspr// set value
spr_action(id, get_sprname(11), 1)// show spr
spr_action(id, get_sprname(idspr), 1)
if (task_exists(id+201610231926)) remove_task(id+201610231926)// hide spr
set_task(get_pcvar_float(cvar_time_show), "task_hidehud", id+201610231926)
}
public task_hidehud(taskid)hide_spr(taskid - 201610231926, 1)
hide_spr(id, idspr)
{
if (idspr == 1)
{
for (new i = 1; i <= 11; i++)spr_action(id, get_sprname(i), 0)
spr_current[id] = 0
}
else if (idspr == 2)
{
for (new i = 51; i <= 55; i++)spr_action(id, get_sprname(i), 0)
}
}
spr_action(id, sprname[], run)
{
if (!is_user_connected(id)) return
message_begin(MSG_ONE,get_user_msgid("StatusIcon"),{0,0,0},id)
write_byte(run) // status (0=hide, 1=show, 2=flash)
write_string(sprname) // sprite name
message_end()
}
get_sprname(idspr)
{
new spr_name[33]
if (idspr==1) spr_name = "kill_1"
else if (idspr==2) spr_name = "kill_2"
else if (idspr==3) spr_name = "kill_3"
else if (idspr==4) spr_name = "kill_4"
else if (idspr==5) spr_name = "kill_5"
else if (idspr==6) spr_name = "kill_6"
else if (idspr==7) spr_name = "kill_7"
else if (idspr==8) spr_name = "kill_8"
else if (idspr==9) spr_name = "damage_levelup"
else if (idspr==10) spr_name = "damage_fragsup"
else if (idspr==11) spr_name = "kill_none"
else if (idspr==51) spr_name = "damage_100"
else if (idspr==52) spr_name = "damage_200"
else if (idspr==53) spr_name = "damage_300"
else if (idspr==54) spr_name = "damage_400"
else if (idspr==55) spr_name = "damage_500"
return spr_name
}
get_aaa(num)
{
new aaa, aa
if (num >= 100)
{
if (num >= 1000) num = num % 1000
aa = num % 100
aaa = (num - aa)/100
}
else aaa = 0
return aaa
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/