Перейти к содержанию

Text.dll 2025 (мой неоффициальный апдейт на современный лад)


Рекомендуемые сообщения

19 часов назад, ksteel сказал:

постом выше прикрепил свой mcp в архиве, если надо.

upd прошу прощения, ввёл в заблуждение, 8го сентября скачивал MCP патч по данной ссылке. От туда же скачивал MGE XE https://www.nexusmods.com/morrowind/mods/26348?tab=files

про этот с нексуса знаю, а на скринах у вас и правда Фулрест репак, не знал что там бэта версия с переведенным описанием, но она старее чем на нексусе.

Ссылка на комментарий
Поделиться на другие сайты

19 часов назад, ksteel сказал:

MCP если я ничего не путаю, как раз-таки с Fullrest репака, а нейросети вот инструкция https://docs.google.com/document/d/13JVzJQ54jxppOsg8dlxnoQOhkzPOWb8SfKl3mtlZ34Q/edit?tab=t.0,
а вот гитхаб автора https://github.com/drzdo/immersive_morrowind_llm_ai.
(з.ы. Это не моя страница и лично автора я не знаю, автором мода НЕ являюсь, даже не общался с ним) там есть ссылки и на гитхаб и на ютуб с плейлистом, очень комичные моменты у него присутствуют. Интегрирую — это я конечно громко сказал (автор мода уже их интегрировал) внесу ясность - я занимаюсь рефакторингом этого мода. (кстати именно для него я и перекомпелировал text.dll, чтобы было удобнее общаться с АИ НПС в обычном диалоговом окне с ЛЮБЫМ НПС)

Если он это один сделал, то он очень талантливый человек (по моему мнению), даже слишком талантливый х). Идея класс, но реализация (для меня), спорная.

Там (в оригинале) доступны 3 нейросети на выбор - Gemini flash, Mistral, и ещё что-то. Любая нейронка на Open Ai. Можно даже запустить через LLM Studio локально на пк (но для этого нужен компудахтер мощностью сравнительный с компудахтером NASA для управления всеми спутниками Земли, потому я отказался от локальной реализации этого мода).

Так вот, я добавил ещё deepseek-chat. (В планах вообще ещё добавить yandex gpt и Giga chat. Для пользователей из РФ их проще оплачивать). Там ничего сложного — просто поменять строчки в confyg.yml


Естественно все  АИ требуют api ключи от нейросетей (ну Gemini flash можно использовать 15 минут в день и то по ограниченному количеству токенов, или найти какой-либо ещё один "бесплатный ключ" в чём-то ограниченный). В этом плане deep seek (опять по моему скромному мнению) явно выигрывает - дешево (даже очень) и сердито. Умный быстрый, контекст понимает, за ЛОР шарит, хахамбы и кеки не выдает (если самому в промт не вписать.


В будущем (не знаю насколько далёком) хочу перенести этот мод вообще на OpenMW (в данный момент ознакамливаюсь с документацией) Lua скрипты новее, движок открытый, костылей никаких не надо, я надеюсь. (по типу используемой заглушки от автора оригинала мода для UI Extensions (что кстати очень гениально было и тонко на мой взгляд).

Что мною было сделано на данный момент:

  1. проведен тотальный анализ всех файлов — кто за что отвечает, зачем нужен, какие взаимосвязи, тестово убрал их Промтов: "мат и всякую не лорную бредятину — какие-то частушки, матерные частушки, современные слова по типу "прикольно" и т.д.
  2. изменил полностью npc_personality_generator.py, теперь он собирает архетип личности не по типу:
  •      "ты родился в Балморе вчера, ты орк, который ненавидит легкие доспехи и любит вонючих грязекрабов, ты бьешь всех кто с тобой не согласен. И ещё ты называешь главного героя Н'Вахом. И плевать что ты орк.",
  •        а нормально: - Пол/Раса/Знак/Класс/Фракция/Ранг  учитываются даже АРХЕТИПЫ личностей (сангвиник, холерик, меланхолик флегматик, их помеси).

Получается при генерации что: - не все данмеры местные (кстати тут включена функция исключения по типу Камонны Тонг, Шестого дома, некоторые ранги в некоторых фракциях и т.д.), не все каджиты наркоманы и любят лунный сахар, не все орки тупые, не все норды грязные варвары любящие рыгать и пердеть, не все босмеры Фаргот и так далее. 

  1. занялся сейчас npc_spаwn_list.py - хочу сделать из маленькой ограниченной книги "того что может давать тебе нпс" на целые лорные библиотеки (Construction Set мне в помощь).
  2. ну и другие изменения (их очень много, например чтобы нпс при разговоре не подходили в плотную к тому с кем разговаривают, да это добавляет своего рода иммерсивности......но...вы помните того погонщика Силт Страйдера из Гнисиса, который вечно проваливал под мостик и умирал? Либо Лодочников, которые вечно тонули из-за того что они смещались с места? Вот то-то и оно 😃 . Чтобы НПС не пялились все на тебя, словно ты в западном вестерне весь такой чужак, зашёл в местную таверну с револьвером на перевес (кстати, из-за этой функции на тебя смотрят даже убитые НПС (трупы крутятся 😄).

Работы очень много, особенно очень много захламлённых файлов, которые отнимают 70 (если не 85)% всего времени:
 

Аналогия: Директор сидит в кабинете. 

ПО ИДЕЕ директор должен просто собирать информацию, принимать отчёты от всех менеджеров (которые прибегают к директору в кабинет, кладут отчёт на стол и убегают во свояси, в свою рабочую дочернюю папку обратно). После этого директор ставит резолюцию "ВСЕ ПРОВЕРЕНО, ДОКУМЕНТЫ ГОТОВЫ"и отправляет структурированный понятный отчёт дальше (куда-то там в головной офис допустим).

ЧТО МЫ ИМЕЕМ НА ДАННЫЙ МОМЕНТ 

Этот бедолага директор, не то что собирает эти отчёты — ОН САМ ЛИЧНО носится по всему заводу, крутит гайки, меняет колёса у тракторов и ещё и в столовой кушать готовит для работников завода :D. Естественно миллиард функций и блоков кода вписано в бедные раздутые жирные файлы. А ведь можно сделать элегантнее и красивЕе.

И таких вот горе-дерикторов (файлов) целая Python часть мода (Lua часть маленькая, всего 19 файлов):
🌳 Структура мода Morrowind AI:
=========================================
📁 docs/                                                                                           Так что когда будет форк — не скажу точно. (там уже есть один на бесплатные разщговоры нпс голосом но   
📁 immersive_morrowind_db/                                                          по моему мнению, как кто-то выразился на ютубе и, я его мнение целиком поддерживаю, для меня
📁 immersive_morrowind_llm_logs/                                                 Морровинд - это больше буковки в тексте и чтение, чем общение голосом и отеты голосом нпс.
📁 src/
📄 .env (21 B)                                                            (з.ы. я сам играл в мод совсем немного - но увлёкся настолько, что аж погрузился в разработку и тестирование, но рассказать
📄 Текстовый документ.txt (498 B)                           и убедить Селлуса Гравиуса (именно его первого, потому что он главный по званию !!! по биографии!!), по приказу Селлуса
⚙️ config.example.yml (1,40 KB)                                -  Ганциеля Дуара, и ещё пару легионеров о том, что в  пещере Аддумасартус контрабандисты рабов держат было весело.
⚙️ config.yml (2,76 KB)                                             Притом что Гравиус остался снаружи, а легионеры со мной внутрь пошли, после чего меня оттуда выгнали (если бы я не
📄 LICENSE (34,32 KB)                                              ушёл они бы выписали мне шрафт) т.к. я ГРАЖДАНСКИЙ и не состою в легионе, был первого уровня в рваном тряпье и т.д.
📖 README.md (30,03 KB                                        А Гравиус категорически не хотел меня пускать внутрь как гражданское лицо, сказал ждать, что легионеры сами справятся 😄
📊 rpgaiserver.log (894 B)
📄 rpgaiserver.log.1 (884 B)                                     А я то блин понимаю, что пока меня там нету - ячейка мертва, там ничего не происходит, это не Тес 5 Скурим.
📄 rpgaiserver.log.2 (883 B)                                     Так и простоял прау минут, после чего зашёл алегионеры что стояли у входа давай меня выгонять из пещеры, мол капитан
📄 rpgaiserver.log.3 (791 B)                                     Гравиус сказал бла бла бла. Весело вобщем, эмоций полный вагон))
  📄 Screenshot_1.jpg (989,73 KB)
  📄 Screenshot_2.jpg (1,06 MB)
  📄 Screenshot_3.jpg (300,41 KB)
  📁 mwse_mod/
  📁 server/
    📁 MWSE/
      📁 mods/
        📁 UI Expansion/
        📁 zdo_immersive_morrowind_ai/
          🌙 MenuDialog.lua (184 B)
          📁 common/
          📁 i18n/
          📁 service/
          📁 ui/
          🌙 config.lua (515 B)
          🌙 main.lua (7,78 KB)
          🌙 mcm.lua (2,60 KB)
          📦 mcm.rar (921 B)
            🌙 actor_stats.lua (4,09 KB)
            🌙 diagnostic_injector.lua (3,23 KB)
            🌙 eventbus.lua (6,95 KB)
            🌙 util.lua (5,48 KB)
            🌙 eng.lua (237 B)
            🌙 rus.lua (290 B)
            🌙 actor_say_service.lua (507 B)
            🌙 env_service.lua (1,58 KB)
            🌙 npc_service.lua (31,87 KB)
            🌙 player_service.lua (11,66 KB)
            🌙 stt_service.lua (1,86 KB)
            🌙 animate_label.lua (2,30 KB)
            🌙 dialog.lua (13,03 KB)
            🌙 hud.lua (6,16 KB)
            📦 hud.rar (1,69 KB)
    📁 app/
    📁 database/
    📁 eventbus/
    📁 game/
    📁 llm/
    📁 stt/
    📁 tts/
    📁 util/
    🐍 main.py (72 B)
    📄 requirements.txt (216 B)
      🐍 app_config.py (3,99 KB)
      🐍 app.py (4,38 KB)
      🐍 database.py (2,46 KB)
      📁 backend/
      📁 data/
      📁 event_data/
      🐍 bus.py (3,46 KB)
      🐍 event_consumer.py (320 B)
      🐍 event_producer.py (174 B)
      🐍 event.py (591 B)
      🐍 rpc.py (4,47 KB)
        🐍 abstract.py (387 B)
        🐍 mwse_tcp.py (3,11 KB)
        🐍 actor_ref.py (342 B)
        🐍 actor_stats.py (1,16 KB)
        🐍 cell.py (319 B)
        🐍 crime.py (334 B)
        🐍 dialog_data.py (488 B)
        🐍 env_data.py (1,63 KB)
        🐍 id_with_name.py (88 B)
        🐍 nakedness.py (122 B)
        🐍 npc_data.py (2,07 KB)
        🐍 npc_response_reaction_data.py (252 B)
        🐍 player_data_fast.py (360 B)
        🐍 player_data.py (884 B)
        🐍 position.py (312 B)
        🐍 topic_data.py (105 B)
        🐍 event_data_from_game.py (4,94 KB)
        🐍 event_data_from_server.py (4,14 KB)
        🐍 event_data_rpc.py (3,08 KB)
      📁 data/
      📁 i18n/
      📁 service/
      🐍 game_master.py (22,21 KB)
      🐍 game_setup.py (5,85 KB)
        🐍 npc_behavior.py (180 B)
        🐍 npc_personality.py (131 B)
        🐍 npc.py (481 B)
        🐍 player_ref_looked_at.py (309 B)
        🐍 player.py (265 B)
        🐍 story_item.py (5,16 KB)
        🐍 story.py (337 B)
        🐍 time.py (1,98 KB)
        🐍 i18n.py (2,56 KB)
        📁 event_producers/
        📁 npc_services/
        📁 player_services/
        📁 providers/
        📁 scene/
        📁 story_item/
        📁 util/
          🐍 event_producer_from_story.py (11,24 KB)
          🐍 npc_behavior_service.py (8,88 KB)
          🐍 npc_database.py (3,99 KB)
          🐍 npc_intention_analyzer.py (18,99 KB)
          🐍 npc_llm_message_history_builder.py (2,43 KB)
          🐍 npc_llm_pick_actor_service.py (34,62 KB)
          🐍 npc_llm_response_producer.py (5,18 KB)
          🐍 npc_llm_system_instructions_builder.py (61,00 KB)
          🐍 npc_personal_story_service.py (2,20 KB)
          🐍 npc_personality_generator.py (53,75 KB)
          🐍 npc_service.py (6,18 KB)
          🐍 npc_spawn_list.py (3,34 KB)
          🐍 npc_speaker_service.py (14,25 KB)
          🐍 local_player_speaking_listener.py (2,24 KB)
          🐍 player_database.py (2,20 KB)
          🐍 player_intention_analyzer.py (6,20 KB)
          🐍 player_personal_story_service.py (3,85 KB)
          🐍 player_provider.py (1,35 KB)
          🐍 cell_name_provider.py (1,37 KB)
          🐍 dialog_provider.py (2,58 KB)
          🐍 dropped_items_provider.py (1,48 KB)
          🐍 env_provider.py (897 B)
          🐍 scene_instructions.py (4,19 KB)
          🐍 npc_story_item_helper.py (3,83 KB)
          🐍 story_item_to_history.py (10,09 KB)
          🐍 format_date.py (878 B)
          🐍 map_value_in_range.py (322 B)
          🐍 prompt_builder.py (2,25 KB)
          🐍 text_sanitizer.py (1,58 KB)
      📁 backend/
      🐍 llm_logger.py (5,11 KB)
      🐍 message.py (162 B)
      🐍 session.py (1,89 KB)
      🐍 system.py (2,73 KB)
        🐍 abstract.py (409 B)
        🐍 anthropic.py (2,61 KB)
        🐍 dummy.py (285 B)
        🐍 google.py (2,04 KB)
        🐍 mistral.py (2,64 KB)
        🐍 openai.py (2,62 KB)
      📁 backend/
      🐍 input.py (1,95 KB)
      🐍 system.py (5,39 KB)
        🐍 abstract.py (351 B)
        🐍 dummy.py (185 B)
        🐍 msspeech.py (3,00 KB)
        🐍 vosk.py (5,29 KB)
        🐍 whisper.py (3,93 KB)
      📁 backend/
      🐍 file_list_rotation.py (764 B)
      🐍 request.py (121 B)
      🐍 response.py (117 B)
      🐍 system.py (4,79 KB)
      🐍 voice.py (539 B)
        🐍 abstract.py (393 B)
        🐍 dummy.py (242 B)
        🐍 elevenlabs.py (6,49 KB)
      🐍 colored_lines.py (163 B)
      🐍 counter.py (216 B)
      🐍 diagnostic_injector.py (3,53 KB)
      🐍 distance.py (291 B)
      🐍 fs.py (345 B)
      🐍 gen_id.py (357 B)
      🐍 logger.py (3,57 KB)
      🐍 now_ms.py (71 B)



А если не читаете "многобуков", то короткая ремарка: человек открыл (по крайне мере для меня) дверь в АИ + Морровинд - создал "базу для этого", а я вошёл в комнату, где начал наводить свой порядок 😃 

ясно ,видел этот проект, но как минимум из за сложностей с нейросетями в рф, не заострял внимание. если дипсик прикрутите то уже интереснее.

Ссылка на комментарий
Поделиться на другие сайты

В 02.10.2025 в 2:54 PM, ksteel сказал:

сделал обновление, спасибо за идею 😃

Не за что. Еще бы репозиторий залить на Гит для будущих поколений

Изменено пользователем Siberian Crab
Ссылка на комментарий
Поделиться на другие сайты

В 28.09.2025 в 3:28 AM, ksteel сказал:

Исходники text.dll взяты с ГитХаб https://github.com/angeld29/morr_text_dll

я тут заглянул одним глазом в исходники, там в файле versions.txt указан версия 3.0
в файле morr_text_dll.rc тоже версия файла 3.0 указана.
а исходники точно от последней версии?
на фулресте https://www.fullrest.ru/files/russian_text_input#6235 или в GFM лежит версия v3.01
судя по описанию "Исправлено отсутсвие сообщений при повышении уровня" в ней довольно важное исправление было.
Я конечно допускаю что когда 3.01 делали могли в проекте не поправить, но файл versions.txt то на фулресте поправлен, а на гитхабе старый сомнительно.
Выбор клавиши конечно хорошо, но терять исправление не хочется.

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Pirate443 сказал:

я тут заглянул одним глазом в исходники, там в файле versions.txt указан версия 3.0
в файле morr_text_dll.rc тоже версия файла 3.0 указана.
а исходники точно от последней версии?
на фулресте https://www.fullrest.ru/files/russian_text_input#6235 или в GFM лежит версия v3.01
судя по описанию "Исправлено отсутсвие сообщений при повышении уровня" в ней довольно важное исправление было.
Я конечно допускаю что когда 3.01 делали могли в проекте не поправить, но файл versions.txt то на фулресте поправлен, а на гитхабе старый сомнительно.
Выбор клавиши конечно хорошо, но терять исправление не хочется.

  1. исходники взяты с гитхаба, соответственно исходники от версии 3.0.
  2. Исходники версии 3.0.1 я не находил (к сожалению), если мне их предоставят, либо просто скажут куда что дописать, то я обязательно внесу это в своё дополнение, из этой темы, либо автор исправления про "таблички" может внести свои изменения в мои и перекомпилировать text.dll заново.
  3. По поводу этих табличек: "Исправлено отсутствие сообщений при повышении уровня" - это вот эти таблички по типу "вы так долго и упорно трудились и вот вы наконец пришли к этой цели. (Цитата не дословная, просто видел в каком-то файле игры эти строки давным давно. Вроде как в файле журнала (в который заносятся все записи про разные квесты, в игре.) Не помню где я его находил)
  4. По поводу GFM не совсем понял...GFM это же esp файл? Насколько я знаю, в ту же сборку в Fullrest Repack он уже встроен по умолчанию

Если я где-то ошибся, то поправьте меня. Я буквально как пару недель занимался text.dll. За темами на форуме (GFM и другие) не особо следил.

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, Siberian Crab сказал:

Не за что. Еще бы репозиторий залить на Гит для будущих поколений

Никогда не делал офромление форков на гитхабе, но я постараюсь 😃 

Ссылка на комментарий
Поделиться на другие сайты

6 часов назад, ksteel сказал:
  1. исходники взяты с гитхаба, соответственно исходники от версии 3.0.
  2. Исходники версии 3.0.1 я не находил (к сожалению), если мне их предоставят, либо просто скажут куда что дописать, то я обязательно внесу это в своё дополнение, из этой темы, либо автор исправления про "таблички" может внести свои изменения в мои и перекомпилировать text.dll заново.
  3. По поводу этих табличек: "Исправлено отсутствие сообщений при повышении уровня" - это вот эти таблички по типу "вы так долго и упорно трудились и вот вы наконец пришли к этой цели. (Цитата не дословная, просто видел в каком-то файле игры эти строки давным давно. Вроде как в файле журнала (в который заносятся все записи про разные квесты, в игре.) Не помню где я его находил)
  4. По поводу GFM не совсем понял...GFM это же esp файл? Насколько я знаю, в ту же сборку в Fullrest Repack он уже встроен по умолчанию

Если я где-то ошибся, то поправьте меня. Я буквально как пару недель занимался text.dll. За темами на форуме (GFM и другие) не особо следил.

Я имел ввиду что с GFM(ну по коайней мере в вкрсии 5.1)тоже в комплекте лежит text.dll и он тоже 3.01. в общем уже не важно.

я хотел лишь уточнить, правильно ли понял, что вы на основе 3.0 делаете.

Не представляю где искать исходники последней версии или автора, может кто из старожил фулреста что то знает.

а в уже существующий text.dll никак не получится заглянуть? 

 

Изменено пользователем Pirate443
Ссылка на комментарий
Поделиться на другие сайты

На самом деле, все еще чудесатее.
В комплекте с Бладом идет 2.050 версия Техт.длл 48кб от 2003его.
Затем откуда-то появляется версия 3.0, 1.0.0.1 уже от 2005го года и тоже от Ангела.

А далее, начинаются вариации на тему ее размера. При этом, МСП точно добавляет туда свои патчи, которые, возможно и влияют на версию(?).

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

Цитата

лежит text.dll и он тоже 3.01

Это точно, что 3.01, а не 3.0.0 1.0.0.1?

Цитата

GFM

6.3 версии имеет в составе Техт.длл версии 3.0.0.0 1.0.0.1, если речь об этом. Весом 170кб от 2010го года.
В остальном, это ецп файл и некоторое кол-во моделей.

ПС.
И "ангел_деф" является оригинальным автором этого самого Длла со времен работы в Акелле еще .

textddls.7z

Ссылка на комментарий
Поделиться на другие сайты

31 минуту назад, EJ-12 сказал:

А далее, начинаются вариации на тему ее размера. При этом, МСП точно добавляет туда свои патчи, которые, возможно и влияют на версию(?)

То что code patch патчит text.dll я уже тоже понял, но вот версию он вряд ли меняет, если и меняет то на что то свое а не 3.01.
MCP как раз проверяет по хэшу файл и патчит только ту для которой у него совпадает хэш. Судя по описанию MCP патчит либо ванильный text.dll с диска либо GFM.
у меня стоит 3.01 с фулреста https://www.fullrest.ru/files/russian_text_input/files и MCP его принимает. В GFM 5.10 лежит 3.01, если верить ридми.
но для надежности проверил методом научного тыка в 3.01 работают сообщения при повышении уровня а вот в этой доработанной ksteel нет, так что исходник с гитхаба  точно 3.0 что плохо.
А так же плохо что кодепатч видимо не вносит в него свои исправления. а это
"В русской локализации уникальная анимация плавания аргониан не проигрывалась из-за неверной проверки на ID расы. Теперь это исправлено и аргониане будут плавать отлично от других рас.Исправлена ширина меню создания заклинаний. Окно было слишком узким, из-за чего обрезался ползунок регулировки длительности.Исправлен внешний вид окна повышения уровня, чтобы избежать обрезки значения характеристики."
 

1 час назад, EJ-12 сказал:

И "ангел_деф" является оригинальным автором этого самого Длла со времен работы в Акелле еще .

 

вряд ли он читает этот форум и уж тем более горит желанием снова этим заниматься.
 

Ссылка на комментарий
Поделиться на другие сайты

6 часов назад, EJ-12 сказал:

На самом деле, все еще чудесатее.
В комплекте с Бладом идет 2.050 версия Техт.длл 48кб от 2003его.
Затем откуда-то появляется версия 3.0, 1.0.0.1 уже от 2005го года и тоже от Ангела.

А далее, начинаются вариации на тему ее размера. При этом, МСП точно добавляет туда свои патчи, которые, возможно и влияют на версию(?).

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

Это точно, что 3.01, а не 3.0.0 1.0.0.1?

6.3 версии имеет в составе Техт.длл версии 3.0.0.0 1.0.0.1, если речь об этом. Весом 170кб от 2010го года.
В остальном, это ецп файл и некоторое кол-во моделей.

ПС.
И "ангел_деф" является оригинальным автором этого самого Длла со времен работы в Акелле еще .

textddls.7z 138.09 \u043a\u0411 · 1 загрузка

Провожу логическую цепочку:

  • а) появляется text.dll от Angel_Death версии 3.0.0. с исходниками
  • б) появляется MCP (а если судить по сайту Fullrest, появляется в 2010 году (первое упоминание)), который патчит как оригинальный text.dll от Бладмун, так и тот, что от Ангела. МСP обновляется до 2018 года (на нексусе и по сей день) image.png.12c26ca60c6fe8ae899b84f68fb06a30.png
  • в) в этом же 2010 году появляется GFM FIXimage.png.2f0129b4ef52a1a38adb2cca93c3e9a9.png
  • в) без исходников (если они есть, то я их не нашёл) появляются две версии text.dll: 3.0.0 для GFM 6.3 и 3.0.1 который по ссылке https://www.fullrest.ru/files/russian_text_input#6235 image.thumb.png.02ed22167f4242f400842507b129be5f.png
  • г) я не знаю один и тот же это Text.dll (GFM - и тот что по ссылке), одни ли у них исходники, но год обновления у text.dll (того что по ссылке 2016). 
  • д) моему внутреннему перфекционисту яро хочется найти эти исходники обеих версий и поставить точку уже в номере версии, объединив исправления (отличия если они имеются) и создать единый text.dll (версию для своего text.dll как вы видите я не менял, я даже не думал что есть такая проблема в версиях, которая может вызвать серьёзную путаницу)
4 часа назад, Pirate443 сказал:

То что code patch патчит text.dll я уже тоже понял, но вот версию он вряд ли меняет, если и меняет то на что то свое а не 3.01.
MCP как раз проверяет по хэшу файл и патчит только ту для которой у него совпадает хэш. Судя по описанию MCP патчит либо ванильный text.dll с диска либо GFM.
у меня стоит 3.01 с фулреста https://www.fullrest.ru/files/russian_text_input/files и MCP его принимает. В GFM 5.10 лежит 3.01, если верить ридми.
но для надежности проверил методом научного тыка в 3.01 работают сообщения при повышении уровня а вот в этой доработанной ksteel нет, так что исходник с гитхаба  точно 3.0 что плохо.
А так же плохо что кодепатч видимо не вносит в него свои исправления. а это
"В русской локализации уникальная анимация плавания аргониан не проигрывалась из-за неверной проверки на ID расы. Теперь это исправлено и аргониане будут плавать отлично от других рас.Исправлена ширина меню создания заклинаний. Окно было слишком узким, из-за чего обрезался ползунок регулировки длительности.Исправлен внешний вид окна повышения уровня, чтобы избежать обрезки значения характеристики."
 

вряд ли он читает этот форум и уж тем более горит желанием снова этим заниматься.
 

