Содержание урока: 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}
Теперь разберемся как давать в руки оружие. Для этого пишем в скрипте, как загружать наше оружие: 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}