Восстановление Сидоровича — различия между версиями

Материал из MODFAQ.RU — моддинг классического S.T.A.L.K.E.R., TES и Fallout
Перейти к: навигация, поиск
(Новая страница: «__NOTOC__ {| class="wikitable" style="float:right; margin-left:0.8em; clear:right; text-align: center; font-size:12px; width: 300px;" |- | colspan=2 style="font-s…»)
 
(Перезагрузил картинки)
 
(не показаны 3 промежуточные версии этого же участника)
Строка 15: Строка 15:
 
|-
 
|-
 
| '''Необходимый софт'''
 
| '''Необходимый софт'''
| [[:Категория:Текстовые_редакторы|Текстовый редактор]], [[X-Ray SDK CoP]]
+
| [[:Категория:Текстовые_редакторы|Текстовый редактор]], [[X-Ray SDK 0.7]]
 
|-
 
|-
 
| '''Необходимые файлы'''
 
| '''Необходимые файлы'''
Строка 38: Строка 38:
  
 
== Скрипты ==
 
== Скрипты ==
Восстановить секцию в конфигах недостаточно. Если попробовать заспавнить Сидоровича в '''LE''', произойдет ошибка: [[xrSDK_LE:Can't create entity]]
+
Восстановить секцию в конфигах недостаточно. Если попробовать заспавнить Сидоровича в '''LE''', произойдет ошибка: [[Can't create entity]]
  
 
Причина в том, что в секции Сидоровича <code>[m_trader]</code>, в параметре <code>class</code> указан несуществующий скриптовый класс <code>AI_TRD_S</code>.
 
Причина в том, что в секции Сидоровича <code>[m_trader]</code>, в параметре <code>class</code> указан несуществующий скриптовый класс <code>AI_TRD_S</code>.
Строка 65: Строка 65:
 
{| class="wikitable" style="float:left; margin-right:0.8em; clear:left; width: 250px;"
 
{| class="wikitable" style="float:left; margin-right:0.8em; clear:left; width: 250px;"
 
|-
 
|-
| style="text-align:center" |<span class="plainlinks">[https://images.gameru.net/image/7760b78e7af9eab.png.html https://images.gameru.net/thumb/7760b78e7af9eab.png]</span>
+
| style="text-align:center" |<span class="plainlinks">[https://postimg.cc/bDsmT289 https://i.postimg.cc/bDsmT289/7760b78e7af9eab.png]</span>
 
|-
 
|-
 
| Настройки спавна Сидоровича в X-Ray SDK CS
 
| Настройки спавна Сидоровича в X-Ray SDK CS
Строка 88: Строка 88:
 
   </character>
 
   </character>
 
</syntaxhighlight>
 
</syntaxhighlight>
Если указать неверно, может произойти 1-ый вариант вылета: [[xr:Line 112]]
+
Если указать неверно, может произойти 1-ый вариант вылета: [[xml_str_id_loader.h]]
  
  
Строка 127: Строка 127:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Если указать неверно, может произойти 2-ой вариант вылета: [[xr:Line 112]]
+
Если указать неверно, может произойти 2-ой вариант вылета: [[xml_str_id_loader.h]]
  
 
[[Категория:F.A.Q.]][[Категория:Игровые архивы]][[Категория:Конфиги]][[Категория:Скрипты]][[Категория:X-Ray SDK]][[Категория:Level Editor]]
 
[[Категория:F.A.Q.]][[Категория:Игровые архивы]][[Категория:Конфиги]][[Категория:Скрипты]][[Категория:X-Ray SDK]][[Категория:Level Editor]]

Текущая версия на 21:18, 26 июня 2022

Восстановление Сидоровича

Автор 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, нужно пояснить некоторые моменты.

7760b78e7af9eab.png
Настройки спавна Сидоровича в 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