Восстановление Сидоровича
Восстановление Сидоровича | |
Автор | aka_sektor |
Тип статьи | руководство |
Актуальность | ЗП |
Необходимый софт | Текстовый редактор, X-Ray SDK 0.7 |
Необходимые файлы | 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, произойдет ошибка: 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-ый вариант вылета: xml_str_id_loader.h
Строка:
<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-ой вариант вылета: xml_str_id_loader.h