public OnPlayerDeath(playerid, killerid, reason)
{
TogglePlayerSpectating(playerid, true);
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
SetPlayerPos(playerid, X, Y, Z);
SetPlayerHealth(playerid, 30);
TogglePlayerSpectating(playerid, false);
ApplyAnimation(playerid,"CRACK","crckdeth2",4.1,1,1,1,1,1);
TogglePlayerControllable(playerid, false);
SendClientMessage(playerid, COLOR_RED, "You've been killed.");
return true;
}
You should call a separate function on a timer after the death, this will allow a time gap in-between to pass the default death screen by SAMP and allow you to enable an anim after.
|
TogglePlayerSpectating(playerid, false);
public OnPlayerDeath(playerid, killerid, reason)
{
SetPlayerHealth(playerid, 30); //Dunno why, but okay..
ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.1, 1, 1, 1, 1, 1);
TogglePlayerControllable(playerid, false);
SendClientMessage(playerid, COLOR_RED, "You've been killed.");
return true;
}
public OnPlayerDeath(playerid, killerid, reason)
{
SavePlayerPosition(playerid);
TogglePlayerSpectating(playerid, true);
return true;
}
forward CheckPlayerDeath(playerid);
public CheckPlayerDeath(playerid)
{
ApplyAnimation(playerid,"CRACK","crckdeth2",4.1,1,1,1,1,1);
SetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]);
return true;
}
stock SavePlayerPosition(playerid)
{
new Float:X, Float:Y, Float:Z;
GetPlayerPos(playerid, X, Y, Z);
PlayerInfo[playerid][pPosX] = X;
PlayerInfo[playerid][pPosY] = Y;
PlayerInfo[playerid][pPosZ] = Z;
SpawnPlayer(playerid);
TogglePlayerControllable(playerid, false);
SendClientMessage(playerid, COLOR_RED, "You've been killed.");
return 1;
}
//
public OnPlayerSpawn(playerid)
{
TogglePlayerSpectating(playerid, false);
SetTimerEx("CheckPlayerDeath", 500, false, "i", playerid);
return 1;
}
TogglePlayerSpectating(playerid, false);