Уроки CLEO. Урок №3: злим персонажа

4 липня 2012
Alexey1999, Flame


Содержание урока:
1. Предыстория
2. Программы
3. Находим оружие и его ID
4. Злим персонажа
1. Предыстория
В прошлом уроке мы с вами ставили персонажу анимацию. У меня была анимация танца dance_loop из пакета анимаций anim.img/dancing.ifp.
Сейчас мы дадим ему хорошее оружие, но какое — решать вам! В моём случае это будет помповое ружьё Shotgun.
Далее сделаем так, чтобы когда к нашему персонажу приблизишься слишком близко, он начинал вас убивать. На этом наш урок по установке персонажей на карту закончится, мы перейдём на следующий уровень сложности. Мы станем ставить анимации Сиджей и давать ему в руки что угодно, хоть дом!
Итак, начнём.
2. Программы
Нам потребуется программа GGMM (GTA Garage Mod Manager) (она предназначена изначально для просмотра и замены автомобилей, но также позволяет просматривать оружие) и Sanny Builder 3 (создание скриптов).
Установив и запустив GGMM, нам нужно будет найти оружие и выяснить его числовой идентификатор (ID).
2. Находим оружие и его ID
Но пока что перед нами главное окно программы, в котором отображается машина.

Нажимаем на кнопку Weapons.
Появился бронежилет. Но нам нужно другое, огнестрельное оружие. Перелистываем оружие с помощью стрелочек. Вот оно, ружьё, которое я собрался дать персонажу.

Название вы можете посмотреть чуть выше картинки. В моём случае это: CHROMEGUN. Название мы знаем, открываем наш созданный ранее скрипт в Sanny Builder и загружаем модель вот этой командой:
Model.Load(#CHROMEGUN)
Это нужно вписать в код, который мы уже делали в предыдущем уроке, назначая анимацию персонажу. Весь код смотрится вот так:
{$VERSION 3.1.0027}
{$CLEO .cs}


//-------------MAIN---------------


:NONAME_1
Model.Load(#HMORI)
Model.Load(#CHROMEGUN)
04ED: load_animation "DANCING"
038B: load_requested_models
04EE: animation "DANCING" loaded
1@ = Actor.Create(CivMale, #HMORI, 2486.9573, -1656.5065, 13.3479)
Actor.Angle(1@) = 178.8208
wait 3000
0605: actor 1@ perform_animation_sequence "dance_loop" IFP_file "DANCING" 4.0 loop 1 0 0 0 time -1 // versionA
end_thread

Всё, теперь осталось лишь узнать ID оружия которое, вы выбрали. Это нужно сделать не закрывая Sanny Builder 3. Просто нажмите на "Справка", потом на "Помощь". У вас откроется отдельное окно.
Нажмите на "Статьи" и найдите там "Пикапы". Здесь вы найдёте ID своего оружия. У меня это будет — 25. Всё, ID узнали, можно закрывать справку.
Далее пишем в скрипте после анимации следующее:
01B2: give_actor 1@ weapon 25 ammo 1000 // Load the weapon model before using this
Там, где написано weapon, нужно написать ID своего оружия, а после ammo — патроны, точнее количество патронов. Я поставил 1000.

Всё, это сделали, мы дали прописанному персонажу оружие. Теперь позлим его.
4. Злим персонажа
Мы уже дали оружие нашему персонажу. Чтобы это проверить — скомпилируйте скрипт и зайдите в игру.

Теперь разозлим его! Для этого нам нужно снова вернуться к скрипту чтобы поставить в нем сферу вокруг нашего персонажа, и если Сиджей пересечёт её, персонаж будет гасить его из всех патронов, которые есть в дробаше!
Для этого прописываем следующее перед словом end_thread:
:NONAME_2
wait 0
if
0102: actor $PLAYER_ACTOR in_sphere 2486.9573 -1656.5065 13.3479 radius 10.0 10.0 10.0 sphere 0 stopped_on_foot
jf @NONAME_2

Это мы создали сферу. В конце нужно написать нужные координаты. В моём случае это 10.0 10.0 10.0
Далее, после слова jf @NONAME_2 нам надо прописать следующее:
0850: AS_actor 1@ follow_actor $PLAYER_ACTOR
05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR

Весь код после сделанных правок будет выглядеть так:
{$VERSION 3.1.0027}
{$CLEO .cs}


//-------------MAIN---------------


:NONAME_1
Model.Load(#HMORI)
Model.Load(#CHROMEGUN)
04ED: load_animation "DANCING"
038B: load_requested_models
04EE: animation "DANCING" loaded
1@ = Actor.Create(CivMale, #HMORI, 2486.9573, -1656.5065, 13.3479)
Actor.Angle(1@) = 178.8208
wait 3000
0605: actor 1@ perform_animation_sequence "dance_loop" IFP_file "DANCING" 4.0 loop 1 0 0 0 time -1 // versionA
01B2: give_actor 1@ weapon 25 ammo 1000 // Load the weapon model before using this
:NONAME_2
wait 0
if
0102: actor $PLAYER_ACTOR in_sphere 2486.9573 -1656.5065 13.3479 radius 10.0 10.0 10.0 sphere 0 stopped_on_foot
jf @NONAME_2
0605: actor 1@ perform_animation_sequence "dance_loop" IFP_file "DANCING" 4.0 loop 0 0 0 0 time 0 // versionA
0850: AS_actor 1@ follow_actor $PLAYER_ACTOR
05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR
end_thread

Теперь в игру, пробовать. Пересекая невидимую сферу, Сиджей будет злить персонажа, и тот будет стрелять в него.

Это был последний урок, посвящённый персонажам. В следующих уроках мы будем анимировать Сиджея и вручать ему в руки предметы (а также заставлять его их бросать).
Рейтинг: 0 (0 голосів)