Уроки CLEO. Урок №5: даем главному герою объект в руки
![](/uploads/posts/2012-07/1637945170_976_bp.jpg)
Содержание урока:
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
Вот и все, можно играть.
Рекомендуемые файлы
![](https://files.libertycity.ru/download/gta5_dress/thumbs/2018-10/assc-anti-social-social-club-grey_1686000257_7810.webp)
ASSC (Anti Social Social Club) Grey Hoodie White Title 1.0
![](/uploads/fotos/foto_374440.jpg)
![](https://files.libertycity.ru/download/gta3_airworld/thumbs/2017-03/airbus-a380-800-f-wwdd-etihad-titles_1685996974_996909.webp)
Airbus A380-800 F-WWDD Etihad Titles
![](/uploads/fotos/foto_314933.gif?874)
![](https://files.libertycity.ru/download/gta5_scripts/thumbs/2020-08/custom-wastedbusted-title_1686005002_714634.webp)
Custom Wasted/Busted Title
![](https://files.libertycity.ru/download/gta3_othermods/thumbs/2021-05/gta-3-titles-upscaled_1686007296_841984.webp)
GTA 3 titles upscaled
![](https://files.libertycity.ru/download/gtasa_textures/thumbs/2014-05/gta-sa-style-loadscreens_1685992157_977680.webp)
GTA SA Style loadscreens
![](https://files.libertycity.ru/download/gtasa_fanvideo/thumbs/2015-07/sajjlent-khill-tizer-_1685993584_135202.webp)
Сайлент Хилл. Тизер.
![](https://files.libertycity.ru/download/gtasa_creation/thumbs/2019-03/dyom-v1-5_1667588670_202852.webp)
DYOM# v1.7
![](https://files.libertycity.ru/download/gta3de_localiztions/thumbs/2021-11/ru-novyjj-rusifikator-dlja-gta-3_1667895996_223480.webp)
[RU] Новый русификатор для GTA 3 Definitive Edition v2.1.2 Remastered
![](https://files.libertycity.ru/download/gtasa_de_misc/thumbs/2021-12/cleo-redux-v0-8-4_1639859938_991842.webp)
CLEO Redux v1.2.2
![](https://files.libertycity.ru/download/gtasa_fanvideo/thumbs/2021-12/ru-gta-san-andreas-missii-27-28_1655559088_80592.webp)
[RU] GTA San Andreas - Миссии 27-28 (Русская озвучка)
![](/uploads/fotos/foto_334096.jpg?300)
![](https://files.libertycity.ru/download/gtasa_sounds/thumbs/2023-11/emotion-98-3-adavnced-track-player_1700130224_160035.webp)
Emotion 98.3 (Advanced Track Player)
![](/uploads/fotos/foto_25657.jpg)
![](https://files.libertycity.ru/download/gtasa_misc/thumbs/2024-11/gta-sa-intro-ft-young-maylay_1731588197_581995.webp)
Интро ролик GTA SA с участием Young Maylay
![](/uploads/fotos/lc_1739834870_m.jpg?1739173474)