GetPlayerAnimationIndex
Материал из Pro-Pawn Wiki
Описание:
Узнаёт внутренний ID текущей анимации игрока.
Параметры:
(playerid) |
playerid | ID игрока. |
Возвращаемое значение:
Номер текущей анимации игрока, либо
0
, если игрок не подключен или его текущее состояние отличается от PLAYER_STATE_ONFOOT
.
Примечание |
Сервер SA-MP передаёт каждому игроку информацию о том, какие анимации воспроизводятся на данный момент у других игроков в зоне стрима (без этого игрок видел бы, как персонажи других игроков перемещаются, но с анимацией стояния на месте). При этом игрокам сообщаются не названия анимаций, а их так называемые "внутренние ID": делается это для экономи трафика, т.к. позволяет вместо двух строк (название самой анимации и библиотеки) закодировать анимацию всего одним ID (числом) размером в 2 байта. Тем не менее, у некоторых анимаций нет своего ID и поэтому они не синхронизируются (единственный способ заставить других игроков увидеть такие анимации - вызвать ApplyAnimation() с параметром forcesync , не равным нулю).
|
Баг SA-MP |
Функция возвращает 0 не только когда игрок не подключен, но и когда он в состоянии, отличном от PLAYER_STATE_ONFOOT . Чтобы отличить эти два случая, может потребоваться дополнительный вызов функции IsPlayerConnected() .
|
Пример использования:
public OnPlayerUpdate(playerid)
{
new animid = GetPlayerAnimationIndex(playerid);
switch (animid)
{
// 1189: PED:IDLE_stance - стояние на месте
// 1224: PED:run_civi - бег
// 1234: PED:run_stop - остановка после бега
// 1257: PED:WALK_civi - ходьба
// Если у игрока одна из перечисленных выше анимаций - он держит мешок в руках
case 1189, 1224, 1234, 1257: {}
// Если же у него любая другая анимация - он роняет мешок
default:
{
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
SendClientMessage(playerid, -1, "Вы уронили мешок!");
}
}
}
{
new animid = GetPlayerAnimationIndex(playerid);
switch (animid)
{
// 1189: PED:IDLE_stance - стояние на месте
// 1224: PED:run_civi - бег
// 1234: PED:run_stop - остановка после бега
// 1257: PED:WALK_civi - ходьба
// Если у игрока одна из перечисленных выше анимаций - он держит мешок в руках
case 1189, 1224, 1234, 1257: {}
// Если же у него любая другая анимация - он роняет мешок
default:
{
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
SendClientMessage(playerid, -1, "Вы уронили мешок!");
}
}
}
См. также: