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

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

Горячая линия — Горячая линия: игрострой
Горячие ответы на любые игростроевские вопросы
Игроманияhttps://www.igromania.ru/
Горячая линия
Горячая линия: игрострой

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). Для одной команды база может существовать только в единственном числе — «лишние» будут игнорироваться игрой. Удалите дубликаты. Для этого нужно вырезать строки параметров с обозначением номера команды из описания контрольной точки. Только не оставляйте пустой строки в тексте — никаких разрывов быть не должно, иначе игра не поймет код.

Комментарии
Загрузка комментариев