Создать акаунт
[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум pawno » Pawno » Стандартные функции » Предотвращение заморозки при выдаче скина (или исправление функции SetPlayerSkin)
Предотвращение заморозки при выдаче скина
Дата: Четверг, 12.05.2016, 20:14 | Сообщение # 1
OFF
Администратор
288Сообщения:
Фикс на разморозку игрока.

Проблема заключается в том что при выдаче скина стандартной функции 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

Автор: Неизвестен

Форум pawno » Pawno » Стандартные функции » Предотвращение заморозки при выдаче скина (или исправление функции SetPlayerSkin)
  • Страница 1 из 1
  • 1
Поиск:

Старая форма входа