Информация Создание собственого скрипта с анимациями

Статус
В этой теме нельзя размещать новые ответы.

Dark_Knight

Me, me and me.
Автор темы
Друг
4,085
2,114
Создание собственного скрипта анимаций.
Для этого нам нужны будут 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
//Конец анимации
 
S

Sten_Smith

Гость
Спасибо за урок помог хочу сделать свой собственный бот грузчик или же фермер
 

Stas07

Известный
Проверенный
266
113
dark ты ведт должен знать что данную анимку видищь тока ты.
Чтобы видели другие пакет отправлять надо.
 

Stas07

Известный
Проверенный
266
113
с ped слабо если ,не сделаешь с данными опкодами с тебя касарь.
 
Статус
В этой теме нельзя размещать новые ответы.