Thief: the Dark Fate Forum

Thieves Connection => Проблемы с работоспособностью => Тема начата: zireal от 30 марта 2023 13:33:16

Название: Thief II: статистика
Отправлено: zireal от 30 марта 2023 13:33:16
Кто-нибудь знает, как редактировать статистику убитых врагов в ФМ к T2?
Скажем, убил 2 пауков, нужно, чтобы игра думала, что 0.
Название: Thief II: статистика
Отправлено: Zontik от 30 марта 2023 13:56:52
Самый надежный способ - корректировка непосредственно переменных, отвечающих за статистику. Это делается в редакторе. В самом начале миссии задается триггер, от которого будет срабатывать скрипт TrapSetQVar. (В самом начале - потому что игрок может прервать игру досрочно и увидеть статистику в исходном варианте.) Триггером может быть что угодно - например, уже существующий выключатель лампы, который находится в положении "Вкл", или отдельный объект где-нибудь за кулисами. В любом случае необходимо обеспечить одноразовость срабатывания.
Что касается самого скрипта, то он может увеличивать или уменьшать итоговую величину на заданную константу, а может ее полностью подменять. Надо хорошо понять, чего ты хочешь, прежде чем браться за исправления. Пример с "0 вместо 2" понятен, но что должно быть, если исходная величина не равна 2? Из условия задачи этого не понять. Если тупо отнять 2 от переменной, то если завершить игру в самом начале, в статистике окажется -2.
Не уверен, но мне сдается, что подобные правки можно внести в отвечающий за статистику текстовый файл. Там задается формат выводных данных, и если как следует поэкспериментировать со странным синтаксисом этого формата, может быть, удастся подобрать ключ к уменьшению или увеличению стандартных переменных. Но это не точно.
Название: Thief II: статистика
Отправлено: zireal от 30 марта 2023 15:57:07
Речь про конкретную миссию "Legacy of Knoss" v.1.1. В ней есть странно работающее ограничение не убивать никого.
В середине миссии я убил двух пауков (игра не отреагировала), продолжил играть, и нормально завершил миссию.
Но при повторном прохождении концовки с того же сейва появляется сообщение о новой цели и тут же миссия завершается с проваленной целью "не убей". При этом в статистике новых тел не прибавляется, все те же два паука. Хочется проверить, будет ли воспроизводится баг с отредактированной статистикой.
Название: Thief II: статистика
Отправлено: Zontik от 30 марта 2023 16:21:36
У меня возникает подозрение, что сам автор приложил к редактированию статистики руку. Либо сильно похимичил с gamesys. Похоже на то, что в ходе игры пауки жертвами не считаются, но после перезагрузки внезапно начинают считаться. Такое происходит, если Gamesys меняется в ходе игры, а автор не имеет представления о том, что в сохраненный файл эти изменения не вносятся. И перезагрузка все изменения обнуляет.
В любом случае отследить природу этого бага, не понимая, что, как и зачем сделано, вряд ли можно считать реальной задачей. Единственное, что можно сделать - это загрузить в редактор сохраненку (командой edit_load_game saves\quick.sav - к примеру) и посмотреть состояние системных переменных. Но, поскольку игра в этом состоянии не завершается, вряд ли там можно будет отыскать причину. Может быть, автор вообще не заморачивался с количеством, а привязал провал задания к ненулевому значению. Тут просто бездна вариантов.
К тому же нельзя исключать и обычный разовый сбой, в котором автор вообще никак не повинен.
А если редактировать статистику (причем не в окошечке редактора переменных - там ее все равно нет, она появляется только после начала игры, а только так, сложным путем, через триггер), то можно разве что попытаться задать изначальное значение "-100" для числа убийств и дальше спокойно всех мочить направо и налево. Но я совершенно не уверен, что баг связан именно с этим.
Название: Thief II: статистика
Отправлено: Glypher от 30 марта 2023 17:27:56
Цитата: zireal от 30 марта 2023 15:57:07
Речь про конкретную миссию "Legacy of Knoss" v.1.1. В ней есть странно работающее ограничение не убивать никого.
В середине миссии я убил двух пауков (игра не отреагировала), продолжил играть, и нормально завершил миссию.

Цель "Никого не убивать" - за очень редким исключением, подразумевает "не убивать людей" (в этой миссии в том числе). Поэтому убийство пауков не могло повлиять на провал цели. Значит, повлияло что-то другое.

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

zireal, можешь скинут сейв перед провалом цели? Попробую разобраться.

Цитировать
Хочется проверить, будет ли воспроизводится баг с отредактированной статистикой.

Редактировать файл статистики (DEBRIEF.STR) нет смысла, потому что ты изменишь только отображение статистики, а не реальное положение вещей. Т.е. показываться будет 0, при этом убитые так и будут учитываться.
Название: Thief II: статистика
Отправлено: zireal от 31 марта 2023 18:25:30
Спасибо, я начинаю думать, что дело действительно не в статистике, потому что баг воспроизводится в определенных условиях.
Вот сейвы:
https://wdfiles.ru/67d36f1

Нормальный вариант.
Спойлер
Гарретт перед входом в дом, если зайти и подняться на третий этаж, запустится сцена, в которой Кармилла и некромант убивают Тибальда, а потом телепортируются прочь. Появляется новое задание - покинуть город, надо спуститься на второй этаж и уйти через потайной ход (шкаф в дальнем помещении). Миссия завершается нормально.
[свернуть]

Альтернативный вариант 1.
Спойлер
(предыстория) Гарретт оглушил Тибальда до того, как его убили. Кармилла и некромант поискали его, не нашли, и остались стоять на верхнем этаже дома.
[свернуть]

Альтернативный вариант 2.
Спойлер
(предыстория) то же, но Гарретт оглушил еще и некроманта, Кармилла находится на верхнем этаже дома, в комнате.
[свернуть]

Альтернативный вариант 3.
Спойлер
(предыстория) то же, но Гарретт выманил некроманта из дома, где его убил хаммерит. Кармилла находится на верхнем этаже дома, на лестнице.
[свернуть]


Во всех альтернативных вариантах:
Спойлер

Кармилла в произвольный момент (иногда после нескольких периодов поисковой активности) начинает телепортироваться
[свернуть]
, после чего сразу возникает баг.
Теперь почему-то после бага в статистике отображается innocents: some.
Если завершить игру сочетанием клавиш непосредственно перед возникновением бага, в статистике невинных нет.
Название: Thief II: статистика
Отправлено: Glypher от 01 апреля 2023 19:04:34
Причина провала цели ясна.

Во время разговора Кармелла убивает Тибальда. Даже если прервать разговор Кармелла всё равно может его убить. Убивает она его через ловушку, использующую скрипт TrapDestroy, который посылает Тибальду сообщение Slain (убит). У Тибальда, как и у любого человека, в архетипе есть скрипт Jaccuse, с помощью которого устанавливается виновник убийства (culprit) – при получении Slain (убийстве), если игрок будет иметь связь CulpableFor с предметом убийства (например, мечом), либо иметь связь CulpableFor с объектом убийства (в нашем случае Тибальдом), то он будет признан виновным. Если по-простому: culprit - меч, кто держал меч во время убийства - Гарретт, Гарретт - убийца. Связь с объектом убийства нужна для того, чтобы отслеживать, если Гарретт бросит тело с высоты, в лаву, в воду и т.п.

У нас второй вариант, поскольку Гарретту автоматически добавляется связь CulpableFor с любым имеющимся при себе или когда-либо взятым им объектом и остаётся, даже если затем объект будет выброшен.

Поэтому если оглушить и поднять (взять) Тибальда до его убийства Кармеллой, то при его убийстве Гарретт будет признан виновным и произойдёт провал цели.

Чтобы этого избежать, автору надо было в финальной сцене Тибальду добавить защиту от нокаута, как он это сделал Кармелле. Хотя вряд ли автор предполагал, что в данном случае кто-то будет оглушать Тибальда. В нашем же случае просто не надо оглушать Тибальда или, по крайней мере, не поднимать его до совершения убийства. И вообще не надо вмешиваться в разговор. :)
Название: Thief II: статистика
Отправлено: Force от 01 апреля 2023 20:53:41
Glypher
Вау! Откуда у тебя такие познания в архитектуре заданий миссий?
Название: Thief II: статистика
Отправлено: zireal от 02 апреля 2023 01:33:34
Glypher, спасибо за подробное объяснение!

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


Название: Thief II: статистика
Отправлено: Glypher от 03 апреля 2023 03:40:57
Force,

Сначала начал изучать документацию к движку, редактору, к оригинальным и авторским скриптам, DML и т.п., также в багаж знаний свою лепту внёс и Зонтик. :) Потом стал исправлять миссии для T1 и T2, где были проблемы и баги. Я тут прикинул, и оказывается, что я занимаюсь этим уже около 5 лет.

На ТТЛГ подобным первыми начали заниматься fortuni (который делает прохождения и лут-листы для всех миссий) и Unna Oertdottir. Fortuni проходил миссии, если находил проблемы, указывал какие именно и где, а уже Унна их исправляла. Потом к ним присоединился Jax64, автор T2Fix. В какой-то момент Унна ушла и присоединился уже я, так мы объединили наши усилия.

Нами исправлено уже где-то 350-400 миссий для T2. В скором времени (хотя как получится) Джакс должен обновить T2Fix, куда войдут новые дмл-фиксы для миссий. Поэтому при установке T2Fix всем настоятельно рекомендую также устанавливать пакет T2FMDML. Новая версия T2Fix будет также включать апдейтер, с помощью которого игрок сможет легко и быстро обновить пакет с исправлениями до самой последней сборки с GitHub репозитория. Поэтому чтобы иметь самые актуальные фиксы, больше не надо будет ждать новую версию T2Fix.
Название: Thief II: статистика
Отправлено: Force от 03 апреля 2023 10:13:05
Glypher
Ого! Класс!  :up: :agree: Ваша служба и опасна и трудна... ;)
Название: Thief II: статистика
Отправлено: MoroseTroll от 26 апреля 2023 19:15:34
Glypher: Уважаю :up:!
Название: Thief II: статистика
Отправлено: Glypher от 26 апреля 2023 22:03:08
Спасибо, парни! :agree: