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


Фотография

Вопросы по модостроению и Creation Kit

help modding creation kit скайрим редактор помощь вопросы

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

#2841 Ссылка на это сообщение gkalian

gkalian
  • smoke on helmet
  • 14 058 сообщений
  •    

Отправлено

В файле SkyrimEditor.ini ниже [General] впишите строчку sLanguage=RUSSIAN, чтобы этот СК по-русски понимал.
Для того чтобы ошибки не выдавались, и не мешали в работе
Можно сделать следующее:

Открыть любым текстовым редактором файл SkyrimEditor.ini (находится в папке \Steam\steamapps\common\skyrim)
Находим секцию [MESSAGES]
В каждой строке в данной секции меняем значение с 0 на 1. После всех изменений данная секция должна выглядеть так:

[MESSAGES]
bSkipInitializationFlows=1
bSkipProgramFlows=1
bAllowYesToAll=1
bBlockMessageBoxes=1
iFileLogging=1

 

В связи с реструктуризацией раздела все полезные сообщения вынесены в отдельную тему.
/сентябрь 2015



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

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

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

Отправлено

А вот и новые вопросы. Как заставить нпса в сцене сесть на стул и запустить анимацию письма? Я пробовал сделать пакет "идти и использовать идл", но нпс просто подходит к стулу (идет он к хмаркеру, стул в упор стоит, но в пакете назначен как маркер, который надо использовать), после чего разворачивается и уходит. А еще после сцены у него активируется агрессивное поведение с "тебе тут не рады", бегом за игроком и так далее. В чем проблема?

И еще один небольшой вопрос. Если по сцене нпс выкидывает записку, как заставить ее алиас оказаться в мире? Из инвентаря я его допустим удалю через RemoveItem(Alias.GetReference()). Но что надо сделать, чтобы он оказался на земле? DropItem, к слову, почему-то не сработал, хотя скрипт успешно скомпилировался.

А еще почему-то алиас другой записки, которая должна быть в инвентаре нпса, несмотря на стоящие галки initially disabled и allow disabled, все равно включен сам по себе, без активации.


Сообщение отредактировал mantik903: 04 августа 2020 - 18:58


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

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

Отправлено

Добрый день всем участникам форума! Недавно я решила сделать мод на рукопашный и бездоспешный бой. Для этого я хочу переделать навык красноречия. Первый вопрос такой: где в creation kit можно изменить условие повышения навыка? Допустим, красноречие повышается, когда персонаж торгуется или кого-то успешно убеждает. Где в creation kit можно это условие поменять на "1 единица опыта = 1 единица урона, нанесённого в рукопашной?"

Врядли это вообще возможно.

 

В чем проблема?

Что-то не так делаешь, значит.

Гугли англоязычные мануалы, может чего и найдешь.

Проведи раскопки в других модах или в ванильной игре, если не найдешь ничего. Кто-то где-то это уже делал до тебя, надо только найти кто и где.

 

И еще один небольшой вопрос. Если по сцене нпс выкидывает записку, как заставить ее алиас оказаться в мире? Из инвентаря я его допустим удалю через RemoveItem(Alias.GetReference()). Но что надо сделать, чтобы он оказался на земле? DropItem, к слову, почему-то не сработал, хотя скрипт успешно скомпилировался.

Ну удали вообще, и заспавнь копию, делов то.

 

А еще почему-то алиас другой записки, которая должна быть в инвентаре нпса, несмотря на стоящие галки initially disabled и allow disabled, все равно включен сам по себе, без активации.

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



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

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

Отправлено

Врядли это вообще возможно.

 

Что-то не так делаешь, значит.

Гугли англоязычные мануалы, может чего и найдешь.

Проведи раскопки в других модах или в ванильной игре, если не найдешь ничего. Кто-то где-то это уже делал до тебя, надо только найти кто и где.

 

Ну удали вообще, и заспавнь копию, делов то.

 

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

