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

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


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

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

При включении фикса карта уменьшается сжимается, чтоб материковую часть можно было видеть. Под этот масштаб подгонялись и открытые маркеры городов и поселений всяких на карте (вроде). Это я так понимаю всё записывалось в сейв. Потом при отключении этого фикса вроде карта менялась обратно, а вновь открытые маркеры уже оставались под уменьшенную карту.

Значит явно надо смотреть механизм "загрузки" сейва, изучать этот механизм, внедрять как минимум следующие доп шаги (это я на вскидку):

  • при обнаружении обновления параметров игрового движка (именно движка, а не esp | esm | скрипты) заставить делать бэкап этих самых параметров, после чего принимать новые заданные патчем параметры
  • ввести проверку, что эти изменения всё ещё присутствуют в движке, при обнаружении их отсутствия (откате патча) - доставать старые параметры (делать автозагрузку из бэкапа) их.
  • вывести меседж бокс через WarningPrn по обнаруженным изменениям в коде (байтах) движка

Т.е. сразу лечить не следствие (поломка карты), а причину — ошибки.

42 минуты назад, Fritz сказал:

По исправлению плавания аргониан, там был баг, связанный с отличием в названии расы, что не позволяло ящерицам использовать свою уникальную анимацию плавания в нашей версии. Путём общения с автором MCP было выяснено в чём загвоздка и фикс был реализован.

Даже так? я не смотрел конечно через tes eng и tes ru ID расы, но может проблема даже в том, что Ангел перевёл алфавит (сделал хук и вырвал 64 байта, внедрил кириллицу), а расу не перевёл должным образом. Но т.к. это конкретное отличие для уникальной расы, которые вшиты в движок - анимация и не подхватывалась. (опять же предположение) в любом случае решение уже есть, надо его просто перенести 😃 Можно попытаться нормально "перевести" название расы конечно, но возможно ограничение по  байтам. И впихнуть невпихуемое будет невозможно argonian - 8 символов, аргонианин - 10 символов.

42 минуты назад, Fritz сказал:

По остальным двум пунктам, там текст обрезался в нашей версии, что и было подкорректировано в MCP.

Да, это видно в моем ролике, который я заливал, когда перенёс фикс при повышении уровня из версии dll GFM в свою версию. Там написано просто "привлекательность" без цифр. Я сначала подумал что дело в том, что я "забыл перенести" проверку версии "М-МТ-МТБ?" из оригинального dll из-за чего патч немного "съезжал" в сторону, но:

  • а) её там попросту нет
  • б) при отключении русской локализации нормально отображалось Personality 40

И дело просто в количестве символов Personality - 11 символов Привлекательность - 17 символов и цифры не обрезались, они просто выталкивались "за рамку". Т.е. опытным путём пришёл к тому, что фиксы русской локализации априори должны быть перенесены в text.dllю Подумаю создавать ли новые cpp или вшить "фикс рамки" по повышенгию уровня в фикс по сообщению при повышении уровня. Вынести эти строки в angel.ini в к фиксам по бездоспешному бою и фиксу при повышении уровня.

42 минуты назад, Fritz сказал:

А почему локализацию MCP не используешь, там всё нормально описано.

А это я на скорую руку открыл случайно английскую версию. Локализованный МСР у меня есть, просто не тот открыл )

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

  • Ответов 152
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

42 минуты назад, Fritz сказал:

По исправлению плавания аргониан, там был баг, связанный с отличием в названии расы, что не позволяло ящерицам использовать свою уникальную анимацию плавания в нашей версии. Путём общения с автором MCP было выяснено в чём загвоздка и фикс был реализован.

По остальным двум пунктам, там текст обрезался в нашей версии, что и было подкорректировано в MCP.

А почему локализацию MCP не используешь, там всё нормально описано.

так как я стопятьсот раз оттестил в разных вариациях позволю высказать свое мнение.
Если поставить доработанный text.dll то при выборе в MCP пункта русские исправления MCP пишет что не найден совместимый text.dll и исправления не ставятся, как минимум обрезка цифр в окне повышения уровня.
Есть оставить text.dll с диска 1с или из MFR, или отсюда https://www.fullrest.ru/files/russian_text_input то MCP ставить без жалоб и исправления работают, и если уже после этого поставить text.dll из этой темы то исправления продолжают работать.
Так же с другой стороны если после установки русских исправлений из MCP заново скопировать text.dll из ванили или GFM то морка отказывается запускаться с включеным MGEXE и MWSE

Вот и получается что вроде сами исправления вносятся в morrowind.exe, но при этом совершаются какие то манипуляции и с text.dll и требуется его определенная версия.
Нужно либо заставить MCP принимать любые text.dll либо внести в него эти исправления сразу. Ну или хотя бы убедится что при замене text.dll после установки MCP, пользователь не теряет какие либо исправления.

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

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

И дело просто в количестве символов Personality - 11 символов Привлекательность - 17 символов и цифры не обрезались, они просто выталкивались "за рамку". Т.е. опытным путём пришёл к тому, что фиксы русской локализации априори должны быть перенесены в text.dllю Подумаю создавать ли новые cpp или вшить "фикс рамки" по повышенгию уровня в фикс по сообщению при повышении уровня. Вынести эти строки в angel.ini в к фиксам по бездоспешному бою и фиксу при повышении уровня.

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

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

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

Нужно либо заставить MCP принимать любые text.dll либо внести в него эти исправления сразу. 

Никоим образом нельзя этого делать с моей версией! По крайней мере с моей text.dll. Она постоянно меняется, меняется ХЭШ, байты постоянно сползают в сторону, от чего создателю MCP прийдётся чуть ли не каждую неделю выискивать эти смещенные байты в моей версии и выкатывать доп патч. Это бессмысленно пока идёт разработка ядра text.dll. Я потому и удалил свой форк MCP, потому что он мог ломать совершенно другие адреса в моём text.dll !!!

MCP сначала проверяет хэш Morrowind.exe! И выбирает подходящие под него патчи (которые ставятся нормально). Потом он проверяет хэш text.dll и выбирает "непонятные патчи для него". Мой text.dll он не знает (и слава богу) иначе бы ломал его.

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

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

а вот чего MCP хочет от text.dll непонятно.

именно! я уже писал раннее, что хэш после патчинга MCP и просмотр через Hex Workshop Hex Editor не дают никакой картины по изменениям ДО патчинга MCP и ПОСЛЕ патчинга MCP. Будто он вообще ничего не меняет в text.dll 😉 

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

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

Ну или хотя бы убедится что при замене text.dll после установки MCP, пользователь не теряет какие либо исправления.

этим я сейчас и занимаюсь 😃 

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

в целом по Аргонианам я уже нашёл этот фикс 

Было до патча MCP:

image.png.e62f37da17ee9e439adeca1bf9f2069b.png

Стало после патча MCP:

image.png.05d2a831065586e0318389aa18e149b7.png

 

Что это за байты? Это замена слова Argonian на кириллические символы в кодировке cp1251. Предполагаю (хотя немного глупое предположение Argonian -> Аргонианин

Немного сложно то, что все три патча ставятся одной галкой + 4 gb патч стаивтся по умолчанию. Итого 1 галочка=4 патча.

image.png.1c4cdef3f3b656424b2ae6ef56fbb0a8.png

 

Сейчас сделаю тестовый фикс и проверим 😃

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

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

Немного сложно то, что все три патча ставятся одной галкой + 4 gb патч стаивтся по умолчанию. Итого 1 галочка=4 патча.

разве 4 гб патч это русские исправления? я думал он сам по себе ставится в принципе.

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

Новая вводная.

Как выяснилось опытным путём и личными тестами — при отключении русской локали (И ДАЖЕ БЕЗ MCP патчаEnableRussianLocalization=0 в Angel.ini корректно работают:

  • анимация плавания Аргониан работает корректно по умолчанию:
  • image.thumb.png.ab3273a861ead151eed240eba1402d16.png
  • меню заклинаний нормальное (не обрезанное),
  • image.png.70eb54630dfdf6a3e402b33e7de9a847.png
  • окно повышения уровня отображается корректно без обрезки .
  • image.png.621c6a9c1242231756460df3c18c827b.png

Соответственно в Angel.ini будет создан новый блок [rules_russian_fix], где будут находиться 4 фикса, которые будут работать ТОЛЬКО при включении русской локали! Т.к. в английской версии эти патчи ПРОСТО НАПРОСТО НЕ НУЖНЫ!

  • fix_argonian_swim —    image.png.e7f4a75ce42b48b64078cb43ff2c7d3d.png
  • fix_levelUp_messages
  • fix_levelUp_window —  image.png.0d4bb5f6997ed6262992e1ec860a8e9f.png
  • fix_SpellCreation_window — image.png.8279086fa381bbeee086a6224a8e0c62.png

Я не буду объединять патчи fix_levelUp_messages и fix_levelUp_window, да и вообще все патчи в одну строчку - для гибкости и возможности отключения какого-либо патча отдельно. 

Надо будет выяснить нужен ли fix_unarmored_bug=1 в английской версии. Т.е. присутствует ли баг бездоспешного боя в английской версии? Или это тоже только косяк русской версии. Если кто знает, прошу написать мне х) или в теме в общем.

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

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

разве 4 гб патч это русские исправления? я думал он сам по себе ставится в принципе.

в том то и дело 4 GB патч ВСЕГДА применяется, какую бы вы галочку не выбрали 😃

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

ЛичГвардия востала из стазис чамберов?))

Очень неожиданно, но очень приятно!(С)

4гб совершенно необходимый патч, который не ставить нельзя по определению, конечно!

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

По бездоспешному фиксу, это вроде общая проблема.

Про аргониан, в енг версии точно анимация работает корректно по умолчанию, я слабо помню те нюансы, Олег лучше может довести в чём там детали.

Да, Ёж, здоров!

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

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

4гб совершенно необходимый патч, который не ставить нельзя по определению, конечно!

Я целиком и полностью согласен с вами х) 

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

Мне чтобы перенести патч по анимации плавания, надо использовать intercept и fillbytes. Но...японамать вот это функция выбора анимации при плавании, не слишком ли "маленькая" 😄  либо это вообще функция, отвечающая за анимацию любого движения персонажа:

image.thumb.png.afcbc0018b615075276a65821f304760.png

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

>Мне чтобы перенести патч по анимации плавания

В связи с этим вопрос-с какой целью переносится то, что уже реализовано и функционирует должным образом?

Я увидел работу над Ё и другие полезные модификации библиотеки, ну а какой смысл изменения рабочих исправлений

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

Если все исправления можно внести в один кадастр, который будет еще и удобней, быстрее, стабильнее - было бы странно пройти мимо такой полезной и нужной возможности!
Оптимизации способны пораждать

Спойлер

(не только хаос)

новый вектор развития, а полное переосмысление древних опытов, сообщает о ЛевелАпе и Ростом над собой!
В нашем случае - МВ жил, Жив и продолжает заниматься, тем, что у него хорошо получается дальше!

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

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

>Мне чтобы перенести патч по анимации плавания

В связи с этим вопрос-с какой целью переносится то, что уже реализовано и функционирует должным образом?

Я увидел работу над Ё и другие полезные модификации библиотеки, ну а какой смысл изменения рабочих исправлений

Текущая подцель — не изменять рабочую версию исправления, а сделать так, чтобы text.dll (русская локализация в частности) в целом не ломала движок.

В общей идеологии MCP и text.dll работают параллельно, создать систему, где все фиксы работают в гармонии, Заменить "сборную солянку" из утилит на "швейцарский армейский нож" (я не про фиксы по типу зачарования стрел, ношения перчаток вместе с наручами и так далее). Чинить не следствия неправильной работы text.dll, а саму неправильную работу text.dll и не снаружи меняя байты памяти, а изнутри, не изменяя morrowind.exe вообще, как часть игрового процесса. На примере фикса плавания аргониан он будет не просто менять строку, а интегрируется в систему локализации, как это было с фиксом по повышению уровня.

