Как восстановить Сидоровича

Материал из Modders-wiki - Библиотека знаний модмейкеров S.T.A.L.K.E.R.
Перейти к: навигация, поиск
Как восстановить Сидоровича
Sidorovich CS render.png
Описание
Авторaka_sektor
Тип статьируководство
АктуальностьЗП
Необходимый софтТекстовый редактор, X-Ray SDK CoP
Необходимые файлыm_person.ltx, stalkers.ltx, class_registrator.script, se_stalker.script, game_story_ids.ltx, npc_profile.xml, system.ltx, character_desc_*.xml

Как известно, персонаж Сидоровича в Зове Припяти отсутствует. Если вы хотите его вернуть, просто так добавить его не получится, т.к. после Чистого Неба он был вырезан. Однако, при должных знаниях, восстановить его не составляет особого труда.

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

Конфиги

Для начала, скопируйте из игровых архивов ЧН, файл m_person.ltx

Путь: gamedata\configs\creatures

И поместите по тому же пути, но уже в директории ЗП.

Далее, необходимо подключить файл m_person.ltx к игре.

Для этого в той же папке откройте файл stalkers.ltx любым текстовым редактором, и запишите в него строчку:

#include "m_person.ltx"

Скрипты

Восстановить секцию в конфигах недостаточно. Если попробовать заспавнить Сидоровича в LE, произойдет ошибка: xrSDK_LE:Can't create entity

Причина в том, что в секции Сидоровича [m_trader], в параметре class указан несуществующий скриптовый класс AI_TRD_S.

Не существует он потому, что в ЗП был вырезан из скриптов.

Откройте файл class_registrator.script, и запишите в него следующую строку:

	cs_register	(object_factory, "CAI_Trader", 					"se_stalker.se_trader",					"AI_TRD_S", 		"script_trader")

Далее, откройте файл se_stalker.script, и запишите в него следующую функцию:

class "se_trader" (cse_alife_trader)
function se_trader:__init (section) super (section)
end
function se_trader:keep_saved_data_anyway()
	return true
end

Готово! Теперь Сидорович будет спавниться.

X-Ray SDK

По поводу того, как правильно заспавнить Сидоровича в Level Editor, нужно пояснить некоторые моменты.

Настройки спавна Сидоровича в X-Ray SDK CS

В графе Custom Data задается путь к файлу с логикой Сидоровича (воспроизведение анимаций и звука; торговля и т.д.). Например:

[logic]
cfg = scripts\escape\esc_trader.ltx

Путь указывается относительно директории gamedata\configs

В графе Story ID задается имя идентификатора из gamedata\configs\game_story_ids.ltx

В графе npc profile задается имя секции из файла gamedata\configs\gameplay\npc_profile.xml

Эта секция выглядит так:

  <character id="escape_trader">
	<class>Trader</class>
	<specific_character>escape_trader</specific_character>
  </character>

Если указать неверно, может произойти 1-ый вариант вылета: xr:Line 112


Строка:

<specific_character>escape_trader</specific_character>

Указывает имя секции, в файле character_desc_escape.xml, который подключен в параметре specific_characters_files, секции [profiles], файла gamedata\configs\system.ltx.

Эта секция выглядит так:

  <specific_character id="escape_trader" no_random = "1">
    <name>escape_trader_name</name>
    <icon>ui_npc_u_trader_1</icon>
    <bio>escape_trader_bio</bio>

    <class>trader</class>
    <community>trader</community>
    <visual>actors\stalker_trader\stalker_trader_1</visual>

    <rank>330</rank>
    <reputation>23</reputation>
    <money min="100000" max="100000" infinitive="1"/>
    <supplies>
      [spawn] \n
    </supplies>
#include "gameplay\character_criticals_4.xml"
    <start_dialog>esc_trader_meet</start_dialog>
<!-- #include "gameplay\character_dialogs.xml" -->
    <!-- <actor_dialog>esc_trader_about_zone</actor_dialog> -->
    <actor_dialog>esc_trader_community</actor_dialog>
    <actor_dialog>esc_trader_about_you</actor_dialog>
    <actor_dialog>esc_trader_about_situation</actor_dialog>
    <actor_dialog>esc_trader_about_questions</actor_dialog>
    <actor_dialog>esc_trader_about_other</actor_dialog>
    <actor_dialog>treasure_dialog</actor_dialog>
  </specific_character>

Если указать неверно, может произойти 2-ой вариант вылета: xr:Line 112