Решил вопрос, можно закрывать.
Решил вопрос, можно закрывать.
Ну так поделился бы решением с остальными. Не будь жадиной :)
В общем, скинь код, который у тебя получился. Будем учится логировать и делать выводы из получившейся информации
В public OnPlayerUpdate
P.S. У меня такая фигня еще, как и у многих, когда умираешь, как будто идет как двойная смерть, т.е. игрок умирает, потом на доли мил.сек. появляется скин CJ и потом только идет спавн и я появляюсь только тогда.PHP код:
new Float:healt;
GetPlayerHealth(i,healt);
if(healt < 15.0 && GetPVarInt(i,"ANGAR") != 1 && GetPlayerVirtualWorld(i) == 0 && GetPlayerInterior(i) == 0)
{
animation[i] = true;
ApplyAnimation(i, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
}
else if(healt > 14.0 && animation[i] == true)
{
animation[i] = false;
ClearAnimations(i);
}
Есть конечно одна задумка, если получится, вечером сделаю тест, как дома буду, отпишу о результатах.
Во-первых, под OnPlayerUpdate код, конечно, слабо оптимизирован.
Во-вторых, а чего ты хотел-то от такого кода? Делать проверки в том же OnPlayerDeath, прекращая действие кода - это для слабаков, да?
Логируй коллбэки смерти/спавна/состояния и смотри куда нужно добавить дополнительные проверки
PHP код:
new bool:animation[MAX_PLAYERS];
public OnPlayerUpdate(playerid)
{
if(GetPlayerState(playerid) == PLAYER_STATE_ONFOOT && GetPlayerVirtualWorld(playerid) == 0 && GetPlayerInterior(playerid) == 0)
{
static
Float:healt;
GetPlayerHealth(playerid, healt);
if(animation[playerid] == false)
{
if(healt <= 14.0)
{
animation[playerid] = true;
ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0);
}
}
else
{
if(healt > 14.0)
{
animation[playerid] = false;
ClearAnimations(playerid);
}
}
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
animation[playerid] = false;
return 1;
}