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

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

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


IP: 83.222.105.54:8358
© [CRMP] Россия - Дрифт
 
Форум pawno » Pawno » Стандартные функции » Предотвращение заморозки при выдаче скина (или исправление функции SetPlayerSkin)
Страница 1 из 11
Поиск:

Хостинг от uCoz