PHP Code:
public zp_fw_core_cure_post( i_Client /* , i_Attacker, i_Force */ )
{
if( !is_user_valid_alive( i_Client ) )
{
return;
}
}
You should not check if the user is alive in any of your plugins when calling the cure/infect forwards. Remove that check and it will solve your problem.
I didn't plan to use your version in the first place, I'm just trying to save you some time because I believe ZP 5.0.8a is perfect as it is (99% of the time). I will point out some mistakes you are making throughout your plugins though.
Ham spawn should be registered as post
PHP Code:
RegisterHam( Ham_Spawn, "player", "fwHamSpawnPost", true, true );
You should check if the user is alive, not connected in Ham_Spawn, or it will throw nefarious results
PHP Code:
public fwHamSpawnPost( i_Client )
{
if(is_user_alive(i_Client)
bitsum_set( g_bIsAlive, i_Client );
}
Ham_Killed should be registered as Post
PHP Code:
RegisterHam( Ham_Killed, "player", "fwHamKilledPost", true, true );
You should not check if the player is connected/alive in Ham_Killed
PHP Code:
public fwHamKilledPost( i_Victim, i_Attacker )
{
bitsum_del( g_bIsAlive, i_Victim );
}
Now in zp_game_mode_infection, apart of the fact that you are using pre not post for ham_killed
PHP Code:
public fwHamKilledPre( i_Victim /* , i_Attacker */ )
{
if( g_iGMPlayer == i_Victim )
{
g_iGMPlayer = ftGetRandomAlive( random_num( 1, ftGetCountAlive( ) ) );
}
}
This code does literally nothing, only a bunch of useless calculations.
I doubt this is all that's wrong in there, you should avoid unnecessary checks and look up how to do things the proper way, or things will be prone to fail. If you don't know where to look, then ZP50 source code is a great place to start.