Кайо Опубликовано 5 февраля, 2021 Опубликовано 5 февраля, 2021 04.02.2021 23:40:06, Azazellz сказал(-а): Так он может на другое ругается. Скрипт целиком давай, посмотрим, что там к чему. Да вот, собственно, и весь упрощенный уже скрипт XD Без последней строки компилируется, с последней выпрыгивает вышеуказанная ошибка... Вроде, читала, как скрипты создавать, вроде, никаких прям бегин/энд не надобно же обычно для целого скрипта? И ивента у меня никакого нет, кроме диалоговой ветки... Scriptname BLlevelScrInit extends Quest GlobalVariable property BLlevel auto BLlevel.SetValueInt(1) В более сложном варианте вот: Scriptname BLlevelScrInit extends Quest GlobalVariable property BLlevel auto int BLlevVar = BLlevel.GetValueInt() BLlevel.SetValueInt(BLlevVar + 100) Но тут сразу три ошибки: no viable alternative at input 'BLlevel' required (...)+ loop did not match anything at input '.' Unknown user flag BLleve Кстати, странно, ошибка со знаком равно куда-то пропала, хотя вроде ничего не изменилось.
Herbert d'Godzor Опубликовано 5 февраля, 2021 Опубликовано 5 февраля, 2021 03.02.2021 12:32:13, Herbert d'Godzor сказал(-а): Здравствуйте. Мне очень нужна помощь. Дело в том, что я уже долгое время пытаюсь сделать особое призываемое существо для TESV:Skyrim. Оно должно напоминать Пепельного Стража из Dragonborn, но не внешне, а поведением. Оно должно не следовать за героем, а оставаться на той позиции на которой его призвали. Я сделал все что мог и это существо остается на своей позиции и не переходит в другие локации за героем, но вот при быстром перемещении в открытом мире (если оно было призвано в мире Tamriel) оно все равно оказывается рядом с героем. Я уже понял, что тут нужен скрипт, но беда в том, что я не умею их писать. В связи с этим, у меня два вопроса: первый - можно ли без скриптов как то сделать так, что существо не будет следовать вместе с игроком при быстром перемещении и второй - если все же нужен скрипт то не могли бы вы сказать, какой именно и куда его нужно ставить? Я уже добился того чтобы призванное существо не следовало вслед за игроком в другие локации, теперь мне просто надо знать, как сделать чтобы оно не телепортировалось вместе с игроком при быстром перемещении в открытом мире. Очень прошу, ответьте и на мой вопрос.
Azazellz Опубликовано 5 февраля, 2021 Опубликовано 5 февраля, 2021 05.02.2021 07:13:34, Кайо сказал(-а):Кстати, странно, ошибка со знаком равно куда-то пропала, хотя вроде ничего не изменилось. Долго думал, почему у меня тоже нифига не компилируется. Потом допер. Код в "серьезных" скриптах не может быть выброшен "просто так". Ему нужен либо ивент, с которого он будет включаться, либо функция, в которой он будет выполняться. А у тебя этого нет. Только в скриптовых фрагментах (квестовые стадии, диалоговые окна) можно это все выкидывать не заморачиваясь, СК потом это в финальный скрипт сам собирает. С полноценными скриптами это так не работает. Вот так это заработает Scriptname BLlevelScrInit extends Quest GlobalVariable property BLlevel auto Function PlusLevel (int n) int BLlevVar = BLlevel.GetValueInt() BLlevel.SetValueInt(BLlevVar + n) EndFunction Потом можно будет вызывать эту функцию из диалогов, указывая нужное число n. Но вообще, это излишне, так как в диалогах это должно работать и без всяких заморочек. GlobalVariable BLlevel int n = BLlevel.GetValueInt() BLlevel.SetValueInt(n + 100) Вот в таком виде. 05.02.2021 11:31:57, Herbert d'Godzor сказал(-а):Очень прошу, ответьте и на мой вопрос. Врядли это скриптами делается. На ИИ вообще сложно ими влиять, особенно на "базовый". Разбери сам призыв стража, посмотри, как он устроен. Я туда не лазил никогда, так что ничего сказать не могу. Если оригинальный страж за игроком не следует - возможно, там не простой призыв, а скриптовая комбинация. Т.е. оно не призывает моба, как обычно, а спавнит его в указанную точку. А может и что-то более сложное, комбинированное.
Herbert d'Godzor Опубликовано 5 февраля, 2021 Опубликовано 5 февраля, 2021 (изменено) 05.02.2021 12:10:53, Azazellz сказал(-а): Врядли это скриптами делается. На ИИ вообще сложно ими влиять, особенно на "базовый". Разбери сам призыв стража, посмотри, как он устроен. Я туда не лазил никогда, так что ничего сказать не могу. Если оригинальный страж за игроком не следует - возможно, там не простой призыв, а скриптовая комбинация. Т.е. оно не призывает моба, как обычно, а спавнит его в указанную точку. А может и что-то более сложное, комбинированное. Я разобрал. Поэтому я и прошу помощи. Там по сути три заклинания. Одно из них - скрипт. Там страж призывается на руну. И это скрипт. Поэтому я и ищу везде где могу как это сделать. Вы, наверное, правы что это скриптовая комбинация, но секрет ее я так и не понял. Поэтому и прошу помочь. Изменено 5 февраля, 2021 пользователем Herbert d'Godzor
Azazellz Опубликовано 5 февраля, 2021 Опубликовано 5 февраля, 2021 05.02.2021 12:59:22, Herbert d'Godzor сказал(-а): Я разобрал. Поэтому я и прошу помощи. Там по сути три заклинания. Одно из них - скрипт. Там страж призывается на руну. И это скрипт. Поэтому я и ищу везде где могу как это сделать. Вы, наверное, правы что это скриптовая комбинация, но секрет ее я так и не понял. Поэтому и прошу помочь. Ну скорее всего тут такая бодяга - если у игрока есть камень, страж призывается как обычно. Если камня нет - то кастуется другая версия спелла, которая ставит невидимый маркер, и это маркер уже призывает на себя враждебного стража. А может оно оба раза маркер ставит, просто разных стражей призывает. Я так думаю, что эту систему можно переделать, просто в проперти скрипта.изменив существо, которое призывается на маркер. Чтоб проперти ДЛЦшных скриптов смотреть и править, надо исходники скриптов перенести из папки Data\Scripts\Source\ИМЯ_ДЛЦ\ в просто Data\Scripts\Source\ Но, как я уж говорил, я в эту систему не лазил, так что там все может быть и по-другому.
Herbert d'Godzor Опубликовано 5 февраля, 2021 Опубликовано 5 февраля, 2021 Я так думаю, что эту систему можно переделать, просто в проперти скрипта.изменив существо, которое призывается на маркер. Чтоб проперти ДЛЦшных скриптов смотреть и править, надо исходники скриптов перенести из папки Data\Scripts\Source\ИМЯ_ДЛЦ\ в просто Data\Scripts\Source\ Так дело в том, что мод завязан на "Dawngurd" а не на "Dragonborn". И я совсем не разбираюсь в скриптах, так что и понятия не имею как сделать то, что вы мне предлагаете. Я вычленил скрипты связанные с пепельным стражем, но не могу ничего в них понять. Мне стыдно, но что делать... Поэтому я и обратился за помощью.
Кайо Опубликовано 5 февраля, 2021 Опубликовано 5 февраля, 2021 05.02.2021 12:10:53, Azazellz сказал(-а):Вот в таком виде. Ох, спасибо вам за такое участие, что даже сами проверяли, но... Увы... Очень обрадовалась, что всё скомпилировалось в диалоге, очень огорчилась, что в игре оно совсем не работает. Проверяла, пробегаясь по диалогу и проверяя глобальную переменную через консоль - у неё остаётся стартовое значение (я не ставила галочки у Constant, честное чайничное). Сделала ещё один скрипт в квесте, скопировав тот текст для создания функции (только название поменяла), всё скомпилировалось, но, когда ввожу в диалоговом окне PlusLevel(100), прога торжественно сообщает, что функция не существует... Даже перезапускала дважды, мало ли. На всякий случай сменила стартовое значение переменной на -2, ибо не знала, не может ли оно ноль за булевый тип принимать. Тоже бес толку.
Azazellz Опубликовано 5 февраля, 2021 Опубликовано 5 февраля, 2021 05.02.2021 15:15:01, Кайо сказал(-а): Очень обрадовалась, что всё скомпилировалось в диалоге, очень огорчилась, что в игре оно совсем не работает. Глобальная переменная то так же называется, как в скрипте? 05.02.2021 15:15:01, Кайо сказал(-а): но, когда ввожу в диалоговом окне PlusLevel(100), прога торжественно сообщает, что функция не существует Вызов внешней функции, не из текущего скрипта, происходит несколько иначе. 05.02.2021 14:19:25, Herbert d'Godzor сказал(-а): Так дело в том, что мод завязан на "Dawngurd" а не на "Dragonborn". И я совсем не разбираюсь в скриптах, так что и понятия не имею как сделать то, что вы мне предлагаете. Я вычленил скрипты связанные с пепельным стражем, но не могу ничего в них понять. Мне стыдно, но что делать... Поэтому я и обратился за помощью. Ну тогда тебе сюда. Но лучше начать с самого начала. Если у тебя нет знания основ - советы тебе ничем не помогут.
Herbert d'Godzor Опубликовано 5 февраля, 2021 Опубликовано 5 февраля, 2021 05.02.2021 15:50:45, Azazellz сказал(-а): Ну тогда тебе сюда. Но лучше начать с самого начала. Если у тебя нет знания основ - советы тебе ничем не помогут. Спасибо. А на русском нет?
Azazellz Опубликовано 5 февраля, 2021 Опубликовано 5 февраля, 2021 05.02.2021 16:08:48, Herbert d'Godzor сказал(-а): Спасибо. А на русском нет? Не видел.
Кайо Опубликовано 5 февраля, 2021 Опубликовано 5 февраля, 2021 05.02.2021 15:50:45, Azazellz сказал(-а):Глобальная переменная то так же называется, как в скрипте? Да, глобальная переменная BLlevel, она равна -2 сейчас. Код в точности скопирован, только название локальной переменной усложнила, хотя, если она локальная, то можно также спокойно использовать n? Или то таки для примера? GlobalVariable BLlevel int BLlevar = BLlevel.GetValueInt() BLlevel.SetValueInt(BLlevar + 100) Более простой вариант тоже не ругается, но и тоже не работает GlobalVariable BLlevel BLlevel.SetValueInt(1) С вызовом функции явно косячу ещё сильнее, чем можно закосячить с этим, компилятор ругается почти на всё, а она, полагаю, тоже не сработает, если не пашет этот вариант?
Azazellz Опубликовано 6 февраля, 2021 Опубликовано 6 февраля, 2021 05.02.2021 18:05:50, Кайо сказал(-а):а она, полагаю, тоже не сработает, если не пашет этот вариант? Да вот хз. Возможно, что глобалы нельзя "на лету" назначать. Только с проперти. Но тут я не уверен. В скрипте квеста у тебя оно у тебя в любом случае как проперти должно быть прописано, и функция тоже там лежит, и оттуда работает. Попробуй дебаг-уведомлений в скрипт добавить. Чтоб они при вызове тебе выводили сверху эту глобалку, опредилилось ли туда что-то, или нет. Ну и еще, есть команда Mod. Работает проще, чем связка Get\Set.
IgorLutiy Опубликовано 6 февраля, 2021 Опубликовано 6 февраля, 2021 05.02.2021 16:08:48, Herbert d'Godzor сказал(-а):Спасибо. А на русском нет? Первые три части из четырех на русском есть: Папирус. Туториал 1. Привет, мир! Папирус. Туториал 2. Переменные и условия Папирус. Туториал 3. Введение в свойства и функции Мир друзьям - смерть врагам! Мой новый сайт-блог: https://igorlutiy.pp.ua - как некое подведение итогов моей жизни в интернете Мой профиль на Самиздате: http://samlib.ru/l/ljutyj_i/
Кайо Опубликовано 6 февраля, 2021 Опубликовано 6 февраля, 2021 06.02.2021 02:09:43, Azazellz сказал(-а): Да вот хз. Возможно, что глобалы нельзя "на лету" назначать. Только с проперти. Но тут я не уверен. В скрипте квеста у тебя оно у тебя в любом случае как проперти должно быть прописано, и функция тоже там лежит, и оттуда работает. Попробуй дебаг-уведомлений в скрипт добавить. Чтоб они при вызове тебе выводили сверху эту глобалку, опредилилось ли туда что-то, или нет. Ну и еще, есть команда Mod. Работает проще, чем связка Get\Set. Увы, похоже, гиблое это дело. Что компилируется, то не работает, на что есть надежда, что заработает как-то иначе - не компилируется. Mod компилируется в том числе в строке диалоговых скриптов, но тоже не работает. Кайо пробовала переименовывать, править скрипт вручную, уже скомпилированный (почему-то не добавляет проперти, кстати, пишет, уже есть такая, хотя прям как проперти - объявления в скрипте нет, и в списке свойств тоже отсутствует), пробовала добавлять свойство в список через интерфейс (черти-что, выбираю тип глобальной переменной - все равно запрашивает конкретное значение, я не понимаю, оно же из глобальных должно брать?). Пробовала всовывать в функцию прямо в этом скрипте (из другого так и не поняла, как вызывать) и сразу следом её вызвать, тоже говорит, что не существует, пробовала тот же финт повторить не в скрипте, а в диаложном окошке для фрагмента - делает вид, что не видит endFunction, напишите, говорит, а оно вот оно, написано. Такая уже каша в голове, не могу полностью вспомнить, что уже пробовала и в каких именно окнах... Дебаг-уведомления и прочее я в скрипт вообще не представляю как добавить, тупо проверяю значение переменной в консоли, и всё. Наверное, придется отказаться от всей этой затеи. Мой уровень в скриптинге откровенно нулевой, а попытки в этом разобраться терпят фиаско. Признаться, я вообще взялась за эту штуку лишь потому что наивно полагала, что конкретно этот механизм должен быть максимально прост, это же, мол, просто переменная. Ага... как же... XD Спасибо вам за участие, мне неловко лишь, что вы зря на меня тратили время...
Herbert d'Godzor Опубликовано 8 февраля, 2021 Опубликовано 8 февраля, 2021 (изменено) Спасибо, но когда я скачиваю, антивирус ругается. Впрочем я разобрался и без этого. Но у меня теперь новый вопрос: как правильно поставить функцию SetAlpha, чтобы NPC медленно исчезал? А то в руководстве непонятно и как я не пробовал, скрипт не компилируется. Пишут: SetAlpha is not a function or does not exist . Очень прошу ответить. Изменено 8 февраля, 2021 пользователем Herbert d'Godzor
Azazellz Опубликовано 9 февраля, 2021 Опубликовано 9 февраля, 2021 08.02.2021 17:59:08, Herbert d'Godzor сказал(-а):Очень прошу ответить. https://www.creationkit.com/index.php?title=SetAlpha_-_Actor В синтаксисе где-то ошибаешься, скорее всего. Пример правильно написания с сылки выше: Ghost.SetAlpha(0.9, true)
Herbert d'Godzor Опубликовано 9 февраля, 2021 Опубликовано 9 февраля, 2021 (изменено) 09.02.2021 04:09:44, Azazellz сказал(-а): https://www.creationkit.com/index.php?title=SetAlpha_-_Actor В синтаксисе где-то ошибаешься, скорее всего. Пример правильно написания с сылки выше: Ghost.SetAlpha(0.9, true) ХЗ, СК все равно выдает: SetAlpha is not a function or does not exist Хотя я скопировал прямо отсюда. Изменено 9 февраля, 2021 пользователем Herbert d'Godzor
Azazellz Опубликовано 9 февраля, 2021 Опубликовано 9 февраля, 2021 09.02.2021 09:36:48, Herbert d'Godzor сказал(-а):Хотя я скопировал прямо отсюда. "Просто скопировать" - мало. Нужно еще понимать, как она применяется. Вот скажет этот Ghost из примера выше - он у тебя где-нибудь определен?
Herbert d'Godzor Опубликовано 9 февраля, 2021 Опубликовано 9 февраля, 2021 (изменено) 09.02.2021 11:47:31, Azazellz сказал(-а): "Просто скопировать" - мало. Нужно еще понимать, как она применяется. Вот скажет этот Ghost из примера выше - он у тебя где-нибудь определен? У меня вот так: self.SetAlpha(0.1) Я делаю призрака который после смерти должен исчезать постепенно, а не мгновенно. В общем, это долгая история. Изменено 9 февраля, 2021 пользователем Herbert d'Godzor
Azazellz Опубликовано 9 февраля, 2021 Опубликовано 9 февраля, 2021 09.02.2021 11:53:30, Herbert d'Godzor сказал(-а):У меня вот так: Если на маг.эффекте это висит - попробуй с ивента взять akTarget вместо self. Ну или указать, что self тут - actor, а не что-то еще. Ибо вроде как оно только на actor работает, на просто референсы не прокатит.
Herbert d'Godzor Опубликовано 9 февраля, 2021 Опубликовано 9 февраля, 2021 Я тут поспрашивал на другом форуме и выяснилось, что SetAlpha это вообще скрипт из SKSE. А мне бы очень не хотелось бы использовать его в своем моде. Я сделал призываемое без привязки к игроку существо которое не следует за ним, а охраняет территорию призыва. Даже удалось сделать чтобы оно исчезало после смерти. Но оно исчезает очень некрасиво - просто падает и труп мгновенно исчезает. А все "классические" призванные существа исчезают хоть и быстро, но постепенно. Вот я и хочу узнать - можно ли сделать это без SKSE? Ведь в оригинальной игре и Dragonborn это как-то сделали.
IgorLutiy Опубликовано 9 февраля, 2021 Опубликовано 9 февраля, 2021 08.02.2021 17:59:08, Herbert d'Godzor сказал(-а):Спасибо, но когда я скачиваю, антивирус ругается. Выкиньте антивирус. Без шуток. Там архив с текстовым файлом 09.02.2021 16:35:00, Herbert d'Godzor сказал(-а):Я тут поспрашивал на другом форуме и выяснилось, что SetAlpha это вообще скрипт из SKSE Вас обманули. Из SKSE другая функция с аналогичным названием SetAlpha - ColorComponent Мир друзьям - смерть врагам! Мой новый сайт-блог: https://igorlutiy.pp.ua - как некое подведение итогов моей жизни в интернете Мой профиль на Самиздате: http://samlib.ru/l/ljutyj_i/
Azazellz Опубликовано 9 февраля, 2021 Опубликовано 9 февраля, 2021 09.02.2021 16:35:00, Herbert d'Godzor сказал(-а):Вот я и хочу узнать - можно ли сделать это без SKSE? Ведь в оригинальной игре и Dragonborn это как-то сделали. Ну вообще, если ты видишь, что это сделано в ванильной игре - так разберись, как оно сделано, и просто скопируй этот метод. Зачем изобретать велосипед? Я так думаю, там к этим существам прикреплен скрипт, который срабатывает в момент смерти существа, и работать он будет на чем угодно. И да, как выше заметили - функция ванильная. Используется в скриптах призраков, в маг. эффектах зелья призрачного вида, где-то еще... В СКСЕ другая.
Herbert d'Godzor Опубликовано 10 февраля, 2021 Опубликовано 10 февраля, 2021 09.02.2021 21:35:06, Azazellz сказал(-а): Ну вообще, если ты видишь, что это сделано в ванильной игре - так разберись, как оно сделано, и просто скопируй этот метод. Зачем изобретать велосипед? Я так думаю, там к этим существам прикреплен скрипт, который срабатывает в момент смерти существа, и работать он будет на чем угодно. И да, как выше заметили - функция ванильная. Используется в скриптах призраков, в маг. эффектах зелья призрачного вида, где-то еще... В СКСЕ другая. Как я уже говорил - когда я ставлю SetAlpha, скрипт не компилируется.
Azazellz Опубликовано 10 февраля, 2021 Опубликовано 10 февраля, 2021 10.02.2021 08:33:26, Herbert d'Godzor сказал(-а): Как я уже говорил - когда я ставлю SetAlpha, скрипт не компилируется. Значит, что-то не так ставишь. Скрипт целиком давай.
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти