Данный материал принадлежит сайту "Летописи Тамриэля" (TES.AG.RU) - Копия для печати

TES4 Construction Set
HTTP_HOST=tes.ag.ru HTTP_X_REAL_IP=62.210.113.42 HTTP_X_FORWARDED_FOR=62.210.113.42 HTTP_CONNECTION=close HTTP_REFERER=http://tes.ag.ru/cs/tes4cs/UncleanDialogueRus.shtml HTTP_USER_AGENT=Wget/1.19.4 (linux-gnu) HTTP_ACCEPT=*/* HTTP_ACCEPT_ENCODING=identity PATH=/sbin:/usr/sbin:/bin:/usr/bin SERVER_SIGNATURE= SERVER_SOFTWARE=Apache SERVER_NAME=tes.ag.ru SERVER_ADDR=10.40.0.223 SERVER_PORT=80 REMOTE_ADDR=10.40.0.15 DOCUMENT_ROOT=/sites/tes.ag.ru/htdocs [email protected] SCRIPT_FILENAME=/sites/tes.ag.ru/htdocs/cs/tes4cs/UncleanDialogueRus.shtml REMOTE_PORT=48626 GATEWAY_INTERFACE=CGI/1.1 SERVER_PROTOCOL=HTTP/1.0 REQUEST_METHOD=GET QUERY_STRING=printcopy REQUEST_URI=/cs/tes4cs/UncleanDialogueRus.shtml?printcopy SCRIPT_NAME=/cs/tes4cs/UncleanDialogueRus.shtml DATE_LOCAL=Friday, 04-Oct-2019 04:24:40 MSK DATE_GMT=Friday, 04-Oct-2019 01:24:40 GMT LAST_MODIFIED=Monday, 16-Jul-2007 18:48:08 MSD DOCUMENT_URI=/cs/tes4cs/UncleanDialogueRus.shtml USER_NAME=<unknown> DOCUMENT_NAME=UncleanDialogueRus.shtml QUERY_STRING_UNESCAPED=printcopy section_title=TES4 Construction Set sub_title= page_title='Грязный' диалог sub_file=empty printcopy=yes
~ 'Грязный' диалог ~

"Грязный" диалог

Между модами Обливиона, в отличие от Морровинда, редко возникает несовместимость; однако она может проявиться из-за конфликтов диалогов. Конфликты диалогов всегда возникают из-за "грязных" диалогов в обоих модах. Поэтому очень важно следить за FormID диалоговых строк.

Причины

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

Quest Name  Info                            FormID 
----------------------------------------------------
EmfridDemo  What is it now?                 00028a25
EmfridDemo  Good to see you again.(...)     00028A26
Crime       Feeding Time is over (...)      000BF16B

Когда вы добавляете новую строку в начало списка, вы получите следующую картину (строка, отмеченная *, хранится в esp-файле вашего мода):

Quest Name  Info                            FormID 
----------------------------------------------------
EmfridDemo  * NEW Line                      01xxxxxx
EmfridDemo  What is it now?                 00028a25
EmfridDemo  Good to see you again.(...)     00028A26
Crime       Feeding Time is over (...)      000BF16B

Когда вы добавляете новую строку в середину списка, вы получите что-либо вроде:

Quest Name  Info                            FormID 
----------------------------------------------------
EmfridDemo  * What is it now?               00028a25
EmfridDemo  * NEW Line                      01xxxxxx
EmfridDemo  Good to see you again.(...)     00028A26
Crime       Feeding Time is over (...)      000BF16B

Теперь обе строки хранятся в esp-файле, и CS сообщит об ошибке при попытке загрузить два мода с идентификатором 00028a25. Тем не менее, игра разрешит эту проблему.

Все гораздо хуже, когда вы используете "Copy", а не "New".

