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

Активность

Лента обновляется автоматически

  1. Последний час
  2. По поводу дрожания... Координаты объектов в экстерьере задаются глобальными. При прорисовке, за счет округления больших чисел происходит скачкообразное изменение (за счет ограничения количества действующих знаков), а следовательно и дрожь предметов. Я пробовал перенести свой остров далеко за карту. У меня там предметы на столе тряслись как в лихорадке при ходьбе.
  3. Сегодня
  4. Я сейчас посмотрел оригинальный text.dll от 1с весит 48 КБ. Ну так вот, про сам ваш dll весом 23 КБ (о котором вы писали). Он либо ещё более ранней версии, чем 3.0.0, которая в исходниках Ангела на ГитХабе, либо я не знаю что это....
  5. Да, проблема в том, что НА ДАННЫЙ момент angel ини читается игрой только 1 раз - при запуске. Чем может обернуться постоянное обращение morrowind.exe к angel.ini - я не знаю, но гипотетически даже можно сделать полноценное меню и встроить его в меню игры, как это сделано в реализации mcm меню mwse. Отдельное меню Angel, в котором будет не только "горячая клавиша смены языка" но и другие параметры(с описанием), которые можно менять. Эти параметры сможет менять любой пользователь, даже не сведущий во всем этом "моддинге и патчинге"
  6. так Бевезде оно видимо не мешает, это игроки собаки такие пилют тут всякие материки на 20 летнюю игру и жалуются :))) ну лично я тоже нейросетями пользуюсь, очень помогает. ну раскладку ваш text.dll будет переключать, а вот меню настройки клавиши, которое спросит у игрока нажмите желаемую клавишу, а потом запишет ее сканкод в angel.ini вполне можно сделать, собственно у меня уже есть рабочий вариант. Конечно новое значенеи только после перезапуска заработает. Я изначально хотел сделать проверку и переключение top\cel\rmk для плагинов, а то до сих пор попадаются игроки у которых оно в 0 стоит и они спрашивают почему локации в моде не переведены и топики не работают. А тут как раз вы загрузили свою версию, ну я и выбор клавиши прикрутил. Хотя конечно если вы это потом напрямую сделаете, то да mwse будет костылем
  7. На мой скромный взгляд - открытие нейросетей спокойно можно приравнивать к открытию телефона/пк/интернета.
  8. 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.
  9. Эта проблема аж в Старфилд перекочевала Хорошо быть умным, а не как я с нейросетками
  10. Что бы внести ясность я не из команды Тамриэль Ребилда, даже не переводчик, всего лишь бэта тестер перевода. так в 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 Да кстати подкину еще одну мыслю. В оригинальном движке есть проблема, при отдалении от центра мира НПС начинают "дрожать" В Анвиле очень хорошо заметно.
  11. Но в любом случае, сначала я доведу версию "моего" text.dll до эталонной 3.01, потом возможно ее чуточку модифицирую (фикс перегрузки для ребят с Тамриэль Ребилда), а потом уж сделаю а-ля шлюз, установлю зависимости доп библиотек, чтобы основной text.dll вливал в память игры помимо себя и соседние файлы (что является идеальным началом для тотального расширения инструментария text.dll) Как я вижу будущее: По поводу совместимости с mcp я принял решение оставить его "отдельным", не тащить оттуда все подряд и делать из чистого text.dll непонятную "цифровую химеру". Но добавить возможность авторам MCP добавлять свои модули через text.dll путем того же шлюза. По поводу lua: предстоит огромное количество работы, технически( пока в большей степени гипотетически) возможно убрать костыль mwse и научить Морровинд напрямую читать Lua файлы. По поводу кодировки - спорный момент, но я попытаюсь научить Морровинд читать и кодировку UTF-8, оставив при этом в нем знание родной кодировки cp1251. Идей очень много на самом деле. а за ссылки огромное спасибо!
  12. Ток сайт сдох. Исходники вытаскивались раньше через вейбекмашину. Скачанные мной во вложении. Сам VICSHANN на гите есть https://github.com/Vicshann, но толки проектов там нет у него, по крайней мере в открытом доступе. MMPackSrc.7z
  13. Спасибо за прояснение! Теперь путаницав версиях text.dll окончательно исчезла ! Ваша команда проделала огромную работу! И я постараюсь, чтобы этот text.dll стал достойной базой для будущих творчеств мододелов и плагиностроителей ! Единственная полностью отличная версия - та о которой сказал Siberian Crab, та что весит 23 КБ (интересно что там)
  14. 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.
  15. Вчера
  16. Ох ты ж, да там и исходники есть! Обязательно ознакомлюсь с его творчеством !
  17. Итак, спустя 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 могли спокойно и с комфортом продолжать своё творчество.
  18. Кстати, в толки морровинд есть еще text.dll от VICSHANN на 23Кб, с которым я играю черт знает сколько лет и все работает
  19. значит Angel Death что-то да утаил в своём text.dll 😃 значит будем искать. п. с. Можно конечно предположить самое страшное - локализацию 2000х годов. Что где-то что-то пролюбили при переводе и английский оригинальный DLL внутри выглядит совсем по другому, нежели наш.
  20. я думал что на использование оперативы. В любом случае это переполнение случается только на text.dll версии 3.0 и старше. у буржуев такой проблемы вообще нет, никто не жалуется на те диалоги в ребилте.
  21. Спасибо, что подтвердили мою гипотезу! Я обязательно начну над этим работать! Надо определённо расширить буфер памяти "движка" через text.dll, раз он не хочет вылезать за свои рамки (вредный).
  22. вот скрипт из поля результат проблемного диалога в Тамриэль ребилт 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 в сообществе.
  23. и попробуйте установить (предварительно сделав бэкапы text.dll и morrowind.exe) авось поможет И тут встает логичный вопрос, если mcp патчит игру на 4 gb, то для чего? Раз появляется переполнение буфера.
  24. Я не такой явный эксперт в С++, но что-то мне подсказывает, что это как-то связано с переполнением буфера программ, работающих на С++ (привет Морровинд). Возможен Конфликт 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, но кто знает, раз в год и палка стреляет.
  25. Тут на днях всплыла такая ошибка: При активации определенных диалогов из мода 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 и не парится, кстати в дисковом морровинде, она как раз по умолчанию выкл. И вопрос всем: что все таки делает эта опция?
  26. спасибо! всё на благо моддинга 😄
  1. Загрузить ещё активность
×
×
  • Создать...