Scarab-Phoenix Опубликовано 23 ноября, 2018 Жалоба Поделиться Опубликовано 23 ноября, 2018 Неплохо бы изобрести способ получение текущей сложности игры.А как в МФР сейчас работает автоматическая регулировка сложности? Если через MWSE (а оно так и есть, скорее всего), то есть способ, значит. Ссылка на комментарий Поделиться на другие сайты Поделиться
mortuus Опубликовано 23 ноября, 2018 Жалоба Поделиться Опубликовано 23 ноября, 2018 Не подскажет кто-нибудь, как точно работает функция GetPCTraveling?Я пытаюсь аналогичную для OpenMW реализовать.Сейчас подход такой:1. Устанавливаем флаг при выборе назначения в меню путешествия2. По прибытии на место GetPCTraveling будет возвращать 1 в течение одного кадра (из-за установленного флага).В этом же кадре можно рассчитать разницу во времени до и после путешествия.3. Скидываем флаг во втором кадре. Оно примерно так должно работать, или там еще нюансы есть? И работает ли GetPCInJail аналогично?Вроде как-то так и работает. можно проверить, конечно, маленьким скриптиком. Обязательно в точности механику сохранить или сделать так как будет полезнее? Ссылка на комментарий Поделиться на другие сайты Поделиться
РЕДМЕНЪ Опубликовано 8 февраля, 2019 Жалоба Поделиться Опубликовано 8 февраля, 2019 (изменено) Подскажите пожалуйста, отчего функции AddSpell/RemoveSpell могут работать некорректно? begin блаблаблаfloat timershort onceif ( MenuMode == 1 )returnendifif ( once == 0 )set once to 1disableelseif ( once == 1 )if ( GetDistance, Player <= 500 )enablePlaySound3d, "RM_MM_cracklin"DisablePlayerControlsMessageBox "Проклятье! Снова гром и снова странное оцепенение овладело мной. Но... что это там, впереди, у моста?" "ОК"Journal "RM_MMQuest01" 4set once to 2endifendif весь блок выполняется корректноif ( once == 3 )returnendifif ( once == 2 )set timer to ( timer + GetSecondsPassed )if ( timer >= 1 ) addspell RM_MM_StartShock01 выполняется корректноendifif ( timer >= 2 ) AddSpell RM_MM_StartSheo90 RemoveSpell RM_MM_StartSheo100 выполняется корректно (кажется)endifif ( timer >=4 ) AddSpell RM_MM_StartSheo80 Х RemoveSpell RM_MM_StartSheo90 Х endifif ( timer >=6 ) AddSpell RM_MM_StartSheo70 Х RemoveSpell RM_MM_StartSheo80 Хendifif ( timer >=8 ) AddSpell RM_MM_StartSheo60 Х RemoveSpell RM_MM_StartSheo70 Х endifif ( timer >=10 ) AddSpell RM_MM_StartSheo50 Х RemoveSpell RM_MM_StartSheo60 Х Х - не выполняетсяendifif ( timer >=12 ) AddSpell RM_MM_StartSheo40 Х RemoveSpell RM_MM_StartSheo50 Хendifif ( timer >=14 ) AddSpell RM_MM_StartSheo30 Х RemoveSpell RM_MM_StartSheo40 Хendifif ( timer >=16 ) AddSpell RM_MM_StartSheo10 Х RemoveSpell RM_MM_StartSheo30 Хendifif ( timer >=18 ) EnablePlayerControls выполняется корректноendifif ( timer >=20 ) RemoveSpell RM_MM_StartSheo10 Х PlaySound3d, "RM_MM_cracklin" выполняется корректно forcegreeting выполняется корректно set once to 3 Journal "RM_MMQuest01" 5 выполняется корректноendifendifend Спеллы - хамелеон100n, хамелеон90n, ...хамелеон10n, проклятья длительностью 3 с.Мысль была в том, чтобы непись как бы материализовался из ничего: сначала у него 90%хамелеон, потом 80%, потом70% и т.д., пока хамелеон полностью не удалится. В игре же визуально непись остаётся просвечивающим в одной стадии, т.е. новые эффекты не добавляются, старые не удаляются.Я пробовал и закавычивать спеллы, и удалял строки с RemoveSpell, но результат одинаковый.Но таймер при этом работает корректно, т.к. последние указанные функции срабатывают вовремя. Если я на место хамелеона подставлю другой эффект - он срабатывает и это в игре видно.В чём фишка? Как лечить?Не может же игра путаться в почти одинаковых ID спеллов, одного знака различия должно быть достаточно? Изменено 8 февраля, 2019 пользователем РЕДМЕНЪ Ссылка на комментарий Поделиться на другие сайты Поделиться
Муурн Шепард Опубликовано 8 февраля, 2019 Жалоба Поделиться Опубликовано 8 февраля, 2019 (изменено) Попробуйте переписать скрипт в таком духе: if ( timer >= 20 ) XXX elseif ( timer >= 18) XXX XXX elseif (timer >= 16) XXX XXX endif Я подозреваю, что дело в том, что каждый кадр добавляются сразу все заклятия и игрок просто не видит, как они удаляются. Изменено 8 февраля, 2019 пользователем Муурн Шепард Ссылка на комментарий Поделиться на другие сайты Поделиться
Dun Dram Опубликовано 8 февраля, 2019 Жалоба Поделиться Опубликовано 8 февраля, 2019 Спеллы - хамелеон100n, хамелеон90n, ...хамелеон10n, проклятья длительностью 3 с.А если сделать не проклятьями, а способностями? Ссылка на комментарий Поделиться на другие сайты Поделиться
РЕДМЕНЪ Опубликовано 8 февраля, 2019 Жалоба Поделиться Опубликовано 8 февраля, 2019 Поначалу как раз было elseif, но таймер не срабатывал, выполнялась первая часть скрипта и всё "замораживалось", т.е. управление игроку не возвращалось и разговор не начинался. Возможно, была ещё какая-то ошибка? - надо попытаться ещё раз.Делал спеллы и способностями, и характеристиками - с одинаковым результатом. Я подозреваю, что дело в том, что каждый кадр добавляются сразу все заклятия и игрок просто не видит, как они удаляются.Не совсем понимаю, почему должны добавляться сразу все спеллы, если им время указано? Ссылка на комментарий Поделиться на другие сайты Поделиться
Муурн Шепард Опубликовано 8 февраля, 2019 Жалоба Поделиться Опубликовано 8 февраля, 2019 Не совсем понимаю, почему должны добавляться сразу все спеллы, если им время указано?Потому что указано >=. Следовательно, заклятие добавляется/удаляется всякий фрейм, когда timer >=2. Это при 2 секундах, при 2.1, при 2.2, при 3, при 4 и т.д. При 4 секундах срабатывают уже три блока (один с шоком и два с хамелеоном), при 8 секундах -- пять блоков.Поначалу как раз было elseif, но таймер не срабатывал, выполнялась первая часть скрипта и всё "замораживалось"Elseif начинался с большего числа или с меньшего? Если с меньшего, то первым подходящим всегда было меньшее число. Ссылка на комментарий Поделиться на другие сайты Поделиться
РЕДМЕНЪ Опубликовано 8 февраля, 2019 Жалоба Поделиться Опубликовано 8 февраля, 2019 (изменено) А, точно же. Ну-ка, попробую заново...=====UPD: Получилось, спасибо за помощь! Elseif надо начинать с большего числа, и тогда будет плавный переход от одного эффекта к другому; и старые эффекты также удаляются.Но есть другая загвоздка. На непися повешен 100% хамелеон, характеристика. Но когда непись енейблится, он на мгновение становится полностью видимым, а потом пропадает (т.к. на нём 100% хамелеон), а потом скрипт его постепенно "проявляет". И вот это вот мгновение сразу после enable всё впечатление смазывает, увы. То же самое, если на неписе висит 100% невидимость. Можно это как-то обойти/исправить? Изменено 8 февраля, 2019 пользователем РЕДМЕНЪ Ссылка на комментарий Поделиться на другие сайты Поделиться
Dun Dram Опубликовано 9 февраля, 2019 Жалоба Поделиться Опубликовано 9 февраля, 2019 Но есть другая загвоздка. На непися повешен 100% хамелеон, характеристика. Но когда непись енейблится, он на мгновение становится полностью видимым, а потом пропадает (т.к. на нём 100% хамелеон), а потом скрипт его постепенно "проявляет". И вот это вот мгновение сразу после enable всё впечатление смазывает, увы. То же самое, если на неписе висит 100% невидимость. Можно это как-то обойти/исправить?Как грубый хак - дать ему комплект "невидимых" доспехов, то есть с пустыми бодипартами, а потом скриптом их снять сразу после наложения хамелиона, хех. Первое что в голову пришло, так-то может быть у проблемы есть и более правильное решение, не в курсе. Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 9 февраля, 2019 Жалоба Поделиться Опубликовано 9 февраля, 2019 Но есть другая загвоздка. На непися повешен 100% хамелеон, характеристика. Но когда непись енейблится, он на мгновение становится полностью видимым, а потом пропадает (т.к. на нём 100% хамелеон), а потом скрипт его постепенно "проявляет". И вот это вот мгновение сразу после enable всё впечатление смазывает, увы. То же самое, если на неписе висит 100% невидимость. Можно это как-то обойти/исправить?Попробуй энаблить персонажа не прямо перед игроком а за углом и потом телепортируй к игроку. Ссылка на комментарий Поделиться на другие сайты Поделиться
Муурн Шепард Опубликовано 9 февраля, 2019 Жалоба Поделиться Опубликовано 9 февраля, 2019 (изменено) Но есть другая загвоздка. На непися повешен 100% хамелеон, характеристика. Но когда непись енейблится, он на мгновение становится полностью видимым, а потом пропадает (т.к. на нём 100% хамелеон), а потом скрипт его постепенно "проявляет". И вот это вот мгновение сразу после enable всё впечатление смазывает, увы. То же самое, если на неписе висит 100% невидимость. Можно это как-то обойти/исправить?Можно скриптом совать персонажа под землю (SetPos Z -XXX), потом энейблить, а потом возвращать на нужные координаты Последнее даже сделать через один фрейм. Вариант неплохой, думаю. Изменено 9 февраля, 2019 пользователем Муурн Шепард Ссылка на комментарий Поделиться на другие сайты Поделиться
РЕДМЕНЪ Опубликовано 9 февраля, 2019 Жалоба Поделиться Опубликовано 9 февраля, 2019 Можно скриптом совать персонажа под землю (SetPos Z -XXX), потом энейблить, а потом возвращать на нужные координаты Последнее даже сделать через один фрейм.Ой, как-то страшно звучит, я не уверен, что смогу такое. Я ж не волшебник, я токо учусь :). Одеть в "невидимые" доспехи - надо запомнить такой вариант; но в данном случае не подходит, т.к. непись - кричер, его в доспехи не оденешь. Пока я сделал самое простое, что догадался: у кричера невидимость (невидимость, а не хамелеон), енэйблится он вне видимости игрока, а проявляться начинает при GetDistance, Player <= 500. Всем спасибо :). Ссылка на комментарий Поделиться на другие сайты Поделиться
РЕДМЕНЪ Опубликовано 13 февраля, 2019 Жалоба Поделиться Опубликовано 13 февраля, 2019 Мне для одного квестика хочется временно задать ГГ маленький рост. Сильно маленький, где-нить 0.3. Команда SetScale отлично справляется, но вот незадача: в виде "от первого лица" камера остаётся на прежнем уровне. Отсюда вопросы:- Есть ли какие-нибудь команды для управления камерой? Возможно ли её опустить намного ниже, на нужную высоту?- Возможно ли её потом вернуть обратно?- Вообще насколько безопасны подобные манипуляции с камерой? или лучше её совсем не трогать? Ссылка на комментарий Поделиться на другие сайты Поделиться
aL☢ Опубликовано 13 февраля, 2019 Жалоба Поделиться Опубликовано 13 февраля, 2019 Мне для одного квестика хочется временно задать ГГ маленький рост. Сильно маленький, где-нить 0.3. Команда SetScale отлично справляется, но вот незадача: в виде "от первого лица" камера остаётся на прежнем уровне. Отсюда вопросы: - Есть ли какие-нибудь команды для управления камерой? Возможно ли её опустить намного ниже, на нужную высоту?- Возможно ли её потом вернуть обратно?- Вообще насколько безопасны подобные манипуляции с камерой? или лучше её совсем не трогать? Посмотри плагин Underground, там, емнип, все эти нюансы были учтены, там есть такая квестовая фишка, уменьшиться и пройти участок в интерьере. Ссылка на комментарий Поделиться на другие сайты Поделиться
morrow Опубликовано 13 февраля, 2019 Жалоба Поделиться Опубликовано 13 февраля, 2019 Знаю, что в снике уровень опускания камеры от первого лица регулируется GMST i1stPersonSneakDelta, но это только дельта понижения в снике, а не исходный уровень камеры. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dun Dram Опубликовано 14 февраля, 2019 Жалоба Поделиться Опубликовано 14 февраля, 2019 Положение камеры можно изменить в ниф-файле анимации (но это бесполезно для подобной задачи), а вот скриптовых методов, насколько мне известно, не существует. Есть скриптовая команда для форсированного переключения в режим от третьего лица, разве что. Ссылка на комментарий Поделиться на другие сайты Поделиться
РЕДМЕНЪ Опубликовано 14 февраля, 2019 Жалоба Поделиться Опубликовано 14 февраля, 2019 (изменено) Посмотри плагин Underground, там, емнип, все эти нюансы были учтены, там есть такая квестовая фишка, уменьшиться и пройти участок в интерьере.Мне, признаться, поточнее бы. Плагин огромный и по всем форумам пишут, что жутко глючный и ставить его только для того, чтобы подсмотреть пару команд, смысла нет.В скриптах искать - знать бы, что именно искать; там скриптов сотня, получается "ищу то, не знаю что".Пока в скриптах наткнулся вот на такую конструкцию: if ( Q_sotha_steam00->getPos z < 11942 ) Q_sotha_steam00->moveWorld z, 20 else set state to 10 endif м.б. вот это "переехать мир по оси Z" - то, что нужно? Есть скриптовая команда для форсированного переключения в режим от третьего лица, разве что.Я это знаю, пробовал уже. Камера переключается, но если нажимать на клавишу "от первого лица", всё возвращается.В принципе, мне подошёл бы этот вариант, если найти способ временно отключить вид "от первого лица"; я пока не придумал, как. http://pic.fullrest.ru/upl/t/N7HD48b3_250x250.jpg =====В интерьерах сделать персонажа маленького роста довольно просто - надо не перса уменьшать, а интерьер увеличивать: мебель, предметы обстановки etc. Работы много, но оно того стоит.Но мне надо в экстерьерах, в открытом мире . Изменено 14 февраля, 2019 пользователем РЕДМЕНЪ Ссылка на комментарий Поделиться на другие сайты Поделиться
Dun Dram Опубликовано 14 февраля, 2019 Жалоба Поделиться Опубликовано 14 февраля, 2019 м.б. вот это "переехать мир по оси Z" - то, что нужно?Нет, это двигает объект по мировым координатам. Я это знаю, пробовал уже. Камера переключается, но если нажимать на клавишу "от первого лица", всё возвращается. В принципе, мне подошёл бы этот вариант, если найти способ временно отключить вид "от первого лица"; я пока не придумал, как.DisablePlayerViewSwitch запрещает игроку переключать вид. По идее, должно сработать сначала PCForce3rdPerson, а потом DisablePlayerViewSwitch. Или наоборот. Ссылка на комментарий Поделиться на другие сайты Поделиться
РЕДМЕНЪ Опубликовано 14 февраля, 2019 Жалоба Поделиться Опубликовано 14 февраля, 2019 Нет, это двигает объект по мировым координатам.Я уже понял, подставил в игру . DisablePlayerViewSwitch запрещает игроку переключать вид. По идее, должно сработать сначала PCForce3rdPerson, а потом DisablePlayerViewSwitch. Или наоборот.Ага, спасибо, попробую. Ссылка на комментарий Поделиться на другие сайты Поделиться
aL☢ Опубликовано 14 февраля, 2019 Жалоба Поделиться Опубликовано 14 февраля, 2019 DisablePlayerViewSwitch запрещает игроку переключать вид. По идее, должно сработать сначала PCForce3rdPerson, а потом DisablePlayerViewSwitch.Или наоборот. Это 100% работает, похожий скрипт был в WI. Ссылка на комментарий Поделиться на другие сайты Поделиться
РЕДМЕНЪ Опубликовано 15 февраля, 2019 Жалоба Поделиться Опубликовано 15 февраля, 2019 Это работает. Вот так у меня, прописывал в Result в Диалогах, но возможно, позже перепишу в отдельный скрипт:Player->SetScale 0.3PCForce3rdPersonDisablePlayerViewSwitch Но потом встаёт другая важная задача: как правильно вернуть игроку прежний рост?(камеру "от первого лица" на прежнее место возвращать не нужно, т.к. она привязана к расе и остаётся неизменной)Т.е. для вида "от третьего лица" игроку после завершения квеста необходимо прописать "SetScale *нужное значение*", а оно у каждой расы своё. Есть ли какая-нибудь переменная/функция, отслеживающая рост, какой-нибудь условный GetHeight?В учебнике GhanBuriGhan я не нашёл, возможно, невнимательно смотрел.Одновременно: идея отслеживать рост по расе ГГ мне не кажется слишком хорошей, т.к. многие играют самодельными расами и пытаться организовывать для них проверку - лишний геморрой, источник конфликтов. Можно было бы для всех не-дефолтных рас выставить общее SetScale 1.0, но мне это не слишком нравится.Отсюда и мысль - можно ли как-нибудь отслеживать рост ГГ/актёра? Ссылка на комментарий Поделиться на другие сайты Поделиться
Dun Dram Опубликовано 15 февраля, 2019 Жалоба Поделиться Опубликовано 15 февраля, 2019 Но потом встаёт другая важная задача: как правильно вернуть игроку прежний рост? (камеру "от первого лица" на прежнее место возвращать не нужно, т.к. она привязана к расе и остаётся неизменной) Т.е. для вида "от третьего лица" игроку после завершения квеста необходимо прописать "SetScale *нужное значение*", а оно у каждой расы своё.Мне всегда казалось, что достаточно вернуть просто 1.0. То есть, что Height расы и Scale не одно и то же, а перемножаются друг на друга. Разве нет? Ссылка на комментарий Поделиться на другие сайты Поделиться
РЕДМЕНЪ Опубликовано 16 февраля, 2019 Жалоба Поделиться Опубликовано 16 февраля, 2019 Я не знаю, я спрашиваю :). Мне почему-то казалось, что 1.0 - это средний "человеческий" рост имперцев, 1.10 - альтмеров, 0.9 - босмеров и т.д.Если я неправ, то всё становится намного проще. Ссылка на комментарий Поделиться на другие сайты Поделиться
aL☢ Опубликовано 16 февраля, 2019 Жалоба Поделиться Опубликовано 16 февраля, 2019 Я не знаю, я спрашиваю :). Мне почему-то казалось, что 1.0 - это средний "человеческий" рост имперцев, 1.10 - альтмеров, 0.9 - босмеров и т.д.Если я неправ, то всё становится намного проще. Емнип с МСР 2.3+ достаточно просто 1.0. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dun Dram Опубликовано 16 февраля, 2019 Жалоба Поделиться Опубликовано 16 февраля, 2019 Я не знаю, я спрашиваю :). Мне почему-то казалось, что 1.0 - это средний "человеческий" рост имперцев, 1.10 - альтмеров, 0.9 - босмеров и т.д.Рост такой. Но это Height (а ведь есть еще Weight, а ведь скрипты несимметрично маштабировать объекты не умеют), а не Scale. Емнип, когда я расу рьеклингов тестировал, все работало так, как я описал. Но это давно было, сейчас уже не поручусь. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти