Thief II: статистика

Автор zireal, 30 марта 2023 13:33:16

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

zireal

Кто-нибудь знает, как редактировать статистику убитых врагов в ФМ к T2?
Скажем, убил 2 пауков, нужно, чтобы игра думала, что 0.
-Всё-таки было бы проще оглушить и его.
-Ну да, но я по-прежнему думаю, что гора бесчувственных тел привлекала бы к себе слишком большое внимание.

Zontik

Самый надежный способ - корректировка непосредственно переменных, отвечающих за статистику. Это делается в редакторе. В самом начале миссии задается триггер, от которого будет срабатывать скрипт TrapSetQVar. (В самом начале - потому что игрок может прервать игру досрочно и увидеть статистику в исходном варианте.) Триггером может быть что угодно - например, уже существующий выключатель лампы, который находится в положении "Вкл", или отдельный объект где-нибудь за кулисами. В любом случае необходимо обеспечить одноразовость срабатывания.
Что касается самого скрипта, то он может увеличивать или уменьшать итоговую величину на заданную константу, а может ее полностью подменять. Надо хорошо понять, чего ты хочешь, прежде чем браться за исправления. Пример с "0 вместо 2" понятен, но что должно быть, если исходная величина не равна 2? Из условия задачи этого не понять. Если тупо отнять 2 от переменной, то если завершить игру в самом начале, в статистике окажется -2.
Не уверен, но мне сдается, что подобные правки можно внести в отвечающий за статистику текстовый файл. Там задается формат выводных данных, и если как следует поэкспериментировать со странным синтаксисом этого формата, может быть, удастся подобрать ключ к уменьшению или увеличению стандартных переменных. Но это не точно.
Дайте глазам отдохнуть! Тёмное место

zireal

Речь про конкретную миссию "Legacy of Knoss" v.1.1. В ней есть странно работающее ограничение не убивать никого.
В середине миссии я убил двух пауков (игра не отреагировала), продолжил играть, и нормально завершил миссию.
Но при повторном прохождении концовки с того же сейва появляется сообщение о новой цели и тут же миссия завершается с проваленной целью "не убей". При этом в статистике новых тел не прибавляется, все те же два паука. Хочется проверить, будет ли воспроизводится баг с отредактированной статистикой.
-Всё-таки было бы проще оглушить и его.
-Ну да, но я по-прежнему думаю, что гора бесчувственных тел привлекала бы к себе слишком большое внимание.

Zontik

У меня возникает подозрение, что сам автор приложил к редактированию статистики руку. Либо сильно похимичил с gamesys. Похоже на то, что в ходе игры пауки жертвами не считаются, но после перезагрузки внезапно начинают считаться. Такое происходит, если Gamesys меняется в ходе игры, а автор не имеет представления о том, что в сохраненный файл эти изменения не вносятся. И перезагрузка все изменения обнуляет.
В любом случае отследить природу этого бага, не понимая, что, как и зачем сделано, вряд ли можно считать реальной задачей. Единственное, что можно сделать - это загрузить в редактор сохраненку (командой edit_load_game saves\quick.sav - к примеру) и посмотреть состояние системных переменных. Но, поскольку игра в этом состоянии не завершается, вряд ли там можно будет отыскать причину. Может быть, автор вообще не заморачивался с количеством, а привязал провал задания к ненулевому значению. Тут просто бездна вариантов.
К тому же нельзя исключать и обычный разовый сбой, в котором автор вообще никак не повинен.
А если редактировать статистику (причем не в окошечке редактора переменных - там ее все равно нет, она появляется только после начала игры, а только так, сложным путем, через триггер), то можно разве что попытаться задать изначальное значение "-100" для числа убийств и дальше спокойно всех мочить направо и налево. Но я совершенно не уверен, что баг связан именно с этим.
Дайте глазам отдохнуть! Тёмное место

Glypher

Цитата: zireal от 30 марта 2023 15:57:07
Речь про конкретную миссию "Legacy of Knoss" v.1.1. В ней есть странно работающее ограничение не убивать никого.
В середине миссии я убил двух пауков (игра не отреагировала), продолжил играть, и нормально завершил миссию.

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

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

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

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

Редактировать файл статистики (DEBRIEF.STR) нет смысла, потому что ты изменишь только отображение статистики, а не реальное положение вещей. Т.е. показываться будет 0, при этом убитые так и будут учитываться.
...only we know the secrets of the Glyphs...only we know the truth... - Keeper Archives

"To shape a glyph is to shape History." - Caduca

zireal

Спасибо, я начинаю думать, что дело действительно не в статистике, потому что баг воспроизводится в определенных условиях.
Вот сейвы:
https://wdfiles.ru/67d36f1

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

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

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

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


Во всех альтернативных вариантах:[spoiler]
Кармилла в произвольный момент (иногда после нескольких периодов поисковой активности) начинает телепортироваться[/spoiler], после чего сразу возникает баг.
Теперь почему-то после бага в статистике отображается innocents: some.
Если завершить игру сочетанием клавиш непосредственно перед возникновением бага, в статистике невинных нет.
-Всё-таки было бы проще оглушить и его.
-Ну да, но я по-прежнему думаю, что гора бесчувственных тел привлекала бы к себе слишком большое внимание.

Glypher

Причина провала цели ясна.

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

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

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

Чтобы этого избежать, автору надо было в финальной сцене Тибальду добавить защиту от нокаута, как он это сделал Кармелле. Хотя вряд ли автор предполагал, что в данном случае кто-то будет оглушать Тибальда. В нашем же случае просто не надо оглушать Тибальда или, по крайней мере, не поднимать его до совершения убийства. И вообще не надо вмешиваться в разговор. :)
...only we know the secrets of the Glyphs...only we know the truth... - Keeper Archives

"To shape a glyph is to shape History." - Caduca

Force

Glypher
Вау! Откуда у тебя такие познания в архитектуре заданий миссий?

zireal

Glypher, спасибо за подробное объяснение!

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


-Всё-таки было бы проще оглушить и его.
-Ну да, но я по-прежнему думаю, что гора бесчувственных тел привлекала бы к себе слишком большое внимание.

Glypher

Force,

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

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

Нами исправлено уже где-то 350-400 миссий для T2. В скором времени (хотя как получится) Джакс должен обновить T2Fix, куда войдут новые дмл-фиксы для миссий. Поэтому при установке T2Fix всем настоятельно рекомендую также устанавливать пакет T2FMDML. Новая версия T2Fix будет также включать апдейтер, с помощью которого игрок сможет легко и быстро обновить пакет с исправлениями до самой последней сборки с GitHub репозитория. Поэтому чтобы иметь самые актуальные фиксы, больше не надо будет ждать новую версию T2Fix.
...only we know the secrets of the Glyphs...only we know the truth... - Keeper Archives

"To shape a glyph is to shape History." - Caduca

Force

Glypher
Ого! Класс!  :up: :agree: Ваша служба и опасна и трудна... ;)

MoroseTroll


Glypher

...only we know the secrets of the Glyphs...only we know the truth... - Keeper Archives

"To shape a glyph is to shape History." - Caduca