Перейти к содержимому


Фотография

Вопросы по скриптам

papyrus help скрипты вопросы

  • Авторизуйтесь для ответа в теме

#561 Ссылка на это сообщение Potatoider

Potatoider
  • Знаменитый оратор


  • 4 350 сообщений
  •    

Отправлено

Тема для вопросов по скриптингу.

Функции папируса:

На английском

На русском (не все, но базис)



 




  • Авторизуйтесь для ответа в теме
Сообщений в теме: 832

#562 Ссылка на это сообщение Azazellz

Azazellz
  • Знаменитый оратор
  • 2 033 сообщений
  •    

Отправлено

Но вот какие именно строки менять

Никакие.

Шанс на выпадение камней записан в левел листе с ними. Как раз тот самый ItemGems10 (ID 0010E992).

Условное "ничего" выпадает в 90% случаев, остальное (какой именно камень все-таки выпадет) зависит от уровня персонажа.

Правь этот левел лист.



#563 Ссылка на это сообщение Berserk1989

Berserk1989
  • "Я старый пират, и не знаю слов лицензионного соглашения...

  • 1 557 сообщений
  •    

Отправлено

Никакие.

Шанс на выпадение камней записан в левел листе с ними. Как раз тот самый ItemGems10 (ID 0010E992).

Условное "ничего" выпадает в 90% случаев, остальное (какой именно камень все-таки выпадет) зависит от уровня персонажа.

Правь этот левел лист.

Спасибо за оперативный ответ, буду пробовать!


Ордена и награды

#564 Ссылка на это сообщение Leadaire

Leadaire
  • Новенький
  • 6 сообщений

Отправлено

Такая проблемка. При создании скрипта

Event OnLocationChange(Location akOldLoc, Location akNewLoc)
  if MQ104.GetStage() >= 160
    (pWICourier as WICourierScript).addItemToContainer(LetterQst, 1)
    AliasPlayer.Clear()
    GetOwningQuest().SetStage(200)
    GetOwningQuest().Stop()
  endIf
endEvent

Картинка

выдает ошибку, что переменная MQ104 - undefined? насколько я понял, она не объявлена. Но каким образом? Skyrim.esm то подгружен. В общем мне надо, чтобы курьер после определенного события принес мне письмо.

И еще такой вопрос, как задать условие, чтобы курьер пришел после взятия лвл? И надо ли вообще какое-то условие, чтобы этот долбанный курьер уже приперся?


 

Может ты можешь помочь?

_______________

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

Вот тут:

Сообщение отредактировал Leadaire: 09 ноября 2019 - 09:45


#565 Ссылка на это сообщение Azazellz

Azazellz
  • Знаменитый оратор
  • 2 033 сообщений
  •    

Отправлено

выдает ошибку, что переменная MQ104 - undefined? насколько я понял, она не объявлена. Но каким образом? Skyrim.esm то подгружен. В общем мне надо, чтобы курьер после определенного события принес мне письмо.

Ну так она и не объявлена нигде. Скрипт не знает, что эти буковки обозначают.

Проперти типа "квест" для нее задай, и в СК свяжи с нужным квестом.

 

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

Кондишны по центру используй. GetLevel, игрок, число, тип AND.



#566 Ссылка на это сообщение Leadaire

Leadaire
  • Новенький
  • 6 сообщений

Отправлено

Ну так она и не объявлена нигде. Скрипт не знает, что эти буковки обозначают.

Проперти типа "квест" для нее задай, и в СК свяжи с нужным квестом.

 

Кондишны по центру используй. GetLevel, игрок, число, тип AND.

и еще такой вопрос, при таком условии if MQ104.GetStage() >= 160, скрипт стартанет именно после прохождения данного квеста? или можно условно мой мод загрузить на старый сейв и скрипт запустится? Как сделать запуск второго квеста, после завершения первого квеста (моих), через определенный промежуток времени (игрового)?



#567 Ссылка на это сообщение Azazellz

Azazellz
  • Знаменитый оратор
  • 2 033 сообщений
  •    

Отправлено

