31 мая 2006
Обновлено 17.05.2023

Горячая линия: игрострой

Горячая линия: игрострой - изображение обложка

24 часа в сутки вопросы по созданию, модификации и вскрытию игр принимаются на адресgamedev@igromania.ru

Хочу создать мод для GTA: San Andreas, в котором при снижении здоровья до критического уровня у Сиджея сочилась бы кровь. Возможно ли это?

Да, вполне возможно — при помощи редактора SAMB. Если надо сделать так, чтобы тот или иной персонаж истекал кровью, воспользуйтесь следующей незамысловатой конструкцией:

:Blood_Test

0001: wait 0 ms

03FD: set_player $PLAYER_CHAR handling_responsiveness 7

052C: set_player $PLAYER_CHAR drunk_visuals 225

0208: $random1 = random_float -1.0 1.0

0208: $random2 = random_float -1.0 1.0

0208: $random3 = random_float -1.0 1.0

00A0: store actor $PLAYER_ACTOR position to $x_pos $y_pos $z_pos

09B8: create_blood_gush_at $x_pos $y_pos $z_pos offset $random1 $random2 $random3 density 20 on_actor $PLAYER_ACTOR

0002: jump ЈЈBlood_Test

При изменении значения параметра density 20 на density 150 (к примеру) кровь из главного героя начнет буквально хлестать. Поэкспериментируйте с этой командой — получите массу незабываемых впечатлений.

В GTA: Vice City в миссии Boomshine Saigon нам довелось отвезти Фила с оторванной рукой к его другу. Так вот, в этой миссии мы управляем машиной в нетрезвом состоянии. Есть ли в GTA: San Andreas какие-нибудь команды, позволяющие активировать данный режим?

К сожалению, «легальными» способами напоить Сиджея не получится, но в скриптах есть две команды, которые помогут нам обойти это ограничение:

03FD: set_player $PLAYER_CHAR handling_responsiveness 7

052C: set_player $PLAYER_CHAR drunk_visuals 225

Если вы хотите, чтобы главный герой оставался пьяным на протяжении длительного времени, вам необходимо поставить две команды в цикл:

:Pjanka

03FD: set_player $PLAYER_CHAR handling_responsiveness 7

052C: set_player $PLAYER_CHAR drunk_visuals 225

0002: jump ЈЈPjanka

Вопрос по Quake 4. При попадании в разные части тела монстров повреждения почему-то наносятся одинаковые. Можно ли это как-то исправить?

Чтобы увеличить повреждения, которые наносятся монстрам при попадании в разные части тела, вам нужно подправить в любом текстовом редакторе содержимое DEF -файлов из папки def\ai (архив pak001.pk4 ). У всех противников в Quake 4 три зоны поражения (за исключением «гладиатора») — голова, ноги и все остальное. Отсюда и ощущение, что, куда бы ты ни попал, эффект один и тот же. При поражении головы враг получает удвоенный урон, при ранении в ногу — урон в три четверти от стандартного. Да и то далеко не во всех случаях — у многих противников деления на зоны повреждений вообще нет.

Установим для каждой области тела строггов свой множитель урона. Добавим новые строки в файлы с параметрами монстров, а точнее — в раздел вида entityDef X (X здесь соответствует имени редактируемого файла). Для удобства новые строчки лучше располагать за параметрами с именами такого же вида. Мы будем работать с двумя типами настроек: damage_zone Y (определяет, название какого участка тела будет выглядеть в кратком виде как Y) и damage_scale Y (множитель повреждений, которые получает герой, будучи атакованным в часть тела Y).

Поскольку у разных монстров строение тела разное, к каждому из них нужен индивидуальный подход. Так, в файлы monster_berserker.def и monster_iron_maiden.def вставим следующий фрагмент кода:

*“damage_zone lowerback” "lowerback"

“damage_scale lowerback” “1.2”

*“damage_zone upperback” "upperback"

“damage_scale upperback” “1.5”

Верхние две строки соответствуют пояснице монстра, нижние — воротниковой зоне. Таким образом, в нашей модификации верхняя часть спины berserker и iron maiden будет более уязвима, чем нижняя.

В файл monster_berserker.def добавим строчки, описывающие повреждения средней части спины:

*“damage_zone midback” "midback"

“damage_scale midback” “1.3”

Файлы monster_failed_transfer.def , monster_gladiator.def , monster_grunt.def , monster_gunner.def , monster_harvester.def , monster_harvester_combat.def , monster_iron_maiden.def , monster_makron.def , monster_network_guardian.def , monster_scientist.def , monster_slimy_transfer.def , monster_stream_protector.def , monster_strogg_marine.def , monster_tactical_transfer.def дополним следующим текстом:

*“damage_zone waist” "waist"

"damage_scale waist " “1.25”

*“damage_zone shoulders” "shoulders"

"damage_scale shoulders " “0.5”

Верхние две строки описывают область талии, нижние две — плечи. Как видите, теперь попадание врагу в плечо мало что даст по сравнению, скажем, с атакой в область талии.

