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

Помогите разобраться со скриптом, изымающим/респавнящим книги


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

Попробуйте просто GetAngle. Если все равно не поможет, то вручную добавьте/отнимите 45.

  Цитата
А углы скорей всего в минутах.

В градусах, в градусах.

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

  В 3/16/2020 в 8:10 PM, Муурн Шепард сказал:

Попробуйте просто GetAngle. Если все равно не поможет, то вручную добавьте/отнимите 45.

В градусах, в градусах.

Муурн Шепард,

 

поскольку мой опыт работы со скриптами в ванильном CS ограничивается, в основном, этим скриптом, я не могу с уверенностью сказать, что перепробовал уже все, и перепробовал правильно. Но если оставить это за скобками, то да, я и с GetAngle изгалялся, и с глобальными переменными, и с move и, с SetAtStart. И, разумеется, прибавлял и вычитал градусы вручную. Не помогает.

Скрипт as is работает, но вот функция SetAngle забагована. Об этом написано и в SFD, и на разных форумах, в основном, забугорных. Чтобы убедиться в этом, достаточно применить save/load, и книги внезапно обретают правильные углы. Проверьте сами, если это вам покажется интересным.

 

В общем, я решил отказаться от этого скрипта. Дело-то не в нем, а в библиотеке. Книга будет выдавать MessageBox (типа "Из читального зала книги выносить запрещено!") с предупреждением при проверке OnActivate. В случае утвердительного ответа в инвентарь добавляется ее копия (копия копии) с приаттаченным спеллом, сама книга на полке деактивируется. Спелл возвращает игрока в ячейку. Или убивает. Единственный способ уйти - сдать книгу библиотекарю. Как-то так...

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

  В 3/16/2020 в 8:10 PM, Муурн Шепард сказал:

Если все равно не поможет, то вручную добавьте/отнимите 45.

.

 

Костыль выручай, называется.

 

 

  В 3/16/2020 в 9:20 PM, Veloth сказал:

Муурн Шепард,

 

поскольку мой опыт работы со скриптами в ванильном CS ограничивается, в основном, этим скриптом, я не могу с уверенностью сказать, что перепробовал уже все, и перепробовал правильно. Но если оставить это за скобками, то да, я и с GetAngle изгалялся, и с глобальными переменными, и с move и, с SetAtStart. И, разумеется, прибавлял и вычитал градусы вручную. Не помогает.

Скрипт as is работает, но вот функция SetAngle забагована. Об этом написано и в SFD, и на разных форумах, в основном, забугорных. Чтобы убедиться в этом, достаточно применить save/load, и книги внезапно обретают правильные углы. Проверьте сами, если это вам покажется интересным.

В общем, я решил отказаться от этого скрипта. Дело-то не в нем, а в библиотеке. Книга будет выдавать MessageBox (типа "Из читального зала книги выносить запрещено!") с предупреждением при проверке OnActivate. В случае утвердительного ответа в инвентарь добавляется ее копия (копия копии) с приаттаченным спеллом, сама книга на полке деактивируется. Спелл возвращает игрока в ячейку. Или убивает. Единственный способ уйти - сдать книгу библиотекарю. Как-то так...

А что говорят про setangle, почему багована? Сколько юзал, все отлично работает, корабли и двери вращал по оси z, считывание углов тоже работает без багов.

А в этом скрипте несовпасть должны все три оси одновременно, тогда только установятся новые углы. Если одна совпадет - ничего не будет. К тому-же идёт проверка на точное неравенство float переменных, чего не должно быть.

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

  В 3/17/2020 в 6:24 AM, Larkin сказал:

Сколько юзал, все отлично работает, корабли и двери вращал по оси z, считывание углов тоже работает без багов.

В том-то и дело, что только по оси Z.

 

Вот что сказано в SFD (стр. 55, выделение мое):

  Показать контент

Говорят, эта тема осталась и в OpenMW.

Короче, просто попробуйте в CS поставить книжку так, как стояла, используя функции GetAngle XYZ и SetAngle XYZ. Не знаю, может, я просто что-то не так делаю, и у вас получится лучше.

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

  Цитата
Скрипт as is работает, но вот функция SetAngle забагована. Об этом написано и в SFD, и на разных форумах, в основном, забугорных. Чтобы убедиться в этом, достаточно применить save/load, и книги внезапно обретают правильные углы. Проверьте сами, если это вам покажется интересным.

Забавно. У меня функция работает нормально, но новые углы не сохраняются из-за того, что у книги не проставлена References Persist.

  Цитата
В общем, я решил отказаться от этого скрипта. Дело-то не в нем, а в библиотеке.

Жаль, новое решение топорней.

  Цитата

Костыль выручай, называется.

Кэп?

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

  В 3/16/2020 в 9:20 PM, Veloth сказал:
В общем, я решил отказаться от этого скрипта. Дело-то не в нем, а в библиотеке. Книга будет выдавать MessageBox (типа "Из читального зала книги выносить запрещено!") с предупреждением при проверке OnActivate. В случае утвердительного ответа в инвентарь добавляется ее копия (копия копии) с приаттаченным спеллом, сама книга на полке деактивируется. Спелл возвращает игрока в ячейку. Или убивает. Единственный способ уйти - сдать книгу библиотекарю. Как-то так...

Вы главное плагин выложить не забудьте потом) В чём суть его?

 

Форумный движок не склеивает автоматом сообщения, не пишите несколько подряд — если надо дописать новое, то дописывайте в уже имеющееся сообщение. Двойные-тройные сообщения уже склеил.

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

  В 3/17/2020 в 1:59 PM, morrow сказал:

Вы главное плагин выложить не забудьте потом) В чём суть его?

Плагин я делаю для себя; если все получится, с удовольствием выложу.

Суть проста: автоматическая библиотека с возможностью читать книги с полок; с собой книги брать нельзя, чтобы у игрока не было возможности уничтожить собранную им же библиотеку. Я люблю собирать книги в игре, но русскоязычных плагинов, помещающих на Вварденфелл библиотеку (без алхимических сортировщиков, пытошных камер и манекенов), я не встречал. О сеттинге и сопутствующих мини-квестах я еще думаю. Кроме того, хочется немного научиться скриптам в CS (это если похожий плагин уже есть, а я не знал).

 

 

 

  В 3/17/2020 в 1:59 PM, morrow сказал:

Двойные-тройные сообщения уже склеил.

Спасибо большое, постараюсь не мультипостить в будущем.

 

 

 

  В 3/17/2020 в 12:33 PM, Муурн Шепард сказал:

Забавно. У меня функция работает нормально, но новые углы не сохраняются из-за того, что у книги не проставлена References Persist.

Вы тестили в ванильном CS? И скрипт использовали тот, что я выложил?

У меня-то references persist стоит.

 

  В 3/17/2020 в 12:33 PM, Муурн Шепард сказал:

Жаль, новое решение топорней.

Да, но вот что-то не складывается с GetAngle.

 

Кстати, пользуясь случаем (и тема, в общем-то, все еще подходит):

претворяю в жизнь "топорный" вариант антиугона книг. К каждой книге приаттачен скрипт, по которому при ( onActivate == 1 ) всплывает Messagebox, "беру", "не беру". Если берем, книга на полке Disable, в инвентарь добавляем оригинал (до конца еще не продумал, что дальше, может, глобальную переменную добавлю, может, это будет не оригинал, а копия копии).

Так вот, у меня получается, что этот скрипт работает только для одной книги. Допустим, у меня есть книги А, Б и С на полках. При попытке забрать их они активируются, и в инвентарь добавляется А1, Б1, С1. По факту, какую книгу ты бы ни активировал, в инвентарь добавится А1. Вот скрипт:

 

  Показать контент

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

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

Для каждой книги потребуется свой скрипт.

  Цитата
Вы тестили в ванильном CS? И скрипт использовали тот, что я выложил?

Просто SetAngle со случайными значениями.

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

  В 3/17/2020 в 3:50 PM, Муурн Шепард сказал:

Для каждой книги потребуется свой скрипт.

Так у меня свой скрипт для каждой книги. Названия разные, процедуры в каждом скрипте тоже разные. Только Messagebox одинаковый.

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

  В 3/17/2020 в 12:33 PM, Муурн Шепард сказал:

Кэп?

Ясно, советовать костыли юзерам абсолютно нормально для вас.

 

Veloth, скрипт странный, если локальный то зачем stopscript? Он точно на книге? Тогда он вообще не может работать, ибо нажатие кнопки внутри onactivate, которая срабатывает только 1 кадр. Нужно заводить ещё переменную и

If ( onactivate )

Set state to 1

Endif

If ( state == 1 )

Обработка нажатия кнопки

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

  Цитата
А можно ли глобальным переменным присваивать не число, а ItemID?

Без MWSE нельзя, к сожалению. Если будет желание, то гайд по нему здесь.

 

  Показать контент

 

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

  • 4 недели спустя...

Запощу здесь же, потому что вопрос связан с тем, что вынесен в заголовок темы:

 

в общем, я в процессе тестирования плагина. Всем еще раз огромное спасибо за советы. Обнаружилась проблема: иногда инвентарь не обновляется. Т.е. библиотекарь проверяет мой инвентарь, забирает новые книги, они появляются на полках, но иногда по-прежнему остаются в инвентаре (чем дальше играю, тем чаще). После повторного открытия инвентаря (например, активирую контейнер) все встает на свои места. Но это очень неприятно.

Кто-нибудь сталкивался с такой проблемой? Как это можно вылечить? Если что, для плага использую MCP.

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

Может проще выложить плагин со скриптом? Гадать по сообщениям довольно сложно.

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

  В 4/15/2020 в 8:02 PM, aL☢ сказал:

Может проще выложить плагин со скриптом? Гадать по сообщениям довольно сложно.

aL, ну а что тут гадать? Я в этой ветке, как мне кажется, все уже расписал. Из диалога с библиотекарем стартует скрипт вида:

 

  Цитата
if ( player->GetItemCount "bk_QWERTY" )

if ( "copy_bk_QWERTY"->GetDisabled )

"copy_bk_QWERTY"->Enable

player->PlaySound "Item Book Down"

player->RemoveItem "bk_QWERTY" 1

endif

endif

 

 

Книга банально изымается командой RemoveItem. Все остальное, по идее, на механику влиять не должно.

 

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

Ах да: и делал я его под MCP. Уже писал, но повторюсь.

Caldera_Puplic_LIbrary.ESPПолучение информации...

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

  В 4/16/2020 в 6:19 AM, Муурн Шепард сказал:

А если сделать if ( Player->GetItemCount "Book_QWERTY" >= 1 ) баг сохранится?

Да, баг никуда не девается.

Видимо, придется сделать вид, что это фича )

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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

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

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