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

OpenMW или мечты иногда сбываются


MEZON

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

Официальный сайт OpenMW
Страница загрузки
Ссылка на загрузку актуального билда для Win64 (обновляется ежедневно)
 
Баг-трекер

Wiki

Список задач до релиза 1.0

Репозиторий с исходным кодом на GitLab

Discord: OpenMW (в наличии русскоязычный канал)
IRC: #openmw на irc.freenode.net

Полезные ссылки:
Реестр популярных модов для OpenMW с гайдами по установке
Руководство по портированию ретекстуров в OpenMW
OpenMW на Youtube
OpenMW на GitLab
Диздоки планов развития после 1.0
 
Сторонние проекты, основанные на OpenMW:
TES3MP - реализация мультиплеера для OpenMW.

Тема OpenMW на 4PDA - здесь можно найти сборки OpenMW для Android 5+ и гайды по решению проблем.

OpenMW для VR - основан на OpenXR, готовые сборки (устаревшие) есть только для Windows.

Порт на Switch - к сожалению, в настоящее время им никто не занимается.

Что такое OpenMW?

 

OpenMW - это попытка воссоздать игровой движок для популярной RPG TES3 Morrowind, полноценную реализацию всех особенностей игры с открытым исходным кодом. Для того, чтобы вы имели более полное представление о проекте, вот ключевые особенности OpenMW:

  • Кроссплатформенность - запуск на Windows (7 или новее), Linux, MacOS X, Android (платформы x86 не поддерживаются).
  • Виртуальная файловая система, позволяющая устанавливать моды в отдельные директории, а не засорять Data Files.
  • Поддержка сжатых BSA-архивов для экономии места на диске.
  • Исправление ошибок системного проектирования: "грязные" GMST записи в плагинах, проблема "удвоения" в сейвах, лимит на 255 плагинов и т.д.
  • Улучшенный поиск пути - с помощью статического или динамического (на выбор) построения навигационной сетки на основе геометрии локаций (вместо использования вручную расставленных дизайнерами локаций маркеров).
  • Улучшение интерфейса (поддержка TrueType-шрифтов, масштабирования интерфейса и миникарты, поддержка текстур высокого разрешения для элементов интерфейса, редактирования разметки интерфейса с помощью XML-файлов, клавиатурной навигации, поворота камеры с помощью гироскопов и т.д.).
  • Улучшение графики (поддержка шейдеров постобработки, динамические тени от объектов, Distant Land (хоть и без генератора LOD-ов), анимированная трава, шейдер воды с поддержкой отражений в реальном времени, улучшенная система освещения без лимита в 8 источников света на объект, улучшенная система тумана и многое другое).
  • Улучшенная поддержка анимаций (возможность использовать отдельные файлы для отдельных групп анимаций, возможность добавлять кастомные кости в скелеты, возможность задать новые анимации для топоров, булав и кинжалов, поддержка анимаций открытия-закрытия контейнеров).
  • Начальная поддержка Lua-скриптов для расширения возможностей плагиностроения.
  • Поддержка ICU для локализации Lua-скриптов, шейдеров постобработки и элементов интерфейса.
  • Использование дополнительных ядер процессора для фоновых задач (например, для предварительной загрузки локаций для бесшовного перемещения по игровому миру или для обработки коллизий объектов).
  • Отсутствие лимита 4Гб на адресуемую процессом игры память из-за поддержки 64-битных архитектур.
  • Намного меньшее количество вылетов в сравнении с оригинальным движком.
  • Возможность модификации движка под свои нужды (например, довольно популярен TES3MP - форк OpenMW с поддержкой мультиплеера).

OpenMW выпущен под лицензией GPLv3, весь исходный код написан с нуля.

Нужен ли оригинальный Morrowind для OpenMW?

И да, и нет.

ДА. Прежде чем использовать OpenMW, вы должны легально приобрести и установить Morrowind на ваш компьютер. OpenMW воcпроизводит только техническую сторону игры, и не содержит в себе каких-то материалов, защищенных авторским правом. Используются только данные уже установленной игры, либо с установочных файлов с диска или цифровой копии игры.

НЕТ. OpenMW - самостоятельный игровой движок. Он может быть базой для тотальных конверсий, не использующих файлы Morrowind. В качестве примеров можно привести Robowind Construct и StarWind.

Каково текущее состояние проекта?

Статус

OpenMW уже находится в состоянии "бета": основные функции реализованы, идет работа по оптимизации и паритету с MGE и MWSE. Кроме этого есть ряд проблем, в основном с физикой и поддержкой модов, использующих баги и недокументированные возможности оригинального движка.
OpenMW играбелен (можно нормально пройти сюжет игры и аддонов, ветки гильдий и т.д.), хотя и местами уступает MGE в качестве графики, но выигрывает по стабильности, а на многих машинах и по производительности и скорости загрузки локаций.

Какие технологии вы используете?

OpenMW построен с использованием различных библиотек и инструментов с открытым исходным кодом:

  • Языки программирования: C++ (стандарт C++17 с частичной поддержкой C++20), GLSL, Lua
  • Графика: OpenSceneGraph
  • Физика: Bullet
  • Звук: OpenAL
  • Ввод-вывод: SDL2
  • Интерфейс: MyGUI
  • Поиск пути для ИИ: Recast & Detour

 
Я не программист, как я могу помочь проекту?

 

1. Можно просто играть и отсылать багрепорты

2. Можно тестировать разрабатываемый код, до того, как он попадёт в основную ветку. Там же можно вести обсуждение и предлагать изменения.

3. Можно тестировать моды. Основная цель - выявить проблемы с совместимостью.

4. Можно исследовать механики оригинального движка, особенно актуально в области тонкостей работы скриптов.

5. Можно обновлять Wiki.

6. PR тоже не помешает, особенно если он позволит привлечь тестировщиков и плагиностроителей.

7. Можно донатить разработчикам на Patreon'е:

  • psi29 — проджект лид, поможете закрыть траты на хостинг
  • Capostrophic — тысяча и один фикс + вагон фич
  • AnyOldName3 — тени в OpenMW
  • David Cernat — работа над TES3MP
Изменено пользователем akortunov
Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...
  • Ответов 3.1 тыс
  • Создана
  • Последний ответ

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

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

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

UnPinned posts

Тем временем Zini считает, что релиз 1.0 будет в этом году — причём всерьёз считает — и заявляет, что выпустит диздок по пост-1.0 весной.

Интересно что дальше будет? Хотелось бы, чтоб функции MWSE добавили, для простоты переноса всяких репаков (в частности Фуллрестовского). Я понимаю, что свое запихнут ( офигенно лучшее), но нафига изобретать велосипед. Хотя это взгляд дилетанта.

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

Тут скорее дело не в порядке выполнения скриптов, а в неправильном сбросе переменных.

 

Есть еще какие идеи?

 

Также Allofich пишет, что StartScript вообще прерывает выполнение скриптов в текущем кадре. Это так?

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

Есть еще какие идеи?

 

Также Allofich пишет, что StartScript вообще прерывает выполнение скриптов в текущем кадре. Это так?

Ни разу не замечал чтоб эта команда прерывала скрипты.

 

Судя по тому что написано по ссылке https://bugs.openmw.org/issues/3823 Там дело не в последовательности выполнения скриптов а в непонимании работы функции cellchanged.

cellchanged устанавливается в 1 в момент смены локации. Локальные скрипты ловят это в момент входа в локацию, в первом кадре, даже если это первый вход игрока в локацию. А глобальные скрипты ловят это в в момент выхода из локации.

 

A problematic part of AM_Bard2_script:

if GetDisabled == 0

if Reposition == 0

if ( PLayonce == 0 )

startScript AM_StopMusic_Script ; <- the problem is here

set Rand to random 10

if Rand < 5

StreamMusic,"AM\AM_music2.mp3"

set playonce to 2

set timer to 0

else

StreamMusic,"AM\AM_music3.mp3"

set playonce to 3

set timer to 0

endif

endif

endif

endif

AM_StopMusic_Script:

begin AM_StopMusic_Script

 

short Rand

 

if cellchanged == 1

set Rand to random 7

if Rand == 0

StreamMusic "Explore\MX_explore_1.mp3"

elseif Rand == 1

StreamMusic "Explore\MX_explore_2.mp3"

elseif Rand == 2

StreamMusic "Explore\MX_explore_3.mp3"

elseif Rand == 3

StreamMusic "Explore\MX_explore_4.mp3"

elseif Rand == 4

StreamMusic "Explore\MX_explore_5.mp3"

elseif Rand == 5

StreamMusic "Explore\MX_explore_6.mp3"

elseif Rand == 6

StreamMusic "Explore\MX_explore_7.mp3"

endif

stopScript AM_StopMusic_Script

endif

 

end

Morrowind behaviour:

  1. PC enters a cell (cellchanged sets to 1)
  2. AM_Bard2_script starts a music and starts AM_StopMusic_Script (but this script is not executed on current frame)
  3. Next frame starts (cellchanged sets to 0)
  4. AM_StopMusic_Script runs, but doing nothing (because cellchanged = 0)
  5. PC leaves the cell (cellchanged sets to 1)
  6. AM_StopMusic_Script correctly stops the music and stops itself

OpenMW behaviour:

  1. PC enters a cell (cellchanged sets to 1)
  2. AM_Bard2_script starts a music and starts AM_StopMusic_Script
  3. AM_StopMusic_Script runs in current frame and stops a music and stops itself (because cellchanged = 1)

 

В OpenMW судя по всему cellchange реально равна 1 в первом кадре, локальные и глобальные скрипты ловят это, отсюда и баг.

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

cellchanged устанавливается в 1 в момент смены локации.

 

OpenMW ведет себя точно также.

Другой вопрос, когда эта переменная должна сбрасываться.

Сейчас эта переменная сбрасывается после выполнения всех скриптов, но перед обновлением мира (в обновлении мира идет собственно смена локации, переменная в этом случае будет установлена в 1).

Соответственно, в фазе скриптов после захода в локацию все еще 1.

 

Локальные скрипты ловят это в момент входа в локацию, в первом кадре, даже если это первый вход игрока в локацию. А глобальные скрипты ловят это в в момент выхода из локации.

 

Не вижу ни одной причины для подобного поведения:

Насколько я знаю скрипты запускаются в каждом кадре не в алфавитном порядке а в порядке их создания в редакторе (в порядке их внутренних ID). При этом вроде нет разницы глобальный\локальный скрипт.

 

Если скрипты действительно выполняются вперемежку, то локальные и глобальные скрипты должны вести себя одинаково, верно?

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

Если скрипты действительно выполняются вперемежку, то локальные и глобальные скрипты должны вести себя одинаково, верно?

 

Скрипты выполняются так:

Сначала работают локальные в алфавитном порядке объектов на которых висят. Потом глобальные в порядке из запуска с помощью startscript а не в алфавитном.

 

Касательно приведенных двух скриптов, я вижу вот что:

Оригинальный Морр:

 

1 Смена локации: глобальные скрипты поймали бы cellchanged == 1

2 Первый кадр новой локации: локальные скрипты поймали cellchanged == 1

3 локальный скрипт запустил глобальный

4 глобальный скрипт сработал и выдал cellchanged == 0

5 закончился первый кадр

 

OpenMW

1 Смена локаций: ничего не происходит cellchanged == 0

2 Первый кадр: локальные скрипты поймали cellchanged == 1

3 локальный скрипт запустил глобальный

4 глобальный скрипт сработал и выдал cellchanged == 1

5 закончился первый кадр

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

 

Это вообще хоть где-то документировано? Везде написано, что CellChanged = 1 при заходе в локацию. Про разницу в поведении локальных и глобальных скриптов я ничего не нашел.

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

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

Это вообще хоть где-то документировано? Везде написано, что CellChanged = 1 при заходе в локацию. Про разницу в поведении локальных и глобальных скриптов я ничего не нашел.

 

Ну можете сами протестировать если не верите, я вот только потестил и это конечно очень странно но это так. Глобальный скрипт получается отловил cellchanged==1 до наступления первого кадра в локации и соответственно глобальные скрипты выполнились до локальных.

 

Думаю что глобальные скрипты отлавливают cellchanged == 1 в последнем кадре той локации из которой игрок переходит. Но я даже не представляю как нужно скрипт написать, чтобы это проверить.

 

upd: ой сорри за мультипост, думал соединятся.

 

Ничего, но на этот случай есть кнопка "Удалить". Scarab-Phoenix

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

Ну можете сами протестировать если не верите.

 

Потестил таким скриптом:

begin TestScript
if ( cellchanged == 1 )
	 StreamMusic "Explore\MX_explore_6.mp3"
endif
end

 

Запускаю скрипт через консоль: RunScript TestScript. Это же глобальный скрипт?

Музыка сменяется после смены локации, как и положено. ЧЯДНТ?

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

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

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

 

Чтобы проверить сброс переменной, порядок скриптов не важен. В моем тестировании локальный и глобальный скрипт обрабатывали переменную cellchanged одинаково, что в Морровинде, что в OpenMW - скрипт срабатывал после захода в локацию, но никак не при выходе из нее.

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

Не уверен, как это правильно описать, но наблюдаются какие-то проблемы с enable/disable НПС. Квестовые моды вроде Ризомы, где НПС часто исчезают в одном месте и появляются в другом - не работоспособны.
Ссылка на комментарий
Поделиться на другие сайты

Не уверен, как это правильно описать, но наблюдаются какие-то проблемы с enable/disable НПС. Квестовые моды вроде Ризомы, где НПС часто исчезают в одном месте и появляются в другом - не работоспособны.

В OpenMW? В какой версии?

В чем конкретно выражаются "какие-то проблемы"? Телепортационные команды неправильно работают?

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

Чтобы проверить сброс переменной, порядок скриптов не важен. В моем тестировании локальный и глобальный скрипт обрабатывали переменную cellchanged одинаково, что в Морровинде, что в OpenMW - скрипт срабатывал после захода в локацию, но никак не при выходе из нее.

 

 

Вот два скрипта, первый локальный второй глобальный

Begin LRCellchange

 

if cellchanged == 1

messagebox "CELLLCHANGEEDD %g", LR_y

set LR_y to ( LR_y + 1)

endif

 

 

End

 

 

Begin LRCellchange2

 

if cellchanged == 1

messagebox "CELLLCHANGEEDD2222222 %g",LR_y

set LR_y to ( LR_y + 1)

endif

 

End

 

Тест показал, что при смене локаций первым срабатывает глобальный. Попробуйте на OpenMW

 

Это вообще хоть где-то документировано? Везде написано, что CellChanged = 1 при заходе в локацию.

 

Вот же, написано в MSFD:

CellChanged returns 1 for one frame when player changes cells. It doesn’t return 1 for scripted teleporting or magic teleporting. CellChanged returns true almost immediately after the player changes cells. This means a local script running in an interior cell won't fire when the user leaves a cell, but rather when the player enters the cell.

 

Scripted teleporting may trigger CellChanged if the script is global or targeted (local scripts will not trigger it). (Forum info / Zennorious, Tamandra)

 

Note:

CellChanged doesn't always trigger, even if the player enters the cell via a normal teleport door. Possibly scripts running in the cell can have some effect on this, somehow. ForceGreeting seems to muck it up in particular (and no there wasn't a menumode return in that script).

Тут все правильно написано. CellChanged возвращает 1 во время смены локаций, и глобальные скрипты именно в этот момент и отлавливают его.

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

Ну так у вас же написано:

CellChanged returns true almost immediately after the player changes cells.

 

Именно так OpenMW и работает. А изначальный посыл, как я понял, был в том, что эта переменная сбрасывается где-то между выполнением локальных и глобальных скриптов.

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

 

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

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

Ну так у вас же написано:

 

Именно так OpenMW и работает.

 

Тогда как вы объясните то что при входе глобальные скрипты отлавливают cellchanged==1 прежде чем это сделают локальные скрипты?

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

Тогда как вы объясните то что при входе глобальные скрипты отлавливают cellchanged==1 прежде чем это сделают локальные скрипты?

Я вообще здесь никакой логики не вижу. Я вполне допускаю, что они момент смены локации обрабатывают специально: запускают глобальные скрипты вперед локальных, чтобы обойти какой-то баг. Костыли еще никто не отменял.

 

Согласно описанию, cellchanged==1 только один кадр, за который должны успеть отработать как локальные, так и глобальные скрипты. Почему они работают в обратном порядке - хороший вопрос.

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

В OpenMW? В какой версии?

В чем конкретно выражаются "какие-то проблемы"? Телепортационные команды неправильно работают?

 

В 0.43. Выражаются в том, что НПС, которые должны "появляться" командой Enable, не появляются, "исчезать" командой Disable - не исчезают.

 

Только вот не знаю, проблема в самих этих функциях, или в условиях. Пример - Rhizoma, квест "жуткий задира". Мантас появляется в Эбенгарде, хотя условия для этого не были выполнены, и не исчезает после того, как условия для этого, казалось бы, опять же, были выполнены.

 

Ещё проблемы с плагином Travellers, рандомные НПС либо не появляются вообще, либо появившись, не идут туда куда должны.

 

В плагине "Путешествующие торговцы" http://www.fullrest.ru/files/travelingmerchants те же проблемы с передвижением, плюс в единственном квесте НПС не реагирует, когда к нему подводишь его потерявшегося гуара.

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

 

Спасибо за наводку. Постараюсь завтра глянуть.

 

Выражаются в том, что НПС, которые должны "появляться" командой Enable, не появляются, "исчезать" командой Disable - не исчезают.

Возможно, там сами условия обрабатываются криво: вы выполняете через консоль Enable, а скрипт в том же кадре выполняет Disable, хотя и не должен.

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

Интересно что дальше будет? Хотелось бы, чтоб функции MWSE добавили, для простоты переноса всяких репаков (в частности Фуллрестовского). Я понимаю, что свое запихнут ( офигенно лучшее), но нафига изобретать велосипед. Хотя это взгляд дилетанта.

их будет не так уж и сложно дописать в основной массе.

Многие вещи, доступные в МВСЕ, будут доступны нативно, изменится только синтаксис.

Тест показал, что при смене локаций первым срабатывает глобальный

имхо, это логично, что глобальное имеет приоритет над локальным. Но если глобальный скрипт выполняется после выхода из локации, а локальный - при входе в новую, и именно это означает "приоритет", то это костыль. Как-то странно было бы переносить его в опенМВ. CellChanged означает как бы факт смены локации, который определяется фактом появления героя в новой локации взамен старой, а не фактом покидания старой локации - ведь можно, гипотетически, снова зайти в старую же.
Ссылка на комментарий
Поделиться на другие сайты

 

Небольшой отчет по этим плагинам:

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, но так как новых неписей здесь кот наплакал, то проблему можно и не встретить.

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

Я вообще здесь никакой логики не вижу. Я вполне допускаю, что они момент смены локации обрабатывают специально: запускают глобальные скрипты вперед локальных, чтобы обойти какой-то баг. Костыли еще никто не отменял.

 

Согласно описанию, cellchanged==1 только один кадр, за который должны успеть отработать как локальные, так и глобальные скрипты. Почему они работают в обратном порядке - хороший вопрос.

 

Есть три варианта почему так:

1 Это костыль. При входе осуществляется принудительный запуск глобальных скриптов. Зачем?

 

2 Существует какой то кадр в котором игрок уже покинул ячейку но еще не вошел в новую(локальные скрипты еще не начали работу). В этом кадре глобальные скрипты невозбранно отработали.

 

3 Имело место массовое заблуждение всех скриптописателей. На самом деле в каждом кадре глобальные скрипты работают перед локальными =-O. Вот утверждают же люди что ГМО=зло, таких даже гораздо больше, так что не стоит списывать массовое помешательство.

 

В 1 и 2 не очень верится, потому что в этом случае флаг cellchanged должен сбросится где то в середине кадра, после того как отработали локальные скрипты и до того как начали работать глобальные. Это крайне странно.

Но если принять 3 то все обретает четкую логику, cellchanged установился в начале первого кадра, сначала глобальные это отловили, затем локальные и в конце кадра он сбросился.

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

 

Спасибо за разъяснения. В странствующих торговцах не сработал ещё квест возвращения гуара Жвачки. Так понимаю что это место:

 

 

if ( guarreunion == 0 )
if ( GetDistance HB_guar_pack_Tiberus_ < 700 )
	if ( state != -20 )
		set guarreunion to 1
		HB_guar_pack_Tiberus_ -> AIFollow HB_tiberus_poreian, 0, 0, 0, 0
		set state to 1000 ;******************** start travel script from here
		ForceGreeting
	endif
endif
endif

 

В скрипте _HB_Tiberus_Travel.

Тибериус просто не видит что гуар рядом, не важно кого к кому подвести.

Определение дистанции нормально работает?

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

Определение дистанции нормально работает?

 

Да никто раньше не жаловался. Можно проверить через консоль, если что: дистанция 700 это примерно 10 метров.

 

HB_tiberus_poreian->GetDistance HB_guar_pack_Tiberus_

 

Также можно посмотреть, как реализованы квесты на эскорт в Морровинде. По идее, если определение дистанции не работает, то они должны быть сломаны тоже.

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

 

Нашел, в чем проблема. У торговца скрипт не компилируется из-за двух команд:

AddItem 0_backpack armor, 1
RemoveItem 0_backpack armor, 1

 

OpenMW использует пробел в качестве разделителя между аргументами. Нужно проставить кавычки:

AddItem "0_backpack armor", 1
RemoveItem "0_backpack armor", 1

 

Тогда скрипт будет работать. Я вообще не представляю, почему эти команды работают в Морровинде.

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

Не работают. Всегда нужно ставить кавычки, если есть пробел в айди.

 

Upd: не уверен, связано это с OpenMW или мультиплеером, но напишу сюда. После диалога с Эламом Андасом не появилась "dreamer prophet" (видящая, убившая двух ординаторов и пять чужеземцев в Вивеке). В диалоге ее должно enabl'ить, однако этого не произошло.

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

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

Вы сможете оставить комментарий после входа в



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

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