Quest Name  Info                            FormID 
----------------------------------------------------
EmfridDemo  What is it now?                 00028a25
EmfridDemo  * Good to see you again.(...)   00028A26
EmfridDemo  Good to see you again.(...)     01xxxxxx
Crime       Feeding Time is over (...)      000BF16B

В CS есть небольшой баг: пока вы не сохраните мод и не откроете его заново, старая строка будет отображаться измененной, в то время как новая строка (01xxxxxx) – исходной. Если вы измените текст строки 00028A26, вы измените в своем моде оригинальную строку, которую менять не собирались.

Следствия

Незначительно "грязный" диалог

Рассмотрим два мода, добавляющих по две диалоговых строки в GREETING. Положим, что мод A старше мода B.

Мод A:

Quest Name  Info                            FormID 
----------------------------------------------------
EmfridDemo  * What is it now?               00028a25
ModA        * I'm line one of Mod "A"       01xxxxx1
ModA        * I'm line two of Mod "A"       01xxxxx2
EmfridDemo  Good to see you again.(...)     00028A26
Crime       Feeding Time is over (...)      000BF16B

Мод B:

Quest Name  Info                            FormID 
----------------------------------------------------
EmfridDemo  * What is it now?               00028a25
ModB        * I'm line one of Mod "B"       01xxxxx1
ModB        * I'm line two of Mod "B"       01xxxxx2
EmfridDemo  Good to see you again.(...)     00028A26
Crime       Feeding Time is over (...)      000BF16B

Это мы назовем "незначительно грязным диалогом": "грязным", поскольку он содержит строки из оригинального Обливиона, а "незначительно", поскольку никакого вреда от них нет.

Объединение этих двух модов в игре приведет к следующему результату:

Quest Name  Info                            FormID 
----------------------------------------------------
EmfridDemo  * What is it now?               00028a25
ModB        * I'm line one of Mod "B"       02xxxxx1
ModA        * I'm line one of Mod "A"       01xxxxx1
ModA        * I'm line two of Mod "A"       01xxxxx2
ModB        * I'm line two of Mod "B"       02xxxxx2
EmfridDemo  Good to see you again.(...)     00028A26
Crime       Feeding Time is over (...)      000BF16B

Оба мода содержат незначительно "грязные" диалоги, но в игре строка с идентификатором 00028a25 сохраняется неизменной. Впрочем, CS сообщит о конфликте.

"Грязный" диалог

Теперь предположим, что в моде A новая строка была создана с помощью функции "Copy", а также была допущена рассмотренная в пункте "Причины" ошибка.

Мод A:

Quest Name  Info                            FormID 
----------------------------------------------------
EmfridDemo  * What is it now?               01xxxxx1
ModA        * I'm line one of Mod "A"       00028a25
ModA        * I'm line two of Mod "A"       01xxxxx2
EmfridDemo  Good to see you again.(...)     00028A26
Crime       Feeding Time is over (...)      000BF16B

Обратите внимание, что строка "line one of Mod "A"" – измененная строка оригинального Обливиона с идентификатором 00028a25, в то время как строка "What is it now?" содержит текст из оригинального Обливиона, хотя принадлежит моду A. Этот мод содержит "грязный" диалог.

Мод B содержит незначительно "грязный" диалог из предыдущего примера:

Quest Name  Info                            FormID 
----------------------------------------------------
EmfridDemo  * What is it now?               00028a25
ModB        * I'm line one of Mod "B"       01xxxxx1
ModB        * I'm line two of Mod "B"       01xxxxx2
EmfridDemo  Good to see you again.(...)     00028A26
Crime       Feeding Time is over (...)      000BF16B

Мод C содержит только чистые диалоги:

Quest Name  Info                            FormID 
----------------------------------------------------
EmfridDemo  What is it now?                 00028a25
ModC        * I'm line one of Mod "C"       01xxxxx1
ModC        * I'm line two of Mod "C"       01xxxxx2
EmfridDemo  Good to see you again.(...)     00028A26
Crime       Feeding Time is over (...)      000BF16B

Рассмотрим возможные результаты комбинаций двух "грязных" диалогов.

1. Мод B (незначительно "грязный") старше мода A ("грязного"):

Quest Name  Info                            FormID 
----------------------------------------------------
EmfridDemo  * What is it now?               02xxxxx1
ModA        * I'm line one of Mod "A"       00028a25
ModB        * I'm line one of Mod "B"       01xxxxx1
ModB        * I'm line two of Mod "B"       01xxxxx2
ModA        * I'm line two of Mod "A"       02xxxxx2
EmfridDemo  Good to see you again.(...)     00028A26
Crime       Feeding Time is over (...)      000BF16B

К счастью, ни одна из строк модов не пропала, хотя оригинальная строка с идентификатором 00028a25 оказалась модифицированной.

2. Мод A ("грязный") старше мода B (незначительно "грязного"):

Quest Name  Info                            FormID 
----------------------------------------------------
EmfridDemo  * What is it now?               02xxxxx1
EmfridDemo  * What is it now?               00028a25
ModB        * I'm line one of Mod "B"       01xxxxx1
ModA        * I'm line two of Mod "A"       02xxxxx2
ModB        * I'm line two of Mod "B"       01xxxxx2
EmfridDemo  Good to see you again.(...)     00028A26
Crime       Feeding Time is over (...)      000BF16B

В этом случае мод B переписывает измененную строку с идентификатором 00028a25, и строка с текстом из мода A пропадает.

Рассмотрим результаты комбинаций "грязного" и чистого диалогов. Вне зависимости от старшинства модов A и C никакого ущерба модам не наносится, все строки сохраняются.

Мод C старше мода A:

Quest Name  Info                            FormID 
----------------------------------------------------
EmfridDemo  * What is it now?               01xxxxx1
ModA        * I'm line one of Mod "A"       00028a25
ModA        * I'm line two of Mod "A"       01xxxxx2
ModC        * I'm line one of Mod "C"       02xxxxx1
ModC        * I'm line two of Mod "C"       02xxxxx2
EmfridDemo  Good to see you again.(...)     00028A26
Crime       Feeding Time is over (...)      000BF16B

Мод A старше мода C:

Quest Name  Info                            FormID 
----------------------------------------------------
EmfridDemo  * What is it now?               01xxxxx1
ModA        * I'm line one of Mod "A"       00028a25
ModC        * I'm line one of Mod "C"       02xxxxx1
ModA        * I'm line two of Mod "A"       01xxxxx2
ModC        * I'm line two of Mod "C"       02xxxxx2
EmfridDemo  Good to see you again.(...)     00028A26
Crime       Feeding Time is over (...)      000BF16B

Выводы

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

По этой причине мод, изменяющий строки из оригинального Обливиона, считается "грязным", даже если остаются копии этих строк и сохраняется функциональность диалогов.

По этой причине даже мод с незначительно "грязными" диалогами считается "грязным", поскольку при комбинации с "грязным" он нарушает функциональность диалогов.

Рекомендуется использовать окно "Quest", а не окно "Dialogue" ("Filtered Dialogue") для предотвращения ошибок.

Всегда обращайте внимание на идентификатор FormID измененной строки: строка с идентификатором, начинающимся на 00, принадлежит оригинальному Обливиону. Если такая строка у вас отмечена *, вы создали незначительно "грязный" диалог.

Если у вас есть "грязные" диалоги, очистите мод.

Помните: даже если вы используете другие "грязные" моды, они не повредят ваш чистый мод.

Оригинал статьи: Unclean Dialogue.

Перевод: Олег Н. Петров aka Олаурон Мор-Галад



© 1998—2013 Kanobu Network, OOO «Рамблер-Игры».
Также см. дополнительную правовую информацию/legal information об используемых материалах и торговых марках.
Ведущий сайта - Михаил Требин. Идея сайта - Сергей Горелов. Создатель сайта - Алексей Тихомиров.