Компьютерные и консольные игры  

Вернуться   Компьютерные и консольные игры > Игры > S.T.A.L.K.E.R. > S.T.A.L.K.E.R.: Shadow of Chernobyl

  Информационный центр
Последние важные новости
 
 
 
 

Ответ
 
Опции темы Опции просмотра
Старый 08.11.2011, 00:28   #1
Залетный
 
Аватар для Css-hacker
 

Регистрация: 07.11.2011
Сообщений: 7
Вы сказали Спасибо: 0
Поблагодарили 1 раз в 1 сообщении
По умолчанию Инструкция модостроителя

Многие задавали вопросы такого плана: как увеличить прыжок, как увеличить максимальный носимый вес, как увеличить обойму. Отвечаю полностью на все.
НО сделать свой мод могут только те, у кого игра разархивирована, т.е. имеется папка gamedata.
Если её нету, скачайте программу для разархивации файлов игры (она была на июньской игромании), либо найдите именно такую версию игры (какую не знаю ), а может быть вы сами знаете какой-то способ получить доступ к файлам игры.
Так вот вам понадобится папка gamedata и умение работать в блокноте.
Как увеличить прыжок:
Заходим сюда gamedata\config\creatures, находим файл actor.ltx, пихаем его в блокнот.
Находим строчку jump_speed напротив неё стоит параметр по умолчанию 6
вы можете поставить что угодно, но учтите, что если поставить слишком большую цифру, то ваш меченый разобьется при приземлении. Цифры 8, как ни странно, вам вполне хватит чтобы забираться в труднодоступные места.
Если у вас возникла проблема прохождения локации Припять то 20-30 вам хватит чтобы перепрыгнуть невидимые границы карты и пройти за её пределом до перехода на другую локацию. АХТУНГ!
Если вы ставите большую цифру, то понадобятся аптечки или трейнер, ибо здоровье потихоньку будет убавляться при приземлении.

Как увеличить скорость передвижения:
Открываем все тот же файл actor.ltx, находим строчки:
run_coef- строчка содержит параметр простого бега (а точнее ходьбы)
sprint_koef - строчка содержит параметр спринта (бег при нажатии клавишы Х)
run_back_coef - строчка указывает параметр ходьбы назад
walk_back_coef - строчка указывает параметр ходьбы назад при зажатой клавише shift.
Как хотите, так и изменяйте.

Как увеличить максимальный носимый вес:
Заходим сюда gamedata\config находим файл system.ltx в нем строчку max_weight - она указывает какой максимальный вес вы можете носить так, что при этом вы сможете бегать спринт с минимальной потерей выносливости.
Ставьте сколько хотите. Далее заходим опять сюда gamedata\config\creatures опять находим файл actor.ltx в нем строчку max_walk_weight - эта строчка указывает, после какого веса вы не сможете передвигаться а тупо встанете на месте с вежливой надписью внизу выбросить что-то.
Ясное дело, что параметр этой строчки должен быть больше параметра строчки max_weight в файле system.ltx.

Как увеличить обойму вашего любимого ствола:
Заходим сюда gamedata\config\weapons находим файл с вашим любимым оружием. Например w_abakan.ltx в нем строчку ammo_mag_size – именно она указывает сколько патронев в вашем магазине.
Думаю, в пределах разумного поставить 50-60 единиц. Также вы можете понизить износ вашего оружия строчка condition_shot_dec (разрабы даже потрудились написать напротив неё что она обозначает ) добавьте после точки побольше нулей или вообще поставьте там всего один нуль, тогда ваще оружие будет бессмертно.

Как проапгрейдить вашу любимую пижамку:
Забираемся сюда gamedata\config\misc находим файл outfit.ltx, в нем находим ваш любимый костюмчик. Например вы любите куртку сталкера – костюм новичка
Ищем строчки:
burn_protection - защита от огня
strike_protection - защита от удара
shock_protection - защита от электрического удара
wound_protection - защита от разрыва
radiation_protection - защита от радиации
telepatic_protection - защита от телепатических волн
chemical_burn_protection - защита от химических реактивов
explosion_protection - защита от взрыва
fire_wound_protection - защита от выстрела
значение 0.0 говорит о том что от костюм ни на сколько процентов не защищает вас от такого воздействия, значение 1.0 обозначает что ваш костюм на 100 % защитит вас от этого недуга.
Далее чтоб понизить износ костюма ищем строчки:
burn_immunity
strike_immunity
shock_immunity
wound_immunity
radiation_immunity
telepatic_immunity
chemical_burn_immunity
ex plosion_immunity
fire_wound_immunity
все эти строчки соответственно показывают защищенность самого костюма от воздействий.
Чем больше нулей после точки тем больше костюм устойчив к эдакой заразе.
Ставить только нули не советую.
Есть ещё масса методов изменить игру под вас но всех их не рассказать
Одно главное правило: не удаляйте никаких точек, запятых, скобочек, ибо, если они там стоят значит это кому-нибудь нужно.
__________________________________________________ ____________

Как изменить носимый вес

Чтобы поменять носимый вес, делаем следующее:
Захоим в D:\Games\S.T.A.L.K.E.R\gamedata\config\ system.ltx, ищем и изменяем переменную max_weight – это вес который игрок несет не напрягаясь. Изменяем его на нужную нам цифру и идем дальше.
В файле gamedata\config\creatures\actor.ltx находим переменную max_item_mass – которая отвечает за максимальный вес, при достижении которого игрок перестает двигаться. Делаем разницу между тем и этим примерно в 10кг.
Теперь если вы поставили свободно носящих 80кг, то на 90кг игрок не сможет ити!

Делаем невидимые аномалии

В папке gamedata\config\misc\ находим файл отвечающий за интересующую нас аномалию, например грави - zone_gravi.ltx. Теперь в этом файле находим строку idle_particles = anomaly2\gravity_idle и коментим ее символами «--« -, все визуально ничего нет. Что бы отключить еще и звуковое оповещение, а так намного интереснее, находим строку visible_by_detector и меняем значение on на off


Добавлено через 2 минуты
Изменение текстур
Изменение иконок предметов

Разберем изменение файла:

...\gamedata\textures\ui\ui_icon_equipment.dds

Он содержит иконки предметов, отображаемые в инвентаре. Допустим, вы сделали новый вид оружия, и хотите присвоить ему новую иконку.

Нам понадобится следующее:

* Adobe Photoshop (я использовал CS2, CS и 7.0 различаются незначительно)
* плагин для работы с .dds-изображениями

Итак, мы установили плагин и запустили Photoshop. Откройте в нем наш файл.



Иконки расположены по сетке 50х50 пикселей.

Чтобы включить её отображение, зайдите в меню:

Редактирование -> Установки -> Направляющие, сетка и фрагменты

И установите в нем следующие значения:

* Линия через каждые: 50
* Единицы измерения: пиксели
* Внутреннее деление на: 1

После чего выберите пункт:

Просмотр -> Показать -> Сетку ( Ctrl+' )

Всё, сетка теперь правильно настроена и отображается. Выберем место для иконки.



Иконка будет размером 4х2, то есть 200х100 пикселей - это обычный размер иконки для автоматических винтовок. Нарисуем её:



Иконка АК47У была нарисована следующим образом: я нашел качественную фотографию с однородным фоном (благо, фотографий АК в интернете немерено), открыл её в Photoshop, выделил с помощью второго вида инструмента "Лассо", нажал Ctrl+C, открыл файл с иконками, нажал Ctrl+V, нажал Ctrl+T, зажал Shift ("Сохранение пропорций") и потянул за край выделения, сжимая изображение до нужного размера.

После чего применил трансформацию, перетащил изображение на нужное место и нажал Shift+Ctrl+E ("Слить слои").

Теперь соответственно иконке изменим и альфа-канал.



Выделим иконку оружия, и перейдем в окне со слоями на закладку:

Каналы -> Alpha



После чего залейте выделение белым. Всё, мы сделали иконке альфа-канал.

Теперь нужно сохранить файл в правильном формате. Выберите:

Файл -> Сохранить

И выставьте в появившемся окне окне следующие настройки:



Крайне важно выставить следующие параметры:

* Save Format: DXT5 (Interpolated Alpha)
* MIP maps: No MIP maps

Нажмите Save. Вот всё, мы добавили новую иконку.

Теперь присвоим её предмету.

Допустим, у вы создали некий wpn_ak47u, которому и нарисовали иконку. Зайдем в его конфиг:

gamedata\config\weapons\w_ak47u.ltx

И найдем такие строки:

inv_grid_width = 4
inv_grid_height = 2
inv_grid_x = ...
inv_grid_y = ...

Где:

* inv_grid_width - ширина в сетке 50х50
* inv_grid_height - высота в сетке 50х50
* inv_grid_x - местонахождение по х
* inv_grid_y - местонахождение по y

Изменение текстур моделей

Заменим, например, текстуру банки с энергетиком. Для этого откроем файл item_drink_nonstop.dds:



И отредактируем его по своему усмотрению:



Банка была перерисована через выделение элементов с помощью "Лассо" (в варианте с проставлением углов, а не непрерывного выделения - кажется, это называется "Геометрическое лассо", если не так - поправьте), с последующим их закрашиванием зеленой кистью.

Выделяем элементы синего цвета, закрашиваем выделение зеленым, идем дальше.

В конце инструментом "Текст" (иконка в виде буквы "Т") и шрифтом Space Age (не суть важно) была сделана надпись. После чего я нажал Ctrl+T ("Свободная трансформация"), повернул текст набок, и применил трансформацию, выбрав любой другой инструмент.

Не забываем на всякий случай сохранить резервную копию текстуры. Делаем Save со следующими параметрами:

* Save Format: DXT5 (Interpolated Alpha)
* MIP maps: Generate MIP maps

Создание новых visual для использования с новыми объектами

К чему изменять текстуры обычных предметов, лучше сделать свои - с собственной внешностью. Сделаем новый visual (модель+текстура), который можно будет указать в свойствах нового предмета.

Возьмем модель банки энергетика drink_nonstop.ogf, сделаем её копию и назовем, скажем, drink_green.ogf, после чего откроем в Hex-редакторе (в принципе, можно и Блокнотом). Метод кустарный, но работающий.

В начале файла вы увидите имя текстуры:

item\item_drink_nonstop

Изменим эту строку на:

item\item_drink_green_1

Внимание! Очень важно, чтобы длина строки с текстурой осталась той же, иначе файл не будет работать.

Всё, теперь вы можете указать в конфиге своего нового предмета новый visual:

[energy_drink_green]:vodka
$spawn = "food and drugs\energy_drink"
inv_name = energy_drink_green_name
inv_name_short = energy_drink_green_short_name
visual = '''equipments\drink_green.ogf''' ;equipments\drink_stalker.ogf
description = enc_equipment_energy_drink_green
cost = 75

[...]

_____________________________________________

Редактирование костюмов

Разбор параметров

В этой статье мы рассмотрим значения параметров костюмов.
Все параметры, не упомянутые ниже, изменять строго не рекомендуется!

Итак, секции с параметрами находятся в файле:
config\misc\outfit.ltx

Разберем, например, параметры классического костюма сталкера.

[stalker_outfit]:outfit_base

; название секции костюма. именно к нему игра будет обращаться. outfit_base -
базовая (наследуемая) секция (изменять строго не рекомендуется).

visual = equipments\stalker_suit ; модель, используемая для сложенного костюма,
лежащего на земле.

actor_visual = actors\hero\stalker_hood.ogf ; модель, используемая для игрока, когда
на нем надет костюм.

inv_name = stalker_outfit_name ; название в инвентаре.

inv_name_short = stalker_outfit_name ; название в инвентаре (в принципе, можно
здесь продублировать значение предыдущего параметра - так чаще всего и делают).

description = stalker_outfit_description ; ссылка на текстовую строку
с описанием.

inv_weight = 5.0 ; вес.

; далее идут параметры иконки в инвентаре (см. примечание 1).

inv_grid_width = 2
inv_grid_height = 3
inv_grid_x = 6
inv_grid_y = 15

full_icon_name = npc_icon_stalker_outfit ; название иконки.

cost = 15000 ; базовая цена (см. примечание 2).

full_scale_icon = 14,11 ; иконка сталкера в костюме в полный
рост (отображается в инвентаре справа).

nightvision_sect = effector_nightvision_bad ; тип ПНВ
("плохой" - зеленый, "хороший" - синий).

; ниже идут параметры защиты владельца от различных типов воздействий,
обеспечиваемые костюмом.

burn_protection = 0.5 ; защита от воздействия
огня (костры, аномалия "Жарка" и т.д.).

strike_protection = 0.5 ; защита от ударов
(наносятся мутантами, например, псевдогигантом).

shock_protection = 0.5 ; защита от поражения
электричеством.

wound_protection = 0.4 ; защита от ранений
(наносятся мутантами, например, собаками, кровососами и т.д.).

radiation_protection = 0.5 ; защита от радиации.

telepatic_protection = 0.0 ; защита от пси-воздействия
(например, присутствие контроллера серьезно влияет на psy_health).

chemical_burn_protection = 0.5 ; защита от химического воздействия.

explosion_protection = 0.3 ; защита от взрывов/осколков.

fire_wound_protection = 0.3 ; защита от огнестрельного
оружия (наиболее важный параметр для большинства костюмов).

power_loss = 0.87
bones_koeff_protection = gilet_antigas_damage

[sect_stalker_outfit_immunities] ; коэффициенты иммунитета самого костюма, то
есть - то, насколько сильно он сам подвержен повреждениям от различных типов
воздействий. по значениям каждого типа - см. выше.

burn_immunity = 0.03
strike_immunity = 0.01
shock_immunity = 0.03
wound_immunity = 0.015
radiation_immunity = 0.00
telepatic_immunity = 0.00
chemical_burn_immunity = 0.03
explosion_immunity = 0.03
fire_wound_immunity = 0.01

__________________________________________________ ___
В Игромании наконец-то опубликовали свой урок по модифицированию игры, а именно по изменению особенностей оружия, в т.ч. и внешнего вида. Выкладываю специально для тех, кто не читает этого журнала.

Сталкер вот уже 10 минут полз по зараженной территории. За ним гналась огромная банда, вооружённая "калашами". Шансов выжить практически не было, в пистолете оставался всего один патрон. Найденный в куче радиоактивного хлама старенький автомат сулил лишь небольшую отсрочку верной гибели.
Но первый же выстрел разрезал одного из бандитов надвое. Второй - рассёк сразу двух. Уничтожив почти всех бандитов, сталкер принялся изучать найденный ствол. Странная надпись "Made in Igromania" на прикладе и ядерная символика на затворе однозначно говорили о том, что оружие не простое, а модифицированное.
В СТАЛКЕРЕ представлено в основном оружие советского производства. Сегодня мы пополним арсенал несколькими футуристическими экземплярами. Хотите прожигать врагов лазером и стирать мутантов с лица земли атомными зарядами? Всегда пожалуйста!

ТРЕНИРОВКА

Нам пригодится содержимое архивов 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 - тип повреждения, наносимого оружием. Огнестрельное ранение - 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_i,pulse и hit_impulse_2, которым следует присвоить значения 140 и 125. Первый вид атаки после этого будет сильнее отталкивать врагов от главного героя, что в некоторых случаях усложняет добивание.
Немного поработаем над балансом. Атрибутам inv_weight, rpm (здесь 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, 5 и 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 рублей. Получившееся орудие убийства будет в игре на вес золота - по убойной силе ему просто нет равных. Один выстрел - и вокруг остаются только горы трупов.

ВИЗУАЛИЗАЦИЯ

Вторая стадия разработки вооружения - графическая. На ней мы будем обновлять текстуры оружия. При этом понадобится набор инструментов DXT Tools. Что касается самих картинок, то они представлены файлами формата 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 <имя файла> (например, readdxt wpn_colt.dds). В результате появится в директории файл test.tga с интересующей вас картинкой.
Можете смело перерисовывать её в графическом редакторе. После завершения правки переведите рисунок обратно в формат DDS, набрав в командной строке (естественно, не покидая каталог DXT Tools) nvdxt test.tga. Вам останется только вернуть полученному в итоге файлу test.dds прежнее имя и положить его в соответствующую папку (в случае с оружием это <каталог игры>\gamedata\textures\wpn).
Можно выгравировать таким образом какой-либо рисунок на кинжале, или дорисовать на прикладе оружия значок радиации...

ИЗМЕНЕНИЕ ТЕКСТА

При создании новых стволов необходимо заменить их названия и описания. Использующийся в игре текст вы найдете в файлах формата xml в директории \config\text\rus архива gamedata.db9. Тот, что касается непосредственно оружия, содержится в файле string_table_enc_weapons.xml. Устроен он следующим образом. Каждой надписи соответствует небольшой раздел вида:
>X>>>
Y

X здесь - кодовое наименование объекта (в данном случае - оружия, приспособлений к нему или боеприпасов), к которому относится надпись. Y - текст (как вариант - название объекта).
Найти нужный раздел несложно - в его заголовке (Х) неизменно фигурирует краткое название ствола (то самое, что следует в имени соответствующего файла из папки \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_weapon1_wpn-knife. Помещенное в него словосочетание "Охотничий нож" можно переделать, например, в "Острый кинжал". Характеристики же СВУмк2 содержатся в разделе enc_weapons1_wpn-svu, а РПГ-7у - в enc_weapons1_wpn-rpg7.

И последнее. Подредактированные файлы string_table_general.xml и string_table_enc_weapons.xml переместите в папку <Каталог игры>\gamedata\config\text\rus.

Добавлено через 4 минуты
Cпавн через скрипт

Теория

В скриптах есть одна единственная функция, отвечающая за спавн объектов:
---------------------------------------------------------------------------------------------
alife():create(section,position,levelvertex,gameve rtex)
---------------------------------------------------------------------------------------------
Строго говоря, их две: create create_ammo но различия между ними не существенны.

Первый параметр - секция в конфигурациях, описывающая объект, например "bolt","med_kit" - это простые секции, простых объектов а есть объекты, которые переходят в онлайн/оффлайн, это неписи, монстры и так далее, например mil_killer_respawn_2 - спавнится снайпер группировки киллеров.

С позицией, думаю объяснять не надо, только существует нюанс - высота это Y, а не Z. Задать позицию можно такой конструкцией vector():set(x,y,z), где x, y и z - координаты точки на уровне, где спавним объект.

Дальше сложнее, так как сам толком сформулировать не могу.

Начнем от простого к сложному. На каждом уровне много объектов, все объекты состоят из полигонов, у каждого полигона есть вершины – вертексы.

Именно они и должны здесь указываться, зачем - не особо понимаю, скорее всего для точного позиционирования объекта. Например, можно получить вертекс ближайший к актору - db.actor:level_vertex()

Дальше идет гораздо более интересный параметр game_vertex, это почти то же самое, что и level_vertex, но (!) это глобальные величины! Если level_vertex считается для уровня, то game_vertex - для всей игры, и нужен он для того, чтобы указать на какой карте спавнить объект (более вразумительного объяснения я не нашел).

Соответственно, чтобы заспавнить что-нибудь на другой карте, достаточно указать game_vertex в четвертом параметре Например:
------------------------------------------------------------------
db.actor:game_vertex()
------------------------------------------------------------------
Итак, чтобы, например, заспавнить болт под ногами актора, пишем:
------------------------------------------------------------------------------------------------------
alife():create("bolt",db.actor():position(),1,db.a ctor:game_verte())
------------------------------------------------------------------------------------------------------
Почему 1, а не level_vertex? Проверено - разницы особой нет, какой level_vertex, хотя в некоторых случаях надо прописывать валидный вертекс, а то предмет может просто заспавнится не там, где планировалось... Но по большей части все проходит нормально и с единицей. (Игнорирование level_vertex может приводить к проваливанию произведенных предметов/персонажей под землю.) А вот game_vertex решает все - он указывает на каком уровне спавнить предмет, поэтому его надо указывать. Теоретически можно просто найти для каждого уровня по одному game_vertex'у и использовать их в скриптах. На самом деле game_vertex показывает какой фрагмент карты используется (вся карта разбита на кусочки имеющие сквозную нумерацию по всем уровням и game_vertex выбирает нужный) соответсвенно неправильное использование черевато....

Кроме того - есть еще один параметр - ID объекта, если указать ID NPC или актора - то предмет заспавнится у него в инвентаре.

Пример (спавним артефакт Медуза в инвентаре у актора):
------------------------------------------------------------------------
[ color=red]alife():create("af_medusa", db.actor():position(), 1, db.actor:game_vertex(), db.actor:id())[/color]
-------------------------------------------------------------------------
Функция спавна возвращает серверный объект, то есть ни NPC, ни монстра ни что-либо еще.
Серверный обьект позволяет свеже созданного NPC или тайник затарить разными рулезами/артефактами. Например, вот так создадим перед входом к Сидоровичу долговца и засунем в него пачку патронов:
-------------------------------------------------------------------------------------------------------
local obj
local a = vector() -- Задаем тип переменной
local dir = db.actor:direction()

a.x = -243.61 -- координата X
a.y = -19.52 -- высота Y
a.z = -127.17 -- координата Z

obj = alife():create("bar_dolg_respawn_3",a,13193,8,6553 5)
alife():create_ammo("ammo_9x18_fmj",
obj.position,
obj.m_level_vertex_id,
ob j.m_game_vertex_id,
obj.id,
20) -- число патронов
-------------------------------------------------------------------------------------------------------
Кстати, create_ammo - практически тоже самое, что и create, разница в том, что create_ammo предназначена специально для спавна патронов и позволяет создавать неполные пачки патронов. Возможно есть еще какие-то отличия. Стоит учесть, что сами авторы игры спавнят патроны исключительно через create_ammo.

Просто минимальный набор - координаты, ID, секция,а из него (серверного объекта) обычно нужен только ID, так как по ID можно получить этот самый серверный объект:
----------------------------------------------------------------
(alife():object(id))
----------------------------------------------------------------
Его можно использовать, чтобы поставить метку, например, но я его лично использую для других целей - спавн сложных объектов, конкретно – NPC.

Например надо решить следующую задачу - надо создать наемника, сменить ему группировку и изменить его инвентарь, ну и в нагрузку - сделать другом для игрока.

В определенный момент заспавненый объект переходит онлайн, в этот момент вызывается callback - net_spawn.

Что мы делаем? Сверяем ID онлайн объекта с сохраненным ID!

Если они совпадают, например так:
-------------------------------------------------------------------
if obj:id()==saved_id then ...
-------------------------------------------------------------------
Важно то, что у серверного объекта ID - это параметр, а у онлайнового объекта ID получается с помощью функции. Это важно, а то можно прогореть.

Итак, мы поймали нашего киллера по ID.

Далее все очень просто - вызываем команды для спавна гаусса и патронов к нему в инвентаре NPC (см. выше), меняем группировку специальной функцией, и делаем его другом.

Зачем такие сложности? Просто в оффлайне NPC как бы не существует, есть только косвенное упоминание о нем, и, плюс, все эти функции работают именно с объектом типа "NPC", а не с серверными объектами.

Практика (часть 1)

1. Чтобы не повторяться в описании создания нового квеста, просто изучите статью по созданию квестов. Мы просто свяжем все воедино и научимся спавнить объекты из скрипта.

Небольшое отступление:

Почему предпочтительнее делать спавн скриптом, а не через тот же xrSpawner? Программа xrSpawner, при всех своих достоинствах, обладает одним недостатком, а именно – она делает спавн через файл all.spawn, что приводит к:
* Невозможности совместить два мода, такой спавн использующих
* Необходимости каждый раз начинать новую игру

При спавне через скрипт ситуация иная: в подавляющем большинстве случаев, ранее сохраненные игры будут работать, что не может не радовать

Итак, определимся с квестом.

Задача: после разговора с Сидоровичем спавним зомби на территории фабрики в первой локации. Для того, чтобы не повредить оригинальный сюжет игры, задание будет выдаваться после прохождения квеста с флешкой Шустрого, так как появись там зомби одновременно с бандитами и Шустрым... я думаю, исход боя предрешен

Реализация: Постараюсь описать все действия максимально подробно, буквально по шагам. Первым делом запустите игру

В консоли введите команду:
---------------------------------------------------------
rs_stats on или rs_stats 1
---------------------------------------------------------
Тем самым мы включаем вывод информации на экран. Далее вводим еще одну команду:
---------------------------------------------------------
demo_record 1
---------------------------------------------------------
И «летим» на фабрику. Нам нужно выбрать место для спавна объектов и данный режим как нельзя лучше подходит для реализации задуманного. Помещаем камеру в точке предполагаемого спавна и записываем координаты - у меня получились 115, -6, -16.

Для выхода из режима demo_record нажимаем Esc, в консоли пишем rs_stats off или rs_stats 0 (убираем вывод информации).

Другой способ получения тех же сведений - прийти в нужное место и запустить там скрипт, который выдаст все нужные координаты. Я пользуюсь следующим скриптом (вызываю общеизвестным способом, через main_menu):
----------------------------------------------------------------------------
function main_menu:main_cheat_f3()
-- Выдадим сообщение о нашем местоположении
local text
local vid
local gvid
local a = vector() -- Тип переменной
local text

a = db.actor:position() -- Наше положение в координатах
vid = db.actor:level_vertex_id()
gvid = db.actor:game_vertex_id()
text = "Позиция:\\nX= "..a.x.."\\nY= "..a.y.."\\nZ= "..a.z.."\\nlevel_vertex= "..vid.."\\ngame_vertex_id= "..gvid
news_manager.send_tip(db.actor, text, nil, nil, 30000)
end

----------------------------------------------------------------------------------------
В результате не нужно эксперементировать мы сразу получаем все, в том числе и level_vertex и game_vertex.

Выходим из игры, идем в папку с установленной игрой и создаем каталог gamedata (предполагается, что «лепим» свой «мод» на «чистую» игру, без установленных модов, и имеем распакованные ресурсы игры в папке, скажем, gamedata source).

В папке gamedata создаем папку config, а в ней - папку creatures. Скопируем из оригинальной папки файл m_zombie.ltx и откроем его на редактирование.

В файлах игры присутствуют 5 моделей гражданских зомби:
--------------------------------------------------------------------------------------------------
файлы zombi_1.ogf, zombi_1_ghost.ogf, zombi_2.ogf, zombi_trup.ogf, zombi_trup_2.ogf
---------------------------------------------------------------------------------------------------
Вернем в игру их всех

Уже имеются секции:
-----------------------------------------------------------------------------------------
[zombie_weak]:m_zombie_e, [zombie_normal]:m_zombie_e, [zombie_strong]:m_zombie_e и [zombie_immortal]:zombie_strong.
------------------------------------------------------------------------------------------
Два последних типа используют одну и ту же модель zombi_trup.ogf, хм... непорядок, исправляем. Последняя секция выглядит теперь так:
---------------------------------------------------------------------------------------------
[zombie_immortal]:zombie_strong
$spawn = "monsters\zombies\zombie_immortal"
visual = monsters\zombi\zombi_trup_2
panic_threshold = 0.05
----------------------------------------------------------------------------------------------
Добавим пятую модель.

Для этого в конце файла создадим секцию:
-------------------------------------------------------
[zombie_ghost]:zombie_strong
-------------------------------------------------------
Это означает, что наш пятый зомби наследует все параметры zombie_strong, мы добавим лишь визуальное представление.

Пишем дальше:
----------------------------------------------------------------------------------------
$spawn = "monsters\zombies\zombie_ghost"
visual = monsters\zombi\zombi_1_ghost
----------------------------------------------------------------------------------------
Все. Сохраняем изменения и закрываем файл.

2. Пишем скрипт спавна. В папке gamedata создаем новую папку scripts, в ней создаем новый текстовый документ и называем его esc_zombie.script.

Отступление третье:

При написании статьи использовался оригинальный скрипт zombie_story.script из horror-mod’а. Концепция спавна перенесена практически без изменений, поэтому на авторство этого способа спавна я никоим образом не претендую

Итак, открываем наш пустой файл на редактирование, первой строкой объявляем переменную, в которой хранятся наши зомби:
------------------------------------------------------------------------------------------------------------------------------------ ----
[ color=red]local zombie_types = {"zombie_weak", "zombie_normal", "zombie_strong", "zombie_immortal", "zombie_ghost"}[/color]
-------------------------------------------------------------------------------------------------------
Д алее пишем функцию:
--------------------------------------------------------------------------------------------------------- ----
function spawn_zombies( position, total )
local zombie_index -- тип зомби из массива zombie_types
local new_pos, x_offset, z_offset -- объявляем переменные
for zombie_index=1, total do -- крутим цикл столько раз, сколько
задает переменная total
x_offset = math.random(5) -- случайное (рандомное) x от 1 до 5
z_offset = math.random(5) -- случайное (рандомное) z от 1 до 5
new_pos = position -- передаем координаты в функцию
new_pos.x = new_pos.x + x_offset -- прибавляем к указанной нами
координате x полученное выше рандомное x
new_pos.z = new_pos.z + z_offset -- прибавляем к указанной нами
координате z полученное выше рандомное z
-- Ниже, собственно и вызывается функция спавна случайного типа зомби
zombie_types[math.random(5)] привязанного к нашим координатам
alife():create(zombie_types[math.random(5)],new_pos,db.actor:level_vertex_id(),db.actor:game_ vertex_id())
end
end
-------------------------------------------------------------------------------------------------
И последнее:
-------------------------------------------------------------------------------
function zomby_story_1( actor, npc )
-- десять зомби на фабрике (Кордон)
local spawn_point = vector():set( 115, -6, -16 ) -- здесь указываем координаты,
выбранные нами для спавна, когда «летали» камерой
spawn_zombies( spawn_point, 10 ) -- собственно вызов предыдущей функции
с передачей ей координат и количества объектов
end
--------------------------------------------------------------------------
Все. Сохраняем и закрываем файл.

Продолжаем разговор

Для того, чтобы игра не вылетала после того, как мы добавили новый тип монстров, их нужно добавить в файл xr_statistic.script. Итак, скопируем этот файл из папки игры scripts в нашу папку к файлу esc_zombie.script и откроем на редактирование.

Добавим в local killCountProps к монстрам строчку:
----------------------------------------------------------------------------------
zombie_weak = 1, zombie_normal = 2, zombie_strong = 3
----------------------------------------------------------------------------------
В local sect_alias строчку:
------------------------------------------------------------------------------------------------------------------------------
zombie_weak = "zombie_weak", zombie_normal = "zombie_normal", zombie_strong = "zombie_strong"
------------------------------------------------------------------------------------------------------------------------------
А ниже в monster_classes строчку:
-----------------------------------------------------------------------------------------------------
[clsid.zombie_s ] = "zombie"
---------------------------------------------------------------------------------------------------
В функцию getNpcType(npc) добавляем конструкцию:
---------------------------------------------------------------------------------------------------------
elseif npc:character_community() == "zombie" then
community = "zombie"
-------------------------------------------------------------------------------------------
Сохраняем изменения и закрываем файл.

Все будет работать на ура, пока мы не попробуем обыскать убитого зомби. Как только мы это сделаем, игра вылетит с примерно такой ошибкой.
------------------------------------------------------------------------------------------------------------------------------
Expression : fatal error
Function : CInifile::r_string
File : D:\xray-svn\xrCore\Xr_ini.cpp
Line : 351
Description :
Arguments : Can't find variable icon in [zombie_weak]
------------------------------------------------------------------------------------------------------------------------------
Все верно – игра не знает какую иконку нам показывать для зомби. Иконки монстров хранятся в файле ui_npc_monster.dds. Здесь есть два варианта:

* Если дружите с Фотошопом, отредактировать этот файл (нарисовать, добавить иконки);
* Взять готовый из любого мода, естественно, с разрешения авторов мода. Сейчас мы пропустим данный аспект и присвоим нашим зомби иконки контролера

Вернемся к файлу m_zombie.ltx и в секцию [m_zombie_e]:monster_base впишем параметр
--------------------------------------------------------------------------
icon = ui_npc_monster_kontroler
--------------------------------------------------------------------------
Все. Вылетов не будет.

3. Тема данной статьи не предусматривает подробного описания того, как сделать новый диалог. В начале статьи я упомянул источник, где можно найти исчерпывающую информацию по созданию диалогов, могу также привести в пример статью по созданию диалогов.

Нам нужно просто проверить работоспособность скриптового спавна, поэтому я приведу просто собственно сам измененный диалог из файла dialogs_escape.xml:
--------------------------------------------------------------------------

………

escape_trader_talk_info_999
7770
9991
9992
9993
9994
9995
9996


escape_trader_talk_info_9992
99922


escape_trader_talk_info_99922
9996
9995


escape_trader_talk_info_9993
99933


escape_trader_talk_info_9995


escape_trader_talk_info_3121
9996
9995


escape_trader_talk_info_3131
9996
9995


escape_trader_talk_info_41
9996
9995



escape_trader_talk_info_7770
7771


escape_trader_talk_info_7771
7772
7773


escape_trader_talk_info_7772
7777


escape_trader_talk_info_7773
7779


escape_trader_talk_info_7779
9996
9995


escape_trader_talk_info_7777
esc_zombie.zombie_story_1
9996
9995



escape_trader_talk_info_51
9996
9995

……

-----------------------------------------------------------------------------------------------------------
И также связанный с ним файл stable_dialogs_escape.xml. В самом начале файла пишем следующее:
----------------------------------------------------------------------------------------------------------
[ color=red]
< string id="escape_trader_talk_info_7770">
Происшествий никаких не было?


Да знаешь... Вроде как тихо все у нас. Хотя, вот, вспомнил! Говорили мне
на днях, что на фабрике, ну, там, где бандюки околачиваются постоянно, видели какиих-то то ли
людей, то ли призраков... Мало ли что спьяну почудится - я и сказал этим паникерам, мол,
закусывать надо! Хех, блин, алкаши...


Дык мне по любому мимо фабрики топать - заодно и посмотрю на этих
"людей-призраков".


Да я как-то не собирался в ту сторону...


Ну, смотри сам, все равно будь осторожен.


Ага. Сходи, проветрись. Потом зайдешь, расскажешь, что там и как.


Здесь проход воспрещён, сталкер.

[/color]
---------------------------------------------------------------
Все . Можно запускать игру, идти на Кордон, после разговороа с Сидоровичем, в зависимости от выбранного Меченным решения, бежим на фабрику и … смотрим сами

Домашнее задание - вернуть в игру 6-ой тип гражданского зомби

Продолжение следует…

Практика (часть 2)

4. Сегодня мы закончим с зомби в полном объеме – добавим их описания в энциклопедию, добавим иконки, и разберемся с «домашним заданием» Думаю, что внимательно изучив эту статью, вы сами сможете через скриптовые функции восстановить любого персонажа, не вошедшего в финальный релиз игры. Если у кого хватит времени и желания, те могут даже написать что-то типа «Ночи живых мертвецов» - серию квестов, связанную своим собственным сюжетом. Итак, «домашнее задание» - добавляем в игру шестого зомби.

* Создаем в папке gamedata папку meshes, в ней папку monsters, а там – папку zombi. В папке meshes хранятся модели персонажей, объектов, окружения, присутствующих в игре. Как я уже говорил выше, в игре представлено 5 моделей гражданских зомби, а вот текстур – 6. Также немного смутила нумерация моделей – 1, 2, 4... А где третий? Наверное, сбежал

* Скопируем из папки с оригинальными файлами игры в созданную нами папку zombi файл zombi_2.ogf и переименуем его в zombi_3.ogf. Откроем файл нашей новой модели любым HexEditor’ом, я использую BiEd (Binary Editor 1.00). Так как данная статья рассчитана не только на «продвинутых юзеров», но и на «обычных чайников», которые, тем не менее, хотят «что-нить замутить» и при этом не сильно «парить моск», я не буду рассказывать здесь про адресацию, двухбайтовую запись и т.д., я просто наглядно покажу, где что поправить
-Файл модели до редактирования-
-Файл модели после редактирования-

На скринах видно, что мы просто изменили для этой модели путь к текстуре. Все. Без использования 3D-редакторов и затраты кучи времени на обработку модели в них, мы получили абсолютно новую (на внешний вид) модель.

5. Теперь пропишем нашего нового зомби во все файлы, которые мы создали ранее. В файл m_zombie.ltx в самый конец добавляем секцию:
------------------------------------------------------------------------------
[zombie_old]:zombie_normal
$spawn = "monsters\zombies\zombie_old"
visual = monsters\zombi\zombi_3
------------------------------------------------------------------------------
в файле esc_zombie.script изменяем массив в первой строке:
---------------------------------------------------------------------------------------------------------
[ color=red]local zombie_types = {"zombie_weak", "zombie_normal", "zombie_strong", "zombie_immortal",
"zombie_old", "zombie_ghost"}[/color]
--------------------------------------------------------------------------------------------------------
В функции spawn_zombies изменяем строку спавна:
-------------------------------------------------------------------------------------------------------
[ color=red]alife():create(zombie_types[math.random(6)],new_pos,
db.actor:level_vertex_id(),db.actor:game_vertex_id ())[/color]
--------------------------------------------------------------------------------------------------------
в функции zombie_story_1 меняем число объектов на кратное 6-ти (необязательно):
-------------------------------------------------------------------------------------------------------------------
spawn_zombies( spawn_point, 12 )
---------------------------------------------------------------------------------------------------------
Всё. Сохраняем и закрываем.

6. Копируем в папку gamedata\config\gameplay\ файл encyclopedia_mutants.xml, добавляем описание зомби в энциклопедию:
----------------------------------------------------------------------------------------------------------------------------- ----


ui_npc_monster_zombieg
enc_mutant_zombieg_general


---------------------------------------------------------------------------------------------------------------------------------
И в связанный с ним файл string_table_enc_mutants.xml в папке gamedata\config\text\rus\ добавляем:
---------------------------------------------------------------------------------------------------

Зомби, гражданский


Зомби-призрак, гражданский


Зомби-привидение отличается от обычного зомби лишь тем, что
воздействие Выжигателя мозгов полностью разрушило не только структуру личности, но и
тело, поэтому зомби-призрак несколько более живуч по сравнению с обычным зомби.


Воздействие Выжигателя мозгов полностью разрушает структуру личности,
оставляя только телесную оболочку.\n\n Побродив немного по Зоне, лишённые разума тела
начинают превращаться в настоящих зомби. Из рефлексов у них остаются лишь самые примитивные,
оружие и экипировка скоро приходят в негодность. В результате зомби становятся собой ни чем
иным, как медлительными полутрупами, которых наличествуют лишь два эффективных раздражителя:
еда и сон. Зомби совершенно неразборчивы в выборе пищи и питья, поэтому их тела буквально
пропитаны радиацией и токсинами. Как правило, эти существа бесцельно бродят по Зоне или,
словно трупы, валяются внутри заброшенных построек. Однако, лишь только зомби почует близкое
присутствие живого человека, он сразу же пытается атаковать. Умудрённые опытом сталкеры
стараются обходить эти неуклюжие опустошённые оболочки.

-----------------------------------------------------------------------------------------------------------
Копир уем сюда же файл stable_statistic_caption.xml и изменяем в нем 3 строчки:
----------------------------------------------------------------------------------------------------------
[ color=red]
зомбированный, гражданский


зомби-призрак, гражданский


зомби, гражданский
[/color]

----------------------------------------------------------------------------------
Сохра няем и закрываем.

7. И последнее – добавим иконки. Скажу сразу, воспользовался готовым файлом, уже содержащим иконки зомби и других «восстановленных монстров» . Поэтому просто скопируйте файл ui_npc_monster.dds из архива в папку gamedata\textures\ui\, а файл ui_npc_monster.xml – в папку gamedata\config\ui\. Если вы хотите сделать собственные - прочитайте урок по изменению текстур.

Вкратце, что описывает файл ui_npc_monster.xml: в нем задаются координаты иконок, расположенных в файле ui_npc_monster.dds, применительно к каждому типу монстров в игре.

Заключительный штрих. Откройте файл m_zombie.ltx и в первой секции замените строку
---------------------------------------------------------------------------------------------
[ color=red]icon = ui_npc_monster_kontroler

-------------------------------------------------------------------------------------------------
На:
-- -----------------------------------------------------------------------------------------------
icon = ui_npc_monster_zombie
----------------------------------------------------------------------------------------------
В секцию [zombie_ghost] добавьте строку:
--------------------------------------------------------------------------------------------------
[ color=red]icon = ui_npc_monster_zombieg[/color]
----------------------------------------------------------------------------------------------------
Сохраня йте изменения. Всё.

Последний раз редактировалось Css-hacker, 08.11.2011 в 00:32. Причина: Добавлено сообщение
Css-hacker вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо Css-hacker за это полезное сообщение:
smirnov1493 (08.11.2011)

Полезная информация

Как получить бесплатно услуги на серверах

Старый 24.11.2011, 18:49   #2
 
Аватар для McDowell
 
Выигранных турниров: 2

Сообщений: n/a
По умолчанию

Раньше думал заняться, после понял что мороки много да и времени особо нету
  Ответить с цитированием
Старый 20.02.2013, 19:02   #3
Гастарбайтер
 
Аватар для moxan99
 

Регистрация: 20.02.2013
Сообщений: 25
Вы сказали Спасибо: 23
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

Уууу... конечно не для меня,но теперь никогда не буду обвинять модостроителей в комментах из-за багов,потому-что понял что ето ооочень сложно!
moxan99 вне форума   Ответить с цитированием
Ответ


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 05:01.


Rambler's Top100

vBulletin®
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Перевод: zCarot

Скачать КС 1.6


Компьютерные и консольные игры © Все права защищены