четверг, 3 января 2013 г.

Уроки скриптинга. Урок 1. Ставим на карту актёра

Всем доброго времени суток. Сегодня я хотел бы описать вам первый урок, в котором вы научитесь ставить персонажа на карту, давать ему оружие и анимацию. Прочитав все мои уроки, вы станете отличным скриптером, и будете создавать отличные скрипты!




Часть 1
Итак, для первого урока нам потребуется:
 Sanny Builder 3 (создание скриптов) и Ped Editor ( просмотр моделей персонажей )
Эти программы и не только вы можете скачать ... одним архивом. Позже я познакомлю вас с каждой из них.
Первым делом открываем Ped Editor и ищем нужного персонажа. В моем случае это будет
#ARMY
Первым делом пишем вот это:

{$VERSION 3.1.0027}
{$CLEO .cs}

//-------------MAIN---------------
Это стандартное начало любого скрипта.
Потом нужно написать переход и проверку загрузки персонажа:

:NONAME_1
Model.Load(здесь указывается название модели персонажа после символа "#", в моём случае это: #ARMY
038B: load_requested_models

Далее пишем:

1@ = Actor.Create(CivMale, # ARMY ,координаты )
Actor.Angle(1@) =угол разворота
Теперь открываем gta san andreas и идем туда куда нужно поставить нашего персонажа. Как только нашли подходящее место, сворачиваем игру, открываем Sanny Builder. И в место где написано координаты вставляем координаты игрока(правая кнопка мыши/вставить/координаты игрока), а в месте угол разворота вставляем угол разворота игрока(правая кнопка мыши/вставить/угол разворота игрока)
Все нам осталось только завершить наш скрипт опкодом end_thread
Итак вот что у вас должно было получится

{$VERSION 3.1.0027}
{$CLEO .cs}

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

:NONAME_1
Model.Load(#ARMY)
038B: load_requested_models
1@ = Actor.Create(CivMale, #AEMY, 2486.9573, -1656.5065, 13.3479)
Actor.Angle(1@) = 178.8208
end_thread
------------------------------------------
ЧАСТЬ 2
Итак, вот мы и написали наш первый скрипт, который просто ставит персонажа на карту. Сейчас мы дадим ему анимацию!
Для этого нам потребуются программы:
программа Sanny Builder 3 (создание скриптов) и GTA Anim Manager (просмотр анимаций)
Скачать эти программы в полном наборе можно здесь одним архивом
Открываем  Anim Manager.

После нужно нажать на Preview, Load Model. Появится окно, где нужно будет выбрать модель (файлы dff и txd) любого персонажа. Для этого можно вытащить его из GTA SA или просто скачать.

Когда нашли персонажа, кликайте по нему. Теперь он появился.

Слева, в списке папок нужно найти нашу директорию игры. Потом нужно найти в директории папку anim и открыть файл PED или anim (anim — это файл с расширением ifp, поэтому нужно будет указывать в скрипте место нахождения анимации, а PED — это пакет анимаций для обычных людей и самого персонажа, поэтому его не надо будет указывать в скрипте). В уроке я выбираю anim.

После того, как выбрали пакет анимаций, нужно найти саму анимацию. Я зашёл в anim, там мы видим ещё очень много пакетов анимаций. Заходим, например, в DANCING и нажимаем на любой файл.
Это сработала анимация, но она не идёт! Нажмите на ">" для того чтобы персонаж был анимирован.
Открываем наш прошлый скрипт, и перед Model.Load(#ARMY) написать следующее
04ED: load_animation "DANCING"
038B: load_requested_models
04EE: animation "DANCING" loaded
А затем пишем перед строчкой end_thread пишете следующее:

wait 3000
0605: actor 1@ perform_animation_sequence "сюда название анимации" IFP_file "DANCING" 4.0 loop 1 0 0 0 time -1 // versionA
На этом вторая часть урока закончена!

------------------------------------------
ЧАСТЬ 3

Сейчас мы дадим ему хорошее оружие, но какое — решать вам! В моём случае это будет помповое ружьё Shotgun.

Далее сделаем так, чтобы когда к нашему персонажу приблизишься слишком близко, он начинал вас убивать! Мой скрипт ... создан именно так как я описываю вам в этом уроке!
Нам потребуется программа GGMM (GTA Garage Mod Manager) (она предназначена изначально для просмотра и замены автомобилей, но также позволяет просматривать оружие) и Sanny Builder 3 (создание скриптов).
Установив и запустив GGMM, нам нужно будет найти оружие и выяснить его числовой идентификатор (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.
Всё, это сделали, мы дали прописанному персонажу оружие. Теперь позлим его.

Для этого нам нужно снова вернуться к скрипту чтобы поставить в нем сферу вокруг нашего персонажа, и если Сиджей пересечёт её, персонаж будет гасить его из всех патронов, которые есть в дробаше!

Для этого прописываем следующее перед словом 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
На этом наш урок подошел к концу. Если есть вопросы по этому вы можете задать их в комментариях
Всем пока :)











9 коммент.:

Unknown комментирует...

Респект тебе чувак

Unknown комментирует...

А как сделать чтобы педы были дружественными?

Unknown комментирует...

Просто не писать команду атаки гавного героя.
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
end_thread

Unknown комментирует...

А у меня такая проблема. Я ставлю одни координаты, а после запуска скрипта персонаж появляется немного дальше от нужного мне места.
К примеру ставлю (1447.628, - 1431.592, 13.548)
А появляется на (1578.529, -1433,592, 13.548)
В чём проблема?

Unknown комментирует...

Никогда с таким не сталкивался... попробуй переустановить Sanny Builder, или поставь на другую gta. Если проблема не решена, пиши мне в вк http://vk.com/id92658680

Unknown комментирует...

Андрей, 25 не id оружия, а номер. ID твоего оружия- 349

Unknown комментирует...

у меня не работает че делать

Unknown комментирует...

Где-то ошибка. Скинь код в комменты плиз.

Unknown комментирует...

Привет, спасибо, всё получилось, но вот такой вопрос: как сделать так чтобы созданного педа можно было брать в свою банду?

Отправить комментарий