Cuanto agrego el registro para si matan un zombie o un humano de frag, los zombies se quedan trabados. Cuando los mata un entity como un elevador o puerda. Si quito ese code el problema desaparase. Es como si los zombies no mueren completamente y su modelo queda en el mapa. Los jugadores usan esto para buggiar ammo packs.
gracias.
PHP Code:
// Ham Player Killed Forward
public fw_PlayerKilled(victim, attacker, shouldgib)
{
// Player killed
g_isalive[victim] = false
// Enable dead players nightvision
set_task(0.1, "spec_nvision", victim)
// Disable nightvision when killed (bugfix)
if (get_pcvar_num(cvar_nvggive) == 0 && g_nvision[victim])
{
if (get_pcvar_num(cvar_customnvg)) remove_task(victim+TASK_NVISION)
else if (g_nvisionenabled[victim]) set_user_gnvision(victim, 0)
g_nvision[victim] = false
g_nvisionenabled[victim] = false
}
// Turn off nightvision when killed (bugfix)
if (get_pcvar_num(cvar_nvggive) == 2 && g_nvision[victim] && g_nvisionenabled[victim])
{
if (get_pcvar_num(cvar_customnvg)) remove_task(victim+TASK_NVISION)
else set_user_gnvision(victim, 0)
g_nvisionenabled[victim] = false
}
// Turn off custom flashlight when killed
if (g_cached_customflash)
{
// Turn it off
g_flashlight[victim] = false
g_flashbattery[victim] = 100
// Remove previous tasks
remove_task(victim+TASK_CHARGE)
remove_task(victim+TASK_FLASH)
}
// Stop bleeding/burning/aura when killed
if (g_zombie[victim] || g_survivor[victim] || g_sniper[victim])
{
remove_task(victim+TASK_BLOOD)
remove_task(victim+TASK_AURA)
remove_task(victim+TASK_BURN)
}
// Nemesis and Assassin explode! or when killed by a Assassin victim is cut in pieces
if (g_nemesis[victim] || g_assassin[victim] || ((1<=attacker<=32 && g_assassin[attacker]) && get_pcvar_num(cvar_nemfraggore)))
SetHamParamInteger(3, 2)
// Get deathmatch mode status and whether the player killed himself
static selfkill
selfkill = (victim == attacker || !is_user_valid_connected(attacker)) ? true : false
// Make sure that the player was not killed by a non-player entity or through self killing
if (!selfkill)
{
// Ignore Nemesis/Survivor/Sniper Frags?
if ((g_nemesis[attacker] && get_pcvar_num(cvar_nemignorefrags)) || (g_survivor[attacker] && get_pcvar_num(cvar_survignorefrags))
|| (g_sniper[attacker] && get_pcvar_num(cvar_sniperignorefrags))|| (g_assassin[attacker] && get_pcvar_num(cvar_assassinignorefrags)))
RemoveFrags(attacker, victim)
// Zombie/nemesis/assassin killed human, reward ammo packs
if (g_zombie[attacker] && (!g_nemesis[attacker] || !get_pcvar_num(cvar_nemignoreammo)) && (!g_assassin[attacker] || !get_pcvar_num(cvar_assassinignoreammo)))
g_ammopacks[attacker] += get_pcvar_num(cvar_ammoinfect)
// Human killed zombie, add up the extra frags for kill
if (!g_zombie[attacker] && get_pcvar_num(cvar_fragskill) > 1)
UpdateFrags(attacker, victim, get_pcvar_num(cvar_fragskill) - 1, 0, 0)
// Zombie killed human, add up the extra frags for kill
if (g_zombie[attacker] && get_pcvar_num(cvar_fragsinfect) > 1)
UpdateFrags(attacker, victim, get_pcvar_num(cvar_fragsinfect) - 1, 0, 0)
// When killed by a Sniper victim explodes
if (g_sniper[attacker] && (g_currentweapon[attacker] == CSW_AWP) && get_pcvar_num(cvar_sniperfraggore) && g_zombie[victim])
{
// Cut him into pieces
SetHamParamInteger(3, 2)
// Get his origin
static origin[3]
get_user_origin(victim, origin)
// Make some blood in the air
message_begin(MSG_PVS, SVC_TEMPENTITY, origin)
write_byte(TE_LAVASPLASH) // TE id
write_coord(origin[0]) // origin x
write_coord(origin[1]) // origin y
write_coord(origin[2] - 26) // origin z
message_end()
}
}
// Respawn if deathmatch is enabled
if (get_pcvar_num(cvar_deathmatch) || ((g_currentmode > MODE_LNJ) && (g_deathmatchmode > 0)))
{
// Respawn on suicide?
if (selfkill && !get_pcvar_num(cvar_respawnonsuicide))
return;
// Respawn if only the last human is left?
if (!get_pcvar_num(cvar_respawnafterlast) && fnGetHumans() <= 1)
return;
// Respawn if human/zombie/nemesis/assassin/survivor/sniper?
if ((g_zombie[victim] && !g_nemesis[victim] && !g_assassin[victim] && !get_pcvar_num(cvar_respawnzomb)) || (!g_zombie[victim] && !g_survivor[victim] && !g_sniper[victim] && !get_pcvar_num(cvar_respawnhum))
|| (g_nemesis[victim] && !get_pcvar_num(cvar_respawnnem)) || (g_survivor[victim] && !get_pcvar_num(cvar_respawnsurv))
|| (g_sniper[victim] && !get_pcvar_num(cvar_respawnsniper)) || (g_assassin[victim] && !get_pcvar_num(cvar_respawnassassin)))
return;
// Respawn as zombie?
if ((g_currentmode > MODE_LNJ) && (g_deathmatchmode > 0)) // Custom round ?
{
if(g_deathmatchmode == 2 || (g_deathmatchmode == 3 && random_num(0, 1)) || (g_deathmatchmode == 4 && (fnGetZombies() < (fnGetAlive()/2))))
g_respawn_as_zombie[victim] = true
}
else if (get_pcvar_num(cvar_deathmatch) > 0) // Normal round
{
if (get_pcvar_num(cvar_deathmatch) == 2 || (get_pcvar_num(cvar_deathmatch) == 3 && random_num(0, 1)) || (get_pcvar_num(cvar_deathmatch) == 4 && (fnGetZombies() < (fnGetAlive()/2))))
g_respawn_as_zombie[victim] = true
}
// Set the respawn task
set_task(get_pcvar_float(cvar_spawndelay), "respawn_player_task", victim+TASK_SPAWN)
}
if(!g_zombie[victim])
{
g_frags[attacker]++ // los frags aumentan, (aumentamos la variable de frags)
check_level(attacker) // checkiamos su nivel cada vez que mate a un zombie, humano, etc
}
else
{
if(g_zombie[victim])
{
g_frags[attacker]++ // los frags aumentan, (aumentamos la variable de frags)
check_level(attacker) // checkiamos su nivel cada vez que mate a un zombie, humano, etc
}
}
}