Насчет анимации пока ничего не нашел, а с копией пришлось устраивать танцы с бубном в стиле "оставить алиас на месте, активировав его в нужный момент, а до этого вручную добавлять/удалять конкретный предмет в инвентари нпсов".

Но теперь новый вопрос. Если у меня есть стадия квеста, которую можно получить в любой момент, подобрав определенный предмет, как должен выглядеть скрипт, который выяснит текущую стадию и закроет именно ее? Спамить десять строк objectivecomplete не хочется, но кроме того, что в скрипте должна быть функция getstage больше ничего в голову не приходит.


Сообщение отредактировал mantik903: 05 августа 2020 - 17:08


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

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

Отправлено

Насчет анимации пока ничего не нашел, а с копией пришлось устраивать танцы с бубном в стиле "оставить алиас на месте, активировав его в нужный момент, а до этого вручную добавлять/удалять конкретный предмет в инвентари нпсов".

Но теперь новый вопрос. Если у меня есть стадия квеста, которую можно получить в любой момент, подобрав определенный предмет, как должен выглядеть скрипт, который выяснит текущую стадию и закроет именно ее? Спамить десять строк objectivecomplete не хочется, но кроме того, что в скрипте должна быть функция getstage больше ничего в голову не приходит.

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

Я ж тебе вроде давал эту ссылку? Жмешь там на Quest, и перед тобой все скрипты, связанные с квестами. Смотришь, что тебе из них надо.



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

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

Отправлено

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

Я ж тебе вроде давал эту ссылку? Жмешь там на Quest, и перед тобой все скрипты, связанные с квестами. Смотришь, что тебе из них надо.

Ты не понял. Смотри, предмет можно подобрать на любой стадии от 20 до 90. При подъеме автоматом ставится 91. Но при этом та задача на которой игрок был до этого остается незавершенной. Смысл квеста вообще найти этот предмет. Но из-за того что я не знаю, на какой стадии игрок его поднимет, мне либо надо писать objectivecomplete на каждую из этих задач, либо сделать скрипт, который сам автоматом вычислит текущую задачу и закроет именно ее, что мне и надо. То есть как я понимаю, надо через getstage получить нынешнюю стадию, но как заставить скрипт запомнить это значение и именно его подставить в objectivecomplete (стадии почти всегда равноценны задачам)? Ту страницу кстати впервые вижу, спасибо большое.


Сообщение отредактировал mantik903: 05 августа 2020 - 19:22


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

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

Отправлено

Ты не понял. Смотри, предмет можно подобрать на любой стадии от 20 до 90. При подъеме автоматом ставится 91. Но при этом та стадия на которой игрок был до этого остается незавершенной. Смысл квеста вообще найти этот предмет. Но из-за того что я не знаю, на какой стадии игрок его поднимет, мне либо надо писать objectivecomplete на каждую из этих стадий, либо сделать скрипт, который сам автоматом вычислит текущую стадию и закроет именно ее, что мне и надо. То есть как я понимаю, надо через getstage получить нынешнюю, но как заставить скрипт запомнить это значение и именно его подставить в objectivecomplete? Ту страницу кстати впервые вижу, спасибо большое.

Там же прямо на странице с GetStage пример дан, как такое сделать.

int MyQuestStage = MyQuest.GetStage()

Т.е. "MyQuestStage" везде, где ты его дальше использовать в скрипте будешь - всегда будет той стадией квеста, которую ты командой выше получил и в эту переменную записал.

MyQuest.SetObjectiveCompleted(MyQuestStage)

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

MyQuest.SetObjectiveCompleted(MyQuest.GetStage())

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



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

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

Отправлено

Там же прямо на странице с GetStage пример дан, как такое сделать.

int MyQuestStage = MyQuest.GetStage()

Т.е. "MyQuestStage" везде, где ты его дальше использовать в скрипте будешь - всегда будет той стадией квеста, которую ты командой выше получил и в эту переменную записал.

MyQuest.SetObjectiveCompleted(MyQuestStage)

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

MyQuest.SetObjectiveCompleted(MyQuest.GetStage())

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

Вот, именно на это я и надеялся. Спасибо большое, пойду тестить)



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

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

Отправлено

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



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

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

Отправлено

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

Тут много разных вариантов может быть.

 

Если вкратце - при открытии сундука скрипт проверяет переменную, если она условно 0 - скрипт срабатывает и в конце переводит переменную в условную 1.

При втором открытии опять сначала происходит проверка, но так как перменная уже 1 - скрипт ничего делать не будет, и закроется.

 

Т.е. нужно сделать проверку по внешнему параметру - это может быть стадии квеста, глобальная переменная, или еще по чему-нибудь.

А можно ввести в скрипт свою переменную, и проверять по ней. Не уверен, правда, постоянно эта переменная в памяти будет храниться, или нет.

Сюда же можно отнести использование такой штуки, как "State" - загугли по СК вики, прочитай про них. Вместо переменной - несколько "разделов" в одном скрипте, и выполняется только один из них.

Загрузка\выгрузка объектов со скриптами и сохранение их в сейвах - это вообще отдельная песня.



#2851 Ссылка на это сообщение nordavel

nordavel
  • Новенький
  • 13 сообщений

Отправлено

Подскажите, пожалуйста, годный урок по созданию телепорта. Мне нужно сделать телепорт из лодки в Скайриме в свой закрытый мир и обратно. Смотрел урок Кальяна, но он мне не подходит. Там используется активатор. У меня, по идее, активатором должна быть лодка.



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

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

Отправлено

Подскажите, пожалуйста, годный урок по созданию телепорта. Мне нужно сделать телепорт из лодки в Скайриме в свой закрытый мир и обратно. Смотрел урок Кальяна, но он мне не подходит. Там используется активатор. У меня, по идее, активатором должна быть лодка.

https://zikul.tumblr...r-invisible#_=_

Создание невидимого активатора.

Скрипт с телепортом сам прицепишь.



#2853 Ссылка на это сообщение nordavel

nordavel
  • Новенький
  • 13 сообщений

Отправлено

https://zikul.tumblr...r-invisible#_=_

Создание невидимого активатора.

Скрипт с телепортом сам прицепишь.

Спасибо! Но это создание невидимого активатора. Скрипт я прицеплю. НО это, я так понимаю, будет перемещение в одну сторону. А вот как обратно до конца не понятно... Там тоже нужно будет создавать новый триггер?



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

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

Отправлено

Спасибо! Но это создание невидимого активатора. Скрипт я прицеплю. НО это, я так понимаю, будет перемещение в одну сторону. А вот как обратно до конца не понятно... Там тоже нужно будет создавать новый триггер?

Да. Все точно так же, только в скрипте - другие координаты.

 

Ну и вообще, залез бы в ванильную Стражу Рассвета, там в замок Волкихар тоже на лодке плавать надо, посмотрел бы как там устроено.



#2855 Ссылка на это сообщение nordavel

nordavel
  • Новенький
  • 13 сообщений

Отправлено

Да. Все точно так же, только в скрипте - другие координаты.

 

Ну и вообще, залез бы в ванильную Стражу Рассвета, там в замок Волкихар тоже на лодке плавать надо, посмотрел бы как там устроено.

ОК! Спасибо! Гляну...



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

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

Отправлено

Теперь новая проблема. Тот самый скрипт на зачет целей по текущей стаадии:

int MyQuestStage1 = MyQuest.GetStage()
if MyQuest.GetStage() != 17 && MyQuest.GetStage() != 26 && MyQuest.GetStage() != 37
MyQuest.SetObjectiveCompleted(MyQuestStage1)
elseif MyQuest.GetStage() == 17
MyQuest.SetObjectiveCompleted(15)
elseif MyQuest.GetStage() == 26
MyQuest.SetObjectiveCompleted(25)
elseif MyQuest.GetStage() == 37
MyQuest.SetObjectiveCompleted(45)
endif

