Участник
Пользователь
- Сообщения
- 107
- Реакции
- 10
Привет эксперты, помогите пожалуйста. Есть стандартное горение от гранаты FIRE в зомби моде и получается так что там в момент горение хп отнимаются путем
Если я отключу проверку
Хотелось бы от горения зомби могли тоже умирать и это был фактический урон, а не обманка.
fm_set_user_health
, что как по мне не правильно, то есть по факту это не на носимый урон, а просто хп отнимается.
Код:
// Burning Flames
public burning_flame(taskid)
{
// Get player origin and flags
static origin[3], flags
get_user_origin(ID_BURN, origin)
flags = pev(ID_BURN, pev_flags)
// Madness mode - in water - burning stopped
if (g_nodamage[ID_BURN] || (flags & FL_INWATER) || g_burning_duration[ID_BURN] < 1)
{
// Smoke sprite
message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
write_byte(TE_SMOKE) // TE id
write_coord(origin[0]) // x
write_coord(origin[1]) // y
write_coord(origin[2]-50) // z
write_short(sz_SmokeSprite) // sprite
write_byte(random_num(10, 20)) // scale
write_byte(random_num(10, 20)) // framerate
message_end()
// Task not needed anymore
remove_task(taskid);
return;
}
// Randomly play burning zombie scream sounds
if (!random_num(0, 20))
{
static sound[64]
ArrayGetString(grenade_fire_player, random_num(0, ArraySize(grenade_fire_player) - 1), sound, charsmax(sound))
emit_sound(ID_BURN, CHAN_VOICE, sound, 1.0, ATTN_NORM, 0, PITCH_NORM)
}
// Fire slow down
if (flags & FL_ONGROUND && get_pcvar_float(cvar_fireslowdown) > 0.0)
{
static Float:velocity[3]
pev(ID_BURN, pev_velocity, velocity)
xs_vec_mul_scalar(velocity, get_pcvar_float(cvar_fireslowdown), velocity)
set_pev(ID_BURN, pev_velocity, velocity)
}
// Get player's health
static health
health = pev(ID_BURN, pev_health)
// Take damage from the fire
if (health - floatround(get_pcvar_float(cvar_firedamage), floatround_ceil) > 0)
fm_set_user_health(ID_BURN, health - floatround(get_pcvar_float(cvar_firedamage), floatround_ceil))
// Flame sprite
message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
write_byte(TE_SPRITE) // TE id
write_coord(origin[0]+random_num(-5, 5)) // x
write_coord(origin[1]+random_num(-5, 5)) // y
write_coord(origin[2]+random_num(-10, 10)) // z
write_short(sz_FlameSprite) // sprite
write_byte(random_num(3, 7)) // scale
write_byte(200) // brightness
message_end()
// Decrease burning duration counter
g_burning_duration[ID_BURN]--
}
Если я отключу проверку
if (health - floatround(get_pcvar_float(cvar_firedamage), floatround_ceil) > 0)
которая проверяет что у игрока достаточно хп, что бы отнимать дальше хп, то они по окончанию жизней умирают, но сами от себя. Следовательно и аммопаки не идут на баланс и киллы в таблицу к игроку (Attaker), подскажите как можно это исправить ? возможно тут что-то сделать или нужно делать в TakeDamage ?Хотелось бы от горения зомби могли тоже умирать и это был фактический урон, а не обманка.