но тем не менее (я буквально только что проверил), с моим text.dll устанавливается альтернативная анимация плавания аргониан, меню создание заклинаний и алхимии нормально пропатчилось, соответственно должны и устанавливаться другие патчи. Что это нам даёт?

  1. Я точно знаю, что MCP патчит Morrowind.exe, меняя его crc ключ и внося в него свои какие-то изменения.
  2. Я понятия не имею что именно патчит MCP в text.dll.

Таким образом исходя из п.1 и п.2 я локально меняю свой приоритет (откладываю пока Морровинд AI и погружаюсь в изучение Python версии MCP). Мне надо понять как он взаимодействует с text.dll, чтобы не искать черную кошку ночью в темном сарае.

upd: прикрепляю исходники (пока репозиторий на гитхаб не создан), которые уже исправлены мной (внесены мои обновления по смене раскладки и т.д.), если кто-то имеет желание помочь. На данный момент 2 задачи:

  1. Понять как взаимодействует MCP с text.dll и помирить MCP с универсальным text.dll
  2. Объединить исправления из моего text.dll, text.dll От GFM и text.dll по ссылке (если есть какие-то отличия моего text.dll от  text.dll по ссылке https://www.fullrest.ru/files/russian_text_input#6235 ). Залить репозиторий этого единсвтенного общего text.dll на гитхаб. Таким образом поставить жирную точку в путанице версий text.dll.   

morr_text_dll-master_ksteel_update_2025.zip

Изменено пользователем ksteel
Ссылка на комментарий
Поделиться на другие сайты

Я не отслеживал изменения text_dll.

Знаю только, что Fritz общался с группой Angel и они внесли какие-то изменения по его просьбе.

И в MCP внесли патч для 2х версий (которая с игрой и последней).

 

Text_dll_versions.txt:
=============

v3.01
Исправлено отсутствие сообщений при повышении уровня

v3.00
добавлена поддержка Tribunal 1.4.1313
Пофикшен баг с отображением защиты, теперь значение защиты вычисляется при каждом заходе в инвентарь.

v2.95
Пофикшен unarmored bug, включается в angel.ini, секция [Rules], fix_unarmored_bug=1<br>

2004/08/15
v2.70
убран вывод предупреждений о дубликатах в mrk файлах в NewWarnings.txt<br>
возможно переключать язык ввода c помощью Scroll Lock (работает в том числе и в многостроковых полях ввода) <br>

2004/08/19
console fix
картинки в книгах сначала пытаются загрузится из "Data Files\BookArt" (решает проблему с английскими картинками в книгах, появившуюся в Bloodmoon)<br>

2005/02/05
улучшена работа расширения консоли
показывается урон на стрелах


Сайты:
http://angel-death.newmail.ru/
http://angel-death.freebox.ru/

email: angel_death@mail.ru

Ссылка на комментарий
Поделиться на другие сайты

  1. Задача № 1 вроде как решена, мой форк MCP патчит text.dll (рабочая предрелизная версия форка) 2. Более сложная задача - собрать воедино исходники разных версий text.dll (все обновления и дополнения) и сделать один. 
Ссылка на комментарий
Поделиться на другие сайты

22 часа назад, olol сказал:

Я не отслеживал изменения text_dll.

Знаю только, что Fritz общался с группой Angel и они внесли какие-то изменения по его просьбе.

И в MCP внесли патч для 2х версий (которая с игрой и последней).

 

Text_dll_versions.txt:
=============

v3.01
Исправлено отсутствие сообщений при повышении уровня

v3.00
добавлена поддержка Tribunal 1.4.1313
Пофикшен баг с отображением защиты, теперь значение защиты вычисляется при каждом заходе в инвентарь.

v2.95
Пофикшен unarmored bug, включается в angel.ini, секция [Rules], fix_unarmored_bug=1<br>

2004/08/15
v2.70
убран вывод предупреждений о дубликатах в mrk файлах в NewWarnings.txt<br>
возможно переключать язык ввода c помощью Scroll Lock (работает в том числе и в многостроковых полях ввода) <br>

2004/08/19
console fix
картинки в книгах сначала пытаются загрузится из "Data Files\BookArt" (решает проблему с английскими картинками в книгах, появившуюся в Bloodmoon)<br>

2005/02/05
улучшена работа расширения консоли
показывается урон на стрелах


Сайты:
http://angel-death.newmail.ru/
http://angel-death.freebox.ru/

email: angel_death@mail.ru

Может ли быть так, что исходники с Гитхаба уже содержат исправления, которые просил Fritz? Потому что дата обновления исходников на гитхабе новее создания темы про GFM...я очень надеюсь и хочу чтобы это так было 😄 
image.png.f316f66497a7e349c929e837bfebc0e6.pngimage.png.db1ea24fdd667c70b2bf9bd7c5c12782.png

 

Ссылка на комментарий
Поделиться на другие сайты

Тут на днях всплыла такая ошибка:
При активации определенных диалогов из мода Tamriel Rebuilt (как выяснилось у которых в поле результат диалога длинный скрипт) происходит вылет игры, если установлен Text.dll версии 3.01 с фулреста, из GFM 5.10 c тесал или ваш модифицированный и при этом в angel.ini активирована опция EnableConsole=1. При EnableConsole=0 вылета нет. Если установить text.dll с диска 1с то вылета вроде бы нет вне зависимости от состояния EnableConsole.
Я не знаю что делает функция EnableConsole, консоль в игре работает и без нее, но в версиях text.dll старше 3.0 она как то вызывает конфликт с объемом поля результат диалога.
Я порылся на форуме и нашел что этот баг уже возникал в другом моде


там человек тоже пришел к выводу что виновен text.dll версии 3.0+.
Ну мы добавили в перевод ребилта рекомендацию установить EnableConsole=0.
Это не первоочередная задача, но если вдруг в коде работающем с этой опцией есть прям какая то очевидная "детская" ошибка, было бы хорошо ее поправить.
Если ничего не ясно, проще поставить EnableConsole=0 и не парится, кстати в дисковом морровинде, она как раз по умолчанию выкл. 

И вопрос всем: что все таки делает эта опция?

Изменено пользователем Pirate443
Ссылка на комментарий
Поделиться на другие сайты

39 минут назад, Pirate443 сказал:

Тут на днях всплыла такая ошибка:
При активации определенных диалогов из мода Tamriel Rebuilt (как выяснилось у которых в поле результат диалога длинный скрипт) происходит вылет игры, если установлен Text.dll версии 3.01 с фулреста, из GFM 5.10 c тесал или ваш модифицированный и при этом в angel.ini активирована опция EnableConsole=1. При EnableConsole=0 вылета нет. Если установить text.dll с диска 1с то вылета вроде бы нет вне зависимости от состояния EnableConsole.
Я не знаю что делает функция EnableConsole, консоль в игре работает и без нее, но в версиях text.dll старше 3.0 она как то вызывает конфликт с объемом поля результат диалога.
Я порылся на форуме и нашел что этот баг уже возникал в другом моде


там человек тоже пришел к выводу что виновен text.dll версии 3.0+.
Ну мы добавили в перевод ребилта рекомендацию установить EnableConsole=0.
Это не первоочередная задача, но если вдруг в коде работающем с этой опцией есть прям какая то очевидная "детская" ошибка, было бы хорошо ее поправить.
Если ничего не ясно, проще поставить EnableConsole=0 и не парится, кстати в дисковом морровинде, она как раз по умолчанию выкл. 

И вопрос всем: что все таки делает эта опция?

Я не такой явный эксперт в С++, но что-то мне подсказывает, что это как-то связано с переполнением буфера программ, работающих на С++ (привет Морровинд). Возможен Конфликт DLL библиотек даже (не исключаю).

Во-первых (если взять тот плагин из 2010 года, надо понять каким образом он вычисляет количество убитых моровых монстров, как фильтрует (т.е. надо смотреть сам скрипт плагина).

Во-вторых касательно Tamriel Rebuilt у меня есть одна гипотеза связанная с взаимодействием нескольких модов ЛИБО одного большого, как ваш проект:

EnableConsole (как я писал в одном из первых постов) не ВКЛЮЧАЕТ консоль, а, скорее всего, РАСШИРЯЕТ её (расширяя консольную функциональность — новые команды), которая при обработке длинных скриптов (либо огромного количества модов со скриптами) превышает размер внутреннего буфера.

Что происходит, если объяснять технически:

  1. Tamriel Rebuilt добавляет диалоги с длинными скриптами в поле "результат"
  2. Text.dll моей версии, v3.01, версии GFM имеет измененную логику работы с консолью.

  3.  EnableConsole=1 расширяет функционал, но использует буфер фиксированного размера

  4. При обработке длинного скрипта (комплекса скриптов) происходит buffer overrun

Почему работают обходные пути (изменение значения с 1 на 0 в строке EnableConsole=):

  • EnableConsole=0 - отключает проблемный функционал
  • Text.dll с диска 1С - использует другую реализацию/размеры буферов (у меня нет исходника оригинального text.dll с диска 1С, только исходники от Angel Death)

Итого: Я проверю свою гипотезу, если она подтвердится, то постараюсь придумать что делать с буфером, который вызывает эту ошибку. Я постараюсь его расширить, но неизвестно какие последствия это может вызвать. Спасибо, что указали на эту дыру 😃 

 

upd: глянул тот скрипт по убийству монстров....это конечно сильно 😄 на мой взгляд данный скрипт создаёт очень большую строку байткода, EnableConsole=1 добавляет дополнительную обработку/логирование, а в наших text.dll ограниченный буфер для этой операции. Как итог - скорее всего да, надо вносить расширение буффера, либо отключите пока на 0 EnableConsole. Если вы не разработчик text.dll, то по сути она вам и не нужна. Это конечно врядли исправит буффер с ЦЕЛЫМ Tamriel Rebuild, но кто знает, раз в год и палка стреляет.

Изменено пользователем ksteel
Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Pirate443 сказал:

Тут на днях всплыла такая ошибка:
При активации определенных диалогов из мода Tamriel Rebuilt (как выяснилось у которых в поле результат диалога длинный скрипт) происходит вылет игры, если установлен Text.dll версии 3.01 с фулреста, из GFM 5.10 c тесал или ваш модифицированный и при этом в angel.ini активирована опция EnableConsole=1. При EnableConsole=0 вылета нет. Если установить text.dll с диска 1с то вылета вроде бы нет вне зависимости от состояния EnableConsole.
Я не знаю что делает функция EnableConsole, консоль в игре работает и без нее, но в версиях text.dll старше 3.0 она как то вызывает конфликт с объемом поля результат диалога.
Я порылся на форуме и нашел что этот баг уже возникал в другом моде


там человек тоже пришел к выводу что виновен text.dll версии 3.0+.
Ну мы добавили в перевод ребилта рекомендацию установить EnableConsole=0.
Это не первоочередная задача, но если вдруг в коде работающем с этой опцией есть прям какая то очевидная "детская" ошибка, было бы хорошо ее поправить.
Если ничего не ясно, проще поставить EnableConsole=0 и не парится, кстати в дисковом морровинде, она как раз по умолчанию выкл. 

И вопрос всем: что все таки делает эта опция?

и попробуйте установить (предварительно сделав бэкапы text.dll и morrowind.exe) авось поможет

И тут встает логичный вопрос, если mcp патчит игру на 4 gb, то для чего? Раз появляется переполнение буфера.

Изменено пользователем ksteel
Ссылка на комментарий
Поделиться на другие сайты

21 минуту назад, ksteel сказал:

upd: глянул тот скрипт по убийству монстров....это конечно сильно 😄 на мой взгляд данный скрипт создаёт очень большую строку байткода

вот скрипт из поля результат проблемного диалога в Тамриэль ребилт
 

choice "Неважно." 1

if ( player->GetItemCount extravagant_glove_left_01 > 0 )
    if ( player->GetItemCount extravagant_glove_right_01 > 0 )
        choice "Эти экстравагантные перчатки." 2
    endif
endif

if ( player->GetItemCount "steel broadsword" > 0 )
    choice "Этот стальной меч." 3
endif

if ( player->GetItemCount T_Imp_Drink_WineSurilieBr_01 > 0 )
    choice "Эта бутылка 'Братьев Сурили'." 4
endif

if ( player->GetItemCount T_Orc_Drink_LiquorUngorth_02 > 0 )
    choice "Этот кувшин унгорта." 5
endif

if ( player->GetItemCount "imperial left gauntlet" > 0 )
    if ( player->GetItemCount "imperial right gauntlet" > 0 )
        choice "Эти имперские стальные перчатки." 6
    endif
endif

if ( player->GetItemCount Misc_SoulGem_Greater > 0 )
    choice "Этот большой камень душ." 7
endif

if ( player->GetItemCount Misc_SoulGem_Grand > 0 )
    choice "Этот великий камень душ." 8
endif

if ( player->GetItemCount misc_lw_platter > 0 )
    choice "Это алебастровое блюдо." 9
endif

if ( player->GetItemCount gold_001 >= 25 )
    choice "25 дрейков." 10
endif

if ( player->GetItemCount gold_001 >= 50 )
    choice "50 дрейков." 11
endif

if ( player->GetItemCount gold_001 >= 100 )
    choice "100 дрейков." 12
endif

if ( player->GetItemCount gold_001 >= 150 )
    choice "150 дрейков." 13
endif

То же самое. В процессе ковыряния я удалял по 1 логическому условию, после удаления все вариантов с золотом, т.е 4 штук диалог заработал даже с включенной опцией. (Естественно проблема не в золоте, я и другие пробовал удалять, в общем в данном случае если убрать 4 if - endif то работает всегда)
 

34 минуты назад, ksteel сказал:

либо отключите пока на 0 EnableConsole. Если вы не разработчик text.dll, то по сути она вам и не нужна.

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

Кажется за последние лет 10 вы единственный разработчик text.dll в сообществе.

Ссылка на комментарий
Поделиться на другие сайты

6 минут назад, Pirate443 сказал:

вот скрипт из поля результат проблемного диалога в Тамриэль ребилт
 

choice "Неважно." 1

if ( player->GetItemCount extravagant_glove_left_01 > 0 )
    if ( player->GetItemCount extravagant_glove_right_01 > 0 )
        choice "Эти экстравагантные перчатки." 2
    endif
endif

if ( player->GetItemCount "steel broadsword" > 0 )
    choice "Этот стальной меч." 3
endif

if ( player->GetItemCount T_Imp_Drink_WineSurilieBr_01 > 0 )
    choice "Эта бутылка 'Братьев Сурили'." 4
endif

if ( player->GetItemCount T_Orc_Drink_LiquorUngorth_02 > 0 )
    choice "Этот кувшин унгорта." 5
endif

if ( player->GetItemCount "imperial left gauntlet" > 0 )
    if ( player->GetItemCount "imperial right gauntlet" > 0 )
        choice "Эти имперские стальные перчатки." 6
    endif
endif

if ( player->GetItemCount Misc_SoulGem_Greater > 0 )
    choice "Этот большой камень душ." 7
endif

if ( player->GetItemCount Misc_SoulGem_Grand > 0 )
    choice "Этот великий камень душ." 8
endif

if ( player->GetItemCount misc_lw_platter > 0 )
    choice "Это алебастровое блюдо." 9
endif

if ( player->GetItemCount gold_001 >= 25 )
    choice "25 дрейков." 10
endif

if ( player->GetItemCount gold_001 >= 50 )
    choice "50 дрейков." 11
endif

if ( player->GetItemCount gold_001 >= 100 )
    choice "100 дрейков." 12
endif

if ( player->GetItemCount gold_001 >= 150 )
    choice "150 дрейков." 13
endif

То же самое. В процессе ковыряния я удалял по 1 логическому условию, после удаления все вариантов с золотом, т.е 4 штук диалог заработал даже с включенной опцией. (Естественно проблема не в золоте, я и другие пробовал удалять, в общем в данном случае если убрать 4 if - endif то работает всегда)
 

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

Кажется за последние лет 10 вы единственный разработчик text.dll в сообществе.

Спасибо, что подтвердили мою гипотезу! Я обязательно начну над этим работать! Надо определённо расширить буфер памяти "движка" через text.dll, раз он не хочет вылезать за свои рамки (вредный).

Ссылка на комментарий
Поделиться на другие сайты

40 минут назад, ksteel сказал:

И тут встает логичный вопрос, если mcp патчит игру на 4 gb, то для чего? Раз появляется переполнение буфера.

я думал что на использование оперативы.
В любом случае это переполнение случается только на text.dll версии 3.0 и старше. у буржуев такой проблемы вообще нет, никто не жалуется на те диалоги в ребилте.

Изменено пользователем Pirate443
Ссылка на комментарий
Поделиться на другие сайты

39 минут назад, Pirate443 сказал:

я думал что на использование оперативы.
В любом случае это переполнение случается только на text.dll версии 3.0 и старше. у буржуев такой проблемы вообще нет, никто не жалуется на те диалоги в ребилте.

значит Angel Death что-то да утаил в своём text.dll 😃 значит будем искать.

п. с. Можно конечно предположить самое страшное - локализацию 2000х годов. Что где-то что-то пролюбили при переводе и английский оригинальный DLL внутри выглядит совсем по другому, нежели наш. 

Изменено пользователем ksteel
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   2 пользователя онлайн

×
×
  • Создать...