Larkin Опубликовано 16 марта, 2020 Жалоба Поделиться Опубликовано 16 марта, 2020 Getstartingpos? Getstartingangle??А углы скорей всего в минутах. Ссылка на комментарий Поделиться на другие сайты Поделиться
Муурн Шепард Опубликовано 16 марта, 2020 Жалоба Поделиться Опубликовано 16 марта, 2020 Попробуйте просто GetAngle. Если все равно не поможет, то вручную добавьте/отнимите 45.А углы скорей всего в минутах.В градусах, в градусах. Ссылка на комментарий Поделиться на другие сайты Поделиться
Veloth Опубликовано 16 марта, 2020 Автор Жалоба Поделиться Опубликовано 16 марта, 2020 (изменено) Попробуйте просто GetAngle. Если все равно не поможет, то вручную добавьте/отнимите 45.В градусах, в градусах.Муурн Шепард, поскольку мой опыт работы со скриптами в ванильном CS ограничивается, в основном, этим скриптом, я не могу с уверенностью сказать, что перепробовал уже все, и перепробовал правильно. Но если оставить это за скобками, то да, я и с GetAngle изгалялся, и с глобальными переменными, и с move и, с SetAtStart. И, разумеется, прибавлял и вычитал градусы вручную. Не помогает.Скрипт as is работает, но вот функция SetAngle забагована. Об этом написано и в SFD, и на разных форумах, в основном, забугорных. Чтобы убедиться в этом, достаточно применить save/load, и книги внезапно обретают правильные углы. Проверьте сами, если это вам покажется интересным. В общем, я решил отказаться от этого скрипта. Дело-то не в нем, а в библиотеке. Книга будет выдавать MessageBox (типа "Из читального зала книги выносить запрещено!") с предупреждением при проверке OnActivate. В случае утвердительного ответа в инвентарь добавляется ее копия (копия копии) с приаттаченным спеллом, сама книга на полке деактивируется. Спелл возвращает игрока в ячейку. Или убивает. Единственный способ уйти - сдать книгу библиотекарю. Как-то так... Изменено 16 марта, 2020 пользователем Veloth Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 17 марта, 2020 Жалоба Поделиться Опубликовано 17 марта, 2020 Если все равно не поможет, то вручную добавьте/отнимите 45.. Костыль выручай, называется. Муурн Шепард, поскольку мой опыт работы со скриптами в ванильном CS ограничивается, в основном, этим скриптом, я не могу с уверенностью сказать, что перепробовал уже все, и перепробовал правильно. Но если оставить это за скобками, то да, я и с GetAngle изгалялся, и с глобальными переменными, и с move и, с SetAtStart. И, разумеется, прибавлял и вычитал градусы вручную. Не помогает.Скрипт as is работает, но вот функция SetAngle забагована. Об этом написано и в SFD, и на разных форумах, в основном, забугорных. Чтобы убедиться в этом, достаточно применить save/load, и книги внезапно обретают правильные углы. Проверьте сами, если это вам покажется интересным.В общем, я решил отказаться от этого скрипта. Дело-то не в нем, а в библиотеке. Книга будет выдавать MessageBox (типа "Из читального зала книги выносить запрещено!") с предупреждением при проверке OnActivate. В случае утвердительного ответа в инвентарь добавляется ее копия (копия копии) с приаттаченным спеллом, сама книга на полке деактивируется. Спелл возвращает игрока в ячейку. Или убивает. Единственный способ уйти - сдать книгу библиотекарю. Как-то так...А что говорят про setangle, почему багована? Сколько юзал, все отлично работает, корабли и двери вращал по оси z, считывание углов тоже работает без багов. А в этом скрипте несовпасть должны все три оси одновременно, тогда только установятся новые углы. Если одна совпадет - ничего не будет. К тому-же идёт проверка на точное неравенство float переменных, чего не должно быть. Ссылка на комментарий Поделиться на другие сайты Поделиться
Veloth Опубликовано 17 марта, 2020 Автор Жалоба Поделиться Опубликовано 17 марта, 2020 Сколько юзал, все отлично работает, корабли и двери вращал по оси z, считывание углов тоже работает без багов.В том-то и дело, что только по оси Z. Вот что сказано в SFD (стр. 55, выделение мое):Notes (by Simpleton):SetAngle doesn't work how sfd says it does. My guess is nobody ever noticed before because nobody ever uses it with the X or Y axis, which is where it gets funky. <...> Probably the oddest thing about SetAngle, X/Y is that neither have anything to do with the X or Y axis'.<...>(ManaUser)<...> the worst thing about SetAngle is that it doesn't always save right. Particularly when an object has been rotated on more than one axis, I've noticed it facing some wonky direction after reloading.Говорят, эта тема осталась и в OpenMW.Короче, просто попробуйте в CS поставить книжку так, как стояла, используя функции GetAngle XYZ и SetAngle XYZ. Не знаю, может, я просто что-то не так делаю, и у вас получится лучше. Ссылка на комментарий Поделиться на другие сайты Поделиться
Муурн Шепард Опубликовано 17 марта, 2020 Жалоба Поделиться Опубликовано 17 марта, 2020 (изменено) Скрипт as is работает, но вот функция SetAngle забагована. Об этом написано и в SFD, и на разных форумах, в основном, забугорных. Чтобы убедиться в этом, достаточно применить save/load, и книги внезапно обретают правильные углы. Проверьте сами, если это вам покажется интересным.Забавно. У меня функция работает нормально, но новые углы не сохраняются из-за того, что у книги не проставлена References Persist.В общем, я решил отказаться от этого скрипта. Дело-то не в нем, а в библиотеке.Жаль, новое решение топорней.Костыль выручай, называется.Кэп? Изменено 17 марта, 2020 пользователем Муурн Шепард Ссылка на комментарий Поделиться на другие сайты Поделиться
morrow Опубликовано 17 марта, 2020 Жалоба Поделиться Опубликовано 17 марта, 2020 В общем, я решил отказаться от этого скрипта. Дело-то не в нем, а в библиотеке. Книга будет выдавать MessageBox (типа "Из читального зала книги выносить запрещено!") с предупреждением при проверке OnActivate. В случае утвердительного ответа в инвентарь добавляется ее копия (копия копии) с приаттаченным спеллом, сама книга на полке деактивируется. Спелл возвращает игрока в ячейку. Или убивает. Единственный способ уйти - сдать книгу библиотекарю. Как-то так...Вы главное плагин выложить не забудьте потом) В чём суть его? Форумный движок не склеивает автоматом сообщения, не пишите несколько подряд — если надо дописать новое, то дописывайте в уже имеющееся сообщение. Двойные-тройные сообщения уже склеил. Ссылка на комментарий Поделиться на другие сайты Поделиться
Veloth Опубликовано 17 марта, 2020 Автор Жалоба Поделиться Опубликовано 17 марта, 2020 Вы главное плагин выложить не забудьте потом) В чём суть его?Плагин я делаю для себя; если все получится, с удовольствием выложу.Суть проста: автоматическая библиотека с возможностью читать книги с полок; с собой книги брать нельзя, чтобы у игрока не было возможности уничтожить собранную им же библиотеку. Я люблю собирать книги в игре, но русскоязычных плагинов, помещающих на Вварденфелл библиотеку (без алхимических сортировщиков, пытошных камер и манекенов), я не встречал. О сеттинге и сопутствующих мини-квестах я еще думаю. Кроме того, хочется немного научиться скриптам в CS (это если похожий плагин уже есть, а я не знал). Двойные-тройные сообщения уже склеил.Спасибо большое, постараюсь не мультипостить в будущем. Забавно. У меня функция работает нормально, но новые углы не сохраняются из-за того, что у книги не проставлена References Persist.Вы тестили в ванильном CS? И скрипт использовали тот, что я выложил?У меня-то references persist стоит. Жаль, новое решение топорней.Да, но вот что-то не складывается с GetAngle. Кстати, пользуясь случаем (и тема, в общем-то, все еще подходит):претворяю в жизнь "топорный" вариант антиугона книг. К каждой книге приаттачен скрипт, по которому при ( onActivate == 1 ) всплывает Messagebox, "беру", "не беру". Если берем, книга на полке Disable, в инвентарь добавляем оригинал (до конца еще не продумал, что дальше, может, глобальную переменную добавлю, может, это будет не оригинал, а копия копии).Так вот, у меня получается, что этот скрипт работает только для одной книги. Допустим, у меня есть книги А, Б и С на полках. При попытке забрать их они активируются, и в инвентарь добавляется А1, Б1, С1. По факту, какую книгу ты бы ни активировал, в инвентарь добавится А1. Вот скрипт: begin AlchemistsFormularyscript short button if ( OnActivate == 1 ) Messagebox, "Помните, что книги выносить из библиотеки нельзя!", "Взять книгу", "Почитать что-нибудь другое" set button to GetButtonPressed if ( button == -1 ) return elseif ( button == 0 ) "lib_bk_AlchemistsFormulary"->Disable player->additem "bk_AlchemistsFormulary" 1 else Messagebox "Пока!" endif else returnendif stopscript AlchemistsFormularyscript endКак я понимаю, все скрипты на книгах проверяют один и тот же MessageBox, и срабатывает первый из них. Не могу сообразить, как изменить скрипт, чтобы он срабатывал только для той книги, которую активируешь. Ссылка на комментарий Поделиться на другие сайты Поделиться
Муурн Шепард Опубликовано 17 марта, 2020 Жалоба Поделиться Опубликовано 17 марта, 2020 Для каждой книги потребуется свой скрипт.Вы тестили в ванильном CS? И скрипт использовали тот, что я выложил?Просто SetAngle со случайными значениями. Ссылка на комментарий Поделиться на другие сайты Поделиться
Veloth Опубликовано 17 марта, 2020 Автор Жалоба Поделиться Опубликовано 17 марта, 2020 Для каждой книги потребуется свой скрипт.Так у меня свой скрипт для каждой книги. Названия разные, процедуры в каждом скрипте тоже разные. Только Messagebox одинаковый. Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 17 марта, 2020 Жалоба Поделиться Опубликовано 17 марта, 2020 Кэп?Ясно, советовать костыли юзерам абсолютно нормально для вас. Veloth, скрипт странный, если локальный то зачем stopscript? Он точно на книге? Тогда он вообще не может работать, ибо нажатие кнопки внутри onactivate, которая срабатывает только 1 кадр. Нужно заводить ещё переменную и If ( onactivate )Set state to 1EndifIf ( state == 1 )Обработка нажатия кнопки Ссылка на комментарий Поделиться на другие сайты Поделиться
Veloth Опубликовано 17 марта, 2020 Автор Жалоба Поделиться Опубликовано 17 марта, 2020 Larkin, спасибо за подсказку, поправил. А можно ли глобальным переменным присваивать не число, а ItemID? Ссылка на комментарий Поделиться на другие сайты Поделиться
Муурн Шепард Опубликовано 17 марта, 2020 Жалоба Поделиться Опубликовано 17 марта, 2020 (изменено) А можно ли глобальным переменным присваивать не число, а ItemID?Без MWSE нельзя, к сожалению. Если будет желание, то гайд по нему здесь. Ясно, советовать костыли юзерам абсолютно нормально для вас.Всяко лучше, чем нести чушь про минуты. Изменено 17 марта, 2020 пользователем Муурн Шепард Ссылка на комментарий Поделиться на другие сайты Поделиться
Veloth Опубликовано 14 апреля, 2020 Автор Жалоба Поделиться Опубликовано 14 апреля, 2020 Запощу здесь же, потому что вопрос связан с тем, что вынесен в заголовок темы: в общем, я в процессе тестирования плагина. Всем еще раз огромное спасибо за советы. Обнаружилась проблема: иногда инвентарь не обновляется. Т.е. библиотекарь проверяет мой инвентарь, забирает новые книги, они появляются на полках, но иногда по-прежнему остаются в инвентаре (чем дальше играю, тем чаще). После повторного открытия инвентаря (например, активирую контейнер) все встает на свои места. Но это очень неприятно.Кто-нибудь сталкивался с такой проблемой? Как это можно вылечить? Если что, для плага использую MCP. Ссылка на комментарий Поделиться на другие сайты Поделиться
aL☢ Опубликовано 15 апреля, 2020 Жалоба Поделиться Опубликовано 15 апреля, 2020 Может проще выложить плагин со скриптом? Гадать по сообщениям довольно сложно. Ссылка на комментарий Поделиться на другие сайты Поделиться
Veloth Опубликовано 15 апреля, 2020 Автор Жалоба Поделиться Опубликовано 15 апреля, 2020 (изменено) Может проще выложить плагин со скриптом? Гадать по сообщениям довольно сложно.aL, ну а что тут гадать? Я в этой ветке, как мне кажется, все уже расписал. Из диалога с библиотекарем стартует скрипт вида: if ( player->GetItemCount "bk_QWERTY" )if ( "copy_bk_QWERTY"->GetDisabled )"copy_bk_QWERTY"->Enableplayer->PlaySound "Item Book Down"player->RemoveItem "bk_QWERTY" 1endifendif Книга банально изымается командой RemoveItem. Все остальное, по идее, на механику влиять не должно. Впрочем, если вам проще разбираться по самому плагу, то он в приложении. Немного сырой: диалоги чутка недоработаны, книги стоят не на своих местах, присутствует некоторая неразбериха в том, какие книги нужны по квестам, а какие нет. И название ячейки на английском. Но в целом вполне рабочий.Ах да: и делал я его под MCP. Уже писал, но повторюсь.Caldera_Puplic_LIbrary.ESP Изменено 15 апреля, 2020 пользователем Veloth Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 16 апреля, 2020 Жалоба Поделиться Опубликовано 16 апреля, 2020 Лучше заново скрипты запостите полностью. И проблему подробней описать неплохо бы. Ссылка на комментарий Поделиться на другие сайты Поделиться
Муурн Шепард Опубликовано 16 апреля, 2020 Жалоба Поделиться Опубликовано 16 апреля, 2020 А если сделать if ( Player->GetItemCount "Book_QWERTY" >= 1 ) баг сохранится? Ссылка на комментарий Поделиться на другие сайты Поделиться
Veloth Опубликовано 16 апреля, 2020 Автор Жалоба Поделиться Опубликовано 16 апреля, 2020 А если сделать if ( Player->GetItemCount "Book_QWERTY" >= 1 ) баг сохранится?Да, баг никуда не девается.Видимо, придется сделать вид, что это фича ) Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти