Полностью исправляет ошибку с зависанием диалогов, которая годами доставляла проблемы сообществу FO4.
Введение:
Вы заговариваете с NPC. Мышь и клавиатура перестают реагировать, варианты диалога не нажимаются, и вам приходится загружать сохранение. Это и есть «зависание диалога». В Fallout 4 каждому открытому элементу интерфейса присваивается определенный приоритет глубины (`depthPriority`). Некоторые оверлеи (например, всплывающий урон, счетчики крышек и другие HUD-виджеты) могут перекрывать меню диалога (`DialogueMenu`) и перехватывать ваш ввод.
Этот мод исправляет проблему прямо во время игры. Как только начинается разговор, он временно понижает приоритет таких оверлеев, позволяя меню диалога оставаться в фокусе. Всё возвращается в исходное состояние сразу после завершения беседы. Мод написан на C++ и реагирует мгновенно. Никаких скриптов, никаких изменений файлов игры и никакой зависимости от сохранений. (По умолчанию используется динамический режим, но в конфигурационном файле можно переключиться на статический).
*Примечание:* Поскольку в старой версии игры (OG / 1.10.163) отсутствует функция `AddTaskPermanent`, здесь был реализован альтернативный подход. Надеюсь, всё работает как надо.
Настройки в файле DialogueMenuFix.toml (открывать через обычный Блокнот или Notepad++): (все параметры уже выставлены как задумано автором мода)
# Настройки по умолчанию подобраны так, чтобы всё работало сразу из коробки.
# Обычно вам НЕ НУЖНО здесь ничего менять. Редактируйте только в том случае,
# если столкнулись с конкретным конфликтом модов.
# ----------------------------------------------------------------------------
# [Demotion] - Основное исправление (понижение приоритета). Оставьте включенным.
#
# Пока открыто окно диалога, HUD-меню, которые в противном случае перекрывали бы
# DialogueMenu, временно сдвигаются под него (их параметр depthPriority понижается),
# а затем восстанавливаются, когда разговор завершается.
# ----------------------------------------------------------------------------
[Demotion]
# Главный переключатель. true = включено (рекомендуется), false = выключено.
bEnabled = true
# Режим работы:
# 0 = динамический. Сканирует и понижает приоритет интерфейсов каждый кадр, пока
# открыт диалог, затем восстанавливает. Улавливает меню, появившиеся уже после
# начала разговора.
# 1 = статический. Сдвигает меню один раз при загрузке игры и больше не восстанавливает.
# Нулевая нагрузка на кадр, но безопасно только если все HUD-моды загружаются
# строго до того, как откроется первый диалог.
#
# Примечание для старой версии игры OG (1.10.163): динамический режим здесь работает
# иначе, чем на NG/AE. Если заметите странное поведение на OG, попробуйте статический режим (1).
bMode = 0
# Значение depthPriority, до которого опускается меню при понижении. Значение по умолчанию 5 (kHUD)
# удерживает его ниже DialogueMenu. Диапазон: от 0 до 20.
# (5=kHUD, 6=kStandard, 8=kPipboy, 10=kGameMessage, 11=kPauseMenu)
iDemoteTo = 5
# Понижаются только те меню, чей текущий depthPriority находится в этом диапазоне.
# Благодаря этому меню, которые оправданно должны быть сверху (пауза, терминалы), не затрагиваются.
# Диапазон: от 0 до 20.
iDemoteFromLow = 6
iDemoteFromHigh = 9
# Список исключений: названия меню через запятую, которые никогда не должны сдвигаться вниз.
# Учитывайте регистр символов, названия должны точно соответствовать внутренним именам игры.
# Используйте параметр bConsoleDump ниже, чтобы узнать точные названия.
# Пример: sWhitelist = MyCustomHUD, AnotherWidgetMenu
sWhitelist = PhotoMode, ScreenArcherMenu
# Если включено, при открытии консоли (клавиша ~) будет выводиться весь список активных меню —
# название каждого меню, его depthPriority, а также статус (будет ли оно сдвинуто/в белом списке/заблокировано).
# Используйте это, чтобы найти имя для sWhitelist, а затем отключите параметр.
bConsoleDump = true
# ----------------------------------------------------------------------------
# [Priority] - Альтернативное исправление. Пробуйте только в том случае, если
# режим [Demotion] не решил проблему с зависанием. Не включайте оба режима одновременно.
# Вместо понижения других меню, этот режим повышает собственный depthPriority у DialogueMenu,
# пока активен диалог.
# ----------------------------------------------------------------------------
[Priority]
# Главный переключатель. По умолчанию выключено.
bEnabled = false
# 0 = динамический (повышает при активности, возвращает исходный после). 1 = статический (задается один раз).
bMode = 0
# Значение depthPriority, присваиваемое DialogueMenu во время диалога (динамический режим). Диапазон: 0-20.
iDynamicPriority = 10
# Значение depthPriority, присваиваемое DialogueMenu насовсем (статический режим). Диапазон: 0-20.
iStaticPriority = 10
# Значение depthPriority, возвращаемое для DialogueMenu после завершения разговора (динамический режим).
iRestorePriority = 6
Требования:
Fallout 4 OG (1.10.163), NG (1.10.984), AE (1.11.221)
Address Library for F4SE Plugins
Fallout 4 Script Extender (F4SE)
Установка:
Установить архив через менеджеры модов или вручную. Активация не требуется.
У пользователей OG (1.10.163) в журнале F4SE может отображаться сообщение о том, что плагин не загружен или отсутствует информация о версии. Это косметический дефект. Плагин работает нормально. Можете игнорировать это сообщение.
Введение:
Вы заговариваете с NPC. Мышь и клавиатура перестают реагировать, варианты диалога не нажимаются, и вам приходится загружать сохранение. Это и есть «зависание диалога». В Fallout 4 каждому открытому элементу интерфейса присваивается определенный приоритет глубины (`depthPriority`). Некоторые оверлеи (например, всплывающий урон, счетчики крышек и другие HUD-виджеты) могут перекрывать меню диалога (`DialogueMenu`) и перехватывать ваш ввод.
Этот мод исправляет проблему прямо во время игры. Как только начинается разговор, он временно понижает приоритет таких оверлеев, позволяя меню диалога оставаться в фокусе. Всё возвращается в исходное состояние сразу после завершения беседы. Мод написан на C++ и реагирует мгновенно. Никаких скриптов, никаких изменений файлов игры и никакой зависимости от сохранений. (По умолчанию используется динамический режим, но в конфигурационном файле можно переключиться на статический).
*Примечание:* Поскольку в старой версии игры (OG / 1.10.163) отсутствует функция `AddTaskPermanent`, здесь был реализован альтернативный подход. Надеюсь, всё работает как надо.
Настройки в файле DialogueMenuFix.toml (открывать через обычный Блокнот или Notepad++): (все параметры уже выставлены как задумано автором мода)
# Настройки по умолчанию подобраны так, чтобы всё работало сразу из коробки.
# Обычно вам НЕ НУЖНО здесь ничего менять. Редактируйте только в том случае,
# если столкнулись с конкретным конфликтом модов.
# ----------------------------------------------------------------------------
# [Demotion] - Основное исправление (понижение приоритета). Оставьте включенным.
#
# Пока открыто окно диалога, HUD-меню, которые в противном случае перекрывали бы
# DialogueMenu, временно сдвигаются под него (их параметр depthPriority понижается),
# а затем восстанавливаются, когда разговор завершается.
# ----------------------------------------------------------------------------
[Demotion]
# Главный переключатель. true = включено (рекомендуется), false = выключено.
bEnabled = true
# Режим работы:
# 0 = динамический. Сканирует и понижает приоритет интерфейсов каждый кадр, пока
# открыт диалог, затем восстанавливает. Улавливает меню, появившиеся уже после
# начала разговора.
# 1 = статический. Сдвигает меню один раз при загрузке игры и больше не восстанавливает.
# Нулевая нагрузка на кадр, но безопасно только если все HUD-моды загружаются
# строго до того, как откроется первый диалог.
#
# Примечание для старой версии игры OG (1.10.163): динамический режим здесь работает
# иначе, чем на NG/AE. Если заметите странное поведение на OG, попробуйте статический режим (1).
bMode = 0
# Значение depthPriority, до которого опускается меню при понижении. Значение по умолчанию 5 (kHUD)
# удерживает его ниже DialogueMenu. Диапазон: от 0 до 20.
# (5=kHUD, 6=kStandard, 8=kPipboy, 10=kGameMessage, 11=kPauseMenu)
iDemoteTo = 5
# Понижаются только те меню, чей текущий depthPriority находится в этом диапазоне.
# Благодаря этому меню, которые оправданно должны быть сверху (пауза, терминалы), не затрагиваются.
# Диапазон: от 0 до 20.
iDemoteFromLow = 6
iDemoteFromHigh = 9
# Список исключений: названия меню через запятую, которые никогда не должны сдвигаться вниз.
# Учитывайте регистр символов, названия должны точно соответствовать внутренним именам игры.
# Используйте параметр bConsoleDump ниже, чтобы узнать точные названия.
# Пример: sWhitelist = MyCustomHUD, AnotherWidgetMenu
sWhitelist = PhotoMode, ScreenArcherMenu
# Если включено, при открытии консоли (клавиша ~) будет выводиться весь список активных меню —
# название каждого меню, его depthPriority, а также статус (будет ли оно сдвинуто/в белом списке/заблокировано).
# Используйте это, чтобы найти имя для sWhitelist, а затем отключите параметр.
bConsoleDump = true
# ----------------------------------------------------------------------------
# [Priority] - Альтернативное исправление. Пробуйте только в том случае, если
# режим [Demotion] не решил проблему с зависанием. Не включайте оба режима одновременно.
# Вместо понижения других меню, этот режим повышает собственный depthPriority у DialogueMenu,
# пока активен диалог.
# ----------------------------------------------------------------------------
[Priority]
# Главный переключатель. По умолчанию выключено.
bEnabled = false
# 0 = динамический (повышает при активности, возвращает исходный после). 1 = статический (задается один раз).
bMode = 0
# Значение depthPriority, присваиваемое DialogueMenu во время диалога (динамический режим). Диапазон: 0-20.
iDynamicPriority = 10
# Значение depthPriority, присваиваемое DialogueMenu насовсем (статический режим). Диапазон: 0-20.
iStaticPriority = 10
# Значение depthPriority, возвращаемое для DialogueMenu после завершения разговора (динамический режим).
iRestorePriority = 6
Требования:
Fallout 4 OG (1.10.163), NG (1.10.984), AE (1.11.221)
Address Library for F4SE Plugins
Fallout 4 Script Extender (F4SE)
Установка:
Установить архив через менеджеры модов или вручную. Активация не требуется.
У пользователей OG (1.10.163) в журнале F4SE может отображаться сообщение о том, что плагин не загружен или отсутствует информация о версии. Это косметический дефект. Плагин работает нормально. Можете игнорировать это сообщение.
Основной архив (167 kb)Сервер №1




