Создание собственного скрипта анимаций.
Для этого нам нужны будут Sanny Builder 3(дальше SB), обновленные файлы базы опкодов Cleo 4(Как установить будет описано в архиве), инклуд клавиш(Как установить будет описано в архиве), Anim manager, любой скин игрока и прямые руки.
Немного информации. Анимации в GTA SA храняться в трех местах. Это ped.ifp, anim.img и gta3.img. Анимации с anim.img такие самые, как в gta3.img. Так что в скриптах используются анимации с ped.ifp и gta3.img
Теперь перейдем к поиску анимации. Для начала будем их искать в ped.ifp. Открываем Anim manager, загружаем в него наш скин. Для на панели инструментов выбераем "Preview" и нажимаем "Load model". Скрин.
Теперь открываем ped.ifp и видем такой список. В нем есть 3 вещи, которые нам нужны. Это названия архива анимаций, название анимации и время анимации. После того как выбрали анимацию запихиваем её в скрипт. Я уже написал небольшой скрипт, который уже готовый для компилирования.
.
Компилируем(Нажимем F6 или "Запуск" -> "Компилировать") и проверяем в игре.
Теперь будем искать анимации в gta3.img. Ищем их так же само, как и в ped.ifp. После того, нашли анимацию ставляем это в SB.
Этот скрипт будет проигрывать вот такую анимацию по нажатию клавиш Левый Шифт и 3. В нем меняем только клавиши, архив анимаций и название анимаций.
Теперь как совместить несколько анимаций. Пример.
Чтобы вам не мучаться я написал готовые части скрипта. Их вставляем как показанно на примере выше.
Для анимаций с ped.ifp
Для анимаций с gta3.img
Для этого нам нужны будут Sanny Builder 3(дальше SB), обновленные файлы базы опкодов Cleo 4(Как установить будет описано в архиве), инклуд клавиш(Как установить будет описано в архиве), Anim manager, любой скин игрока и прямые руки.
Немного информации. Анимации в GTA SA храняться в трех местах. Это ped.ifp, anim.img и gta3.img. Анимации с anim.img такие самые, как в gta3.img. Так что в скриптах используются анимации с ped.ifp и gta3.img
Теперь перейдем к поиску анимации. Для начала будем их искать в ped.ifp. Открываем Anim manager, загружаем в него наш скин. Для на панели инструментов выбераем "Preview" и нажимаем "Load model". Скрин.
Теперь открываем ped.ifp и видем такой список. В нем есть 3 вещи, которые нам нужны. Это названия архива анимаций, название анимации и время анимации. После того как выбрали анимацию запихиваем её в скрипт. Я уже написал небольшой скрипт, который уже готовый для компилирования.
Код:
{$CLEO} //Пишем это для того, чтобы у нас при компилировании скрипт был формата CS, а не scm. SCM-скрипты не работают в сампе.
{$include includes\vk_keys.txt} //Подключаем инклуд для того, чтобы не смотреть значения клавиш в справке SB
0000://Пмшем это для того, чтобы у нас при компилировании скрипта не было ошибки "Переход на нулевой оффсет"
while true
wait 0
if and//Данная строка проверяет условия для дальнейшей работы скрипта.
0AB0: key_pressed VK_SHIFT //Нажата клавиша Левый Шифт
0AB0: key_pressed VK_3 //Нажата клавиша 3
not actor.Driving($PLAYER_ACTOR) //Игрок не за рулем
Player.CanMove($PLAYER_CHAR) = True //Игрок может двигаться. Это условие пишем, чтобы мы не могли использовать анимацию под тазером.
then //Если все условия выполнены, то скрипт идет дальше.
Player.CanMove($PLAYER_CHAR) = True
0812: AS_actor $PLAYER_ACTOR perform_animation "DOOR_LHINGE_O" IFP_file "PED" 50.0 loopA 0 lockX 0 lockY 0 lockF 1 time 90 //Где $PLAYER_ACTOR - это глобальная переменная ped'a которым мы играем с SAMP. DOOR_LHINGE_O - название анимации, "PED" - где именно храниться анимация. 50.0, 0, 0, 0, 1 - я сам не знаю, что это. 90 - время проигрывания анимации. Его мы узнаем в anim manager.
end//Заканчиваем проверку условий
end
Компилируем(Нажимем F6 или "Запуск" -> "Компилировать") и проверяем в игре.
Теперь будем искать анимации в gta3.img. Ищем их так же само, как и в ped.ifp. После того, нашли анимацию ставляем это в SB.
Код:
{$CLEO} //Пишем это для того, чтобы у нас при компилировании скрипт был формата CS, а не scm. SCM-скрипты не работают в сампе.
{$include includes\vk_keys.txt} //Подключаем инклуд для того, чтобы не смотреть значения клавиш в справке SB
0000://Пишем это для того, чтобы у нас при компилировании скрипта не было ошибки "Переход на нулевой оффсет"
while true
wait 0
if and//Данная строка проверяет условия для дальнейшей работы скрипта.
key_pressed VK_SHIFT //Нажата клавиша Левый Шифт
key_pressed VK_3 //Нажата клавиша 3
not actor.Driving($PLAYER_ACTOR) //Игрок не за рулем
Player.CanMove($PLAYER_CHAR) = True //Игрок может двигаться. Это условие пишем, чтобы мы не могли использовать анимацию под тазером.
then //Если все условия выполнены, то скрипт идет дальше.
04ED: load_animation "ON_LOOKERS" //Загружаем архив анимаций.
if //Если
04EE: animation "ON_LOOKERS" loaded //Архив анимаций загружен.
then //Тогда
0615: define_AS_pack_begin 18@ //
0605: actor -1 perform_animation_sequence "LKAROUND_IN" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0605: actor -1 perform_animation_sequence "LKAROUND_LOOP" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0605: actor -1 perform_animation_sequence "LKAROUND_LOOP" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0605: actor -1 perform_animation_sequence "LKAROUND_OUT" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0616: define_AS_pack_end 18@
0618: assign_actor $PLAYER_ACTOR to_AS_pack 18@
061B: remove_references_to_AS_pack 18@
04EF: release_animation "ON_LOOKERS"
end
end//Заканчиваем проверку условий
end
Теперь как совместить несколько анимаций. Пример.
Код:
{$CLEO} //Пишем это для того, чтобы у нас при компилировании скрипт был формата CS, а не scm. SCM-скрипты не работают в сампе.
{$include includes\vk_keys.txt} //Подключаем инклуд для того, чтобы не смотреть значения клавиш в справке SB
0000://Пишем это для того, чтобы у нас при компилировании скрипта не было ошибки "Переход на нулевой оффсет"
while true
wait 0
//Начало первой анимации
if and//Данная строка проверяет условия для дальнейшей работы скрипта.
key_pressed VK_SHIFT //Нажата клавиша Левый Шифт
key_pressed VK_2 //Нажата клавиша 2
not actor.Driving($PLAYER_ACTOR) //Игрок не за рулем
Player.CanMove($PLAYER_CHAR) = True //Игрок может двигаться. Это условие пишем, чтобы мы не могли использовать анимацию под тазером.
then //Если все условия выполнены, то скрипт идет дальше.
04ED: load_animation "ON_LOOKERS" //Загружаем архив анимаций.
if //Если
04EE: animation "ON_LOOKERS" loaded //Архив анимаций загружен.
then //Тогда
0615: define_AS_pack_begin 18@ //
0605: actor -1 perform_animation_sequence "LKAROUND_IN" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0605: actor -1 perform_animation_sequence "LKAROUND_LOOP" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0605: actor -1 perform_animation_sequence "LKAROUND_LOOP" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0605: actor -1 perform_animation_sequence "LKAROUND_OUT" IFP_file "ON_LOOKERS" 4.0 loop 0 0 0 0 time -1
0616: define_AS_pack_end 18@
0618: assign_actor $PLAYER_ACTOR to_AS_pack 18@
061B: remove_references_to_AS_pack 18@
04EF: release_animation "ON_LOOKERS"
end
end//Заканчиваем проверку условий
//Конец первой анимации
//Начало второй анимации
if and//Данная строка проверяет условия для дальнейшей работы скрипта.
0AB0: key_pressed VK_SHIFT //Нажата клавиша Левый Шифт
0AB0: key_pressed VK_3 //Нажата клавиша 3
not actor.Driving($PLAYER_ACTOR) //Игрок не за рулем
Player.CanMove($PLAYER_CHAR) = True //Игрок может двигаться. Это условие пишем, чтобы мы не могли использовать анимацию под тазером.
then //Если все условия выполнены, то скрипт идет дальше.
Player.CanMove($PLAYER_CHAR) = True
0812: AS_actor $PLAYER_ACTOR perform_animation "DOOR_LHINGE_O" IFP_file "PED" 50.0 loopA 0 lockX 0 lockY 0 lockF 1 time 90 //Где $PLAYER_ACTOR - это глобальная переменная ped'a которым мы играем с SAMP. DOOR_LHINGE_O - название анимации, "PED" - где именно храниться анимация. 50.0, 0, 0, 0, 1 - я сам не знаю, что это. 90 - время проигрывания анимации. Его мы узнаем в anim manager.
end//Заканчиваем проверку условий
//Конец первой анимации
end
Для анимаций с ped.ifp
Код:
//Начало анимации
if and
0AB0: key_pressed Клавиша
0AB0: key_pressed Клавиша
not actor.Driving($PLAYER_ACTOR)
Player.CanMove($PLAYER_CHAR) = True
then
Player.CanMove($PLAYER_CHAR) = True
0812: AS_actor $PLAYER_ACTOR perform_animation "Название анимации" IFP_file "PED" 50.0 loopA 0 lockX 0 lockY 0 lockF 1 time 90
end
//Конец анимации
Код:
//Начало анимации
if and
key_pressed Клавиша
key_pressed Клавиша
not actor.Driving($PLAYER_ACTOR)
Player.CanMove($PLAYER_CHAR) = True
then
04ED: load_animation "Название архива анимации"
if //Если
04EE: animation "Название архива анимации" loaded
then //Тогда
0615: define_AS_pack_begin 18@ //
0605: actor -1 perform_animation_sequence "Название анимации" IFP_file "Название архива анимации" 4.0 loop 0 0 0 0 time -1
0616: define_AS_pack_end 18@
0618: assign_actor $PLAYER_ACTOR to_AS_pack 18@
061B: remove_references_to_AS_pack 18@
04EF: release_animation "Название архива анимации"
end
end
//Конец анимации