1. hmtoggle_plus1Переносим визуал из ЧН в ЗП

1. Найдем параметры перса в ЧН. В файлах configs\gameplay\character_desc_локация.xml

2. Посмотрим строку <visual> в ней указан путь к ogf-файлу модели, исходя из папки meshes

3. Скопировать модель в gamedat'у Зов Припяти. При необходимости модель переименовать.

4. Откроем модель HEX редактором либо каким-нибудь текстовым редактором. Введем в поиск ([ctrl]+[F]): act

5. Там мы увидим путь к текстурам. Путь относительно папки textures\.Например: act\stalker_neutral_01

6. Зайдем в папку (ЧН) textures\act\ и вводим в поиск stalker_neutral_01, он нам найдет 4 файла: 1 - сама текстура, 2 и 3 - это бампы, 4 - thm файл который соотносит текстуру к бампу.

7. Копируем в папку (ЗП) - textures\act.

Если файлы текстур не переименовывали, то все готово. Если переименовывали, то придется отредактировать еще 2 файла. Эти файлы открывать HEX редактором либо другим текстовым редактором

Файл 1 - ogf модель - пишем там вместо stalker_neutral_01 - stalker_neutral_10. -- Следует сохранять длину строк. stalker_neutral_01 - исходная текстура, а stalker_neutral_10 - переименованная текстура

Файл 2 - thm файл - ищем там старое название текстур (основной и бампа) и заменяем на новые. -- Длину строк также сохранять.

 

2. hmtoggle_plus1Где лежат иконки инвентаря?

Файл textures\ui\ui_icon_equipment.dds

 

3. hmtoggle_plus1Как сделать вид от третьего лица?

В конец user.ltx добавить:

 

bind cam_1 kF8

bind cam_2 kF10

bind cam_3 kF11

bind cam_4 kF12

 

4. hmtoggle_plus1Как корректно вставить свои звуки в игру?

Любым музыкальным редактором, например можно использовать Sound Forge 8.0, подготавливаем наши звуковые файлы – они должны быть сохранены в следующем виде: качество сохраняемых файлов: WAV (standard) 44100Гц, Моно, 16 бит.

После сохранения выбранных треков в виде WAV (standard) 44100Гц, Моно, 16 бит, их необходимо перевести в формат, поддерживаемый игрой. Для этого нам понадобится X-Ray SDK – официальный пакет разработчика для игры S.T.A.L.K.E.R.

Скачать можно по ссылкам (300 Mb):

- http://xfiles.gsc-game.com/st/xray-sdk-setup-v0.4.exe

- http://xfiles.gsc-game.com/st/

NB: Вы спросите, почему сразу не сохранять треки в формате OGG 44100Hz, Mono? Ответ прост – в комментах OGG файла должны прописываться параметры распространения звука по игровому миру. Именно по этой причине собственные звуки в игре практически не слышно на определенных расстояниях, именно поэтому в консоль выводятся сообщения о невалидном комментарии и т.п.

Итак, открываем Actor Editor либо Level Editor. На панели инструментов справа вверху ищем пункт меню Sounds, кликаем его и выбираем Sound Editor. Откроется окно редактора звука. Для того чтобы там появились наши файлы, необходимо скопировать их в папку rawdata\sounds в корне установленного Level Editor’a (например, c:\Program Files\X-Ray SDK\level_editor\rawdata\sounds). В этой папке вполне могут оказаться какие-то «левые» файлы – их можно смело удалить.

NB: Важно чтобы копируемые туда файлы были именно в формате WAV!

После того как вы скопировали свои файлы в папку SDK в окне Sound Editor’a должен появиться их список. Выбираем трек и изменяем следующие параметры:

MinDist = 300.0 - расстояние, с которого звук начнет затухать (практически это и есть громкость звука)

MaxDist = 300.0 - максимальное расстояние, на котором звук будет слышен ГГ

MaxAIDist = 300.0 - максимальное расстояние, на котором звук будут слышать NPC

BaseVolume = 1.0 - громкость

А также задается к какому типу звуков в игре он относится:

Game Type:

undefined – неопределенный, на них NPC не реагируют
Item picking up - подбирание предмета
Item dropping - выбрасывание предмета
Item taking - взятие предмета
Item hiding - убирание предмета
Item using – использование предмета
Weapon shooting – выстрел оружия
Weapon empty clicking - щелчок УСМ при отсутствии патрона
Weapon bullet hit - звук попадания пули в поверхность
Weapon recharging - перезарядка оружия
NPC dying - смерть NPC
NPC injuring - ранение NPC
NPC step - шаги NPC
NPC talking - разговор NPC
NPC attacking - атака NPC
NPC eating - приём пищи NPC
Anomaly idle – звуки аномалий
Object breaking - разрушение объекта
Object colliding - столкновение объекта(ов), удар
Object exploading - взрыв
World ambient - звуки окружающего мира

 

Остальные параметры не трогаем. Нажимаем ОК и ждем окончания синхронизации звуков. Если всё было сделано правильно, в папке gamedata\sounds в директории Level Editor’a (например, c:\Program Files\X-Ray SDK\level_editor\gamedata\sounds\) можно забрать готовые файлы ogg с валидными комментами. После этого смело кладем наши звуки в папки игры.

Для информации: в файле m_stalker.ltx прописываются коэффициенты реакции NPC на конкретную группу звуков (чем больше коэффициент - тем больше паника):

[stalker_sound_perceive]

weapon = 2.0; 0.75; 10 коэффициент усиления приоритета\силы звука

item = 0.2; коэффициент усиления приоритета\силы звука

npc = 1.0;1;2 коэффициент усиления приоритета\силы звука

anomaly = 0.5; коэффициент усиления приоритета\силы звука

world = 0.2; коэффициент усиления приоритета\силы звука

Таким образом, каждому звуку в игровом мире можно задать требуемые параметры и определить реакцию на него NPC.

 

5. hmtoggle_plus1Что отвечает за состояние оружия?

upd:condition = 255 (для целого ствола 255, чем меньше значение тем ствол хуже)

 

6. hmtoggle_plus1Где нужно регистрировать новую локацию, созданныую через SDK, в оригинале ЗП?

Добавить в файл: configs\game_levels.ltx

 

7. hmtoggle_plus1Консольная команда для показа координат

rs_stats on\off

 

8. hmtoggle_plus1Включаем максимальные настройки на Win7

1. Запускаем командную строку (cmd.exe) с привилегиями администратора (правой кнопкой по ярлыку/запуск от имени администратора).

2. В появившемся окне прописать:

BCDEDIT /Set IncreaseUserVa 3072

после нажать [enter].

3. Перезагрузить компьютер.

4. Запустить игру.

 

Этим самым мы позволяем приложениям использовать 3072 Мб ОЗУ

Также можно поставить texture_lod 0 в user.ltx

 

9. hmtoggle_plus1Как в MilkShape подгрузить текстуру к модели

1. Переходим на вкладку materials

2. Выделяем material00

3. Нажимаем на Emissive и ставим белый цвет

4. Под ползунками рядом с кнопкой None есть другая кнопка - нажимаем на нее

5. Открываем необходимую текстуру

6. Под текстурами есть ListBox - там ставим либо Default, либо Ignore Alpha

При наличии других материалов - повторяем действия 2-6 с необходимым материалом

 

10. hmtoggle_plus1Где лежат иконки персонажей

textures\ui\ui_npc_unique.dds

texures\ui\ui_actor_portret.dds

 

11. hmtoggle_plus1Изменить текстуру прицелов

Создаем новую dds текстурку (например, crosshair.dds), стоит учесть, что стороны текстуры должны быть степенью числа 2, т.е. 1280 - не подойдет, а 1024 - подойдет.

 

Далее, необходимо подключить нашу текстуру в файле configs\ui\textures_descr\ui_ingame.xml

 

Например так:

<file name="wpn\crosshair">

  <texture id="crosshair" x="0" y="0" width="1024" height="1024" />

</file>

 

Далее надо указать параметры наложения текстуры в зависимости от формата монитора в файлах configs\ui\scopes.xml для 4х3 (стандарт) и configs\ui\scopes_16.xml для 16х9 (широкоформат)

 

4х3:

<crosshair x="0" y="0" width="1024" height="768">

     <auto_static x="0" y="144" width="1024" height="480" stretch="1">

       <texture>crosshair</texture>

     </auto_static>

     <auto_static x="0" y="0" width="1024" height="144" stretch="1">

       <texture>wpn_crosshair_add_l</texture>

     </auto_static>

     <auto_static x="0" y="624" width="1024" height="144" stretch="1">

       <texture>wpn_crosshair_add_r</texture>

     </auto_static>

</crosshair>

 

16х9

<crosshair x="0" y="0" width="1024" height="768">

     <auto_static x="0" y="0" width="1024" height="768" stretch="1">

       <texture>crosshair</texture>

     </auto_static>

</crosshair>

 

12. hmtoggle_plus1Замена модели сталкера - моделью мутанта

Например, кровососа

1. Извлечь скелет модели сталкера

2. Из модели кровососа удалить скелет и вместо него вставить скелет сталкера.

2.1 Первое препятствие - скелет сталкера однозначно не подходит к мешу кровососа, придется подгонять (!).

2.2 Второе препятствие - для измененного скелета сталкера придется переделывать все анимации (!).

3. Привязать меши к скелету (!) и перегнать модель в СДК

4. Настроить модель в СДК в том числе заново определить пределы поворота суставов (!)

 

Операции помеченные (!) требуют знаний и опыта в 3D моделировании и анимации 3D объектов выше среднего.

 

13. hmtoggle_plus1Параметр User.ltx отвечающий за игру в окне\полном экране

rs_fullscreen on\off

 

14. hmtoggle_plus1Наказать ГГ за провал задания

condlist_1 = {Условие провала} fail %Выполнение действий в случае провала%

 

15. hmtoggle_plus1С НИ Гарик на Юпитере с возможностью провождения ГГ по локациям

В файле configs\misc\simulation.ltx в секции [start_position_jupiter] параметр jup_b43_stalker_assistant_squad_sq должен равняться jup_a6.

В файле configs\misc\squad_descr_jupiter.ltx изменить секцию jup_b43_stalker_assistant_squad_sq на такую:

 

faction = stalker

npc = jup_b43_stalker_assistant

target_smart = jup_a6

spawn_point = jup_a6_actor_look

story_id = jup_b43_stalker_assistant_squad_sq

 

И наконец выдать инфопорцию pri_a16_stalker_guide_met

 

16. hmtoggle_plus1Во время диалога проигрывается звук

Звуковые файлы должны располагаться в папке sounds\characters_voice\dialogs и иметь точно такие-же названия что и фразы диалога, тогда они будут проигрываться автоматически. Работает ли такой метод для ЗП не знаю, но для ТЧ и ЧН работает

 

17. hmtoggle_plus1Как создать иконку для апгрейда

1. Сделай файл с иконками (на пример ui_actor_upgrades_5.dds) и размести его в директории textures\ui\.

2. Зарегистрируй файл в configs\external.ltx по обраазцу.

3. Добавь в файл configs\ui\textures_descr\ui_actor_upgrades.xml описание файла и текстур в нем:

 

<file name="ui\ui_actor_upgrades_5">

<texture id="ui_inGame5_upgrade_superpuper_1" x="0" y="0" width="90" height="44" />

</file>

 

где:

file name - путь (относительно папки textures\) и имя файла текстур без расширения,

texture - текстура иконки

ui_inGame5_upgrade_superpuper_1 - имя иконки,

x="0" y="0" - расположение левого верхнего угла иконки в текстуре,

width="90" height="44" - размер иконки.

 

4. Назначь иконку какому либо апгрейду параметром icon = ui_inGame5_upgrade_superpuper_1, в файле описания апгрейдов.

 

18. hmtoggle_plus1Добавляем в игру mp3 player

Из SGM мода понадобятся следующие файлы:

1. Конфиги:
oconfigs\ui\ui_mod_elements.xml
oconfigs\ui\ui_mod_elements_16.xml
oconfigs\ui\textures_descr\ui_mod_wnds.xml
2. 3d модель:
omeshes\dynamics\mod_items\mp3_player.ogf
3. Звуки
osounds\Бонусы
osounds\Веселая
osounds\Клубная
osounds\Саундтреки
osounds\Сталкерская
4. Текстуры:
otextures\new\new_bl.dds
otextures\new\new_mp3.dds
otextures\ui\ui_mod_wnds_1.dds
5. Скрипты:
oscripts\_g.script
oscripts\sgm_functions.script
oscripts\sgm_variables.script
oscripts\ui_mod_elements.script

 

Если переносите в другой мод, а не в чистую игру из файла _g.script придется по отдельности перенести недостающие функции.

 

Из Оригинальной игры (или мода) нужны файлы:

1. Конфиги:
oconfigs\misc\items.ltx
2. Скрипты:
oscripts\bind_stalker.script

 

Теперь в добавим объект МП3 плеер в игру, для этого добавим секцию в файл items.ltx

 

[mp3_player]:identity_immunities

GroupControlSection       = spawn_group

discovery_dependency           =    

$spawn            = "devices\quest_items\mp3_player"

$prefetch           = 32

class           = II_ANTIR

cform                           = skeleton

visual           = dynamics\mod_items\mp3_player.ogf

description                     = st_player_descr

inv_name                        = st_player

inv_name_short                  = st_player

inv_weight   = 0.05

inv_grid_width                  = 1

inv_grid_height                 = 1

inv_grid_x                      = 14

inv_grid_y                      = 34

cost    = 3200

eat_health                      = 0

eat_satiety                     = 0

eat_power                       = 0

eat_radiation                   = 0

wounds_heal_perc                = 0

eat_portions_num                = 1

animation_slot          = 4

hud                             = wpn_vodka_hud

 

Добавим обработку использования предмета в bind_stalker.script после строк:

 

if(obj) then

      local s_obj = alife():object(obj:id())

      if(s_obj) and (s_obj:section_name()=="drug_anabiotic") then

       xr_effects.disable_ui_only(db.actor, nil)

       level.add_cam_effector("camera_effects\\surge_02.anm", 10, false, "bind_stalker.anabiotic_callback")

       level.add_pp_effector("surge_fade.ppe", 11, false)

       give_info("anabiotic_in_process")

       _G.mus_vol = get_console():get_float("snd_volume_music")

       _G.amb_vol = get_console():get_float("snd_volume_eff")

       get_console():execute("snd_volume_music 0")

       get_console():execute("snd_volume_eff 0")

      end

end

 

 

добавим:

 

if obj~=nil then

               callbacks.on_use_item(obj)

end

 

Создадим файл скрипта callbacks.script следующего содержания:

 

function on_use_item(sect)

       local item_name=sect:section()

       if item_name=="mp3_player" then

          give_info("mp3_player_active")

       -- Добавлена начальная установка уровня громкости

       sgm_functions.write_variable("mp3_currert_volume",0.6)

          run_dynamic_element(ui_mod_elements.mp3_player(),true)

     end      

end

 

Для того чтобы работал таймер в плеере нужно в файле ui_mod_elements.script в функции mp3_update() добавить в начало:

 

if mp3_plays~=nil then

        mp3_length_position=string.format(math.floor(time_global()/1000))-mp3_last_position

end

 

И в файле bind_stalker.script в функции actor_binder:update(delta) добавить в начало:

 

ui_mod_elements.mp3_update()

 

Для ограничения на уровни громкости нужно в файле ui_mod_elements.script в функции mp3_player:btn_volume_minus() после:

 

sgm_functions.write_variable("mp3_currert_volume",sgm_functions.read_variable("mp3_currert_volume")-mp3_add_value)

 

добавить:

 

if sgm_functions.read_variable("mp3_currert_volume")~=nil and sgm_functions.read_variable("mp3_currert_volume")<0.0 then

         sgm_functions.write_variable("mp3_currert_volume",0.0)

      elseif sgm_functions.read_variable("mp3_currert_volume")~=nil and sgm_functions.read_variable("mp3_currert_volume")>1.0 then

         sgm_functions.write_variable("mp3_currert_volume",1.0)

end

 

И в функции mp3_player:btn_volume_plus() после:

 

sgm_functions.write_variable("mp3_currert_volume",sgm_functions.read_variable("mp3_currert_volume")+mp3_add_value)

 

добавить:

 

if sgm_functions.read_variable("mp3_currert_volume")~=nil and sgm_functions.read_variable("mp3_currert_volume")<0.0 then

         sgm_functions.write_variable("mp3_currert_volume",0.0)

      elseif sgm_functions.read_variable("mp3_currert_volume")~=nil and sgm_functions.read_variable("mp3_currert_volume")>1.0 then

         sgm_functions.write_variable("mp3_currert_volume",1.0)

end

 

Для того, чтобы все работало как следует нужно:

1. Начальную установку уровня громкости нужно перенести в какой либо скипт выполняющийся один раз при старте игры.

2. Описать в xml все текстовые переменные: название предмета, описание, названия кнопок и подсказки.

3. Сделать иконку плеера и зарегистрировать ее.

 

19. hmtoggle_plus1Алгоритм замены анимации левого затвора на правый

Повернуть затвор в нужное положение не трудно, с анимациями гораздо сложнее еще потому что нужно изменить анимации не только для оружия но и для рук (при определенных манипуляциях с суставом затвора возможно изменять придется только анимации рук, а анимации оружия останутся прежними).

 

"Отзеркалить" модель оружия, для правильного расположения затвора просто (на примере абакана):

1. Запустить MilkShape 3D

2. Импортировать нужную модель из wpn_abakan_hud.ogf

3. Выбрать Tools/Mirror All.../Mirror Left<->Right

4. Подогнать сустав затвора таким образом, чтобы его положение не отличалось от положения в оригинальном оружии (тогда по идее оригинальные анимации оружия будут работать корректно)

5. Экспортировать модель в wpn_abakan_hud_r.object

6. Запустить SDK 0.7 Actor Editor

7. Загрузить модель wpn_abakan_hud_r.object

8. Подключить файл анимаций модели *.omf (нужно иметь готовый для правого затвора или сделать самому)

9. Экспортировать в wpn_abakan_hud_r.ogf

 

Добавить правозатворные анимации для моделей рук:

1. Для начала нужно преобразовать все худ модели рук из *.ogf в *.object (файлы лежат в meshes\dynamics\weapons\wpn_hand) при помощи конвертора от Бардака.

2. Запустить SDK 0.7 Actor Editor

3. Загрузить модель *.object

4. Подключить файл анимаций модели *.omf (нужно иметь готовый для правого затвора или сделать самому)

5. Экспортировать в *.ogf

 

Для редактирования анимаций оружия и рук в MilkShape 3D нужно:

1. Извлечь нужную анимацию оружия по ее имени из файла wpn_abakan_hud_animation.omf при помощи конвертора от Бардака в файл *.skl

2. Извлечь нужную анимацию рук по ее имени из файла wpn_hand_abakan_hud_animation.omf в файл *.skl

3. Импортировать модель оружия + импортировать анимацию оружия из *.skl (при необходимости синхронизации оружия с руками + импортировать модель рук + импортировать анимацию рук из *.skl)

4. Переключаясь между ключевыми кадрами отредактировать положение суставов (joint) в режиме анимации (требуется навык художника-аниматора)

5. Экспортировать анимацию в файл *.skl

 

Для сборки правозатворных анимаций файл *.omf нужно:

1. Запустить SDK 0.7 Actor Editor

2. Открыть файл модели оружия или рук *.object

3. Подключить нужные анимации из *.skl и/или *.skls файлов, отредактировать их названия взяв за основу стандартные и добавив в конец например "_right"

4. Експортироватьанимации в файл *.omf

 

Не забыть отредактировать имена анимаций в файле конфингурации оружия, точку вылета гильз и направление вылета (shell_point, shell_dir)

 

20. hmtoggle_plus1Внимание! О переходах

В подземных уровнях нет выброса. Поэтому если сверху начнется выброс, то ГГ когда будет вылазить из локации будет помирать от выброса (хоть он и будет ждать его окончания). Обойти это можно если в зоне levelChanger'a будет укрытие, или же зарегистрировать локацию для выброса со всеми вытекающими последствиями

 

21. hmtoggle_plus1ACDC разбор по локациям

ACDC разбирает данные по локациям посредством геймвертексов (gvid). В зависимости от версии таблица с гвидами может храниться в файлах: acdccop.pl, acdc_levels_info.cfg или stkutils/level.pm

 

Вот пример добавления одной локации в таблицу:

 

use constant levels_info => (

  { gvid0 => 1179, }, -- верхний gvid болот + 1, у каждой локи свой

   { gvid0 => 934,     name => 'marsh' },

   { gvid0 => 883,        name => 'jupiter_underground' },

   { gvid0 => 857,        name => 'labx8' },

   { gvid0 => 666,        name => 'pripyat' },

   { gvid0 => 317,        name => 'jupiter' },

   { gvid0 => 0,        name => 'zaton' },

 

22. hmtoggle_plus1Не отображается иконка типа патронов в описании

В движке ЗП стоит ограничение на типы патронов оружия, у одного ствола может быть только 2 вида патронов