SetPlayerSpecialAction

Материал из Pro-Pawn Wiki
Перейти к: навигация, поиск

Описание:

Заставляет игрока совершить специальное действие.

Параметры:

(playerid, actionid)
playerid ID игрока, для которого требуется совершить действие.
actionid ID специального действия, которое будет совершено игроком.


Возвращаемое значение:

1 в случае успеха, либо 0, если игрок не подключен.

Bug.png
Баг SA-MP
Функция не проверяет значение параметра actionid и возвращает 1 даже когда в нём указан неправильный ID действия.
Константа SPECIAL_ACTION_PISSING не объявлена в a_samp.inc. Её можно объявить вручную следующим образом:
#if !defined SPECIAL_ACTION_PISSING
    const SPECIAL_ACTION_PISSING = 68;
#endif

Если выдать игроку джетпак (SPECIAL_ACTION_USEJETPACK), а затем удалить его (SPECIAL_ACTION_NONE), звук от сопла джетпака останется у игрока до тех пор, пока он не умрёт. Чтобы решить данную проблему, необходимо перед сбросом действия (или активацией нового действия) также сбрасывать анимацию:
ClearAnimations(playerid);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);

Если у игрока скин #0 (CJ), для действий SPECIAL_ACTION_CUFFED и SPECIAL_ACTION_CARRY не будет работать анимация (руки игрока не будут вытянуты вперёд/загнуты за спину).


Пример использования:

CMD:jetpack(playerid, params[])
{
    if (GetPlayerSpecialAction(playerid) == SPECIAL_ACTION_USEJETPACK)
    {
        ClearAnimations(playerid); // Сброс анимации, чтобы обойти баг с остающимся звуком реактивного сопла
        SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
        return SendClientMessage(playerid, -1, "Вы сняли джетпак.");
    }
    SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK);
    return SendClientMessage(playerid, -1, "Вы надели джетпак.");
}


См. также: