Оружие сталкера
Сталкер вот уже десять минут полз по зараженной территории. За ним гналась огромная банда, вооруженная «калашами». Шансов выжить практически не было, в пистолете оставался всего один патрон. Найденный в куче радиоактивного хлама старенький автомат сулил лишь небольшую отсрочку верной гибели.
Но первый же выстрел разрезал одного из бандитов надвое. Второй — рассек сразу двух. Уничтожив почти всех бандитов, сталкер принялся внимательно изучать найденный ствол. Странная надпись Made in Igromania на прикладе и ядерная символика на затворе однозначно говорили о том, что оружие не простое, а модифицированное.
В «Сталкере» представлено в основном оружие советского производства. Сегодня мы пополним арсенал несколькими футуристическими экземплярами. Хотите прожигать врагов лазером и стирать мутантов с лица земли атомными зарядами? Всегда пожалуйста!
Тренировка
Все самое ценное разработчики спрятали от пытливых глаз в архивы. Всего их одиннадцать, и все имеют одно и то же имя — gamedata. Разница в расширении. Оно выглядит как db* (на месте звездочки стоит цифра или буква, своя для каждого файла). Для распаковки этих архивов можно использовать утилиту STALKER Data Unpacker (забирайте ее с нашего DVD из раздела «Игрострой» ). Пользоваться программкой несложно. Скопируйте в игровую папку файл STALKER_Data_Unpacker_RU.exe , если у вас русская версия игры, или STALKER_Data_Unpacker_EN.exe , если вдруг английская, и запустите с параметром: gamedata.db [Каталог для распаковки внутри игровой папки]* (последний можно и не указывать — тогда архив распакуется прямо в каталог с игрой). Например: STALKER_Data_Unpacker_RU.exe gamedata.db0 gamedata.
После того как вы внесете изменения в разархивированные файлы, создайте в игровом каталоге папку \gamedata и поместите их туда, сохраняя иерархию подкаталогов, в которых они находятся (приоритет игра будет отдавать новым файлам, а не тем, что упакованы в архивы). Скажем, для ltx -файлов из архива gamedata.db0 (они описывают оружие) в директории \config\weapons следует создать в игровом каталоге папку \gamedata\config\weapons и складывать их именно туда.
Вы можете немного ускорить процесс загрузки игры, если распакуете все одиннадцать архивов в директорию < Каталог игры>\gamedata. Плюс, после этого все файлы будут у вас на виду и создавать моды станет удобнее.
Что касается самих архивов, то в этот раз нам пригодятся gamedata.db0 и gamedata.db8. Последний набит рассортированными по подкаталогам текстурами, в том числе и оружейными; gamedata.db0 же несет в себе, помимо всего прочего, папку \config , наполненную разнообразными конфигурационными файлами (как правило, имеющими расширение ltx ). Те из них, что посвящены оружию, лежат в подкаталоге \weapons — каждый такой файл соответствует отдельной пушке. Исключение составляют только delayed_action_fuse.ltx и weapons.ltx (в нем находятся характеристики боеприпасов и всяческих примочек к стволам).
Структура ltx -файлов (редактировать можно в обычном «Блокноте») построена по следующему принципу. Все они состоят из разделов, имена которых маркированы квадратными скобками. В файлах оружия их, как правило, два: первый вмещает в себя боевые характеристики ствола, второй (в имени содержится аббревиатура hud ) отвечает за экран героя, вооруженного указанной пушкой.
Параметры внутри блоков в некоторых случаях снабжены комментариями на русском — с такими атрибутами вы без труда разберетесь самостоятельно. Но большинство из них подсказками все же не сопровождается. Ознакомление с важнейшими из этих параметров поможет вам сделать желаемое оружие.
cost — стоимость оружия.
hit_power — урон от оружия. Значение параметра состоит из четырех чисел: первое обозначает минимальный ущерб, последнее — максимальный, средние два, соответственно, промежуточный.
hit_impulse — сила тряски, которой подвергается жертва.
fire_distance — дальнобойность.
bullet_speed — стартовая скорость полета пули. Этот и три предыдущих параметра в некоторых файлах имеют аналоги с префиксом silencer_ , эти характеристики описывают ствол при надетом на него глушителе.
hit_type — тип повреждения, наносимого оружием. Огнестрельное ранение — fire_wound , ножевое — wound и wound_2 , взрыв — explosion.
rpm — скорострельность.
hit_power_2 — урон от альтернативной атаки.
hit_impulse_2 — тряска жертвы, атакованной альтернативным ударом/выстрелом.
hit_type_2 — тип повреждения от альтернативной атаки.
startup_ammo — начальное количество патронов.
ammo_limit — максимальное число патронов к пушке, которое вы можете носить в рюкзаке единомоментно.
ammo_mag_size — вместимость обоймы.
ammo_class — тип патронов. В области значения этого и следующего параметров указывается название соответствующего раздела файла weapons.ltx.
grenade_class — тип гранат, которыми стреляет пушка (если она, конечно, наделена такой способностью).
explode_duration — продолжительность взрыва (только для оружия, стреляющего разрывными снарядами) в секундах.
sprint_allowed — определяет, в состоянии ли бежать персонаж с этой пушкой ( true — да, false — нет).
inv_weight — вес.
shell_particles — модель гильз, отлетающих в разные стороны при стрельбе.
Следующие три характеристики указывают на наличие у ствола определенного дополнения. Возможные значения: 0 — отсутствует вообще, 1 — имеется сразу, 2 — может быть присоединено.
scope_status — снайперский прицел.
silencer_status — глушитель.
grenade_launcher_status — подствольный гранатомет.
zoom_enabled — возможность зумирования ( true — имеется, false — нет).
scope_zoom_factor — максимальный зум. Обратите внимание, что зависимость здесь обратно пропорциональна: чем выше значение показателя, тем меньше приближение. Этот же параметр, к слову, присутствует и в файле weapons.ltx , в разделах, посвященных съемным прицелам.
Кинжал
Добавим в игру несколько новых видов оружия. Делать их мы будем на базе уже имеющихся экземпляров. Весь этот процесс состоит из трех основных стадий, первая — редактирование боевых характеристик.
Начнем с холодного оружия, которое в игре представлено одним лишь ножом. Превратим его в кинжал. Для начала откройте в «Блокноте» файл w_knife.ltx и внесите в него небольшую правку. Повысьте значение характеристики cost до 100 , в результате чего цена на это орудие вырастет до 100 рублей.
Возрастет в нашем моде и наносимое им повреждение — параметрам hit_power и hit_power_2 присвойте серию чисел 2.00, 2.20, 2.40, 2.60 в первом случае и 2.10, 2.25, 2.40, 2.55 во втором. Изначально у ножа сила альтернативной атаки почти дублирует основную. Отличия только в анимации.
С кинжалом все будет по-другому. Первый вид удара, как видите, здесь имеет больший разброс в силе — следовательно, атака может получиться как сильной, так и не очень. Альтернативный взмах кинжалом более стабилен, но нанести очень уж серьезное ранение врагу не получится.
Не забудьте об атрибутах hit_impulse и hit_impulse_2 , которым следует присвоить значения 140 и 125. Первый вид атаки после этого будет сильнее отталкивать врагов от главного героя, что в некоторых случаях усложняет добивание.
Немного поработаем над балансом. Атрибутам inv_weight , rpm (минимальный временной интервал между двумя атаками) и bullet_speed (быстрота нанесения удара) определите соответственно значения 0.8 и 600. В отличие от ножа, кинжал, хоть и немного, но сколько-то весит, а значит, занимает чуточку места в вашем рюкзаке — это, согласитесь, вполне естественно.
В вашем распоряжении превосходное оружие ближнего боя. Один точный укол в тело слабого неприятеля — и тот испускает дух. Единственный недостаток кинжала по сравнению с ножом кроется в сниженной скорости. Главный герой машет кинжалом немного медленней, но уж если попадет… В оригинальной игре почти никто не пользовался ножом, слишком уж он слабенький. Кинжал же — вполне серьезное подспорье пистолету. С его помощью можно легко валить некоторых мутантов и добивать раненых бандитов.
Лазерная винтовка
Теперь займемся созданием футуристических стволов. Первый из них — лазерная винтовка. Делать ее мы будем на основе снайперки СВУмк2 , которая детально описана в файле w_svu.ltx. Начните опять же с цены, подняв число, соответствующее показателю Cost , до 12000. А вот запас патронов следует ограничить, задав характеристикам ammo_limit , ammo_current , ammo_mag_size и startup_ammo значения 40 (первой из них) и 6 (остальным трем).
Не помешает также чуть утяжелить винтовку (пропишите параметру inv_weight значение 5.2 ) и усилить ее (в этом нам поможет регулировка настроек hit_power и hit_impulse ). Первой теперь должно соответствовать значение 1.20 , 1.30 , 1.40 , 1.50 , второй — 180. Скорость полета снаряда и дальность стрельбы тоже увеличиваем: параметрам bullet_speed и fire_distance пропишите 1130. А вот скорострельность ( rpm ) лучше снизить до 150.
Ослабим у пушки зум, приписав атрибуту scope_zoom_factor число 30 — увеличение из трехкратного станет двукратным. Значение же показателя shell_particles следует обнулить, удалив прежнее weapons\generic_shells. В результате при стрельбе из винтовки больше не будут видны падающие на землю гильзы, что нам и нужно. Стреляет-то она теперь лазером. Наконец, слегка повысьте быстроту изнашиваемости ствола: у показателя condition_shot_dec пропишите число 0.00035.
Лазерная винтовка готова. Она дает большой урон, имеет высокую точность и большую дальность стрельбы, бешеную скорость полета заряда, но вот перезарядка происходит довольно медленно. Это оружие открывает совершенно новые тактики ведения боя. Можно притаиться за каким-либо сооружением, стоящим на возвышенности, дождаться группы бандитов, подпустить их на дистанцию выстрела и начать постепенно отступать, отстреливая догоняющих вас врагов.
До этого подобная тактика со снайперкой не работала, потому что бегущие впереди противники догоняли вас раньше, чем вы их уничтожали. Но с лазерной винтовкой можно убивать незащищенных врагов с одного выстрела. Главное, научиться метко стрелять.
А вот пытаться засесть с лазерной винтовкой на верхотуре однозначно не стоит. Из-за того, что она долго перезаряжается, враги успеют подобраться к вам в промежутке между выстрелами.
Атомная пушка
На десерт у нас атомная пушка. Ее мы получим из ракетницы ( РПГ-7у ). Следовательно, править нужно файл w_rpg7.ltx , и первое, что стоит сделать, — поднять цену на оружие ( cost ) до 14000. Показателю ammo_limit следует придать значение 10 , чтобы понизить скорость полета снаряда, к характеристикам launch_speed , bullet_speed и fragment_speed подставьте соответственно числа 3 , 50 и 30. Скорострельность тоже снижаем: сбавляем обороты параметра rpm до отметки 100 , а дальнобойность ( fire_distance ) уменьшаем до 300.
Теперь поработаем над отдачей. У столь мощной пушки она должна быть весьма ощутимой. Посему настройкам cam_relax_speed , cam_dispersion и cam_max_angle следует задать значения 1 , 8 и 12 соответственно.
Но баланс пока все равно остается перекошенным: слишком уж мощная штука у нас получилась. Добавим стволу еще один серьезный недостаток — сделаем его быстро изнашиваемым. Атрибуту condition_shot_dec логично будет поставить значение 0.00150. Кроме того, вероятность осечки при максимальном износе ( misfire_probability ) надо сделать равной 0.01. Понятно, что и вес у громоздкой новинки будет соответствующий: этого можно добиться, прописав показателю inv_weight число 8.
Повреждения же от новой пушки будут поистине громадными. Задайте параметрам hit_power , hit_impulse и explode_duration значения 5 , 600 и 8. Также необходимо отредактировать третий раздел файла wpn_rpg7_missile (все оставшиеся изменения производите именно в нем), характеризующего непосредственно ракету. Здесь вы снова встретите показатель explode_duration , которому и в этот раз надо присвоить значение 8. Чтобы сделать взрыв ракеты еще более мощным, «привяжите» к настройке blast число 8 , к blast_impulse — 450 , а чтобы расширить его радиус — увеличьте показатель blast_r до 18.
Рекомендуем сделать взрыв более эффектным. В этом вам поможет изменение значений параметров light_range и light_time соответственно на 50 и 2.6. Это сделает вспышку после разрыва снаряда более длительной и яркой. Увеличению не помешало бы подвергнуть и следы на стенах, остающиеся после взрыва: задайте атрибуту wm_size значение 0.3.
Напоследок установите цену на снаряд ( cost ) в размере 300 рублей. Получившееся орудие убийства будет в игре на вес золота — по убойной силе ему просто нет равных. Хотя, конечно, им одним никак не обойдешься. Здесь сказывается и дефицит зарядов, и медлительность, и невысокая дальность стрельбы. Да и изнашивается оно очень быстро.
Тем не менее в некоторых заварушках, когда на вас нападает целая толпа мутантов или бандитов, только атомная пушка может спасти от неминуемой гибели. Всего один выстрел — и вокруг остаются только горы трупов.
Текстомания
При создании новых стволов необходимо заменить их названия и описания. Использующийся в игре текст вы найдете в файлах формата xml в директории \config\text\rus архива gamedata.db9. Тот, что касается непосредственно вооружения, содержится в файле string_table_enc_weapons.xml. Устроен он следующим образом. Каждой надписи соответствует небольшой раздел вида:
< string id=“X”>
< text>Y
< /string>
X здесь — кодовое наименование объекта (в данном случае — оружия, приспособлений к нему или боеприпасов), к которому относится надпись. Y — текст (как вариант — название объекта).
Найти нужный раздел несложно — в его заголовке (X) неизменно фигурирует краткое название ствола (то самое, что следует в имени соответствующего ltx -файла из папки \config\weapons после приставки w_ ).
Зададим новому оружию подходящие названия. Название ножа указано в файле string_table_general.xml (содержащем базовые игровые термины и понятия и имеющем ту же структуру, что и string_table_enc_weapons.xml ). Оно располагается в блоке st_knife. Прописанное здесь слово Нож замените на Кинжал.
Следующие преобразования касаются исключительно файла string_table_enc_weapons.xml. Название модифицированной нами снайперки вы встретите в разделе wpn-svu , в котором сокращение СВУмк2 необходимо исправить на Лазерная винтовка. Что же касается ракетницы, то ей разработчики выделили блок wpn-rpg7 , где аббревиатуру РПГ-7у надо заместить фразой Атомная пушка. Новое оружие называется теперь как положено, вот только описания пока остаются прежними — желательно подкорректировать и их.
Ножу отведен блок enc_weapons1_wpn-knife. Помещенное в него словосочетание Охотничий нож можно переделать, например, в Острый кинжал. Характеристики же СВУмк2 содержатся в разделе enc_weapons1_wpn-svu , а РПГ-7у — в enc_weapons1_wpn-rpg7. В первом случае на место Y можно вписать, скажем, такой текст: Новейшая разработка отечественных ученых. Стреляет лазером , во втором — такой: Мощнейшее оружие. Создано на территории Зоны специально для борьбы с мутантами. Использует атомную энергию. Несложно придумать и более изысканные описания — главное, теперь вы знаете, куда их ставить.
И последнее. Подредактированные файлы string_table_general.xml и string_table_enc_weapons.xml переместите в папку < Каталог игры>\gamedata\config\text\rus.
Визуализация
Вторая стадия разработки вооружения — графическая. На ней мы будем обновлять текстуры оружия. При этом понадобится набор инструментов DXT Tools (обращайтесь за ним на наш DVD, в раздел «Игрострой» ). Что касается самих картинок, то они представлены файлами формата dds , лежат в архивах gamedata.db5 , gamedata.db6 , gamedata.db7 и gamedata.db8. Именно последний, как уже было упомянуто, несет в себе оружейные скины, которые внутри архива размещаются в каталоге \textures\wpn. Ножу здесь соответствует файл wpn_knife.dds , СВУмк2 — wpn_svu-a.dds , РПГ-7у — wpn_rpg-7.dds.
Перевести DDS-файлы в знакомый всем TGA-формат вам поможет как раз таки DXT Tools. Делается это по следующей схеме. Скопируйте выбранный dds -файл в директорию, куда вы установили пакет утилит. Находясь в папке, введите в командной строке: readdxt <имя dds-файла> (например, readdxt wpn_colt.dds ). В результате этого в директории появится файл test.tga с интересующей вас картинкой.
Можете смело перерисовывать ее в графическом редакторе (например, в Photoshop ). После завершения правки переведите измененный рисунок обратно в формат dds , набрав в командной строке (естественно, не покидая каталог DXT Tools) nvdxt test.tga. Вам останется только вернуть полученному в итоге файлу test.dds прежнее имя (в приведенном примере это wpn_colt.dds) и положить в соответствующую папку (в случае с оружием это < Каталог игры>\gamedata\textures\wpn).
Пора приступать непосредственно к перерисовке текстур, чтобы новые виды оружия обрели неповторимый облик. Например, почему бы вам не выгравировать на лезвии кинжала какую-нибудь надпись или несложный рисунок? Что касается лазерной винтовки, то на ее «шкурке» все еще красуется маркировка СВУ-АС 62x54 мм , которую желательно заменить хотя бы простейшей аббревиатурой ЛВ-1. Наконец, на корпусе атомной пушки пришелся бы к месту ваш аватар, логотип вашего клана, любимого журнала или какая-то еще картинка. И это только простейшие примеры того, как можно украсить новинки.
* * *
Вместе с вами мы добавили в игру три новых орудия убийства: смертоносный кинжал, меткую и убойную лазерную винтовку и всеразрушающую атомную пушку. Причем атомная пушка и винтовка удивительным образом придают игре ощущение, что вы находитесь в далеком будущем.
Все оружие отлично сбалансировано и позволяет использовать дополнительные тактики в бою, которые с оригинальным оружием просто не работают. Кинжал позволяет шинковать врагов на ближней дистанции, лазерная винтовка хороша при ведении боя на средней дистанции (только не вздумайте сидеть с ней на одном месте). Атомная же пушка как нельзя лучше поможет вам разобраться с большим скоплением врагов.
Если же вам мало этих трех новинок, то вы можете добавить игру любое количество оружия, создавая их по алгоритму, описанному в статье. Мы же продолжим вскрытие «Сталкера» в одном из ближайших номеров «Игромании» , но расскажем вам уже не об оружии, а совсем о других, но не менее интересных вещах.