Но он не выполняет стадии. В чем причина? То есть он компилируется, и в игре работает (проверено через меседжбокс), но саму свою цель выполнения задач не исполняет, они остаются активными.


Сообщение отредактировал mantik903: 06 августа 2020 - 18:28


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

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

Отправлено

Теперь новая проблема. Тот самый скрипт на зачет целей по текущей стаадии:

int MyQuestStage1 = MyQuest.GetStage()
if MyQuest.GetStage() != 17 && MyQuest.GetStage() != 26 && MyQuest.GetStage() != 37
MyQuest.SetObjectiveCompleted(MyQuestStage1)
elseif MyQuest.GetStage() == 17
MyQuest.SetObjectiveCompleted(15)
elseif MyQuest.GetStage() == 26
MyQuest.SetObjectiveCompleted(25)
elseif MyQuest.GetStage() == 37
MyQuest.SetObjectiveCompleted(45)
endif

Но он не выполняет стадии. В чем причина? То есть он компилируется, и в игре работает (проверено через меседжбокс), но саму свою цель выполнения задач не исполняет, они остаются активными.

Вообще, с точки зрения логики правильнее сделать сначала проверку конкретных стадий, а потом в else (которое исполняется, если ни одно из предыдущих словий не сработало) сделать завершение той стадии, которая активна (3-я строчка у тебя в скрипте).

 

Что касается "почему не работает" - у тебя какой-то разнобой стадий и целей. Может, это игре не нравится, может еще что-то.

Посмотри в ванильных скриптах и квестах, которые имеют подобную систему. Все исходники есть ведь.



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

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

Отправлено

Новая, крайне неожиданная проблема. Дал мод другому человеку, а у него после разговора (там форсгрит) не активируется квест, хотя должен. В чем тут-то проблема? У меня все работает как часы, а у него будто скрипт на установку стадии в одной из реплик сломался. Проверяли через команду - у квеста нулевая стадия. Единственная разница - у него лицуха, у меня пиратка. Версии одинаковые, набор модов тоже, там только стандартные. Скидывал я еспшник и папки с компиляцией тектсур лиц/тел. Я дропнул не все?


Сообщение отредактировал mantik903: 07 августа 2020 - 17:02


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

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

Отправлено

Новая, крайне неожиданная проблема. Дал мод другому человеку, а у него после разговора (там форсгрит) не активируется квест, хотя должен. В чем тут-то проблема? У меня все работает как часы, а у него будто скрипт на установку стадии в одной из реплик сломался. Проверяли через команду - у квеста нулевая стадия. Единственная разница - у него лицуха, у меня пиратка. Версии одинаковые, набор модов тоже, там только стандартные.

Скорее всего забыл положить в архив какой-нибудь из диалоговых скриптов.



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

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

Отправлено

Скорее всего забыл положить в архив какой-нибудь из диалоговых скриптов.

В архиве только есп, я не делал бса. Но я так понимаю, что именно этим мне и надо заняться?

 

upd: да, очевидно именно это мне и надо сделать. Но как узнать, какие именно файлы надо копировать в архив? Только скрипты, меши и текстуры? И как из скриптов выцепить нужные, их ведь дофига? Плюс скрипты все равно не работают, хотя бса сделан. Как эта херня вообще должна быть реализована...

 

Мораль - если скопировать папки со скриптами и звуком все норм. Но почему бса не работает, если попытаться все эти же папки в него собрать?


Сообщение отредактировал mantik903: 08 августа 2020 - 00:01


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

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

Отправлено

Мораль - если скопировать папки со скриптами и звуком все норм. Но почему бса не работает, если попытаться все эти же папки в него собрать?

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

В СК есть встроенная фича сборки архива, сама собирает все использованные файлы.

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







Темы с аналогичным тегами help, modding, creation kit, скайрим, редактор, помощь, вопросы

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

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