и еще такой вопрос, при таком условии if MQ104.GetStage() >= 160, скрипт стартанет именно после прохождения данного квеста? или можно условно мой мод загрузить на старый сейв и скрипт запустится? Как сделать запуск второго квеста, после завершения первого квеста (моих), через определенный промежуток времени (игрового)?

Это зависит от стадии на момент завершения квеста.

На всякий случай добавь условие "или" на проверку завершения. Типа

if (MQ104.GetStage() >= 160) || (MQ104.IsCompleted())

Чтоб скрипт работал, вещь, к которой он прицеплен, должна быть условно активна. Например, если квест не запущен - то его скрипты не работают.

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

 

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



#568 Ссылка на это сообщение Leadaire

Leadaire
  • Новенький
  • 6 сообщений

Отправлено

Это зависит от стадии на момент завершения квеста.

На всякий случай добавь условие "или" на проверку завершения. Типа

if (MQ104.GetStage() >= 160) || (MQ104.IsCompleted())

Чтоб скрипт работал, вещь, к которой он прицеплен, должна быть условно активна. Например, если квест не запущен - то его скрипты не работают.

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

 

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

Что прописывать для команды ожидания игрового времени?



#569 Ссылка на это сообщение Azazellz

Azazellz
  • Знаменитый оратор
  • 2 033 сообщений
  •    

Отправлено

Что прописывать для команды ожидания игрового времени?

https://www.creation...:Script_Objects

Осваивай поиск.

Конкретно это - ищи "wait".



#570 Ссылка на это сообщение Leadaire

Leadaire
  • Новенький
  • 6 сообщений

Отправлено

Такой вопрос, как в creation kit изменить время обновлений подземелий?



#571 Ссылка на это сообщение Azazellz

Azazellz
  • Знаменитый оратор
  • 2 033 сообщений
  •    

Отправлено

Такой вопрос, как в creation kit изменить время обновлений подземелий?

Gameplay-Settings.

Там ищи по Respawn или как-то так.



#572 Ссылка на это сообщение DiSpalL

DiSpalL
  • Новенький
  • 5 сообщений

Отправлено

Подскажите пожалуйста, как сделать скрипт отслеживания времени? То есть, к примеру, что бы нпс по скрипту появлялся в нужном месте, скажем в 12 часов и находился там два часа?



#573 Ссылка на это сообщение mantik903

mantik903
  • Новенький
  • 20 сообщений

Отправлено

Господа, нужна помощь. По задумке после окончания диалога игрока должно сразу телепортировать на маркер. Вопрос - как это сделать? Я не могу подобрать соответствующий ивент, потому что ничего не происходит, а если просто вписать в фрагмент папируса в окошке "end" Game.GetPlayer().MoveTo("имя маркера") КК ругается: variable "имя маркера" is undefined. Хелп плиз. У меня как новичка уже мозг плавится.



#574 Ссылка на это сообщение mr Jyggalag

mr Jyggalag
  • Ветеран

  • 609 сообщений
  •    

Отправлено

Господа, нужна помощь. По задумке после окончания диалога игрока должно сразу телепортировать на маркер. Вопрос - как это сделать? Я не могу подобрать соответствующий ивент, потому что ничего не происходит, а если просто вписать в фрагмент папируса в окошке "end" Game.GetPlayer().MoveTo("имя маркера") КК ругается: variable "имя маркера" is undefined. Хелп плиз. У меня как новичка уже мозг плавится.

Привяжи просто окончание диалога к получению определённой квестовой стадии, а затем сделай скрипт, что на этой стадии будет телепортировать игрока к маркеру



#575 Ссылка на это сообщение Azazellz

Azazellz
  • Знаменитый оратор
  • 2 033 сообщений
  •    

Отправлено

КК ругается: variable "имя маркера" is undefined.

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

 

Не помню, можно там из окна диалога напрямую его скрипт редачить, или нет.

Вроде можно - компилишь что-нибудь, чтоб скрипт создался, потом редактируешь - вроде должно сработать.



#576 Ссылка на это сообщение mantik903

mantik903
  • Новенький
  • 20 сообщений

Отправлено

Привяжи просто окончание диалога к получению определённой квестовой стадии, а затем сделай скрипт, что на этой стадии будет телепортировать игрока к маркеру

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

 

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

 

