OnPlayerUpdate - One Hit Kill -
Ryso - 12.08.2010
I am trying to make a TDM arena, where player dies when shot. Here's my script:
Код:
public OnPlayerUpdate(playerid)
{
new Float:health;
new Float:CurrentHealth = GetPlayerHealth(playerid,health);
if(CurrentHealth != GetPVarFloat(playerid,"CurrentHealthStatus"))
{
OnPlayerHealthChange(playerid,GetPVarFloat(playerid,"CurrentHealthStatus"),CurrentHealth);
SetPVarFloat(playerid,"CurrentHealthStatus",CurrentHealth);
}
return 1;
}
stock OnPlayerHealthChange(playerid,Float:oldhealth,Float:newhealth)
{
new str[32];
GetPlayerHealth(playerid,oldhealth);
GetPlayerHealth(playerid,newhealth);
//format(str,sizeof(str),"HP: from %f to %f",oldhealth,newhealth);
//SendClientMessage(playerid,COLOR_RED,str);
SetPlayerHealth(playerid,0);
}
But it doesnt work, so I created that SCM to see, when is that stock used. It is used only when player spawns.
Re: OnPlayerUpdate - One Hit Kill -
akis_tze - 12.08.2010
i am not sure but try this..
Код:
public OnPlayerUpdate(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
new Float:health;
new Float:CurrentHealth = GetPlayerHealth(i,health);
if(CurrentHealth != GetPVarFloat(i,"CurrentHealthStatus"))
{
OnPlayerHealthChange(i,GetPVarFloat(i,"CurrentHealthStatus"),CurrentHealth);
SetPVarFloat(i,"CurrentHealthStatus",CurrentHealth);
}
}
return 1;
}
stock OnPlayerHealthChange(playerid,Float:oldhealth,Float:newhealth)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
new str[32];
GetPlayerHealth(i,oldhealth);
GetPlayerHealth(i,newhealth);
//format(str,sizeof(str),"HP: from %f to %f",oldhealth,newhealth);
//SendClientMessage(i,COLOR_RED,str);
SetPlayerHealth(i,0);
}
}
Re: OnPlayerUpdate - One Hit Kill -
Donuts - 12.08.2010
I believe GetPlayerHealth doesn't return the health, that is why we have a (playerid,
Float: health) parameter, it stores the players health in that var.
pawn Код:
public OnPlayerUpdate(playerid)
{
new Float:CurrentHealth;
GetPlayerHealth(playerid,CurrentHealth);
if(CurrentHealth != GetPVarFloat(playerid,"CurrentHealthStatus"))
{
OnPlayerHealthChange(playerid,GetPVarFloat(playerid,"CurrentHealthStatus"),CurrentHealth);
SetPVarFloat(playerid,"CurrentHealthStatus",CurrentHealth);
}
return 1;
}
stock OnPlayerHealthChange(playerid,Float:oldhealth,Float:newhealth)
{
new str[32];
GetPlayerHealth(playerid,oldhealth);
GetPlayerHealth(playerid,newhealth);
//format(str,sizeof(str),"HP: from %f to %f",oldhealth,newhealth);
//SendClientMessage(playerid,COLOR_RED,str);
SetPlayerHealth(playerid,0);
}
Re: OnPlayerUpdate - One Hit Kill -
eldktkdgns - 13.08.2010
Even '-1' damaged kill player?
<pawn><code>
public OnPlayerUpdate(playerid);
{
new Float:OldHealth;
new Float:NewHealth;
GetPlayerHealth(playerid,OldHealth);
GetPlayerHealth(playerid,NewHealth);
if(OldHealth != NewHealth)
{
SetPlayerHealth(playerid, 0);
}
return 1;
}
</code></pawn>
Re: OnPlayerUpdate - One Hit Kill -
cessil - 13.08.2010
I've never seen a bullet take 1hp off, I'd also use a timer and not OnPlayerUpdate, even a 100ms timer would be called less than OnPlayerUpdate.