Тема для вопросов по скриптингу.
Функции папируса:
На английском
На русском (не все, но базис)
#761
Отправлено
- werr, Chesh¡re и Olechkafum нравится это
#762
Отправлено
И снова здравствуйте.
Почему когда добавляю новые формы в FormList, старые пропадают, не помню уже все или только часть, вчера в игре тестировал, сегодня ещё нет.
Вчера ранее добавленный в список COCMarkerHeading после перемещения в другую область скайрима и нового сканирования, пропадает из списка, хотя я так понимаю список должен хранить ранее добавленные формы...
Вот функция сканирования COCMarkerHeading в радиусе и добавления в форм лист.
И Вот кусок кода отвечающий за вывод списка:
Сообщение отредактировал aaa112aaa: 03 ноября 2021 - 04:48
#763
Отправлено
И снова здравствуйте.
Почему когда добавляю новые формы в FormList, старые пропадают, не помню уже все или только часть, вчера в игре тестировал, сегодня ещё нет.
Вчера ранее добавленный в список COCMarkerHeading после перемещения в другую область скайрима и нового сканирования, пропадает из списка, хотя я так понимаю список должен хранить ранее добавленные формы...
Я понял почему. Он не пропадал, просто почему-то по скайриму натыканы дополнительно маркеры с FormID = 20 и поэтому, он в списке, но название другое.
#764
Отправлено
И снова здравствуйте.
есть несколько переменных, но сейчас проблема с этой - ObjectReference[] Property Recall Auto
Объявлена, потом идёт вызов функции, в которой переменным присваиваются значения, краткий кусок кода:
Function PropertiesInit() Localisation() If(bOnly16 == true) iMaxArrayIndex = 15 sCN = new String[16] Recall = new ObjectReference[16] RecallNameList = new String[16] Else iMaxArrayIndex = 31 sCN = new String[32] Recall = new ObjectReference[32] RecallNameList = new String[32] EndIf self.SetRecall()
И далее начинает работу SetRecall() и тут проблема, до индекса 16 ObjectReference не равно None, с индекса 16 по 31 все None, вот сама функция:
function SetRecall() Int t = 0 while t <= iMaxArrayIndex Recall[t] = (self.GetNthAlias(t) as ReferenceAlias).GetRef() ;Notification("Recall "+Recall[t]) t += 1 endWhile endFunction
хотя в квесте всё нормально...
#768
Отправлено
Ну я же написал что, да - iMaxArrayIndex = 31
Два разных массива сделай, для 32 и 16 переменных.
И ещё кстати, а есть кто разбирается в диалогах, в какую мне это тему на форуме? создал нпс, три фракции 2 креста и диалоги, ток вот диалоги у нпс не отображаются, даже если нет условий для показа топика.
#769
Отправлено
Привет, друзья.
У меня возникла очень странная проблема со скриптом Manual Light Switch, и я не нашла подобных обсуждений на форумах.
Мне нужно создать источник света, которым можно управлять вручную, т.е. изначально это были сухие дрова в камине, которые при активации меняли модель на горящие + включался заранее задисабленный источник света, ну, как обычно это делают.
С самим скриптом все нормально при компиляции. Сложность возникает при работе со ссылкой на источник, когда нужно вручную ее указать в поле EnableMarker/Object Reference. (это поле появляется автоматически после успешной компиляции скрипта и его нужно только правильно настроить). Т.о. я выбираю в окне редактора свой источник света, сохраняю объект, но ничего не происходит. Смотрите скриншот.
Т.е мы видим, что во вкладке Linked Ref ничего не отображается, хотя объект прикреплен. В игре ничего не происходит. При воздействии на активатор, свет не загорается, и модель горящего огня не появляется. Визуально не отображается желтая ниточка связки с объектом, которую мы обычно видим, когда используем вкладку Linked Ref и привязываем объекты к друг другу. (Не обращайте внимания на другие модели огня и лампы, я просто пробую разные варианты моделей для этого скрипта). Суть же одна - это объект-активатор+объект горения+источник света.
Это простой скрипт, но я застряла. :(
В чем может быть проблема?
Я делаю все по инструкции от уважаемого GKalian вот отсюда https://youtu.be/Esd1tguUVE0
В других мануалах тоже ничего особенного на эту тему нет, никто не знает, что это может быть за проблема.
Я все внимательно проверила уже раз 150, но ничего особенного не нахожу...
У вас есть какие-нибудь идеи?...
Сообщение отредактировал Bosmer: 14 февраля 2022 - 10:48
#770
Отправлено
Привет, друзья.
У меня возникла очень странная проблема со скриптом Manual Light Switch, и я не нашла подобных обсуждений на форумах.
При заполнении Property объектом А в скрипте на объекте Б, объект А и не должен быть показан в Linked Ref, этот раздел сделан для другого. В видео Кальяна используется раздел Enable Parent, который работает по принципу "дерева" - при включении одного объекта включаются все зависимые, при выключении - выключаются.
То есть вы прикрепляете скрипт к объекту, в Property указываете какой-нибудь невидимый маркер, далее указываете этот маркер во всех зависимых объектах. В горящем костре и источнике света он будет указан как обычно, а для потухшего костра вам нужно будет поставить галочку "Set Enable State to Opposite of Parent", чтобы при отключении маркера этот потухший костёр включался.
Если вы не уверены, срабатывает ли активация и правильно ли заполнен Property, вы можете использовать функцию Debug.MessageBox, чтобы вывести нужную информацию. Примерно вот так:
Event OnActivate(ObjectReference akActionRef) Debug.MessageBox("Activation in LightsOff state fired, EnableMarker is " + EnableMarker as String + ", going to state LightsOn") GoToState("LightsOn") EndEvent
Подобные сообщения можно разместить тут и там, а когда вас всё устроит - убрать или закомментировать.
————————————
don't forget your falls
————————————
#771
Отправлено
При заполнении Property объектом А в скрипте на объекте Б, объект А и не должен быть показан в Linked Ref, этот раздел сделан для другого.
Здравствуйте, и большое спасибо Вам за быстрый ответ!
На самом деле меня сбил с толку мод Fort Highwood от Ithlia, где были реализованы подобные лампы с огнем. Я разобрала эти лампы в конструкторе, чтобы посмотреть как объекты взаимодействуют друг с другом, и там как раз было задействовано поле Linked Ref в отношении источника света, что и привело меня к выводу, что оно должно быть заполнено при работе со скриптом. К сожалению посмотреть ресурс скрипта не удалось, т.к. автор не предоставил это. Но визуально это напоминало скрипт Manual Light Switch.
Моя проблема решилась! Но она решилась совершенно неожиданным образом. Я не знаю, будет ли эта информация полезной для всех или это только мой частный случай с моим загадочным модом, но не все модели игры, которые вы захотите использовать в качестве активаторов подходят для работы с этим скриптом. Например, модель сухих дров (Static\FireplaceWood01Off0000) вообще не работает в кач-ве активатора, а пещерная лампа (Static\CaveLamp01, которая была использована у Ithlia) хоть и может гипотетически работать как активатор, но скрипт на ней не срабатывает. Мое решение было в том, чтобы заменить модель активатора на модель маркера с невидимой коллизией (Markers\Misc\InvisibleCollision01). И все заработало!
И еще, может быть кому-то будет полезно, если Вы захотите делать такой же скрипт, то не нужно добавлять в сам активатор звук горения. Он не исчезает автоматически после того, как Вы "потушите" камин. Лучше это тоже реализовать через скрипт.
#772
Отправлено
не все модели игры, которые вы захотите использовать в качестве активаторов подходят для работы с этим скриптом
Это из-за того, что не все модели имеют коллизии - физические границы, за которые ГГ может "уцепиться" в игре. Действительно, модель FireplaceWood01Off.nif не имеет коллизий, а InvisibleCollision01.nif имеет. Заметьте, что создание коллизии произвольной формы через готовую модель сделать нельзя, как и "прозрачную" для перемещения коллизию только для активации. Это решается созданием Primitive, объекта простой формы, который в игре может быть "твёрдым" или "прозрачным" и по желанию - активируемым. Вы сможете придать ему форму сферы и накрыть им костёр так, чтобы он визуально совпадал с границами костра.
————————————
don't forget your falls
————————————
#774
Отправлено
1. Активация объекта
2. Проверка скриптом у игрока наличия/отсутствия в инвентаре определенных предметов.
3. Изъятие этих предметов, если они есть(1) или сообщение о том, что их нет. (0)
4. 1.Таймер и сообщение (Типа подождите несколько дней)
5. Получение игроком указанных предметов после окончания срока, установленного в скрипте.
6. При воздействии на активатор раньше срока сообщение, "подождите ещё столько-то времени".
Смысл скрипта - растянутый во времени крафт. Т.е. чтобы получить предметы не сразу, а только спустя какое-то время. Подобный скрипт есть в модах у Кораны для Обливион. Может что-то такое уже есть и для Скайрима, но я могу знать все моды, мне ещё такие не попадались. :(
#775
Отправлено
Народ такой вопрос. Я сделал свой мод на изменения перков кузнечного дела и вот хочу сделать чтоб по мимо уровня владения для открытия перка было условие затраты денег на открытие, я не как не могу подобрать нужное условие для этого. Подскажите пожалуйста.
https://prnt.sc/DAgefHxcWsDa
Сообщение отредактировал Dakost: 08 марта 2022 - 23:05
#777
Отправлено
Доброго времени суток, господа-программисты. Просветите, чем ModActorValue и ForceActorValue отличаются между собой?
Первое модифицирует - т.е. добавляет к исходному.
Второе устанавливает значение, вне зависимости от исходного.
- SirLuciusFreyr это нравится
#778
Отправлено
Первое модифицирует - т.е. добавляет к исходному.
Второе устанавливает значение, вне зависимости от исходного.
Тогда в чём отличие SetActorValue от ForceActorValue? У них какие-то разные области применения внутри списка ActorValue? Или ускользающая от меня разница в том, как они применяются на атрибуты?
Ещё один вопрос: а могу я скриптом динамически изменять скорость игрока по нажатию клавиши и без конфликта с другими модификаторами? Как реализовать такой скрипт в игре, повесить через перк?
Сообщение отредактировал SirLuciusFreyr: 28 марта 2022 - 07:07
#779
Отправлено
У них какие-то разные области применения внутри списка ActorValue? Или ускользающая от меня разница в том, как они применяются на атрибуты?
Есть базовый показатель, и есть после модификаторов. И это все сложно взаимосвязано.
Ведь кроме Force и Mod есть еще Set, Damage и Restore.
Почитай примечания на страницах, там есть на эту тему кое что.
Еще могу порекомендовать страницу для "консольных" версий этих команд посмотреть (не для скриптовых). Там тоже кое-что написано.
В любом случае, нужно все эти штуки использовать с великой осторожностью, так как есть неиллюзорный шанс сломать игроку какой-нибудь из статов неаккуратными правками. Или в случае удаления установленного мода.
Ещё один вопрос: а могу я скриптом динамически изменять скорость игрока по нажатию клавиши и без конфликта с другими модификаторами?
Скрипты медленно работают для быстрого и динамического изменения скорости (ну, например, ускорять персонажа на n% k раз в секунду - для реализации медленного набора скорости, например). Тут плагин под skse писать надо.
Если нужно что-то небыстрое или долговременное - лучше вообще скриптами не пользоваться. Выдавать перки с модификатором или спеллы с постоянным эффектом напрямую.
#780
Отправлено
Всем ЗДРАВИЯЖЕЛАЮ! Ребяты, памагитя! Кайо совсем не шарит в скриптах и прочих сложных фишках редахтора, но Кайо очень нужен скрипт на "сновидения". То есть, вот персонаж, выполняя квест Арретино, ложится спать в любом месте и просыпается у Тёмного Братства, а мне надо, чтобы он на определённой стадии авторского квеста лёг и проснулся в отдельной локации сна. Можно, конечно, подсмотреть в квесты ТБ, как они замечают событие сна, телепорт там пришить и всё такое, но там обычно черт ногу сломит, особенно, если не знаешь, где искать, да и одну очень важную проблему это не решит: по завершению сна (при смене стадии квеста или после диалога) игрока надо перенести обратно к той же самой кровати, на которой он уснул. К тому же, если это возможно и не особо сложно в реализации, хотелось бы на время сна добавить игроку ограничения: "перегруженность" (чтобы не бегал, а шел простым шагом тихоходки) и чтобы не мог зайти в инвентарь, достать оружие или подобрать что-то (это ж не сны с Фредди Крюггером, откуда можно шляпу спереть, да и авось ему взбредёт в голову мысля что-то выбросить? Это должен быть именно сон, почти как обычный), и чтобы потом с него эти эффекты снимались.
Сообщение отредактировал Кайо: 14 апреля 2022 - 12:15
#781
Отправлено
Всем ЗДРАВИЯЖЕЛАЮ! Ребяты, памагитя! Кайо совсем не шарит в скриптах и прочих сложных фишках редахтора, но Кайо очень нужен скрипт на "сновидения". То есть, вот персонаж, выполняя квест Арретино, ложится спать в любом месте и просыпается у Тёмного Братства, а мне надо, чтобы он на определённой стадии авторского квеста лёг и проснулся в отдельной локации сна. Можно, конечно, подсмотреть в квесты ТБ, как они замечают событие сна, телепорт там пришить и всё такое, но там обычно черт ногу сломит, особенно, если не знаешь, где искать, да и одну очень важную проблему это не решит: по завершению сна (при смене стадии квеста или после диалога) игрока надо перенести обратно к той же самой кровати, на которой он уснул. К тому же, если это возможно и не особо сложно в реализации, хотелось бы на время сна добавить игроку ограничения: "перегруженность" (чтобы не бегал, а шел простым шагом тихоходки) и чтобы не мог зайти в инвентарь, достать оружие или подобрать что-то (это ж не сны с Фредди Крюггером, откуда можно шляпу спереть, да и авось ему взбредёт в голову мысля что-то выбросить? Это должен быть именно сон, почти как обычный), и чтобы потом с него эти эффекты снимались.
Да, смотришь как это сделано в квесте ТБ, делаешь так же.
Наверняка там какая-то система отслеживания встроена, в квест или на игрока напрямую, которая включается по эвентам OnSleepStart или OnSleepStop.
Сделать обратный перенос просто - когда триггер сна срабатывает, перед непосредственным переносом ставишь маркер на позицию игрока. В конце сна переносишь игрока назад на этот маркер. Маркер потом удаляешь.
Что касается запрещения игроку что-то делать - есть команда DisablePlayerControls.
На ходьбу и бег не распространяется (можно только целиком движение отключить), но всегда можно незаметно подкинуть игроку в инвентарь предмет на пару миллионов тонн веса (чтоб с гарантией).
Хотя может есть и какой-то другой, более элегантный способ.
- Кайо это нравится
Темы с аналогичным тегами papyrus, help, скрипты, вопросы
Моддинг →
Моддинг Skyrim →
Восстановление на основе Зала ДозораАвтор Alex_andra, 11 дек 2023 mod, help |
|
|||
|
Моддинг →
Моддинг Skyrim →
Отстройка ВинтерхолдаАвтор Alex_andra, 10 авг 2023 bugs, moding, help |
|
||
Моддинг →
Моддинг Oblivion →
Скрипт Для СнаряженияАвтор БесездаБойчик, 07 сен 2022 скрипты, скрипт |
|
|||
Моддинг →
Моддинг Skyrim →
Нужны добровольцы для теста модаАвтор arkadiy111, 11 апр 2022 help |
|
|||
help
Моддинг →
Моддинг Skyrim →
Ram and Skyrim seАвтор Samurai1, 03 апр 2022 help |
|
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 скрытых