00037. Анимация. Основные команды и примеры их использования
Анимация. Основные команды и примеры их использования|Мы продолжаем изучать скриптинг. Этот урок посвящен анимациям. Мы научимся основным командам для проигрывания анимаций а так-же сделаем третью миссию с использованием анимацией.|wmysterio|wmysterio||||Если вы не читали урок о GTA Animation Manager, то советую прочитать руководство к этой программе.
Для начала научимся загружать анимации. Сделать это можно командой:
04ED: load_animation "LOWRIDER"
Здесь:
"LOWRIDER" — название ifp-файла ( см. рисунок ниже )

После этого нам обязательно нужно проверить: "загружена ли она?". Эта проверка осуществляется опкодом:
04EE: animation "LOWRIDER" loaded
После загрузки можно использовать анимации, что содержаться в ifp-файлах ( см. рисунок ниже ):

Теперь, что бы какой то актёр проиграл эту анимацию, нужно использовать опкод:
0605: actor 0@ perform_animation "M_SMKLEAN_LOOP" IFP "LOWRIDER" framedelta 4.0 loop 0 lockX 0 lockY 0 lockF 0 time 670
Здесь:
0@ — Имя переменной для актёра
"prtial_gngtlkB" — название анимации
"LOWRIDER" — название IFP-файла
4.0 и 0 0 0 0 — оставляйте так, далее мы детально изучим эти параметры
670 — время воспроизведения. Если поставить больше, то анимация будет повторяться. Длина любой анимации на рисунку выше выделено зелёным цветом
Если мы загрузили анимацию, то естественно нам её нужно выгрузить с памяти когда она не нужна. Делается это опкодом:
04EF: release_animation "LOWRIDER"
Рассмотрим анимации, которые НЕ нужно загружать и НЕ нужно выгружать. Это анимации "PED.IFP", так как она загружается вместе с игрой и постоянно используется:

Рассмотрим другую анимацию - анимация телефона ( когда СЖ достаёт или прячет телефон ). Что бы актёр доставал телефон, используйте опкод:
0729: AS_actor $PLAYER_ACTOR hold_cellphone 1
Здесь:
$PLAYER_ACTOR - имя переменной актёра
1 - достать телефон, 0 - спрятать
После этого опкода обычно делают задержку в 2000 милисекунд, чтобы актёр окончательно взял телефон и приложил его к уху, или спрятал его в карман.
× **Примечание:** Сначала нужно загрузить модель телефона #CELLPHONE, иначе актёр приставит к уху только свою руку ;)
Так же актёра можно заставить говорить:
0967: actor 0@ move_mouth 4000 ms
Здесь:
0@ - хендл актёра
4000 - время, сколько нужно шевелить губами
И опкод, который заставляет прекратить актёра шевелить губами:
0968: actor 0@ stop_mouth
Есть ещё похожий опкод, который заставляет актёра шевелить губами, но это имеет вид больше жевания, нежели разговора:
05BA: AS_actor 2@ move_mouth 4000 ms