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

akortunov

Граждане
  • Постов

    1101
  • Зарегистрирован

  • Посещение

Весь контент akortunov

  1. Приложил их к основному посту. Почему-то хак не работает, если одна модель с CollisionBox'ом была создана в сцене внутри другой модели с CollisionBox'ом. Соответственно, мне пришлось добавить у табуреток NiRootCollisionNode, как и у остальной мебели.
  2. Да можно все, если не лень реализовывать. Другое дело, что любое изменение игровой механики по определению спорное - всем угодить не получится. Поэтому scrawl и Zini редко принимают подобные патчи, и предлагают в перспективе все формулы вынести в скрипты, чтобы не надо было патчить движок на каждый чих.
  3. По поводу заливания в базу идея здравая, но для этого хорошо бы иметь отдельную категорию для специфичных для OpenMW модов. Также не хочется заливать в базу непротестированные патчи. Тему на форуме создать проще (в TES III: Плагины?), затем добавить на нее ссылку в шапку. В ней же можно будет обсуждать тестирование. Скорее всего, так и поступим.
  4. Движковый функционал затрагивает NPC - он задействует ту же секцию кода, что и восстановление выносливости. Соответственно, его можно использовать для ребаланса магической системы, а не для скриптовых костылей чисто для героя.
  5. В приложенном архиве набор патчей, которые не вошли в основную ветку OpenMW. Внимание! Их надо тестировать, но один я с этим не управлюсь. Патчи надо накладывать на исходный код. Для этого можно использовать утилиту patch: patch -p1 < "полное/имя/файла.patch" Вот как бы сборку под Windows организовать... Иначе патчи будут полезны только для тех, кто компилирует OpenMW самостоятельно. Возможно, список будет пополняться. Буду рад отзывам. Описание патчей: patches.zip furn_de_stool_01.nif furn_de_stool_02.nif
  6. Никому не нужны неванильные патчи для OpenMW типа массового зачарования стрел, ретроактивного бонуса здоровья от выносливости и отражения стрел щитами? В основную ветку это один черт не пойдет, но протестировать было бы неплохо. По поводу тормозов в журнале: журнал на 900+ страниц, игра пройдена, никаких тормозов. Если только вдруг у кого-то появится журнал на миллион строк...
  7. Разве? Выведение всплывающего сообщения идет в том же блоке кода, что и добавление новой записи в журнал. Я протестировал код с помощью консоли: journal VA_VampRich 30 journal VA_VampRich 20 journal VA_VampRich 10 journal VA_VampRich 10 Результат: 1. Текущее поведение - 3 новых записи в журнале, 4 сообщения о новой записи в журнале. 2. Предлагаемое поведение - 3 новых записи в журнале, 3 сообщения о новой записи в журнале. Или я чего-то не понимаю? UPDATE: За вывод сообщения отвечает другой вызов функции messageBox() в Journal::addEntry.
  8. Да все там как и в оригинальном движке рассчитывается. Если игрок не состоит в одной фракции с NPC, то берем наиболее враждебную к NPC фракцию, в которой состоит игрок, и изменяем отношение к игроку с поправкой на ранг в этой фракции.
  9. А где их еще переводить? Переведенные названия отображаются в списке тем для диалогов и в журнале. Видимо, программисты решили не плодить лишних сущностей, чтобы ничего не сломать. Иначе в top-файлах бы пришлось делать привязку к английским топикам, а их потом переводить отдельно - это дополнительная сложность для разработчиков. Как мне видится: 1. Локации перевели отдельно, чтобы не перелопачивать скрипты. 2. С диалогами проще было выловить вызовы addTopic в скриптах, чем лишний раз усложнять систему (возможно, из-за каких-то ограничений оригинального движка)
  10. Нашел, в чем проблема. У торговца скрипт не компилируется из-за двух команд: AddItem 0_backpack armor, 1 RemoveItem 0_backpack armor, 1 OpenMW использует пробел в качестве разделителя между аргументами. Нужно проставить кавычки: AddItem "0_backpack armor", 1 RemoveItem "0_backpack armor", 1 Тогда скрипт будет работать. Я вообще не представляю, почему эти команды работают в Морровинде.
  11. Да никто раньше не жаловался. Можно проверить через консоль, если что: дистанция 700 это примерно 10 метров. HB_tiberus_poreian->GetDistance HB_guar_pack_Tiberus_ Также можно посмотреть, как реализованы квесты на эскорт в Морровинде. По идее, если определение дистанции не работает, то они должны быть сломаны тоже.
  12. Небольшой отчет по этим плагинам: 1. Rhizoma: У Мантаса не компилируется его скрипт из-за дефиса в названии. Проблема известна и помечена как "починить до выхода 1.0". Как временный костыль, можно заменить дефисы в названиях, например, на нижние подчеркивания. 2. Travellers: Работает более-менее нормально, но есть нюансы: 2.1. Некоторые скрипты не компилируется. Например, OpenMW вполне справедливо ругается, что в скрипте Travellers_Resp_Aldr_out используются необъявленные переменные. Можно довольно быстро починить, ориентируясь на выхлоп консоли. 2.2. ИИ изредка начинает ходить кругами вокруг какой-нибудь путевой точки. Проблема давно известна и помечена как "починить до выхода 1.0". 3. "Путешествующие торговцы" Все новые неписи создаются и путешествуют, но есть нюансы: 3.1. Караван с гуарами возле Кальдеры не хочет собираться в кучу. После выполнения команды "ra" караван начинает движение в сторону города. Собирать караван в кучу должен скрипт на 800+ строк, подключенный к погонщику гуаров. Я не плагиностроитель и не могу сказать, правильно этот скрипт работает, или нет. 3.2. Теоретически плагин должен быть подвержен проблеме 2.2, но так как новых неписей здесь кот наплакал, то проблему можно и не встретить.
  13. Спасибо за наводку. Постараюсь завтра глянуть. Возможно, там сами условия обрабатываются криво: вы выполняете через консоль Enable, а скрипт в том же кадре выполняет Disable, хотя и не должен.
  14. Я вообще здесь никакой логики не вижу. Я вполне допускаю, что они момент смены локации обрабатывают специально: запускают глобальные скрипты вперед локальных, чтобы обойти какой-то баг. Костыли еще никто не отменял. Согласно описанию, cellchanged==1 только один кадр, за который должны успеть отработать как локальные, так и глобальные скрипты. Почему они работают в обратном порядке - хороший вопрос.
  15. Ну так у вас же написано: Именно так OpenMW и работает. А изначальный посыл, как я понял, был в том, что эта переменная сбрасывается где-то между выполнением локальных и глобальных скриптов. Иначе между глобальными и локальными скриптами не должно быть разницы. Вот я и спрашивал, документирована ли конкретно эта фича. Как я уже писал выше, в моем тестировании что локальный, что глобальный скрипт выполнялись уже в свежезагруженной локации.
  16. В OpenMW? В какой версии? В чем конкретно выражаются "какие-то проблемы"? Телепортационные команды неправильно работают?
  17. Чтобы проверить сброс переменной, порядок скриптов не важен. В моем тестировании локальный и глобальный скрипт обрабатывали переменную cellchanged одинаково, что в Морровинде, что в OpenMW - скрипт срабатывал после захода в локацию, но никак не при выходе из нее.
  18. Потестил таким скриптом: begin TestScript if ( cellchanged == 1 ) StreamMusic "Explore\MX_explore_6.mp3" endif end Запускаю скрипт через консоль: RunScript TestScript. Это же глобальный скрипт? Музыка сменяется после смены локации, как и положено. ЧЯДНТ?
  19. Это вообще хоть где-то документировано? Везде написано, что CellChanged = 1 при заходе в локацию. Про разницу в поведении локальных и глобальных скриптов я ничего не нашел. Но если это правда, то значение переменной устанавливается/сбрасывается где-то между выполнением локальных и глобальных скриптов, что очень странно.
  20. OpenMW ведет себя точно также. Другой вопрос, когда эта переменная должна сбрасываться. Сейчас эта переменная сбрасывается после выполнения всех скриптов, но перед обновлением мира (в обновлении мира идет собственно смена локации, переменная в этом случае будет установлена в 1). Соответственно, в фазе скриптов после захода в локацию все еще 1. Не вижу ни одной причины для подобного поведения: Если скрипты действительно выполняются вперемежку, то локальные и глобальные скрипты должны вести себя одинаково, верно?
  21. Есть еще какие идеи? Также Allofich пишет, что StartScript вообще прерывает выполнение скриптов в текущем кадре. Это так?
  22. Ссылки на мод: 1. Оригинальная версия: http://mw.modhistory...ownload-55-6351 2. Русифицированная версия: http://www.fullrest....mated_morrowind Проблема в порядке выполнения скриптов. Багрепорт: https://bugs.openmw.org/issues/3823
  23. Возможно, этот тоже сойдет. Проблема с бардами, которые в тавернах (которые заменяют фоновую музыку через StreamMusic).
  24. Скорее всего, в Морровинде тупо хранится список глобальных скриптов. StartScript добавляет скрипт в конец этого списка, StopScript удаляет скрипт из списка. Но тогда непонятно, почему скрипты не выполняются в том кадре, в котором были запущены. Какое-то кэширование для единообразности поведения? OpenMW хранит словарь, упорядоченный по названию скрипта - можно быстро найти скрипт по его имени. Для повышения быстродействия скрипт не выпиливается из списка, а просто помечается isRunning = false. При включении он помечается isRunning = true. Видимо, это все и приводит к проблемам, когда порядок выполнения скриптов важен.
  25. А что, тут варианты есть? Пока буду считать, что функция проверяет, будет ли скрипт запущен в следующий раз, как движок его встретит.
×
×
  • Создать...