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

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


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

Всем привет. Решил я тут поиграть в старый добрый Морровинд, установить Фуллрест репак, интегрировать нейросеть в него и т.д. (ну вы понимаете игры Тес без моддинга в наше время никуда, а возможностей сейчас куча). И вот что я заметил, старый добрый https://www.fullrest.ru/files/russian_text_input#6235 text.dll имел ряд недостатков(по моему мнению😞)

1. Переключение раскладки на ScrollLock. Не очень удобно, особенно если вы пользуетесь и консолью в игре, и создаете зелья/заклинания. Постоянно переключаться через СкроллЛок не очень удобно, он находится далековато (а у пользователей ноутбуков он вообще через Fn работает). Что я сделал? Я переназначил клавишу переключения раскладки на LAlt путем смены значения с DIK_Scroll на DIK_LAlt:

 image.png.5aa6b63372e5e85b366e4deba461a472.png
2. Наличие слепого пятна в переводе клавиш с английского на русский (расскажу максимально подробно, насколько я смогу, тапками не кидайтесь): при использовании английской раскладки, если вы нажимали клавишу "/?.," (клавиша между буквой "ю" и правым Shift) то печатались символы "/ и ?" (? - с зажатой клавишей Shift), при переключении раскладки на русскую ПО ЛОГИКЕ должны были печататься знаки препинания ". и ," ( , (запятая) с нажатой клавишей Shift). НО этого не происходило, и печатались стандартные английские "/ и ?". Это происходило потому что в "таблице перевода, назначении клавиш" стояла пустота (0х00) вместо правильных значений. Я же внёс значения для этих клавиш ( 0х2Е для "." и 0х2С для ",") и как бы "перевёл" их для движка игры:

image.png.844f382866c3a39b0af562fe31a529b8.png

3. При использовании MCP патча (Morrowind Code Patch) у оригинального Morrowind.exe менялся цифровой отпечаток. Из-за чего старенький text.dll не понимал что это за новый такой Morrowind.exe и выдавал ошибку "Unknow Morrowind.exe". Потому что он знал только оригинальный Морровинд с его цифровым отпечатком, либо Морровинд+Трибунал, либо Морровинд+Трибунал+Бладмун. И для каждой версии он задавал координаты в оперативной памяти (очень сложно объяснять это на пальцах). Проще говоря если была непонятная версия —  неверные координаты ломали память игры и соответственно ничего не работало (хотя ошибка Unknow Morrowind.exe и не давала этого сделать). Что сделал я - я добавил настройку в Angel.ini, которая выглядит следующим образом: 

image.png.5c5d12bef97d6f3f73a2b2cf2a297d04.png

Теперь при установке этого Text.dll (с прилагаемым к нему Angel.ini), сначала надо выставить ту версию игры, которую используете ВЫ. Если этого не сделать (запустить версию с бладмуном, а в строке будет MT), то вам выдаст ошибку, потому что я ввёл безопасную валидацию (Я БЕРЕГУ ТВОЙ МОРРОВИНД! ТЫ ЕГО НЕ ДОЛЖЕН(НА) СЛОМАТЬ!😞)

image.png.1d9e3e42115c7be84fd9e2db390f3b86.png

Я думаю, итак, понятно что после слов Version="СЮДА НАДО ВПИСАТЬ СВОЮ ВЕРСИЮ, УБРАВ КАВЫЧКИ КАК НА СКРИНШОТЕ". Я почти уверен, что 99% игроков играют в версию МТВ, так что ничего менять не нужно в Angel.ini, эта настройка стоит там по умолчанию.

А если вы всё же играете без какого-либо дополнения, я бы хотел у вас спросить следующее: "....кто вы?"

Также этот text.dll должен быть (по крайней мере мои локальные тесты показали, что это так) универсальным и подходить к любой версии Morrowind.exe. Главное соблюдайте соответствие в строке Version= (M/MT/MB/MTB) и всё у вас будет хорошо. И да, с этим text.dll вам не нужно будет скачивать или искать оригинальный образ диска (потому он и тяжелее (241 кб) немного (~ на 70 кб), в отличие от старенького text.dll (~170 кб)). 

02/10/2025 UPD: Обновил Text.dll, а именно:

1. Главное дополнение — теперь, клавишу можно переназначить через Angel.ini! Для этого в Angel.ini был добавлен следующий блок:image.thumb.png.3df8864028dcbcffea361a3ddc2f81c2.png

Вопрос: "Как добавить свою клавишу и можно ли это сделать вообще?"

Ответ: да, добавить можно:

  1. Идёте на https://learn.microsoft.com/en-us/previous-versions/windows/desktop/bb321074(v=vs.85), где ищете нужную вам клавишу.
  2. Меняете значение в строке ToggleLayout = (ставите сюда значение клавиши без скобок)
  3. Играете.

Как было реализовано?

  1. "Создал память" для клавиши, внеся строку: image.png.1e5409ad40af7d9bf51c1b95b2968c18.png
  2. Заставил читать Angel.ini внеся в "void InitMWKeyboard" следующую строкуimage.png.5b837c228a6977439ddf3102cea1eab8.png
  3. Заменил фиксированную клавишу на переменную из "памяти":                                                                  image.png.09d641fdf64dd71388a1fce2db298829.png
  4. Добавил "пульт управления" в Angel.ini:                                                                                                                                                                                                         image.png.4d22043b9ba57ac18015a54b6a10cf43.png

2. Небольшие фиксы слепых пятен: 

  • верхний ряд цифр (клавиша 2) при русской раскладке, при сочетании клавиш Shift+2 теперь правильно переводится в символ " " " (верхние двойные кавычки), Shift+2 в английской раскладке всё также даёт "@" (собака).
  • верхний ряд цифр (клавиша 4) при русской раскладке, при сочетании клавиш Shift+4 теперь правильно переводится в символ " " (точка с запятой), Shift+4 в английской раскладке всё также даёт " $ " (доллар).
  • верхний ряд цифр (клавиша 6) при русской раскладке, при сочетании клавиш Shift+6 теперь правильно переводится в символ " " (двоеточие),  Shift+6 в английской раскладке всё также даёт " ^ " (не помню как называется символ 😄)
  • верхний ряд цифр (клавиша 7) при русской раскладке, при сочетании клавиш Shift+7 теперь правильно переводится в символ " ? " (знак вопроса), Shift+7 в английской раскладке даёт " & " (амперсанд).

НЕ БЫЛО ПОФИКШЕНО: верхний ряд цифр (клавиша 3) при русской раскладке, при сочетании клавиш Shift+3 должна переводится в символ " № ", но вместо него она упорно писала цифру 1. Сначала я добавил этот символ № в алфавит DialogueEngine.cpp - игра всё ещё писала цифру 1. Потом я удалил из Алфавита Большой твердый знак "Ъ", влепил на его место символ "№". Игра стала писать пустое место или "пробел". Я предполагаю, что это из-за шрифта (даже нового), не стал заморачиваться и вернулся к тому, что и англ и русская раскладка при Shift+3 пишут символ "#". Если уж писать символ "№", то можно это сделать и английской N просто не так красиво =( . 

Также прилагаю таблицу "обновленных" данных в таблице (с уже изменёнными):
image.png.3604244cfae868327aa175cee7899577.png

Всем спасибо за внимание, в особенности пользователю Angel Death за труд: 

 image.png.d4a5054a771e2edc44d38922c3ce3058.png

из далёкого 2005 года.

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

Text.dll angel.ini

 

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

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

Ого, русский морр без виртуального диска, революция свершилась!

Кстати, ProcessPriority=1 за что отвечает?

Всю жизнь было 0

Насколько я понял, text.dll не просто какой-то руссификатор. Это целый комплексный патч, на уровне памяти игры(фиксит бездоспешный бой и т.д. и т.п). Но также он расширяет консоль, вносит в неё команды новые по типу: 

o    .help: Показывает список всех этих новых команд.

o    .version: Показывает точную версию .dll файла.

o    .priority: Позволяет на лету менять приоритет процесса Морровинда в Windows (Normal, High, Realtime). (Скорее всего эта команда и связано со строкой ProcessPriority=1. Смею предположить, что в 2004-2005 годах были всё ещё проблемы со "сворачиванием игры" по альт-таб, потому эту функцию впихнули. Если нет, то для чего менять приоритет процесса игры через консоль - я пока не могу понять).

o    .fps max: Позволяет установить лимит максимального FPS в игре.

o    .dump: Мощная отладочная команда для разработчиков, позволяющая "заглядывать" в память игры.

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

ProcessPriority=0

Когда-то ранее было обсуждение оного...

Вроде для повышения ускорения загрузки, но на слабых ноутах от этого звук отрубался.

Так что ну его в баню, не стоит ставить более нуля.

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

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

Здравствуйте еще бы средство от вылетов так как не играю больше из за этого в оригинальный morrowind пришлось перейти на OpenMW

Вы просите "одно лекарство" от всех болезней 😃 
Увы такого не существует. Движок старенький, на костылях работает. Советую играть в фуллрест репак, он более-менее стабильный. Этот файл text.dll, он оперирует с памятью игры. Но увы я не знаю какой блок памяти за что отвечает. Проще говоря - это очень мощный инструмент, но технологий для его использования "на полную катушку" у меня нет. 

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

Ого! Интересно.

 

В 9/28/2025 в 2:28 AM, ksteel сказал:

клавишу переключения раскладки на LAlt путем смены значения с DIK_Scroll на DIK_LAlt:

Чревато конфликтами с некоторыми MWSE-Lua модами, задействующими левый Альт.

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

6 часов назад, Марк К. Марцелл сказал:

Ого! Интересно.

 

Чревато конфликтами с некоторыми MWSE-Lua модами, задействующими левый Альт.

Да, вы правы. Я об этом тоже думал, но, как правило, если в Lua моде есть какой-то хот-кей, то, скорее всего, его можно через мсм переназначить? Это явно проще чем заново перекомпилировать text.dll 😃даже если нет хот-кея, то можно его сделать для этого мода 😃

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

3 часа назад, ksteel сказал:

если в Lua моде есть какой-то хот-кей, то, скорее всего, его можно через мсм переназначить?

Если разработчик заложил такую опцию. Что бывает не всегда.

3 часа назад, ksteel сказал:

даже если нет хот-кея, то можно его сделать для этого мода

В принципе, да. Мне, например, проще подправить луа-мод, чем перекомпилить ДЛЛ. Ну а тому, кто просто решил поиграть в Морру и нашёл в интернете инфу, что язык переключается по СкроллЛок, одинаково сложно будет и то, и другое. :-)

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

В 28.09.2025 в 11:13 AM, Dagot_Prolaps сказал:

Ого, русский морр без виртуального диска, революция свершилась!

Вичановкий Толки Моррошинд это давно делал

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

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

Да, вы правы. Я об этом тоже думал, но, как правило, если в Lua моде есть какой-то хот-кей, то, скорее всего, его можно через мсм переназначить? Это явно проще чем заново перекомпилировать text.dll 😃даже если нет хот-кея, то можно его сделать для этого мода 😃

Имхо оптимальным тут был бы вынос хоткея в инишник, если это возможно 

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

В 30.09.2025 в 1:15 PM, Siberian Crab сказал:

Имхо оптимальным тут был бы вынос хоткея в инишник, если это возможно 

Что-то я не подумал об этом совсем 😃 сегодня как освобожусь - попробую это сделать

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

В 30.09.2025 в 1:15 PM, Siberian Crab сказал:

Имхо оптимальным тут был бы вынос хоткея в инишник, если это возможно 

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

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

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

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

С настройкой горячей клавиши это прям тема. А как Morrowind Code Patch относится к этой версии text.dll? не ругается ни на что?

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

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

С настройкой горячей клавиши это прям тема. А как Morrowind Code Patch относится к этой версии text.dll? не ругается ни на что?

Данный text.dll должен быть совместим c любой версией morrowind.exe оригинального движка (goty, обычный MTB или же модифицированный через MCP) 😃

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

3 часа назад, ksteel сказал:

Данный text.dll должен быть совместим c любой версией morrowind.exe оригинального движка (goty, обычный MTB или же модифицированный через MCP) 😃

MCP ругается при установке на несовместимый Text.dll а после этого и морровинд при запуске, игра в результате запускается но без MWSE, по крайней мере кнопки MCM просто нет.
update со второй попытки заработало, MCP по прежнему ругается на файл, но игра вроде нормально заработала.


 image.thumb.jpeg.ce380ecc7013c513922f47ba1f91e0b3.jpeg

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

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