Модульность и гибкость. Сейчас в MCP как - всё или ничего, либо 3 фикса разом, либо 0. Я же хочу сделать каждый из фиксов отдельно подключаемыми. Дать игрокам / плагиностроителям выбор - что им требуется, то и включают, что им мешает - отключают. 
Расширение в будущем: после внедрения lua на уровень движка, кодировки utf-8, вдруг кто-то захочет  сделать мод (по типу преобразования Ё-Е (это совсем как пример))? Мододелу/плагиностроителю не надо будет читать 40ка страничный туториал как установить Морровинд 1с (сборку fullrest к примеру) в стим, чтобы работал оверлей, как потом накатить MCP, MGE XE почему одно без другого не работает, сверху ещё налепить mwse каким образом оно работает (по такой-же причине MGE с mwse объединены, если не ошибаюсь). А человек просто возьмет напишет скрипт и движок будет это поддерживать посредством text.dll (ядра) и его модулей, сможет вести нормальную отладку всего и вся и получать фидбек от пользователей. Сможет отключать оригинальные патчи и совершенствовать что-либо в Морровинде. Исключение каких-либо конфликтов в будущем.

Я не изменяю MCP, его фиксы, я переношу его на уровень движка. Вместо чёрного ящика будет прозрачный аквариум, где всё будет видно что как работает и для чего, потому что исходные коды в доступности. И у всего этого будет единая точка конфигурации. 

Я хочу создать не просто патч, я хочу создать экосистему.

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

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

Я не изменяю MCP, его фиксы, я переношу его на уровень движка.

Я принял, выглядит достойной задачей, будем способствовать.

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

6 часов назад, Fritz сказал:

Я принял, выглядит достойной задачей, будем способствовать.

СПАСИБО! 🤝🥳
А чтобы у пользователей не было путаницы, в логе первого вдоха 00_text_dll_first_light.log, при подключении фиксов, будет чётко прописано следующее (Сама надпись уже реализована, просто фикс настраиваю, чтобы он ничего лишнего не менял):
image.thumb.png.df3870b865a240beaaa80acac93d4d86.png

Т.е. любые импортированные на уровень движка патчи из MCP будут иметь чёткое описание, что это патч из MCP от тех же разработчиков, просто на уровне ядра игры. 😃 

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

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

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

А пользователи, кто подкинул идею по модернизации будут упомянуты. Например Siberian Crab подсказал идею сделать клавишу смены раскладки не статичной, что считаю тоже немаловажным для упоминания.

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

Фикс Анимации плавания успешно перенесён! Теперь он не просто меняет строку с Argonian на Аргонианин, а сама проверка расы должна работать с двумя названиями: как Argonian, так и Аргонианин ! 😊

Полный отчёт сделаю как только перенесу остальные фиксы для русской локализации: фикс меню создания заклинаний и фикс окошка при повышении уровня.

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

Я обнаружил "молчаливый фикс" в MCP для русской локализации, о котором в принципе не пишется в логе, хотя этот фикс ОЧЕНЬ важен

Было:
Screenshot_3.png.ccd9a82edbb79b89cd3424ac58e63f20.png

Стало: Screenshot_6.png.522eecc79f94beae2ff377f36c5c251f.png
 

Фикс из категории БУФЕРОВ И БЕЗОПАСНОСТИ.

Предположение: Фикс переполнения буферов в системе обработки ошибок звуковой подсистемы Morrowind.

Я фиксил уже расширение консоли по переполнению буфера. Этот же фикс прорабатывает систему буферов по звукам.

  • Проблема: Слишком длинные сообщения об ошибках в английской версии
  • В русской локализации эти строки становятся еще длиннее из-за кириллицы
  • Приводит к переполнению буферов и возможным сбоям

Что делает MCP? Он укорачивает строки ошибок, чтобы избежать переполнения., заменяет list на l.

0x00 00 80 3F - скорее всего, padding или служебные данные.

Это довольно важный фикс безопасности, предотвращающий потенциальные сбои при работе со звуковой системой в русской локализации. НО переносить его в таком виде - кощунство. Я буду "забивать гвозди микроскопом". Надо использовать text.dll в полной мере.

