mr Jyggalag Опубликовано 1 марта, 2018 Опубликовано 1 марта, 2018 (изменено) Во время самостоятельных поисков ответа на собственный вопрос, я обнаружил глобальную переменную DLC2MiraakDragonSouls. По идее, она отвечает за кол-во душ, что находятся у Мирака (этот вывод основан на названии), но вот относятся они к финальной битве с ним или к непосредственному поглощению душ - я не знаю. Для того, чтобы проверить это, я решил провести тестовый забег (т.е. создать персонажа и пройти DLC, попутно, в нужных ситуациях, "запрашивая" значение переменной). Так как узнать значение переменной через консоль мне лень (а в добавок я не вполне понял, как это сделать), то мною было принято решение создать мини мод, где я бы посредством применения заклинания вызывал окошко (Message), где было бы отображено значение DLC2MiraakDragonSouls (попутно, попытаться познакомиться и разобраться с месседжами). Трудности возникли с самим "выведением окошка с переменной": я создал объект Message; создал эффект, куда привязал скрипт aaaaMiraakDSscript и написал код:СпойлерScriptname aaaaMiraakDSscript extends activemagiceffect GlobalVariable Property DLC2MiraakDragonSouls Auto Message Property DSMiraakMessage Auto DSMiraakMessage.Show(DLC2MiraakDragonSouls.Getvalue())Ес-но я задал предварительно значения переменных:СпойлерУ DLC2MiraakDragonSouls в Property задано значение "ванильной переменной" DLC2MiraakDragonSouls У DSMiraakMessage задано значение моего месседжа:Однако, при компиляции, мне CK выдаёт ошибку:СпойлерStarting 1 compile threads for 1 files... Compiling "aaaaMiraakDSscript"... C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\aaaaMiraakDSscript.psc(5,15): no viable alternative at input '.' No output generated for aaaaMiraakDSscript, compilation failed. Batch compile of 1 files finished. 0 succeeded, 1 failed. Failed on aaaaMiraakDSscript Вопрос - что я делаю не так или кто может мне расписать, как правильно "привязывать" переменные к месседжу? P.sI. файл исходника и файл мода (ссылки ведут на гугл диск) II. Сообщение и проч. пытался сделать, основываясь на этом уроке III. прошу проявить терпение, если вопрос показался вам тупым/идиотским/лёгким Изменено 1 марта, 2018 пользователем mr Jygalag
Vitalyudin Опубликовано 1 марта, 2018 Опубликовано 1 марта, 2018 01.03.2018 07:28:07, mr Jygalag сказал(-а): Так как узнать значение переменной через консоль мне лень (а в добавок я не вполне понял, как это сделать) Команда для этого: show variablename. 01.03.2018 07:28:07, mr Jygalag сказал(-а): DSMiraakMessage.Show(DLC2MiraakDragonSouls.Getvalue()) Думаю/предполагаю, что Message.Show может показывать конкретную переменную, а не функцию, берущую значение переменной. Задай переменную типа float, ей присвой значение глобалки DLC2MiraakDragonSouls, и попробуй показывать именно эту переменную. UPD: а ещё в твоём скрипте (если это он весь) нет ивента, в маг. эффекте он должен быть OnEffectStart.
mr Jyggalag Опубликовано 1 марта, 2018 Опубликовано 1 марта, 2018 01.03.2018 08:43:33, Vitalyudin сказал(-а):Команда для этого: show variablename.Спасибо большое, сохраню на всякий случайДумаю/предполагаю, что Message.Show может показывать конкретную переменную, а не функцию, берущую значение переменной.Задай переменную типа float, ей присвой значение глобалки DLC2MiraakDragonSouls, и попробуй показывать именно эту переменную. UPD: а ещё в твоём скрипте (если это он весь) нет ивента, в маг. эффекте он должен быть OnEffectStart.Как только добавил конструкцию с OnEffectStart всё заработало. Благодарю за быстрый и информативный ответ
werr Опубликовано 2 марта, 2018 Опубликовано 2 марта, 2018 24.02.2018 04:43:56, Oxbow сказал(-а): Добрый день. У тебя название сцены и скрипта совпадают. В этом ошибка. A Random Dude's Story
2Baxes Опубликовано 2 марта, 2018 Опубликовано 2 марта, 2018 (изменено) *удалено* Изменено 2 марта, 2018 пользователем 2Baxes
=D= Опубликовано 4 марта, 2018 Опубликовано 4 марта, 2018 Доброго времени суток. Кто-нибудь может подсказать Event который вызывается, когда игрок убивает моба (любого).
Azazellz Опубликовано 4 марта, 2018 Опубликовано 4 марта, 2018 (изменено) 04.03.2018 13:13:44, =D= сказал(-а): Доброго времени суток. Кто-нибудь может подсказать Event который вызывается, когда игрок убивает моба (любого). OnDeath (если скрипт прицеплен к актеру). Но вообще если тебе надо прям всех актеров отслеживать - это надо в СториМенеджер лазить, там есть ивент на убийство. Через него запускается квест, который уже может что-то делать своими скриптами. Perks for Blood поищи на этом сайте, там в комментах есть мой архив, в котором как раз через квестовую систему это все отслеживается. Ну и сам мод на это тоже направлен - убиваешь чуваков, получаешь перки. Изменено 4 марта, 2018 пользователем Azazellz 1
=D= Опубликовано 4 марта, 2018 Опубликовано 4 марта, 2018 04.03.2018 14:00:21, Azazellz сказал(-а): Премного благодарен
mr Jyggalag Опубликовано 11 марта, 2018 Опубликовано 11 марта, 2018 Вопрос - почему при компиляции моего скрипта, с назначенными значениями, куда надо, мне выдаёт CK ошибку? По идее, если я ничего не забыл, скрипт должен работать Cам скрипт:Scriptname DSMiraak extends Scene GlobalVariable Property DSMiraakCount Auto float Property DSM = DSMiraakCount.Getvalue() DSM+=1 DSMcount.SetValue(DSM) Код ошибки:Starting 1 compile threads for 1 files... Compiling "DSMiraak"... C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\temp\DSMiraak.psc(5,21): no viable alternative at input 'DSMiraakCount' No output generated for DSMiraak, compilation failed. Batch compile of 1 files finished. 0 succeeded, 1 failed. Failed on DSMiraak Примечания к переменным и их значениям:DSMiraakCount присвоено значение глобальной переменной DSMiraakCount, у которой изначальное значение "0" и тип - Short DSM через Property задано значение "0". По идее, это не важно, но я настроил её, на всякий случай.
YourBunnyWrote Опубликовано 11 марта, 2018 Опубликовано 11 марта, 2018 Весь код, который выполняет какие-то действия, должен находиться в функциях или событиях. Scriptname DSMiraak extends Scene GlobalVariable Property DSMiraakCount Auto float Property DSM Auto Function DoSmth() DSM = DSMiraakCount.Getvalue() DSM+=1 DSMcount.SetValue(DSM) EndFunction Всё провисло и болтается.
mr Jyggalag Опубликовано 11 марта, 2018 Опубликовано 11 марта, 2018 11.03.2018 15:45:47, YourBunnyWrote сказал(-а): Весь код, который выполняет какие-то действия, должен находиться в функциях или событиях. Scriptname DSMiraak extends Scene GlobalVariable Property DSMiraakCount Auto float Property DSM Auto Function DoSmth() DSM = DSMiraakCount.Getvalue() DSM+=1 DSMcount.SetValue(DSM) EndFunction Благодарю, осталось только понять, как присобачить присоединить этот скрипт к нужной мне сцене...
werr Опубликовано 12 марта, 2018 Опубликовано 12 марта, 2018 11.03.2018 17:57:23, mr Jygalag сказал(-а): Благодарю, осталось только понять, как присобачить присоединить этот скрипт к нужной мне сцене... Легко. Например, можно повесить этот скрипт не на сцену, а на сам квест: Scriptname DSMiraak extends Quest GlobalVariable Property DSMiraakCount Auto Function CountSoulsMiraak() Int DSM = (DSMiraakCount.GetValue() as Int) DSM += 1 DSMiraakCount.SetValue(DSM) EndFunction В папирус-фрагменте сцены в поле kmyQuest выбрать DSMiraak, а в само поле вписать вызов функции: kmyQuest.CountSoulsMiraak() A Random Dude's Story
mr Jyggalag Опубликовано 12 марта, 2018 Опубликовано 12 марта, 2018 12.03.2018 18:33:30, werr сказал(-а):Легко. Например, можно повесить этот скрипт не на сцену, а на сам квест:Scriptname DSMiraak extends Quest GlobalVariable Property DSMiraakCount Auto Function CountSoulsMiraak() Int DSM = (DSMiraakCount.GetValue() as Int) DSM += 1 DSMiraakCount.SetValue(DSM) EndFunction В папирус-фрагменте сцены в поле kmyQuest выбрать DSMiraak, а в само поле вписать вызов функции:kmyQuest.CountSoulsMiraak() Благодарю, конечно за помощь, но я либо туплю, либо не то открываю, но поле kmyQuest в упор не вижу...
werr Опубликовано 12 марта, 2018 Опубликовано 12 марта, 2018 12.03.2018 19:06:48, mr Jygalag сказал(-а): Благодарю, конечно за помощь, но я либо туплю, либо не то открываю, но поле kmyQuest в упор не вижу... Божечки, Скайримский СК такой... задержанный. Давненько я уже не открывал его, года три. То, что я описал, относится к редактору под Фолл. В таком случае, достаточно просто этот кусок в поле папирус фрагмента вписать. Int DSM = (DSMiraakCount.GetValue() as Int) DSM += 1 DSMiraakCount.SetValue(DSM) ну или вовсе облениться и выдать нечто такое: DSMiraakCount.SetValue(DSMiraakCount.GetValue() + 1) A Random Dude's Story
Oxbow Опубликовано 15 марта, 2018 Опубликовано 15 марта, 2018 (изменено) 02.03.2018 09:08:55, werr сказал(-а): У тебя название сцены и скрипта совпадают. В этом ошибка. Спасибо за ответ. К сожалению не могу проверить. Так как Papyrus сошел с ума. При попытке компиляции любого скрипта windows вырубает его и вылазит такая ошибка. Спойлер ЌҐ®Ўа Ў®в ®Ґ ЁбЄ«о票Ґ: System.NotSupportedException: Љг«мвга "ru" - нв® Ґ©ва «м п Єг«мвга . Ћ Ґ ¬®¦Ґв ЁбЇ®«м§®ў вмбп ЇаЁ д®а¬ вЁа®ў ЁЁ Ё а §Ў®аҐ Ё Ї®н⮬㠥 ¬®¦Ґв Ўлвм § зҐ вҐЄг饩 Єг«мвга®© ¤«п нв®Ј® Ї®в®Є . ў System.Globalization.CultureInfo.CheckNeutral(CultureInfo culture) ў System.Globalization.CultureInfo.get_NumberFormat() ў System.Int32.ToString(String format, IFormatProvider provider) ў System.Text.StringBuilder.AppendFormat(IFormatProvider provider, String format, Object[] args) ў System.String.Format(IFormatProvider provider, String format, Object[] args) ў System.IO.TextWriter.Write(String format, Object arg0, Object arg1) ў System.IO.TextWriter.SyncTextWriter.Write(String format, Object arg0, Object arg1) ў System.Console.Write(String format, Object arg0, Object arg1) ў PapyrusCompiler.Program.Main(String[] args) Изменено 15 марта, 2018 пользователем Oxbow
mr Jyggalag Опубликовано 15 марта, 2018 Опубликовано 15 марта, 2018 12.03.2018 19:55:31, werr сказал(-а):В таком случае, достаточно просто этот кусок в поле папирус фрагмента вписать. Int DSM = (DSMiraakCount.GetValue() as Int) DSM += 1 DSMiraakCount.SetValue(DSM) ну или вовсе облениться и выдать нечто такое: DSMiraakCount.SetValue(DSMiraakCount.GetValue() + 1) Сначала ничего не сработало, но потом, когда я назначил переменные через проперти в папирус фрагменте, всё "заработало" (компиляция кода ни к чему не приводит, а так как лога с ошибками нет, то надо проверять "на практике", действительно ли всё "пашет"). В любом случае, премного благодарен за помощь.
mr Jyggalag Опубликовано 17 марта, 2018 Опубликовано 17 марта, 2018 12.03.2018 19:55:31, werr сказал(-а): DSMiraakCount.SetValue(DSMiraakCount.GetValue() + 1) UPD ситуации - назначил скрипт на финальный этап сцены, но при тестировании появилась небольшая загвоздка. Если говорить упрощённо - Мирак перестал поглощать души драконов, а скрипт, что был вставлен в фрагмент папируса, не работает (наверняка второе есть следствие первого - т.е так как души драконов не поглощаются, то и скрипт не работает). Попробую провести ещё пару тестов, во время которых попробую переставить скрипт в различные фазы (а не в финальную сцену). Возможно, приду к какому-нибудь результату. Если не получится, то переставлю скрипт в одну из стадий квеста, а если и это не сработает, то: а) пойду искать инф-цию о том, как подсчитывать кол-во проигранных сцен б) изучать код скриптов, изначально привязанных к квесту, дабы вписать новый фрагмент в изначальный скрипт
mr Jyggalag Опубликовано 20 марта, 2018 Опубликовано 20 марта, 2018 (изменено) В поиске ответа на то, как подсчитать кол-во "Краж" Мираком душ (т.е кол-во проигранных сцен из квеста DLC2SoulSteal из DLC Dragonborn) я решил изменить скрипт, привязанный к квесту "краж" - DLC2SoulStealScript. Цель проста - добавить в "финальный" фрагмет скрипта bp DLC мою часть кода, т.е заставить скрипт дополнения "поработать на меня". Однако, когда я отредактировал через Notepad++ этот скрипт, добавив незначительные изменения, то при компиляции этого скрипта через CK мне выдало ошибку: Сама ошибкаStarting 1 compile threads for 1 files...Compiling "DLC2SoulStealScript"...<unknown>(0,0): Unable to find flags file: TESV_Papyrus_Flags.flg C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\DLC2SoulStealScript.psc(1,0): Unknown user flag conditional C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\DLC2SoulStealScript.psc(31,5): Unknown user flag conditional C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\DLC2SoulStealScript.psc(32,5): Unknown user flag conditionalNo output generated for DLC2SoulStealScript.psc, compilation failed.Batch compile of 1 files finished. 0 succeeded, 1 failed.Failed on DLC2SoulStealScript.psc А вот новые части кода, что я добавил в скрипт DLC2SoulStealScript:новые части кодаВ самом начале, после поля Properties: ;-- New Properties ---------------------------------- GlobalVariable Property DSMiraakCount Auto Далее после поля Variables: ;-- New Variable ------------------------------------ float Property DSM Auto И новый фрагмент в функции FinishStealingSoul (функция представлена тут в полном виде, после моих изменений): function FinishStealingSoul() debug.Trace(self as String + "FinishStealingSoul()", 0) DLC2SoulStealMsg.show(0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000) ;new fragment DSM = DSMiraakCount.Getvalue() DSM+=1 DSMcount.SetValue(DSM) endFunction Почему скрипт не сработал - понятия не имею. Но вот в чём загвоздка - после того, как я второй раз декомпилировал скрипт DLC2SoulStealScript.pex с помощью утилиты гн-на Кербера в DLC2SoulStealScript.psc (для того, чтобы получить "чистый" скрипт DLC2SoulStealScript.psc), то я также попробовал компилировать этот скрипт с помощью CK. Угадайте что? Правильно, CK выдал ошибку: код ошибкиStarting 1 compile threads for 1 files... Compiling "DLC2SoulStealScript"... <unknown>(0,0): Unable to find flags file: TESV_Papyrus_Flags.flg C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(8,0): Unknown user flag conditional C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(35,5): Unknown user flag conditional C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(36,5): Unknown user flag conditional No output generated for DLC2SoulStealScript.psc, compilation failed. Batch compile of 1 files finished. 0 succeeded, 1 failed. Failed on DLC2SoulStealScript.psc Одним словом - что за фигня тут происходит? P.s: ссылка на скачивание отредактированного скрипта - тык; ссылка на оригинальный, т.е. не отредактированный мной сприт (в формате .psc), который я получил из dlc2soulstealscript.pex посредством Papyrus Assembler GUI - тык; ссылка на этот же скрипт, но в формате .pex (именно его я и извлёк из Dragonborn.bsa) - тык Изменено 20 марта, 2018 пользователем mr Jygalag
YourBunnyWrote Опубликовано 20 марта, 2018 Опубликовано 20 марта, 2018 20.03.2018 18:35:51, mr Jygalag сказал(-а):CK мне выдало ошибкуОтвет был на предыдущей странице http://tesall.ru/topic/17490-voprosy-po-skriptam/?p=1412757 Всё провисло и болтается.
mr Jyggalag Опубликовано 21 марта, 2018 Опубликовано 21 марта, 2018 (изменено) 20.03.2018 19:00:43, YourBunnyWrote сказал(-а):Ответ был на предыдущей странице http://tesall.ru/topic/17490-voprosy-po-skriptam/?p=1412757Разместил TESV_Papyrus_Flags.flg там, где надо (по пути ...Skyrim\Data\Scripts\Source) - теперь же CK ругается на другие вещи:Код ошибки:Starting 1 compile threads for 1 files...Compiling "dlc2soulstealscript"...C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(140,0): no viable alternative at character 'ў'C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(140,1): no viable alternative at character 'я'C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(140,3): no viable alternative at character 'ў'C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(140,4): no viable alternative at character 'я'C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(141,0): no viable alternative at character 'ў'C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(141,1): no viable alternative at character 'я'C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(141,2): no viable alternative at character 'ў'C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(141,3): no viable alternative at character 'я'C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(141,4): no viable alternative at character 'ў'C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(141,5): no viable alternative at character 'я'C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(142,0): no viable alternative at character 'ў'C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(142,1): no viable alternative at character 'я'C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(142,2): no viable alternative at character 'ў'C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(142,3): no viable alternative at character 'я'C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(142,4): no viable alternative at character 'ў'C:\Program Files (x86)\Steam\steamapps\common\skyrim\Data\Scripts\Source\dlc2soulstealscript.psc(142,5): no viable alternative at character 'я'No output generated for dlc2soulstealscript.psc, compilation failed.Batch compile of 1 files finished. 0 succeeded, 1 failed.Failed on dlc2soulstealscript.pscПроверил строчки 140, 141 и 142 - никаких символов таких и в помине нет: DSM = DSMiraakCount.Getvalue() DSM+=1 DSMcount.SetValue(DSM) Изменено 21 марта, 2018 пользователем mr Jygalag
YourBunnyWrote Опубликовано 21 марта, 2018 Опубликовано 21 марта, 2018 Там какие-то посторонние символы. Возьми оригинальный файл и отредактируй ещё раз в каком-то нормальном редакторе (Notepad++, Sublime Text). Всё провисло и болтается.
mr Jyggalag Опубликовано 21 марта, 2018 Опубликовано 21 марта, 2018 21.03.2018 20:13:08, YourBunnyWrote сказал(-а):Там какие-то посторонние символы. Возьми оригинальный файл и отредактируй ещё раз в каком-то нормальном редакторе (Notepad++, Sublime Text).Пррблема как раз в том, что: а) я пользовался Notepad++ для редактирования скрипта б) доступа к оригинальному скрипту (в расширении .psc) у меня нет, так как файла scripts.rar (где, насколько помню, находятся исходники оригинальных скриптов) я у себя не нашёл, а сколько раз не тыкал в Стиме на "Проверить целостность кэша" - ноль эффекта. Поэтому, единственный способ для меня был самый длинный: достать из Dragonborn.bsa скрипт в формате .pex, затем его декомпилировать в "читабельный" формат .psc
Blondi Опубликовано 22 марта, 2018 Опубликовано 22 марта, 2018 а что циферки в скобках обозначают? Первая - строка скрипта, наверное, а вторая?
YourBunnyWrote Опубликовано 22 марта, 2018 Опубликовано 22 марта, 2018 Позиция символа в строке. Всё провисло и болтается.
YourBunnyWrote Опубликовано 22 марта, 2018 Опубликовано 22 марта, 2018 21.03.2018 21:03:33, mr Jygalag сказал(-а):единственный способ для меня был самый длинный: достать из Dragonborn.bsa скрипт в формате .pex, затем его декомпилировать в "читабельный" формат .pscДобытый исходник компилируется без твоих правок? Если да, то просто отредактируй его ещё раз, не копируй, а руками набери. Всё провисло и болтается.
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти