Активность
- Сегодня
-
Да, проблема в том, что НА ДАННЫЙ момент angel ини читается игрой только 1 раз - при запуске. Чем может обернуться постоянное обращение morrowind.exe к angel.ini - я не знаю, но гипотетически даже можно сделать полноценное меню и встроить его в меню игры, как это сделано в реализации mcm меню mwse. Отдельное меню Angel, в котором будет не только "горячая клавиша смены языка" но и другие параметры(с описанием), которые можно менять. Эти параметры сможет менять любой пользователь, даже не сведущий во всем этом "моддинге и патчинге"
-
так Бевезде оно видимо не мешает, это игроки собаки такие пилют тут всякие материки на 20 летнюю игру и жалуются :))) ну лично я тоже нейросетями пользуюсь, очень помогает. ну раскладку ваш text.dll будет переключать, а вот меню настройки клавиши, которое спросит у игрока нажмите желаемую клавишу, а потом запишет ее сканкод в angel.ini вполне можно сделать, собственно у меня уже есть рабочий вариант. Конечно новое значенеи только после перезапуска заработает. Я изначально хотел сделать проверку и переключение top\cel\rmk для плагинов, а то до сих пор попадаются игроки у которых оно в 0 стоит и они спрашивают почему локации в моде не переведены и топики не работают. А тут как раз вы загрузили свою версию, ну я и выбор клавиши прикрутил. Хотя конечно если вы это потом напрямую сделаете, то да mwse будет костылем
-
trevorphilips1 присоединился к сообществу
-
aoygyyd присоединился к сообществу
-
1. Ну тем не менее, даже тестер важен для любого проекта =) 2. После внесения исправления по "сообщениям при поднятии уровня" и "переполнения буфера", я как раз таки и возьмусь за то, что буду смотреть КАК именно MCP взаимодействует с text.dll, меняет ли он в нем что-то вообще (просто вносить правки в уже скомпилированный dll файл - занятие такое, неизвестно к чему может привести. А шлюз я хочу добавить как раз для того, чтобы отладка и разработка шла легче. Чтобы каждый раз не вписывать "экспериментальный код в здоровое тело text.DLL". Добавил модуль, ввел логирование - смотришь что получается. Медленно но верно.) 3. Вы меня не поняли. Разница между mwse и text.dll большая. Попробуйте написать мод.lua, который будет переключать русскую раскладку в игре =), я вам больше скажу, он даже будет вам выдавать сообщения и писать, что он работает, он меняет раскладку, но по факту раскладка меняться не будет. Приоритет доступа text.dll к памяти игры можно разобрать в сравнении, что у игры 2 сердца. Одно morrowind.exe, а второе text.dll. одно слушает другое. В этом и прелесть русской локализации. А вот mwse это грубо говоря "Lua- construction-set, который загружается уже после того, как загрузились morrowind.exe и text.DLL, подгружая свои плагины-модули =).) Также я тоже внесу ясность: мой text.dll будет не "врагом", но "исследователем", он не будет диктовать другим разработчикам по каким правилам жить и творить. Представьте что у вас есть папка, допустим от morrowind\text._DLL\lua\. В которую вы закинули свой lua мод по "смене раскладки" и он заработал так, как вы задумали =), не зависимо от версии mwse, потому что text_DLL обучен последней версии Lua, он знает как старые команды, так и новые." И, как вы уже сказали - text.dll в английской версии нет, потому я хочу внести полную совместимость с mwse как прямую, так и обратную..... А потом Morrowind.exe через text.dll спросит Вас в недалеком будущем "хм, господин пират, а не хотите ли вы скинуть мне какой-нибудь игровой скрипт по поведению НПС в формате . json? Я и их научился читать! А вам не надоело постоянно переключать кодировку с UTF-8 на cp1251? Пишите мне скрипты сразу в UTF-8, я и её читать научился! И так далее." Про "дрожание" нпс еще совсем рано рассуждать, для начала надо сделать ядро text.dll.
-
ynuksaa присоединился к сообществу
-
Что бы внести ясность я не из команды Тамриэль Ребилда, даже не переводчик, всего лишь бэта тестер перевода. так в MCP уже же есть исправления для text.dll, значит способ у них был, в любом случае МСP в первую очередь патчит exe, я так понимаю только русские исправления и заносятся в text.dll. Может быть им кто то предоставил правки и сказал куда вставить, ничего не знаю про то как в MCP появились правки для text.dll. И надо ли им оно сейчас. Общие правки они и так делают в exe. Если вдруг возникнут новые чисто русской локализации то проще вам их самим исправить чем вразумлять авторов MCP что и куда надо добавить. Ни к чему не призываю и и не убеждаю чисто мое мнение. Ну я бы не сказал что MWSE прям уж костыль. Так то и text.dll можно считать костылем, с помощью которого воткнули поддержку русского языка. Вот на новом движке OpenMW сделали свою реализацию lua, только путаница вышла из за отсутствия совместимости, извечный выбор какие моды нужнее, тот движок и использовать и т.д. И вечные вопросы в комментах а работает ли мод A на движке Х. Нужно ли делать еще 3 вариант Lua для Морровинда, пойдет ли это на пользу? И потом если вы lua через text.dll прикрутите, в английской версии этого файла нет, а в РФ полтора землекопа lua моды делают. Останется ли совместимость с MWSE не будет ли конфликтов? Все таки подавляющее большинство сделано на английской версии игры, нужно на это ориентироваться. Тоже чисто мое мнение, может вы какой прорыв совершите, просто лично я не вижу пока необходимости замены MWSE. PS Да кстати подкину еще одну мыслю. В оригинальном движке есть проблема, при отдалении от центра мира НПС начинают "дрожать" В Анвиле очень хорошо заметно.
-
Но в любом случае, сначала я доведу версию "моего" text.dll до эталонной 3.01, потом возможно ее чуточку модифицирую (фикс перегрузки для ребят с Тамриэль Ребилда), а потом уж сделаю а-ля шлюз, установлю зависимости доп библиотек, чтобы основной text.dll вливал в память игры помимо себя и соседние файлы (что является идеальным началом для тотального расширения инструментария text.dll) Как я вижу будущее: По поводу совместимости с mcp я принял решение оставить его "отдельным", не тащить оттуда все подряд и делать из чистого text.dll непонятную "цифровую химеру". Но добавить возможность авторам MCP добавлять свои модули через text.dll путем того же шлюза. По поводу lua: предстоит огромное количество работы, технически( пока в большей степени гипотетически) возможно убрать костыль mwse и научить Морровинд напрямую читать Lua файлы. По поводу кодировки - спорный момент, но я попытаюсь научить Морровинд читать и кодировку UTF-8, оставив при этом в нем знание родной кодировки cp1251. Идей очень много на самом деле. а за ссылки огромное спасибо!
-
Спасибо за прояснение! Теперь путаницав версиях text.dll окончательно исчезла ! Ваша команда проделала огромную работу! И я постараюсь, чтобы этот text.dll стал достойной базой для будущих творчеств мододелов и плагиностроителей ! Единственная полностью отличная версия - та о которой сказал Siberian Crab, та что весит 23 КБ (интересно что там)
-
MikhailTrick присоединился к сообществу
-
GFM, text.dll и MCP - это совершенно разные вещи. Ни я ни Fritz не имеем ни какого отношения к изменениям в text.dll и MCP. В свою очередь группа Angel и разработчики MCP не причастны к GFM. Есть text.dll поставляемой с игрой от 1С, которая может быть обновлена отдельно. Новый text.dll добавлен к GFM за неимением для него отдельного мода. В GFM 5x и 6x используется один и тот же файл, не знаю какой для 5х на FR (мне было запрещено выкладывание модов в базу и на FR выложен GFM не мной). Сами файлы могут отличаться из-за наложенных патчей MCP и 4Gb.
- Вчера
-
Итак, спустя 7-8 часов анализа я готов предоставить следующий отчет исходя из источников темы про GFM на fullrest : исходя из readme и всех txt файлов в версий 5.7, 7.3.4: https://www.fullrest.ru/files/gfm5/files и исходя из readme и всех txt файлов версии 6.3.2 https://community.pcgamingwiki.com/files/file/1261-tes-iii-morrowind-general-fixes-mod/ в версиях 5.7 и 6.3.2 лежат АБСОЛЮТНО ОДИНАКОВЫЕ text.dll версии 3.01: с одной датой компиляции Sep 23 2010; один и тот же копирайт: Copyright (C) 2005; одну и ту же версию Angel, File Version 3.0.0.0 Главное отличие в них (text.dll+angel.ini) — до смешного простое, которое заключается в Angel.ini: в ini от Angel Death значение строки fix_unarmored_bug=1 в ini от Fritz значение строки fix_unarmored_bug=0 (он передал это исправление, судя по readme, полностью во власть Morrowind Code Patch, т.к. тот (со временем становился всё сильнее и обхватывать стал многое) Что это мне даёт? - Освобождение и полное спокойствие, то что моя версия 3.00 отличается от их одинакового dll всего на 0.01 - это фикс сообщений при поднятии уровня FixLevelUpMessages и никаких критических исправлений между ними не было! Ну и в оконцовке своего анализа я бы хотел добавить что я предположил, и, как я понял философии этих двух мастеров-мододелов, исходя из анализа их файлов, структуры их папок, их readme.txt и т.д.: Чтобы понять суть конфликта их философий, нужно понимать, что у этих двух мастеров были совершенно разные цели и подходы к «лечению» игры. Философия Angel Death: Хирург-Пурист (исходя из написанного в ридми) главная цель Angel Death и команды GFM 5.x заключалась в том, чтобы действовать как хирурги: вносить минимальные, но критически важные изменения, не нарушая целостности «тела» игры. Принцип «Чистоты»: Их девизом было «мухи отдельно, котлеты отдельно» о чём прямо указано в txt файле. Это означало строжайшее разделение исправлений (.esp, .dll) от любого нового или изменяющего визуал контента (моделей, текстур). Их мод должен был быть максимально совместимым с любыми другими плагинами. Ключевой Инструмент: Их главным «скальпелем» был text.dll. Они использовали его для исправления глубоких ошибок движка, которые невозможно было исправить обычным плагином, например, баг с бездоспешным боем или отсутствующие сообщения при повышении уровня. Стратегия: Они создавали фундамент, на который другие моддеры могли бы безопасно ставить свои творения. Философия Fritz: Прагматичный Архитектор (исходя из наполнения папок и содержимого txt файлов) Главная цель Fritz была другой. Он хотел создать не просто фундамент, а законченное, идеальное «здание». Он действовал как архитектор-модернист, готовый снести старые перегородки ради лучшей и более стабильной конструкции. Принцип «Всё включено»: Fritz отбросил старую философию. Он включил в свой мод всё, что считал нужным для идеального результата: и исправления кода, и новые модели, текстуры, иконки и звуки. Именно поэтому его версия требует начинать новую игру. Ключевой Инструмент: Его главным «инструментом» был прагматизм. Он понял, что Morrowind Code Patch (MCP) со временем стал лучше справляться с некоторыми задачами, чем старый text.dll. Поэтому он сознательно отключил в своей конфигурации (angel.ini) исправление бага бездоспешного боя (fix_unarmored_bug=0), передав эту задачу более современному инструменту, чтобы избежать конфликтов. Стратегия: Он создавал финальный, ультимативный продукт, который должен был работать «из коробки» как единое целое, пусть и ценой нарушения "принципа совместимости". Мой итог анализа: кто-то увидел в этих номерах 5.7 и 6.3.2 просто цифры, я увидел в этих цифрах и файлах столкновение двух идеологий: Консерватор (Angel Death/GFM 5.x): Считали, что исправления должны быть чистыми, отдельными и максимально ненавязчивыми. Модернист (Fritz/GFM 6.x): Считал, что цель (идеально работающая игра) оправдывает средства (нарушение "принципа совместимости", объединение всего в один пакет, зависимость от новых утилит). На этих словах я отправляюсь спать и думать теперь как: а) добавить этот фикс по всплывающим табличкам "о повышении уровня" б) латать дыру по ошибке переполнения буфера: "Microsoft Visual C++ Runtime Library - Buffer overrun detected" дабы ребята с Tamriel Rebuild могли спокойно и с комфортом продолжать своё творчество.
-
Pochtabee присоединился к сообществу
-
вот скрипт из поля результат проблемного диалога в Тамриэль ребилт 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 в сообществе.
-
Я не такой явный эксперт в С++, но что-то мне подсказывает, что это как-то связано с переполнением буфера программ, работающих на С++ (привет Морровинд). Возможен Конфликт DLL библиотек даже (не исключаю). Во-первых (если взять тот плагин из 2010 года, надо понять каким образом он вычисляет количество убитых моровых монстров, как фильтрует (т.е. надо смотреть сам скрипт плагина). Во-вторых касательно Tamriel Rebuilt у меня есть одна гипотеза связанная с взаимодействием нескольких модов ЛИБО одного большого, как ваш проект: EnableConsole (как я писал в одном из первых постов) не ВКЛЮЧАЕТ консоль, а, скорее всего, РАСШИРЯЕТ её (расширяя консольную функциональность — новые команды), которая при обработке длинных скриптов (либо огромного количества модов со скриптами) превышает размер внутреннего буфера. Что происходит, если объяснять технически: Tamriel Rebuilt добавляет диалоги с длинными скриптами в поле "результат" Text.dll моей версии, v3.01, версии GFM имеет измененную логику работы с консолью. EnableConsole=1 расширяет функционал, но использует буфер фиксированного размера При обработке длинного скрипта (комплекса скриптов) происходит 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, но кто знает, раз в год и палка стреляет.
-
Тут на днях всплыла такая ошибка: При активации определенных диалогов из мода 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 и не парится, кстати в дисковом морровинде, она как раз по умолчанию выкл. И вопрос всем: что все таки делает эта опция?
-
спасибо! всё на благо моддинга 😄
-
Проведённая работа впечатляет!