Некорректная смерть / Игрок не умирает
Здравствуйте.
Уже недели 2 я не могу разобрать данный баг и причину возникновения.
Вообщем объясняю:
Игрок умирает (или его убивают) он стоит мертвый и может ходить, также может стрелять, но урон не наносит.
Другим игрокам видно что он лежит на земле (когда он стреляет видно что летят пули, но они не наносят урон)
Если игрок во время этого бага пригнет с высоти или в него стрельнут еще раз, он нормально умрет и респавнится в нужном месте.
Предоставляю вам спавн и деатх функцию:
PHP код:
public OnPlayerSpawn(playerid)
{
PlayerPlaySound(playerid,1063,0.0,0.0,0.0);
TextDrawShowForPlayer(playerid, ServerLogo[0]), TextDrawShowForPlayer(playerid, ServerLogo[1]), TextDrawShowForPlayer(playerid, ServerLogo[2]), TextDrawShowForPlayer(playerid, ServerLogo[3]);
if(!GetPVarInt(playerid, "Logged"))
{
send(playerid, "Прежде чем заспавниться, нужно быть авторизированым.");
return 1;
}
if(uInfo[playerid][pJustConnected])
{
uInfo[playerid][pJustConnected] = false;
SendClientMessage(playerid, COLOR_WHITE, "Для ознакомление с сервером введите команду /help");
}
SetTimerEx("UpdatePlayerInfo", 300, false, "d", playerid);
ChangeSpawnInfo(playerid, .post = 1);
SetPlayerHealth(playerid, 1000.0), SetTimerEx("SpawnShieldDisable", 2000, false, "d", playerid);
for(new i = 0; i < 10; i++) SetPlayerSkillLevel(playerid, i, 1000);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
new animlib[32], animname[32];
GetAnimationName(uInfo[playerid][pLastAnim],animlib,32,animname,32);
if(strcmp(animlib, "PED", true) != 0) ClearAnimations(playerid);
if(killerid == INVALID_PLAYER_ID) SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
else
{
// Killer
SendDeathMessage(killerid,playerid,reason);
pInfo[killerid][pKills] += 1;
pInfo[killerid][pMoney] += 100;
SetPlayerInfo(killerid);
// Victim
pInfo[playerid][pDeaths] += 1;
if(TDM_Info[TDM_Started] == true)
{
switch(uInfo[playerid][pTeam])
{
case 1: TDM_Info[TDM_Score_2] += 1;
case 2: TDM_Info[TDM_Score_1] += 1;
}
new temp[48];
format(temp, 48, "~r~You killed by %s", uInfo[killerid][pName]);
GameTextForPlayer(playerid, temp, 2000, 5);
}
if(uInfo[killerid][pZoneType] == DeathMatchZone)
{
new Float:health;
GetPlayerHealth(killerid, health);
if(health < 51) SetPlayerHealth(killerid, (health+50.0));
else SetPlayerHealth(killerid, 100.0);
}
if(uInfo[killerid][pZoneType] == RaceDeathMatchZone)
{
RDM_PlayerKills[killerid] += 1;
if(RDM_PlayerKills[killerid] > RDM_Info[RDM_LeaderKills])
{
RDM_Info[RDM_LeaderIndex] = killerid;
RDM_Info[RDM_LeaderKills] = RDM_PlayerKills[killerid];
}
}
if(pInfo[killerid][pKills] > TopStats[20][TS_Kills]) TopStats_Update(killerid);
}
ChangeSpawnInfo(playerid);
return 1;
}
Код HTML:
new animlib[32], animname[32];
GetAnimationName(uInfo[playerid][pLastAnim],animlib,32,animname,32);
if(strcmp(animlib, "PED", true) != 0) ClearAnimations(playerid);
Этот код я нашел в интернете, он вроде должен был исправить данный баг. Но.... Он его не исправляет. Если убрать этот код, то баг остается.
p.s. Раньше этот баг был потому как в Spawn Post не было *return 1;* потому был баг, сегодня он снова появился, хотя ретурн на месте.
Буду очень благодарен если поможете исправить баг или подсказать в чем причина.
Т.к. это единственный баг который я не могу пофиксить.