Мы увеличим буфер для обработки такого типа ошибок (как я сделал фикс по переполнению буфера расширения консоли).

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

нашёл функцию в движке FUN_0048b000, которая отвечает за обработку всех следующих ошибок:

  • "Invalid pointer found in TES 'lightSounds' list!"

  • "Invalid REFR pointer found in TES 'lightSounds' list!"

  • "Invalid REFR pointer found in TES 'tmpSounds' list!"

  • "Invalid REFR pointer found in TES 'sounds' list!"

  • "Trying to AddTmpSound with invalid reference!"

image.png.13d5e94d13060cadebcde16a86f92628.png

буду препарировать данную функцию, увеличивать буфер, а точнее сделать динамический буфер, дабы не занимать места больше чем нужно.

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

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

Фикс Анимации плавания успешно перенесён! Теперь он не просто меняет строку с Argonian на Аргонианин, а сама проверка расы должна работать с двумя названиями: как Argonian, так и Аргонианин ! 😊

Полный отчёт сделаю как только перенесу остальные фиксы для русской локализации: фикс меню создания заклинаний и фикс окошка при повышении уровня.

Насколько я помню, для плаванья аргонцев движок игры проверяет не ID расы, а ее название, которое отличается для других языков:

EN: Argonian
DE: Argonier
ES: Argoniano
FR: Argonien
HU: Argóniai
IT: Argoniano
PL: Argonian
PT: Argonianos
RU: Аргонианин

А у китайского шрифт Win32!!!

Фиксить нужно проверку не на название, а на ID расы, которая одинакова для всех языков.

Соответственно это исправление должно быть в MCP.

 

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

42 минуты назад, olol сказал:

Насколько я помню, для плаванья аргонцев движок игры проверяет не ID расы, а ее название, которое отличается для других языков:

EN: Argonian
DE: Argonier
ES: Argoniano
FR: Argonien
HU: Argóniai
IT: Argoniano
PL: Argonian
PT: Argonianos
RU: Аргонианин

А у китайского шрифт Win32!!!

Фиксить нужно проверку не на название, а на ID расы, которая одинакова для всех языков.

Соответственно это исправление должно быть в MCP.

 

Ох даже так? ну в любом случае этот фикс пока направлен на русскую локаль, пока в text.dll нет поддержки польского языка (хотя их Morrowind.exe очень близок к нашему, хоть и базируется на GOTY edition издании, алфавит сродни нашему ) Я добавлю этот алфавит тоже, после внедрения кодировки UTF-8. Будет добавлен блок для исправления польских багов в Angel.ini (если есть какие-то специфичные). А шаблон исправления будет взят с исправления русских фиксов. Сейчас фокусируюсь именно на русской локали, которая даст уже шаблоны на каждый похожий баг 😃

С китайскими иероглифами будет сложнее там вроде 80к иероглифов 😄 определенно нужна будет кодировка UTF-8 чтобы сие чудо внедрить.

Сами образы китайской и польской версий у меня есть. Со стима можн овыдернуть Morrowind.exe FR и DE. Про другие версии я даже не знал. Но определенно если ест ькакая-то локализация морровинда - её словарь должен быть в text.dll 

Что касается De-FR да, в них присутствует этот баг по плаванию аргониан тоже (ох уж это наплевательское отношение беседки к другим языкам).
Я добавлю отдельные фиксы позже, которые будут подключаться в соответствующей языковой локали, с выбором фикса вкл/выкл. Т.е. помимо EnableRussianLocalization=1 появятся ещё и EnableFranceLocalization=1, EnableDeutchLocalization=1 и прочие. Сначала надо разобраться с русской локалью, создать шаблоны для фиксов при других локалях. А так-же помимо [Rules_only_for_Russian_version] будут Rules_only_for_France_version и так далее. Работы много, но мы её сделаем 😃 

upd перечитал ваше сообщение второй раз. Действительно, проверки должны идти не по названию насы в игре, а по ID расы. Вы открыли мне глаза) зачем плодить эти фиксы, если можно сделать один универсальный.

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

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

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

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

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

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

Войти

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

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

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...