Проблема в BG2 ("режим диалога")

Копошимся во внутренностях игр и даем выход своему креативу...
Аватара пользователя
Austin
Переводчик
Переводчик
Сообщения: 985
Зарегистрирован: 19 май 2010, 19:50

Проблема в BG2 ("режим диалога")

Сообщение Austin »

Нужна помощь. Столкнулся с такой же проблемой "заикания", как описывалась тут: http://forums.aerie.ru/viewtopic.php?f= ... 6&start=15.
Но там она была с Йошимо, а у меня возникла с Имоен в ToB. Симптомы те же: ГГ и Имоен навечно "зависают" в режиме диалога - они поворачиваются друг к другу и двигаются рывками, сам курсор дергается, не получается сохраняться и отдыхать. Исчезает проблема только в режиме боя, после него снова возвращается. Если убрать из партии Имоен - проблема исчезает, но это не выход.

Возможно, дело в моде Imoen Romance или Imoen Friendship - у меня стоят оба, и в игре в этот момент должен запуститься какой-то диалог с Имоен, но не запускается и "режим диалога" зависает. Также у меня стоят Banter Packs и IEP Banters.

Но у других такая же проблема была и без всяких модов.
Вот тут - с Дорном:
https://forums.beamdog.com/discussion/7 ... logue-mode
https://forums.beamdog.com/discussion/7 ... n-in-bg-ee
Вот тут - с Аэри: https://forums.beamdog.com/discussion/2 ... logue-loop
Вот тут - с Виконией: https://forums.beamdog.com/discussion/7 ... it-fixable
Вот тут - с Корганом: http://www.shsforums.net/topic/25953-we ... ing-at-pc/
И т.д.

Во всех этих случаях проблема крылась в глобальной переменной и решалась ее сменой через консоль или исправлением сценария, но с какой именно переменной в данном случае?
Подскажите, пожалуйста, кто знает - как бы посмотреть в ресурсах игры, какой именно диалог пытается запуститься в данный момент или пытался (по факту)?
Прикладываю сейв, сделанный прямо перед началом этого глюка (за минуту до него)
https://arcanecoast.ru/mods - Список модов ArcaneCoast

Аватара пользователя
tipun
Переводчик
Переводчик
Сообщения: 571
Зарегистрирован: 27 май 2016, 06:57

Re: Проблема в BG2 ("режим диалога")

Сообщение tipun »

Ну, только по сейву ничего не скажешь. Это надо смотреть скрипты и диалоги Имоен. Сравнить значения переменных в сейве. Тут, скорее всего из скрипта запускается диалог без изменения значения переменной в скрипте, а в диалоге нет подходящих условий с текущим значением переменной. Или же есть, но мешает проверка еще чего-то.

Аватара пользователя
Austin
Переводчик
Переводчик
Сообщения: 985
Зарегистрирован: 19 май 2010, 19:50

Re: Проблема в BG2 ("режим диалога")

Сообщение Austin »

Я нашел диалог, который должен запуститься, но глючит. Осталось найти причину и устранить ее. Возможно, конфликт с Ascension, так как глючный диалог задействован и там, и там, но в разном виде. В Ascension это файл bimoen25.d, в Имоен-романсе это файл bhaaltalks.d. Номер диалога и там, и там - 91.

Итак, не запускается и виснет вторая беседа с Имоен о силах Баала. После смерти Громнира добавляется таймер отсчета времени (~RealSetGlobalTimer("IRTBhaalTalkTimer","GLOBAL",900)~), и после истечения 15 минут должен запуститься следующий диалог:

1) Из dialog.tlk берется фраза Имоен про силы Баала:
"I've, um... been developing some more abilities. Bhaal abilities, like your own. I don't mean to; they just come... although I don't think they're very strong."

2) Ответы ГГ должны подставиться уже из Imoen Romance по такому коду (bhaaltalks.d):
ADD_STATE_TRIGGER BIMOEN25 91 ~Dead("Gromnir")~
ADD_TRANS_TRIGGER BIMOEN25 91 ~Global("ImoenRomanceActive","GLOBAL",0)~ DO 1 3

ADD_TRANS_ACTION BIMOEN25
BEGIN 91 END
BEGIN 0 1 2 3 END
~RealSetGlobalTimer("IRTBhaalTalkTimer","GLOBAL",2700)~

EXTEND_TOP BIMOEN25 91
++ @45 DO ~SetGlobal("ExpBImoen10","LOCALS",2) RealSetGlobalTimer("IRTBhaalTalkTimer","GLOBAL",2700)~ + 91new
++ @46 DO ~SetGlobal("ExpBImoen10","LOCALS",2) RealSetGlobalTimer("IRTBhaalTalkTimer","GLOBAL",2700)~ + 92
Но происходит "заикание" и данный диалог не запускается вообще.

Вот скрипт с проверками для запуска этого диалога (IMOE25.baf):
// talks 2
IF
RealGlobalTimerExpired("IRTBhaalTalkTimer","GLOBAL")
Global("ExpBImoen10","LOCALS",1)
!ActuallyInCombat()
See(Player1)
InParty("Imoen2")
Dead("Gromnir")
!StateCheck(Player1,CD_STATE_NOTVALID)
!StateCheck(Myself,CD_STATE_NOTVALID)
THEN
RESPONSE #100
Interact(Player1)
END
Пытаюсь пока сам разобраться, но знаний не хватает... Если кто-то подскажет, в чем затык, буду благодарен.
https://arcanecoast.ru/mods - Список модов ArcaneCoast

Аватара пользователя
Austin
Переводчик
Переводчик
Сообщения: 985
Зарегистрирован: 19 май 2010, 19:50

Re: Проблема в BG2 ("режим диалога")

Сообщение Austin »

Есть!!! Я исправил проблему с этим диалогом и заиканием! Все-таки дело оказалось в конфликте Имоен Романс и Ascension! В файле bimoen25.d в Ascension была дополнительная проверка для этого диалога - он должен был запуститься при соблюдении вот этого:
ADD_STATE_TRIGGER bimoen25 91 ~Global("YagaShuraHeart1","GLOBAL",2)~
А в Имоен-Романс этот диалог должен запуститься через 15 минут после смерти Громнира. Естественно, никакого сердца Яга-Шуры у игрока на тот момент быть не может и значение переменной не совпадает. Соответственно, диалог пытался запуститься, но не мог! Я удалил эту проверку, переустановил Ascension и все заработало как надо!

Теперь надо подумать, как бы убрать этот конфликт в будущем. Напишу авторам Ascension, чтобы переписали или убрали эту проверку, чтобы проблема не возникала.
https://arcanecoast.ru/mods - Список модов ArcaneCoast

Аватара пользователя
tipun
Переводчик
Переводчик
Сообщения: 571
Зарегистрирован: 27 май 2016, 06:57

Re: Проблема в BG2 ("режим диалога")

Сообщение tipun »

Похоже, я правильно подсказал, в какую сторону копать ;)

Аватара пользователя
Austin
Переводчик
Переводчик
Сообщения: 985
Зарегистрирован: 19 май 2010, 19:50

Re: Проблема в BG2 ("режим диалога")

Сообщение Austin »

tipun писал(а):
09 май 2020, 20:12
Похоже, я правильно подсказал, в какую сторону копать ;)
Да, спасибо!! Я после этого как раз и полез в скрипт Имоен, подумал, в какой именно момент возник баг, и оказалось, что после смерти Громнира. Стал искать, какой диалог привязан к времени его смерти, и все встало на свои места ))

Написал в тему про баги Ascension, попросил устранить конфликт - для этого достаточно будет изменить проверку переменной YagaShuraHeart1 на проверку "Dead ("Gromnir"):
https://www.gibberlings3.net/forums/top ... ent=281292
https://arcanecoast.ru/mods - Список модов ArcaneCoast

Аватара пользователя
tipun
Переводчик
Переводчик
Сообщения: 571
Зарегистрирован: 27 май 2016, 06:57

Re: Проблема в BG2 ("режим диалога")

Сообщение tipun »

Рад, что все исправилось, хотя я Ascension никогда не играл, но все еще впереди.

Аватара пользователя
Austin
Переводчик
Переводчик
Сообщения: 985
Зарегистрирован: 19 май 2010, 19:50

Re: Проблема в BG2 ("режим диалога")

Сообщение Austin »

Да, чтобы не возникало проблем с конфликтом этих модов, пока он не исправлен, есть один путь - при установке Ascension НЕ устанавливать компонент "Улучшенное взаимодействие игрока и Имоен".

А кто хочет все-таки установить Ascension полностью и при этом не иметь конфликта с Имоен-романс, прикладываю скорректированные файлы для замены. Изменены обе проверки в файлах Ascension, вызывающие конфликт. И в d, и в скрипте. Я их отправил авторам мода. Может, включат в будущем. А пока лучше просто не ставить этот компонент.
https://arcanecoast.ru/mods - Список модов ArcaneCoast

Аватара пользователя
Austin
Переводчик
Переводчик
Сообщения: 985
Зарегистрирован: 19 май 2010, 19:50

Re: Проблема в BG2 ("режим диалога")

Сообщение Austin »

На форуме поддержки Ascension уже целая конференция развернулась о том, как убрать этот конфликт между Имоен-романом и компонентом из Вознесения. Кроме автора DavidW (который сейчас занимается ее исправлением), подключилась также Jastey, всё очень серьёзно :)

Если кратко, то причину проблемы мы с вами верно нашли, решат ее в следующей версии. Вот что написал DavidW:
The problem is occurring with this version of Ascension and didn't occur with previous versions. That's because previously the dialog blocks for Imoen could play just by chance, potentially very (unrealistically) early in the story. I added a gate to prevent that happening: I check for YagaShuraHeart1 and MetBal in the dialog file, not just in the script. Imoen Romance assumes those blocks are just there, and tries to call them; since it's trying to do so slightly early, and keeps doing so until it succeeds, the game stutters. Since this was my change, not in vanilla Ascension - and since Imoen Romance's preferred trigger points are only slightly earlier than mine - I'm happy to edit bimoen25.d to use Imoen Romance's slightly earlier checks. I believe this will avoid the incompatibility without the need to change imoe25.baf.

Отсюда и ниже: https://www.gibberlings3.net/forums/top ... ent=281527
https://arcanecoast.ru/mods - Список модов ArcaneCoast

Аватара пользователя
tipun
Переводчик
Переводчик
Сообщения: 571
Зарегистрирован: 27 май 2016, 06:57

Re: Проблема в BG2 ("режим диалога")

Сообщение tipun »

Austin, я не зареган на гибберлингах, но тему прочел. Если сможешь, напиши туда еще, что локальные переменные могут тоже вызывать проблемы с запуском диалогов. По моим наблюдениям, они работаю в B*.dlg, в других диалогах не всегда. В моем порте ИВД2 в диалоге Освальда были локальные таймеры(таймеры это те же переменные), за несколько проверок ни разы не запустился нужный диалог. А после смены типа переменных на глобальные все заработало.

Ответить