Создание собственного скрипта анимаций. Для этого нам нужны будут 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 Этот скрипт будет проигрывать вот такую анимацию по нажатию клавиш Левый Шифт и 3. В нем меняем только клавиши, архив анимаций и название анимаций. Теперь как совместить несколько анимаций. Пример. Код: {$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 //Конец анимации Для анимаций с gta3.img: Код: //Начало анимации 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 //Конец анимации