Вход в систему
Информация по игре "Grand Theft Auto: San Andreas"
Последние статьи
Самые комментируемые статьи
Создание модификаций для GTA: San Andreas, часть 2Автор: Эдуард Клишин
Полный текст
В статье, опубликованной в предыдущем номере “Игромании”, мы рассказали, как создавать несложные модификации для GTA: San Andreas, и изучили основы программирования этой игры. Сегодня мы пойдем дальше: ознакомимся с постановкой условий и условными переходами, научимся создавать актеров и транспортные средства, присваивать им различные параметры и флаги, создадим идеальное движение наземных транспортных средств, наконец — превратим San Andreas в самый что ни на есть Twisted Metal! Постановка условийЧтобы проверить выполнение того или иного действия игроком или NPC, необходимо задать условие. Например, мы хотим узнать, достиг ли игрок нужной точки на карте (эта команда используется практически в любой миссии игры). Для этого нужно поставить условие: if 0 00EC: actor $PLAYER_ACTOR 0 ()near point 1812.369 -1929.922 radius 80.0 80.0 Первая команда означает, что идет постановка условия, цифра 0 в первой строке показывает, что условие всего лишь одно. Если нужно, чтобы одновременно выполнялось несколько условий, например два, смело меняйте 0 на 1. Максимальное число допустимых условий в игре — восемь. Команда с проверкой на 8 условий будет выглядеть следующим образом: if 7 Если же вы хотите, чтобы выполнялось одно из условий, то нужно использовать следующую конструкцию: if 21 Пример: 00D6: if 21
8118: NOT actor $my_act dead 8119: NOT car $my_act wrecked После того как условия наложены, необходимо создать переход. Переходы делятся на условные, которые осуществляются при наличии определенных условий, и безусловные — выполняемые без всяких условий. Создаются переходы следующими командами: 004D: jump if false ЈЈCheck1 0002: jump ЈЈNext Первая команда соответствует условному переходу, вторая — безусловному. Рассмотрим на примере, как создать поток с постановкой условий: :Start_Mod 0001: wait 0 ms 0213: $my_pick = create_pickup -1 (INFO) type 3 at 2027.77 -1420.52 16.49 :Check1 0001: wait 0 ms 00D6: if 0 0214: pickup $my_pick picked up 004D: jump if false ЈЈCheck1 0002: jump ЈЈNext :Next 0001: wait 0 ms 018C: play sound 1052 at 0.0 0.0 0.0 004E: end thread
Сначала создается поток (thread), в котором на карте помещается определенный предмет. После создания объекта генерируется блок с проверкой, суть которой — зарегистрировать, взял ли игрок объект. Если это условие не выполняется, то команда 004D: jump if false ЈЈCheck1 вернет к блоку Check1 и проверка условия начнется снова. Если игрок взял приготовленное ему оружие, команда 0002: jump ЈЈNext осуществит переход к следующему блоку, в котором проигрывается определенный звук. Командой end thread данный скрипт завершит свою работу. Команда 0002: Next безусловного перехода может быть использована для создания перехода к нужному вам блоку без постановки условия: Start_Mod 0001: wait 0 ms 0213: $my_pick = create_pickup -1 (INFO) type 3 at 2027.77 -1420.52 16.49 0002: jump ЈЈNext :Next 0001: wait 0 ms 018C: play sound 1052 at 0.0 0.0 0.0 004E: end thread Создание актеров и транспортаТеперь займемся созданием персонажей и транспортных средств на игровой карте. Прежде чем поместить NPC или машину на карту, нужно загрузить определенную модель в память игры. Для этого используются две команды: 0247: request model 520 038B: load requested models Первая указывает, какую именно модель нужно загрузить, а вторая непосредственно подгружает модель в память. Если пропустить эту операцию, при тестировании мода San Andreas вылетит с ошибкой. После загрузки модели в память игры необходимо провести проверку: загружена ли она. Для этого используется следующая команда: 0248: model 520 available В целом конструкция будет выглядеть следующим образом: :Load1 0001: wait 0 ms 0247: request model 520 038B: load requested models :Load2 0001: wait 0 ms 00D6: if 0 0248: model 520 available 004D: jump if false ЈЈLoad2 0002: jump ЈЈCreate_Model Если модель успешно загружена, то можно приступать к созданию персонажа или транспортного средства. Сначала рассмотрим определение персонажей. Для создания модели NPC на карте используется следующая команда:
009A: $actor1 = create actor 4 41 at 1230.0 2540.0 12.0 actor1 — имя персонажа (можете смело менять на свое, только не забудьте поменять его и в последующих командах), 41 — номер загруженной модели, а 1230.0 2540.0 12.0 — координаты, по которым модель будет создана. Номера моделей персонажей, а также их названия содержатся в файле peds.ide в папке DATA. Для примера разберем одну из строк файла: 41, HFYST, HFYST, CIVFEMALE, STAT_STREET_GIRL, woman,1983,1, null,6,1,PED_TYPE_GEN,VOICE_GEN_HFYST ,VOICE_GEN_HFYST 41 — номер модели, о котором упоминалось чуть выше, HFYST — имя персонажа, остальные параметры для расстановки модели на карте не нужны. Для определения координат вы можете воспользоваться программой San Andreas Place Manager или любой другой. Рассмотрим принцип определения координат только для этой программы. Первым делом скопируйте программу в корневой каталог игры. После того как она будет запущена, нажмите клавишу ADD PLACE, а затем — Click Here to insert. Утилита вставит в поля x, y, z текущие координаты игрока. После этого скопируйте координаты из полей x, y, z на место тех, по которым должен быть создан персонаж, предварительно заменив знак “,” (запятая) в координатах на “.” (точка). Созданным персонажем можно манипулировать, используя ряд команд. Ниже рассмотрены основные из них: 05E2: unknown_action_sequence $actor1 $PLAYER_ACTOR Данная команда заставит NPC следовать главной цели — убить игрока любым способом. Если вы хотите, чтобы актер не убегал при звуке выстрела, смело используйте эту команду: 0350: unknown actor $actor not scared flag 1 Также созданному персонажу можно дать оружие: 01B2: give actor $actor1 weapon 31 ammo 60 31 здесь — номер оружия в игре, 60 — количество патронов. Обратите внимание, что прежде чем использовать тот или иной ствол, его надо загрузить в память игры. Для M4 номер модели для загрузки в память игры 356, а номер модели в игре — 31. Аналогично для Shotgspa — 351 и 27, а для Minigun — 362 и 38. Буквально за несколько дней до того, как журнал ушел в печать, выяснилось, что создатель редактора Бартон Уотердак опубликовал полный список номеров оружия и соответствующих им моделей оружия. Со списком можно ознакомиться на нашем диске. Следующая команда позволяет изменять меткость стрельбы: 02E2: set_actor $actor weapon_accuracy_to 90 Цифру 90 можно менять на любую от 1 до 100. Для проверки, не умер ли персонаж, используется следующая конструкция: :Check_Dead 0001: wait 0 ms 00D6: if 0 0118: actor $actor1 dead 004D: jump if false ЈЈCheck_Dead 0002: jump ЈЈPassed Возле персонажа можно поставить маркер (метку), которая будет показывать его местоположение на карте. Для его создания используется следующая команда: 0187: $marker1 = create marker above actor $actor1 marker1 — название маркера (можете назвать его как захотите), actor1 — имя персонажа, над которым этот маркер будет создан. Чтобы убрать созданную метку, используйте следующую команду: 0164: disable marker $marker1 Созданного актера можно заставить передвигаться по карте, для этого используются следующие команды: 05D3: unknown_action_sequence $PLAYER_ACTOR 2099.12 -1651.26 12.63 4 3000 05F5: unknown_action_sequence $PLAYER_ACTOR 2099.12 -1651.26 12.63 6 10000 PLAYER_ACTOR — имя персонажа (если хотите, чтобы эта команда была применима к главному герою, не изменяйте имя), 2099.12 -1651.26 12.63 — координаты точки, к которой должен следовать персонаж. Первая команда заставляет персонажа идти, а вторая — бежать в заданную точку. Используя ряд нижеприведенных команд и меняя имя персонажа actor на имя созданного вами NPC, вы можете создать телохранителя, который будет защищать от всех, кто нападает на Сиджея:
0568: $actor 1 0446: (unknown) $actor 0 08AF: $actor 1000 077A: $actor 4 25 0631: put_actor $actor in_group $PLAYER_GROUP 01B2: give actor $actor weapon 38 ammo 600 02E2: set_actor $actor weapon_accuracy_to 90 0223: set_actor $actor health_to 2000 0187: $mark_act = create_marker_above_actor $actor Полный скрипт телохранителя, равно как и все остальные примеры скриптов (чтобы не пришлось вбивать их на клавиатуре), вы можете взять с нашего диска. Для проверки, достиг ли персонаж какой-либо точки на карте, используется следующая конструкция: :Check_Point 0001: wait 0 ms 00D6: if 0 00EC: actor $PLAYER_ACTOR 0 ()near point 1812.369 -1929.922 radius 2.0 2.0 004D: jump if false ЈЈCheck_Point 0002: jump ЈЈ<Блок, если условие выполняется> Если вы создали на карте транспортное средство и хотите, чтобы тот или иной персонаж залез в него в роли пассажира, используйте команду: 05CA: unknown_action_sequence $PLAYER_ACTOR $10946 10000 0 Здесь PLAYER_ACTOR — имя NPC, 10946 — название машины, в которую он должен сесть. Если же вы хотите, чтобы выбранный вами персонаж сел на место водителя, необходимо прописать следующую команду: 05CB: unknown_action_sequence $PLAYER_ACTOR $10946 -1 Чтобы проверить, находится ли наш персонаж в том или ином транспортном средстве, используйте вот такую конструкцию: :In_Car_Check 0001: wait 0 ms 00D6: if 0 0448: actor $PLAYER_ACTOR in car $my_car 004D: jump if false ЈЈIn_Car_Check 0002: jump ЈЈ<Блок, если условие выполняется> В этой команде my_car — машина, в которой должен находиться персонаж. Об “актерах” мы поговорили достаточно, теперь перейдем к транспортным средствам.
Транспортные средстваПринцип загрузки любого авто в память игры абсолютно такой же, что и при загрузке людей. Единственное различие заключается в том, что смотреть номера транспортных средств нужно в файле vehicles.ide. После того как нужная модель транспортного средства загружена в память игры, приступаем к расположению ее на карте. Для этого используется следующая команда:
00A5: $my_car = create car 520 at 0.0 0.0 0.0 my_car — это название машины (можете менять на свое), 520 — номер модели средства передвижения из файла vehicles.ide, 0.0 0.0 0.0 — координаты, по которым будет создана модель. Вновь созданным транспортным средством, как и персонажем, можно манипулировать. Например, авто можно заставить ехать в указанную точку, самолет или вертолет — лететь в определенное место. Начнем изучение “манипулятивных” команд с блока, отвечающего за передвижение любых видов наземного транспорта: 02C2: car $my_car drive to point 2644.462 -2016.282 12.5547 В ней 2644.462 -2016.282 12.5547 — координаты точки, до которой авто должна добраться. Чтобы проверить, добралась ли ваша машина к нужной точке на карте, используйте нижеприведенную команду вкупе с оператором условий if: 01AF: car $my_car 0 ()near point 95.3 -1468.3 9.5 radius 1.5 1.5 3.0 В этой команде my_car — название машины, 95.3 -1468.3 9.5 — координаты точки, к которой должна приехать авто (прилететь — самолет/вертолет, приплыть — катер), и 1.5 1.5 3.0 — радиус точки по x, y и z (длине, ширине и высоте), в зоне которой выполняется проверка. Есть одно маленькое “но”: кто управляет нашим таинственным авто? Не призрак же?! Чтобы автомобилем или вертолетом/самолетом управлял персонаж, его нужно создавать отдельно при помощи команды: 0129: $vodila = create actor 4 41 in car $my_car driverseat Здесь vodila — имя персонажа, который будет создан не на карте, а непосредственно в транспортном средстве $my_car. Важный момент: транспортное средство должно быть создано на карте прежде, чем вы приступите к генерации водителя. Если же вы хотите сделать водителем NPC, который уже разгуливает по уровню, то используйте следующую команду: 036A: put actor $PLAYER_ACTOR in car $my_car Сиджея так же, как и остальных персонажей, можно помещать в транспортные средства, для этого нужно использовать имя PLAYER_ACTOR. Существует ряд параметров, влияющих на езду автомобиля, один из них — скорость. Хотите создать безбашенную аркадную гонку в стиле Need for Speed — нет проблем! Rockstar даже пошли нам навстречу, внедрив в игру тюнинг авто. Команда: 00AD: set car $my_car max speed to 50.0
Данный блок позволяет регулировать скорость наземных транспортных средств, в данном случае — присваивает скорость 50 миль в час машине my_car. Хотите посмотреть, как настоящий псих управляется с авто? Всегда пожалуйста — вот команда: 00A8: set car $my_car to psycho driver Объекты на карте В GTA: San Andreas вам не раз приходилось собирать на карте различные предметы, которые еще называют “пикапами” (пушки, чемоданы с деньгами). Давайте разберемся, как создать “пикапы” с оружием. Делается это следующей командой: 032B: $weap1 = create_weapon_pickup 370 15 ammo 1 at 2489.595 -1646.48 14.07031 weap1 — название “пикапа” (можете поменять на свое), 370 — номер модели оружия из файла default.ide (орудия убийства начинаются с цифры 321 и заканчиваются цифрой 373), 15 — тип созданного “пикапа”, 1 — вместимость магазина у данного оружия, 2489.595 -1646.48 14.07031 — координаты, по которым будет создан “ствол”. “Пикапы” бывают двух типов: 3 — бесплатные разовые и 15 — бесплатные пикапы, регенерирующиеся через 6 часов игрового времени (т.е. 6 минут). Если вы хотите создать на карте пикап для миссии, например — чемодан с деньгами, то вы должны использовать следующую команду: 0213: $object1 = create_pickup -362 (MONEY) type 3 at 2027.77 -1420.52 16.49 object1 — название объекта, -362 (MONEY) — номер и название модели из main.scm (пункт DEFINE OBJECTS), 3 — тип пикапа, 2027.77 -1420.52 16.49 — координаты, по которым он будет создан. Около созданного пикапа можно создать маркер. Делается это следующей командой: 03DC: $mark = create marker above pickup $object mark — название маркера (можете изменить на свое), object — название пикапа, около которого будет создан маркер. Чтобы поместить на карту реальный объект, который невозможно собрать, вам пригодятся эти команды: 029B: $obj_x = init_object -50 (WS_APGATE) at -1222.953 53.826 14.134 obj_x — название объекта, -50 (WS_APGATE) — номер и название модели из main.scm, далее, как всегда, идут координаты. Также созданному объекту можно установить угол поворота. Это можно сделать следующей командой: 0177: set_object $obj_x z_angle_to 135.0 obj_x z — название объекта, 135.0 — угол поворота. * * *На этом мы заканчиваем вторую статью нашего эпохального GTA-цикла. Полученных знаний вам вполне хватит, чтобы с легкость помещать на карту любых персонажей и транспортные средства, а также манипулировать ими. Уже можно приступать к созданию полноценных миссий. Осталось лишь научиться писать триггеры для старта заданий и делать видеоролики. Этим мы и займемся в третьей части статьи в одном из ближайших номеров “Мании”. Всего скриншотов: 7 Новостей: 1 Все новости по игре Статей: 53 Все статьи по игре 27.03.2010 - Grand Theft Auto: San Andreas25.09.2009 - Во что играли 5, 10, 15 и 20 лет назад09.04.2008 - Игровое редактирование03.11.2007 - Игровое редактирование30.07.2007 - Игровое редактирование 30.06.2007 - Игровое редактирование 30.05.2007 - Игровое редактирование 30.04.2007 - Игровое редактирование28.03.2007 - Игровое редактирование01.03.2007 - Игровое редактирование23.11.2006 - Игровое редактирование26.10.2006 - Игровое редактирование17.10.2006 - Игровое редактирование29.08.2006 - GTA-автопарк29.08.2006 - Игровое редактирование18.08.2006 - Коды по "Grand Theft Auto: San Andreas"04.08.2006 - Коды по "Grand Theft Auto: San Andreas"04.07.2006 - Вступительное слово04.07.2006 - Игровое редактирование09.06.2006 - Коды по "Grand Theft Auto: San Andreas"31.05.2006 - Игровое редактирование31.05.2006 - GTA-моделирование31.05.2006 - Вступительное слово25.05.2006 - Коды по "Grand Theft Auto: San Andreas"12.05.2006 - Коды по "Grand Theft Auto: San Andreas"26.04.2006 - Игровое редактирование26.04.2006 - Мир GTA: San Andreas, часть 225.04.2006 - Коды по "Grand Theft Auto: San Andreas"06.04.2006 - Коды по "Grand Theft Auto: San Andreas"29.03.2006 - Игровое редактирование29.03.2006 - Мир GTA: San Andreas, часть 128.03.2006 - Коды по "Grand Theft Auto: San Andreas"10.03.2006 - Коды по "Grand Theft Auto: San Andreas"09.03.2006 - Лучшие игры 200506.03.2006 - Коды по "Grand Theft Auto: San Andreas"06.03.2006 - Игровое редактирование06.03.2006 - Анимация GTA: San Andreas26.02.2006 - Коды по "Grand Theft Auto: San Andreas"10.02.2006 - Коды по "Grand Theft Auto: San Andreas"02.02.2006 - Коды по "Grand Theft Auto: San Andreas"02.02.2006 - Коды по "Grand Theft Auto: San Andreas"20.01.2006 - Коды по "Grand Theft Auto: San Andreas" (easter eggs)21.12.2005 - Создание модификаций для GTA: San Andreas, часть 315.12.2005 - Коды по "Grand Theft Auto: San Andreas" (easter eggs)09.12.2005 - Коды по "Grand Theft Auto: San Andreas"23.11.2005 - Создание модификаций для GTA: San Andreas, часть 223.11.2005 - Банды Сан-Андреаса. GTA: SA, часть 225.10.2005 - Боевые действия в San Andreas19.10.2005 - Руководство и прохождение по "Grand Theft Auto: San Andreas"02.08.2005 - Grand Theft Auto: San Andreas23.11.2004 - В центре внимания23.11.2004 - В центре внимания "Grand Theft Auto: San Andreas"31.08.2004 - В центре внимания
|