Не помню, можно там из окна диалога напрямую его скрипт редачить, или нет.

Вроде можно - компилишь что-нибудь, чтоб скрипт создался, потом редактируешь - вроде должно сработать.

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

 

UPD: чуть-чуть покопавшись смог-таки изменить фрагмент, чтобы телепорт сработал. Но вскрылась другая проблема - на нпс висит скрипт на СellDetach(Attach, Detached/AttachedFrom), то есть по задумке он должен отводить игрока в другое место. И при телепорте игрока нпс должен телепортироваться следом. Но почему-то остается на месте при любой вариации этого скрипта. Выглядит это так:

ObjectReference Property aaaHTFTGroom  Auto 
Event OnCellDetach (Actor aaaHappyTogetherGroom)
aaaHappyTogetherGroom.MoveTo(aaaHTFTGroom)
EndEvent

Причем скрипт скомпилировался, все нормально. Но нпс все равно не портуется.

 

И еще небольшой вопрос. Как заставить forcegreet адекватно работать? Единственный вариант который нашел я - это сделать сцену, и в самого нпс вшить скрипт через OnCellAttach. Но я не уверен, что это самый корректный из возможных.


Сообщение отредактировал mantik903: 01 января 2020 - 22:20


#577 Ссылка на это сообщение Azazellz

Azazellz
  • Знаменитый оратор
  • 2 033 сообщений
  •    

Отправлено

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

Фрагменты срабатывают без ивента в самом скрипте - они запускаются через начало\окончание диалога, смотря куда скрипт впишешь.

 

Причем скрипт скомпилировался, все нормально. Но нпс все равно не портуется.

Аттач-Детач очень странно работают на самом деле.

Если тебе надо, чтоб НПС вместе с игроком телепортировался - ну так тем же скриптом его и телепортируй, в чем проблема?

 

Как заставить forcegreet адекватно работать?

АИ-пакеты используй.



#578 Ссылка на это сообщение mantik903

mantik903
  • Новенький
  • 20 сообщений

Отправлено

Если тебе надо, чтоб НПС вместе с игроком телепортировался - ну так тем же скриптом его и телепортируй, в чем проблема?

Попробовал по аналогии, но все равно не хочет. Для игрока у меня прописано 

ObjectReference Property aaaHTFT2Player Auto

Game.GetPlayer().MoveTo(aaaHTFT2Player)

 

Для нпс

ObjectReference Property aaaHTFT2Groom Auto
Actor aaaHappyTogetherGroom

aaaHappyTogetherGroom.MoveTo(aaaHTFT2Groom)

 

И нпс телепортироваться все равно упорно отказывается.



#579 Ссылка на это сообщение Azazellz

Azazellz
  • Знаменитый оратор
  • 2 033 сообщений
  •    

Отправлено

Попробовал по аналогии, но все равно не хочет. Для игрока у меня прописано 

ObjectReference Property aaaHTFT2Player Auto

Game.GetPlayer().MoveTo(aaaHTFT2Player)

 

Для нпс

ObjectReference Property aaaHTFT2Groom Auto
Actor aaaHappyTogetherGroom

aaaHappyTogetherGroom.MoveTo(aaaHTFT2Groom)

 

И нпс телепортироваться все равно упорно отказывается.

НПСа тоже через проперти задать попробуй, либо как Actor, либо как ObjectReference.

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



#580 Ссылка на это сообщение mantik903

mantik903
  • Новенький
  • 20 сообщений

Отправлено

НПСа тоже через проперти задать попробуй, либо как Actor, либо как ObjectReference.

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

Через актера не сработало, а вот через объект - вполне (умом папирус не понять). Спасибо большое)



#581 Ссылка на это сообщение Leadaire

Leadaire
  • Новенький
  • 6 сообщений

Отправлено

Ребят, как называется предметы типа Парагон из dlc Dawnguard в creation kit? Хочу сделать мод на квест с маркерами на них. Ни в одном разделе не нашел, даже поиск в All ничего не выдает. Искал по слову Paragon и их типу.


Сообщение отредактировал Leadaire: 12 января 2020 - 23:00






Темы с аналогичным тегами papyrus, help, скрипты, вопросы

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых