Уроки CLEO. Урок №5: даємо головному герою об'єкт в руки

4 липня 2012
Alexey1999, Flame

Зміст уроку:

1. Передісторія

2. Програми

3. Знаходимо об'єкт або зброю

4. Даємо в руки об'єкт або зброю

1. Передісторія

Ви напевно хочете, щоб головний герой брав щось у руки, наприклад, зброю. Це дуже просто!

Якщо коротко, потрібно прописати в скрипті команду 01B2: give_actor $PLAYER_ACTOR weapon 25 ammo 1000 // Load the weapon model before using this. Замість 25 ви ставите ID зброї (можна подивитися в довідці: Допомога > Статті > Пікапи), замість 1000 ви повинні поставити будь-яке число, хоч 1000000! Це кількість патронів.

Але ми зараз зацікавлені в тому, щоб дати герою саме об'єкт, а не зброю. Наприклад, пляшку. У будь-якому випадку, нижче ми детально розглянемо обидва варіанти.

2. Програми

Нам знадобляться такі програми: Sanny Builder 3 (створення скриптів), Map Editor (редактор локації, але ми будемо тільки дізнаватися про потрібні об'єкти з нього) і GMM (в якій ми дізнаємося ID зброї, якщо будемо вручати герою не об'єкт, а зброю).

3. Знаходимо об'єкт або зброю

Ітак, ми почнемо шукати спочатку звичайний об'єкт. Для цього скачайте та встановіть Map Editor, зайдіть у програму, вкажіть шлях до гри і натисніть ОК. Перший раз програма може вийти з ладу, вдруге все пройде гладко!

Коли ви зайдете, ви не побачите нічого, крім порожнього вікна, але натисніть на Scene і у вас з'явиться вікно з частинами світу GTA SA. Але краще не відкривати всі файли відразу, відеокарта та оперативна пам'ять занадто навантажаться.

Щоб політати по околицях або інтер'єрах GTA SA, ставте галочку на будь-якій з частин світу. Політайте і знайдіть свій об'єкт, а потім клікніть двічі по ньому, він буде виділений червоним.

Об'єкт знайдено, тепер потрібно записати його ID (числовий ідентифікатор). Він відображається там, де показано на нижньому малюнку.

ID мого об'єкта – 1520. Значить, я можу закривати Map Editor і вже робити скрипт.

Для продовження створення скрипта, який вручить герою в руки об'єкт, переходьте до розділу статті №4. А якщо ви хочете вручити в руки герою не об'єкт, а зброю — читайте нижче.

Дізнаємося ID зброї. Для цього встановимо GMMM, відкриємо програму, увійдемо в меню Weapons і знайдемо там потрібну зброю.

Я вибрав катану. Оскільки в минулому уроці я ставив анімацію медитації, катана підійде дуже добре! Тепер нам залишилося зробити скрипт.

4. Даємо в руки об'єкт або зброю

