PDA

Просмотр полной версии : [Вопрос] Анимации и таймеры



James
31.05.2014, 23:39
Как сделать так:
Игрок вызвал функцию, у него началась проигрываться анимация и начал отсчет 15 секунд таймер.
По окончанию таймера, анимация прекращается, и об этом пишет в общий чат допустим.
Кто ответит - получит плюс

underwoker
31.05.2014, 23:53
Игрок не может вызвать функцию, он может ввести команду, которая вызовет функцию.
Создаем саму анимацию:
http://wiki.sa-mp.com/wiki/ApplyAnimation_RU
Делаем таймер в 15000:
http://wiki.sa-mp.com/wiki/SetTimerEx_RU
И замораживаем игрока
http://wiki.sa-mp.com/wiki/Function:TogglePlayerControllable
Ну и по окончанию таймера размораживаем игрока той же функцией, а так же выводим сообщение в чат
http://wiki.sa-mp.com/wiki/SendClientMessageToAll

James
31.05.2014, 23:59
C примером SetTimerEx пожалуйста

Osetin
01.06.2014, 00:17
C примером SetTimerEx пожалуйста

http://pro-pawn.ru/showthread.php?4680-SetTimerEx%28funcname-interval-repeating-const-format-Float-_-%29&highlight=SetTimerEx

underwoker
01.06.2014, 00:18
timeanim[playerid] = SetTimerEx("timeanim1",15000,false,"i", playerid);

forward timeanim1(playerid);
public timeanim1(playerid)
{
//код с остановкой анимки ClearAnimations и разморозкой игрока
}

Массив сам создашь.

DeimoS
01.06.2014, 08:26
timeanim[playerid] = SetTimerEx("timeanim",15000,false,"i", playerid);

forward timeanim(playerid);
public timeanim(playerid)
{
//код с остановкой анимки ClearAnimations и разморозкой игрока
}

Массив сам создашь.

1) Для чего там массив? Таймер не зациклен и останавливать его какой-либо функцией не нужно.
2) Почему у массива и функции одинаковые названия? Случится казус же :)

underwoker
01.06.2014, 08:42
1) Для чего там массив? Таймер не зациклен и останавливать его какой-либо функцией не нужно.
2) Почему у массива и функции одинаковые названия? Случится казус же :)
Массив, я думал убивать таймер при отключении игрока, в случае отключения его от сервера во время действия таймера.
Но если это не нужно, то извиняюсь.

Да, с названием казус)

DeimoS
01.06.2014, 08:48
Массив, я думал убивать таймер при отключении игрока, в случае отключения его от сервера во время действия таймера.
Но если это не нужно, то извиняюсь.

Ну если уж очень страшен тот факт, что функция сработает для игрока в оффлайне - можно в саму функцию вставить проверку, типа

if(!IsPlayerConnected(playerid)) return 1;
А если страшен тот факт, что для нового игрока, подключённого в тот же слот, сработает функция - вставляем туда же функцию на проверку авторизации и всё. За 15 секунд вряд ли новый игрок успеет авторизироваться.

В общем, по-моему, тут можно и без массива обойтись :)