MCP ругается при установке на несовместимый Text.dll а после этого и морровинд при запуске, игра в результате запускается но без MWSE, по крайней мере кнопки MCM просто нет.
update со второй попытки заработало, MCP по прежнему ругается на файл, но игра вроде нормально заработала.


 image.thumb.jpeg.ce380ecc7013c513922f47ba1f91e0b3.jpeg

попробуй сначала пропатчить морровинд, а потом  закинуть мой text.dll
видимо в самом mсp есть проверка crc ключей, которые он сопоставляет с text.dl

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

А возможно он ругается на вес dll (отличия моего 241 кб и оригинального 170кб) cуммы не совпадают. Если бы у меня были исходники MСP, я бы смог посмотреть в чём проблема. Но я их найти не могу, к сожалению. А так да, судя по логам MCP патчи ставятся. MCP и MGE видны при загрузке  и в главном меню игры. Использовал Fullrest Repack последней версии со всеми аддонами.

Screenshot_3.png

Screenshot_2.png

Screenshot_4.png

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

3 часа назад, ksteel сказал:

А возможно он ругается на вес dll (отличия моего 241 кб и оригинального 170кб) cуммы не совпадают. Если бы у меня были исходники MСP, я бы смог посмотреть в чём проблема. Но я их найти не могу, к сожалению. А так да, судя по логам MCP патчи ставятся. MCP и MGE видны при загрузке  и в главном меню игры. Использовал Fullrest Repack последней версии со всеми аддонами.

 

Ну в общем со второй попытки заработало и ладно.
хотел еще спросить у вас на скринах кодепатч бэта версии на русском, а вы где его взяли? или сами переводили описание? на нексусе вроде только на английском.
и что за нейросеть вы в фулрест репакт интегрируете?
 

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

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

Если бы у меня были исходники MСP, я бы смог посмотреть в чём проблема. Но я их найти не могу, к сожалению.

 

А это не оные часом?

 

Цитата

 

https://www.nexusmods.com/morrowind/mods/19510?tab=files

Optional files MCP Python Version

 

 

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

7 часов назад, Pirate443 сказал:

Ну в общем со второй попытки заработало и ладно.
хотел еще спросить у вас на скринах кодепатч бэта версии на русском, а вы где его взяли? или сами переводили описание? на нексусе вроде только на английском.
и что за нейросеть вы в фулрест репакт интегрируете?
 

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)



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

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

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

 

А это не оные часом?

 

 

Питон версия MCP 🤔 я про такую даже не слышал.
Ну 621 строчка кода в main.py  это очень серьёзно, пару дней точно понадобится на разбор, но эта не та версия. Я не помню, чтобы устанавливал MCP отдельно от Fullrest Репака — единственное, что я с ним делал, так это обновил MWSE (скачивал с нексуса, апдейтил через: image.png.38e70e8c9d95594ee17dc9134d4b6dd0.png
Сомневаюсь, конечно, что анализ питон версии поможет, но я посмотрю его 😃 в целях накопления информации.
Я приложу свою версию "mcp.exe" и папку от него "mcpatch" в архиве

mcp.zip

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

8 часов назад, Pirate443 сказал:

Ну в общем со второй попытки заработало и ладно.
хотел еще спросить у вас на скринах кодепатч бэта версии на русском, а вы где его взяли? или сами переводили описание? на нексусе вроде только на английском.
и что за нейросеть вы в фулрест репакт интегрируете?
 

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

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

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

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

Питон версия MCP 🤔 я про такую даже не слышал.
Ну 621 строчка кода в main.py  это очень серьёзно, пару дней точно понадобится на разбор, но эта не та версия😃 в целях накопления информации.

Мне тут вот верно подсказывают, что сие и есть сырцы МСП.
Точнее сказать не получается, Двемер в "отпуске"и когда из него Явится, вопрос риторический.

 

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

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)



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

Хорошо, что кто-то взялся. Может, из экспериментов и хиханек получится что-то более серьёзное и иммерсивное.

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

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

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

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

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

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

Войти

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

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

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