Во все файлы, содержащие слово monster в имени, кроме monster_boss_buddy.def, monster_convoy_ground.def, monster_convoy_hover.def, monster_fatty.def, monster_heavy_hovertank.def, monster_lt_tank.def, monster_strogg_troopcarrier.def, monster_teleport_dropper.def, monster_turret.def, monster_turret_bunker.def, monster_turret_flying.def и monster_turret_rocket.def, поместим приведенные далее строки:

*“damage_zone chest” "chest"

"damage_scale chest " “1.6”

Эти скрипты сделают ранение в грудь очень опасным для ваших противников. Такое распределение урона более логично, чем в оригинале. Целиться теперь придется тщательнее, но зато стоит пару раз точно попасть в неприятеля — и он умрет.

Battlefield 2

В декабрьском номере «Игромании» (12/2005) в статье Андрея Верещагина «Поле брани» мы описывали изменения однопользовательских карт для Battlefield 2. Не всем нашим читателям удалось произвести доработки: в ряде случаев новые строчки кода просто не работали. Это связано с различием версий Battlefield 2. Предлагаем более универсальный способ расширения уровней.

Я увеличил размер карты в Battlefield 2 с 16 до 64 игроков, сделал все, как было описано в журнале, но не вижу никаких изменений.

Для одиночного прохождения в Battlefield 2 используются самые мелкие мультиплеерные карты (на 16 игроков). В то же время для многопользовательских баталий заготовлены экземпляры покрупнее (до 64 игроков): в сингле присутствует лишь маленький кусочек большого уровня. Например, на уровне Dalian_plant нет аэродрома, авианосца и всего 4 контрольных точки вместо 8. Желание подключить недостающую красоту понятно.

Для увеличения размера карты мы с вами редактировали файл GamePlayObjects.con из архива server.zip. Напомним, мы распаковали содержимое этого архива и сравнивали текст одноименных файлов из папок GameModes\sp1\16 __ и GameModes\gpm_cq\64. После добавления недостающих контрольных точек вы сохранили GamePlayObjects.con. Затем нужно было заменить им старую версию в архиве server.zip по адресу GameModes\sp1\16. Если вы этого не сделали, игра продолжает загружать данные на 16 игроков. Поэтому вы и не увидели никаких изменений.

Если же вы сделали все так, как мы написали, но карты больше не стали, то, скорее всего, проблема в архиваторе RAR. Часто при замене файла вам показывают ход выполнения операции, но на самом деле при этом ничего не происходит! Откройте еще раз архив server.zip , найдите в папке GameModes\sp1\16 __ файл GamePlayObjects.con и проверьте наличие внесенных изменений. Если их нет, то прямо в этой директории щелкните правой кнопкой мыши, выберите пункт меню Добавить файлы в архив и укажите путь до нового файла GamePlayObjects.con. Только после этого изменения вступят в силу.

После увеличения размера одиночного уровня Battlefield 2 в игровом меню отображается старая мини-карта, на которой всего четыре контрольных точки.

Чтобы в главном меню появилась правильная мини-карта, нужно заменить картинку gpm_cq_16_menuMap.png на gpm_cq_64_menuMap.png из папки …mods\bf2\Levels\Dalian_plant\Info (для уровня Dalian_plant ). Для чего сделайте резервные копии обоих файлов, скопируйте название первого и удалите его из папки Info. Замените название второго файла на gpm_cq_16_menuMap (из буфера обмена). Теперь верните назад сохраненный ранее файл gpm_cq_64_menuMap.png. Теперь у вас вместо мини-карты на 16 игроков будет загружаться расширенный вариант.

При загрузке доработанного уровня у меня видно только 8 контрольных точек — на аэродроме и авианосце контрольных точек нет!

Откройте файл GamePlayObjects.con из архива mods\bf2\Levels\Dalian_plant\server.zip. Если вы вставили в третий раздел описания контрольных точек из мультиплеерного файла на 64 игрока, то в первой его части (от комментария rem * Control Points* до строчки if v_arg1 == host ) будет десять описаний, разделенных пробелами. Каждое отвечает за отдельную контрольную точку. При этом точки различаются по значимости: есть главные (обозначают базы противников) и есть второстепенные (их захватывают в процессе игры).

В сингле базами были точки CPNAME_DP_SP16_powerplant и CPNAME_DP_SP16_constructionsite. У каждой имеется строка с обозначением команды-владельца — ObjectTemplate.team 1 для первой и ObjectTemplate.team 2 для второй. А теперь посмотрите на добавленные точки. У них базами были авианосец ( CPNAME_DP_64_airfield , team 1 ) и аэродром ( CPNAME_DP_64_uscarrier , team 2 ). Для одной команды база может существовать только в единственном числе — «лишние» будут игнорироваться игрой. Удалите дубликаты. Для этого нужно вырезать строки параметров с обозначением номера команды из описания контрольной точки. Только не оставляйте пустой строки в тексте — никаких разрывов быть не должно, иначе игра не поймет код.

Комментарии
Чтобы оставить комментарий,Войдите или Зарегистрируйтесь