• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Я как-то видел мод на притупление улучшенного оружия до состояния неулучшенного при использовании. Работал мод через СКСЕ. Интересно, а без СКСЕ нельзя устроить так, чтобы при экипировке оружия назначать глобальную переменную, зависящую от степени улучшения оружия, а потом уменьшать ее после каждого удара на 1, и по достижении какого-либо значения, соответствующего меньшей степени улучшения, соответственно менять ее у оружия - например, было легендарное, потом стало эпическое и т.д. до неулучшенного?
valambar, только это не должна быть глобальная переменная. Достаточно локальной переменной использования оружия в скрипте, который висит на этом оружии. Ответ на вопрос, можно ли это сделать без SKSE заключается в том, какие именно функции использованы в скрипте. Т.е. сначала надо написать скрипт, а потом посмотреть, если там использованы функции SKSE, то потребовать его подключения.
erlick, глубоко не вникал, но может пригодится: если у персонажа удалить ВСЁ, то он автоматически восстановит себе то, что было в его Оутфите.
Lexo, хороших - нету. Только та же идея, что и тебе пришла, - с невидимой стеной. Это точно можно сделать. В перках есть возможность установить заклинание, которое будет каститься при взмахе оружием, с условиями. А само заклинание может перемещать и устанавливать перед игроком стену. Там понадобится несложная формула с синусами и косинусами. Вот только не на 100% уверен, что получится настроить коллизию так, чтоб стрелы и магия отбивались, а NPC проходили спокойно. Должно быть можно... Ну еще есть очень простой и тупой вариант без скриптов: добавить игроку перк, который будет понижать до нуля входящий урон от стрел и магии пока тот размахивает оружием. Только перку будет пофигу, летят ли стрелы тебе в лицо или в тыл.
valambar, вряд ли получится. Я в скриптах без SKSE не припоминаю никаких функций, которыми можно было бы получить или изменить степень улучшения предмета. Так что именно такой вариант, скорее всего, отпадает. Одной переменной тоже не отделаться - надо же сохранять уровень износа для каждого оружия, не зависимо от того, как часто игрок их меняет. Кроме того, там еще проблема в том, как получить Reference Id экипированного оружия, а не id базового объекта. В общем, фигово дело. Ну если придумать способ получения ид референса, то можно что-то такое (да, воще не круто): создать три FormList: оружие немного повреждено, оружие значительно повреждено, оружие критически повреждено. При каждом ударе оружие имеет шанс, скажем, 4% продвинуться в следующий лист. Ну а игроку добавить перк, который будет немножко понижать урон, если оружие в списке слабо поврежденных итп. Но это хрень... Как поразростаются эти списки до 100 орудий - будет хрень.
Добавлено (27 Марта 2016, 10:06) --------------------------------------------- Я себе похожим способом делал мод на магию. Мод позволял увеличить любому заклинанию силу в два или четыре раза, но затраты маны возрастают в 3 или 9 раз. И с длительностью эффекта так же. Вот там использовал 4 форм листа: два на силу и два на длительность.
Ну и вообще у меня магия другая. У игрока и NPC заклинания расходуют намного меньше маны, но регена почти никакого. В подземельях - вообще никакого, а в городах надо часов 8 спать, чтоб восстановиться. И у NPС так же. Против магов молнии офигенно эффективны. Ну да, кому это интетесно...
Изменение репутации для пользователя Lexo
LexoOffline
Сообщение №2044
написано: 27 марта 2016, 17:15
| Отредактировано: Lexo - 28 марта 2016, 20:29
Народ, ещё один вопрос, если позволите... Можно ли скриптом добавить кейворд предмету? И убрать его, соответственно... вроде бы недавно только видел где-то это, а теперь, когда понадобилось, найти не могу... может, показалось? Подскажите, пожалуйста...
Да, и раз уж я так разборзел, может, подскажете ещё вот какую вещь: возможно ли добавлять АИ-пакеты игроку?
Как выключать управление - я нашёл. Кастую заклинание - ГГ стоит, ничего не может делать. И всё... а как заставить его атаковать автоматически - не пойму... Суть задумки в том, что хочу сделать способность Берсерк такой, какой её знает история - безумной. Воины-берсерки, впадая в исступление, обычно забывают всё, кроме того, что они должны убивать. Вот я и хотел сделать, что бы во время берсерка отключалось управление, и ГГ бежал убивать всех, кого встретит. На время, разумеется. Через минуту эффект должен проходить.
Всем привет! Давно здесь не был...в общем мне нужно добавить команду на кнопку в мсм меню, чтобы мод перерегистрировался в мсм(без его отключения):
elseIf option == UpdateMod_T
self.SetToggleOptionValue(UpdateMod_T, true)
Debug.MessageBox("Выйдите из меню")
endIf
Кнопка сделана и выбирается, сообщение есть , осталось написать правильную команду))) Большая просьба не отсылать читать описания команд для папируса (у меня они есть, но чет не соображу как их правильно написать) Буду весьма признателен... Мод должен перерегистрироваться, и подхватить все изменения, что я в нем делаю
Holtof55, я не совсем понял, что тебе нужно сделать в МСМ. Но на всякий случай:
1) Если тебе нужно обновить мод до новой версии - ссылка (см. Script Versioning). 2) Вместо событий и функций версии 1 (см. SKI_ConfigBase.psc) я бы рекомендовал пользоваться версией 2. 3) В МСМ для отображения окна с сообщением используется ShowMessage().
Изменение репутации для пользователя Holtof55
Holtof55Offline
Сообщение №2047
написано: 30 марта 2016, 17:48
| Отредактировано: Holtof55 - 30 марта 2016, 17:49
Holtof55, я не совсем понял, что тебе нужно сделать в МСМ. Но на всякий случай:1) Если тебе нужно обновить мод до новой версии - ссылка (см. Script Versioning). 2) Вместо событий и функций версии 1 (см. SKI_ConfigBase.psc) я бы рекомендовал пользоваться версией 2. 3) В МСМ для отображения окна с сообщением используется ShowMessage().
Ничего я там не понял(по ссылкам) . Это
Код
- function OnOptionSelect(Int option)
If option == UpdateMod_T
self.SetToggleOptionValue(UpdateMod_T, true)
Debug.MessageBox("Выйдите из меню")
endIf endFunction
кусок скрипта (нажимается кнопка в меню, там еще до фига разных опций выбирается) в который надо вставить команду на перерегистрацию мода в SkyUI. Ну, по типу новой установки..Чтоб не переподключать мод, а получать все изменения которые я в него вношу...Пока я только вставил нажатие кнопки(не знаю правильно ли, и сообщение)
Может, моё сообщение не заметно... но, народ, я до сих пор не могу найти, как добавить\убрать кейворд на предмет скриптом... не подскажете, если такое есть, как это сделать?
Holtof55, если новая версия мода не содержит измененных Property (или внутренних переменных) скриптов, то при замене ЕSP взаимодействия с МСМ не требуется. Если подобные вещи есть, все-таки советую внимательно изучить вышеуказанный материал (вообще все разделы), возможно, с переводчиком. В шапке темы есть базовая информация о скриптах. Здесь есть все что душе угодно, если пользоваться поиском. Здесь есть переведенная инфа об основах МСМ. Если после изучения этих материалов останутся вопросы, в этой теме на них наверняка ответят.
Сейчас же я лишь могу объяснить, как работает обновление:
int function GetVersion() ; Функция, сообщающая текущую версию скрипта МСМ. С каждой новой версией число нужно увеличивать. return 1 endFunction
; Событие, происходящее, когда МСМ обнаруживает, что текущая версия выше, чем та, которая хранится в сохранении (в памяти этого скрипта). Event OnVersionUpdate(Int iVersion) ;Обнаружена новая версия. Делаем, что хотим для обновления. ENDEVENT
; МСМ проверяет текущую версию каждого зарегистрированного мода после загрузки сохранения игры (я так думаю). Проверить ее можно и вручную, вызвав в МСМ-скрипте CheckVersion(). ; Как видно из этого, никакого участия пользователя в обновлении мода не требуется, все происходит автоматически.
Lexo, скриптом добавить базовой форме ключевое слово нельзя. Однако, его можно добавить в Reference Alias и заполнить скриптом (ForceRefTo()) конкретным Object Reference. В этом случае ключевое слово будет ассоциировано с этой копией формы (но, опять-таки, не с базовой).
Multigone, жаль... но и на этом спасибо. А можно, тогда, узнать, как работает ключевое слово "Disallow Enchanting"? Хочу, что бы при получении перка, можно было снимать зачарования с артефактов... Или это где-то в движке зарыто?
Lexo, в движке. Если формы заранее известны, можно создать их копии. В один форм-лист поместить артефакты, в другой - копии. При активации станка проверяется, есть ли перк и артефакты у игрока, и добавить нужные копии в инвентарь. Удаление из инвентаря копии означает, что игрок снял с нее зачарование. Удаляется такой же артефакт. После выхода с фурнитуры добавленное удаляется. Но это в теории.
А, забыл сказать, что копии артефактов должны быть без MagicDisallowEnchanting.
PPS: Чтобы просто удалить (или установить новое) зачарование у базовой формы оружия / брони, есть SKSE-функция SetEnchantment():
Код
MyWeaponBase.SetEnchantment(none)
Изменение репутации для пользователя Lexo
LexoOffline
Сообщение №2053
написано: 31 марта 2016, 16:14
| Отредактировано: Lexo - 31 марта 2016, 16:28
Ааа, понятно... Фигово... Ну максимум, что я придумал - это в Default Objects полностью отключить этот кейворд. А потом дать игроку перк, который устанавливает "Mod Soul Gem Enchanting" в ноль, если зачарование не находится в списке обычных и у игрока нету твоего адского перка. Тогда зачарование с артефактов снималось бы сразу и всегда, но использовать его потом можно было бы только имея твой перк. Ну и не круто, что пришлось бы создавать форм лист "обычных" зачарований. Ничего лучше что-то не приходит в голову. Ну еще вариант с SKSE и плагином к нему есть, если ОЧЕНЬ надо.
Хм... а можно попробовать создать форм лист, туда внести все эти артефакты и как-то пошаманить, что бы пентаграмма вообще не видела эти предметы, если отсутствует перк. Надеюсь, хотя бы один из предложенных вариантов сработает...
Цитата Dsion
SKSE и плагином к нему есть, если ОЧЕНЬ надо
Да я, пока что и в обычных скриптах плохо разбираюсь, так что, до СКСЕ, боюсь, надо ещё поднаучиться, иначе вообще запутаюсь, огорчусь и убегу в пичали в лес, подальше от скриптов
Ну если сможешь как-то пошаманить, чтоб пентаграмма их не видела, то это, конечно, будет лучше... Но если не выйдет, то отключить возможность _накладывать_ зачарование без перка точно можно.
Ни как не могу прояснить для себя ситуацию с сообщениями из скриптов (Notification). При совмещении с текстом из игры например +Getname()+ выводятся кракозябры. Единственный выход что нашел - выводить тест в проперти и заполнять из СК, но это жуть как не удобно. Нет ли способа выводить текст замещением через $ в файл translation как в МСМ скриптах? Ну или еще какой способ есть с этим головняком бороться?
Кстати, а можно скриптом сделать так, что бы часть урона передавалась другому существу? Например, призванному атронаху... если будет 1 атронах, то передаётся 10%, а если 3 - то 30. Это вообще возможно?
Кстати, а можно скриптом сделать так, что бы часть урона передавалась другому существу? Например, призванному атронаху... если будет 1 атронах, то передаётся 10%, а если 3 - то 30. Это вообще возможно?
Можно сделать абилити для игрока - высасывание жизни из призванных существ, с условием, что оно срабатывает при снижении здоровья игрока. Похоже, это можно сделать вообще без скриптов - только указать условия в использовании самого магического эффекта - снижение здоровья игрока, и для цели - что это призванное существо.
Изменение репутации для пользователя Lexo
LexoOffline
Сообщение №2061
написано: 9 апреля 2016, 16:47
| Отредактировано: Lexo - 9 апреля 2016, 16:48
Вряд ли без скрипта получится сделать так, что бы возвращался конкретный процент от полученного урона. К тому же, как сделать так, что бы это действовало на призванных существ? Я как-то раз пробовал сделать заклинание-плащ, которое вешается на врага и наносит урон всем вокруг... так вот, оно наносило урон только игроку (т.к. все остальные считались союзниками для этого врага, и им ни в какую не хотел причинять вреда)...
Но не смотря на всё это, мысль очень интересная...
Интересная-то интересная, но хрен определишь, сколько урона получил игрок. Есть ивент OnHit, но он годится только для отслеживания факта получения урона, а не его количества...
Я как-то раз пробовал сделать заклинание-плащ, которое вешается на врага и наносит урон всем вокруг... так вот, оно наносило урон только игроку (т.к. все остальные считались союзниками для этого врага
В маг. эффекте нужно указать флаг Detrimental и снять флаг Hostile.
Можно измерить разницу здоровья до и после получения, и вернуть рассчитанные %
похоже, придётся временно отложить эту идею... пока что это слишком сложно для меня... надеюсь, после углубления в скрипты, получится сделать нечто подобное... если TES6 раньше не выйдет :)
Столкнулся с проблемой следующего характера: происходит вылет из игры при смене одежды PresetB02.SetOutfit( kOutfit02) PresetB02.RemoveAllItems() Самое интересное - вылет происходит, когда игра идет с архивом bsa. Если файлы игры не скручивать, то вылет не наблюдается. Не подскажите решение проблемы?
Столкнулся с проблемой следующего характера: происходит вылет из игры при смене одеждыPresetB02.SetOutfit( kOutfit02) PresetB02.RemoveAllItems() Самое интересное - вылет происходит, когда игра идет с архивом bsa. Если файлы игры не скручивать, то вылет не наблюдается. Не подскажите решение проблемы?
Интересная-то интересная, но хрен определишь, сколько урона получил игрок
А вроде есть функция проверки - GetAV Health - в Обливионе она отлично работала, а здесь только вот синтаксис у нее как и у всего папируса дурацкий, но работать-то она работает. Назначить переменную, которая отражала бы разность здоровья до и после удара - вот вам и проверка урона.
Эгэ. А как ты заставишь какую-либо функцию вызываться "до" удара? И кому нужен будет результат, если между вызовами функций "до" и "после" игрок будет лечиться или регенерировать хп? И как учесть то, что урон по ХП уже был уменьшен броней или магической защитой... Идея-то логичная, в принципе, но не так всё просто.