|
Форум Программирование в Pawno Стандартные функции Предотвращение заморозки при выдаче скина (или исправление функции SetPlayerSkin) |
Предотвращение заморозки при выдаче скина |
Фикс на разморозку игрока.
Проблема заключается в том что при выдаче скина стандартной функции 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 Автор: Неизвестен Программист любитель :) |
| |||
| |||