Фикс на разморозку игрока.
Проблема заключается в том что при выдаче скина стандартной функции SetPlayerSkin - игрока бывает замораживает по двум причинам:
1)Игрок использует анимацию (бегает, прыгает и тд.)
2)Игрок находится в транспорте
Код
//закиньте этот код в самое начало вашего мода
stock Set_Skin_Fix(playerid,skinid)
{
new
Float:tmpPos[4],
vehicleid = GetPlayerVehicleID(playerid),
seatid = GetPlayerVehicleSeat(playerid);
GetPlayerPos(playerid, tmpPos[0], tmpPos[1], tmpPos[2]);
GetPlayerFacingAngle(playerid, tmpPos[3]);
if(skinid < 0 || skinid > 311) return 0;
if(GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_DUCK)
{
SetPlayerPos(playerid, tmpPos[0], tmpPos[1], tmpPos[2]);
SetPlayerFacingAngle(playerid, tmpPos[3]);
TogglePlayerControllable(playerid, 1); // предотвращает заморозку - опционально
return SetPlayerSkin(playerid, skinid);
}
else if(IsPlayerInAnyVehicle(playerid))
{
new
tmp;
RemovePlayerFromVehicle(playerid);
SetPlayerPos(playerid, tmpPos[0], tmpPos[1], tmpPos[2]);
SetPlayerFacingAngle(playerid, tmpPos[3]);
TogglePlayerControllable(playerid, 1); // предотвращает любую заморозку тобишь когда ты сидишь в авто или используешь анимацию
tmp = SetPlayerSkin(playerid, skinid);
PutPlayerInVehicle(playerid, vehicleid, (seatid == 128) ? 0 : seatid);
return tmp;
}
else
{
return SetPlayerSkin(playerid, skinid);
}
}
//ну и здесь перехват функции, руководствовался примерами работ некоторых умных товарищей этого форума
#if defined Set_SkinFix
#undef SetPlayerSkin
#else
#define Set_SkinFix
#endif
#define SetPlayerSkin Set_Skin_Fix
Автор: Неизвестен