Передача персонажу об'єкта або зброї дуже схожа, але є відмінність. Для того щоб дати, наприклад, вибраний раніше об'єкт (пляшка), потрібно писати Model.Load(1520), а щоб дати зброю, потрібно написати Model.Load(#katana) (також, щоб дати зброю в руки, треба позначити її як змінну, про що нижче).

Ітак, почнемо! Спочатку розберемося, як давати в руки об'єкт, а потім як давати зброю.

Відкриваємо наш початий вже в минулих уроках скрипт, і в частині, в якій ми пишемо, які речі скрипту потрібно завантажити, прописуємо код, що вказує на завантаження потрібної моделі:

Model.Load(1520)

Весь скрипт виглядає так:

Потім потрібно зробити так, щоб коли герой виконує якусь анімацію (як прикріпляти анімацію я писав у попередньому уроці), об'єкт сам з'являвся в руках.

$BUT = Object. Init(1520, 10@, 20@, 30@)

070A: AS_actor $PLAYER_ACTOR attach_to_object $BUT offset 0.05 0.06 0.05 on_bone 6 16 perform_animation "NULL" IFP_file "NULL" time -1

Ось так у мене виглядає код:

Все, об'єкт потрапляє в руку, але потрібно зробити, щоб по закінченню програвання анімації він зник! Пропишіть після останньої анімації наступне:

0687: clear_actor $Player_actor task

Object. Destroy($BUT)

Object. RemoveReferences($BUT)

Model.Destroy(1520)

Ось код скрипта цілком:

{$VERSION 3.1.0027}

{$CLEO .cs}

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

04ED: load_animation "PARK"

Model.Load(1520)

038B: load_requested_models

04EE: animation "PARK" loaded

:NONAME_1

wait 0

if

0AB0: key_pressed 90

else_jump @NONAME_1

wait 0

0812: AS_actor $Player_actor perform_animation "Tai_Chi_in" IFP_file "PARK" 4.0 loopA 1 lockX 1 lockY 1 lockF 0 time -1 // versionB

$BUT = Object. Init(1520, 10@, 20@, 30@)

070A: AS_actor $PLAYER_ACTOR attach_to_object $BUT offset 0.05 0.06 0.05 on_bone 6 16 perform_animation "NULL" IFP_file "NULL" time -1

wait 1000

:NONAME_2

wait 0

if

0AB0: key_pressed 84

else_jump @NONAME_2

wait 0

0812: AS_actor $Player_actor perform_animation "Tai_Chi_Out" IFP_file "PARK" 4.0 loopA 0 lockX 0 lockY 0 lockF 0 time -1// versionB

0687: clear_actor $Player_actor task

Object. Destroy($BUT)

Object. RemoveReferences($BUT)

Model.Destroy(1520)

wait 1000

jump @NONAME_1

Можете перевірити в грі. Все, давати в руки об'єкт під час програвання анімації ми навчилися.

Тепер розберемося як давати в руки зброю.

Для цього пишемо в скрипті, як завантажувати нашу зброю:

Model.Load(#KATANA)

Тепер робимо катану перехідною, пишемо це після рядка:

0812: AS_actor $Player_actor perform_animation "Tai_Chi_in" IFP_file "PARK" 4.0 loopA 1 lockX 1 lockY 1 lockF 0 time -1 // version

Тут пишемо:

0781: get_weapon_with_ID 8 model_to 22@

8 – це ID катани, ID ви можете дізнатися з довідки (див. вище). Отже, тепер катана є перехідною 22@, а далі потрібно робити все так само, як ми ставили пляшку, тільки замінюючи назви та цифри.

Це туди, де ми писали 0781: get_weapon_with_ID 8 model_to 22@, тільки обов'язково після:

$KAT = Object. Init(22@, 10@, 20@, 30@)

070A: AS_actor $PLAYER_ACTOR attach_to_object $KAT offset 0.05 0.06 0.05 on_bone 6 16 perform_animation "NULL" IFP_file "NULL" time -1

А це вписуємо після останньої анімації:

0687: clear_actor $Player_actor task

Object. Destroy($KAT)

Object. RemoveReferences($KAT)

Model.Destroy(22@)

Ось так виглядає весь скрипт, який дозволяє дати в руки гравцеві зброю при виконанні анімації:

{$VERSION 3.1.0027}

{$CLEO .cs}

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

04ED: load_animation "PARK"

Model.Load(#KATANA)

038B: load_requested_models

04EE: animation "PARK" loaded

:NONAME_1

wait 0

if

0AB0: key_pressed 90

else_jump @NONAME_1

wait 0

0812: AS_actor $Player_actor perform_animation "Tai_Chi_in" IFP_file "PARK" 4.0 loopA 1 lockX 1 lockY 1 lockF 0 time -1 // versionB

0781: get_weapon_with_ID 8 model_to 22@

$KAT = Object. Init(22@, 10@, 20@, 30@)

070A: AS_actor $PLAYER_ACTOR attach_to_object $KAT offset 0.05 0.06 0.05 on_bone 6 16 perform_animation "NULL" IFP_file "NULL" time -1

wait 1000

:NONAME_2

wait 0

if

0AB0: key_pressed 84

else_jump @NONAME_2

wait 0

0812: AS_actor $Player_actor perform_animation "Tai_Chi_Out" IFP_file "PARK" 4.0 loopA 0 lockX 0 lockY 0 lockF 0 time -1// versionB

0687: clear_actor $Player_actor task

Object. Destroy($KAT)

Object. RemoveReferences($KAT)

Model.Destroy(22@)

wait 1000

jump @NONAME_1

Ось і все, можна грати.

Рекомендуемые файлы