Mengur, мм, понятно. Возможно, стоит посмотреть возможности перков. Можно игроку добавить один перк, который будет повышать весь исходящий урон в, скажем, 4 раза, и весь входящий тоже в 4 раза. Но это не совсем то потому что действовать будет только когда сражаются игрок против НИП. А если друг друга нагибают два НИП, то эффекта не будет.
Добавлено (24 Апреля 2017, 10:29) --------------------------------------------- Я когда-то делал отдельную игровую расу, которая получала в 4 раза больше урона от почти любых источников, но могла переходить в состояние "фокуса", когда сам игрок движется с нормальной скоростью, а весь остальной мир - замедляется в 2 или 4 раза. Весело было от града стрел уклоняться как в "Матрице"
Добавлено (24 Апреля 2017, 10:31) --------------------------------------------- И еще надо Game Settings посмотреть. Там много переменных, которые напрямую участвуют в формулах расчета всякой фигни, включая урон. Есть шанс процентов 60%, что там есть что-то, чем можно поднять урон абсолютно всем акторам.
С Game Settings точно стоит поразбираться. Вот я выбрал наугад три настройки и увеличил их в 5 раз: fDamageStrengthMult, fCombatDamageScale, fDamageWeaponMult. И что-то из этого реально изменило урон и мой, и НИП, который в меня стрелял.
Уникальные требования... Да можно-то можно, но не уверен, что можно ограничиться одними только скриптами. Вот дать призракам перк, который будет понижать в ноль весь урон от не-железа - это легко. Дать игроку перк, который будет понижать урон по призракам - тоже легко. А вот как это скриптами сделать я даже и не знаю...
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №1083
| Тема: Вопросы по скриптам Papyrus
написано: 24 апреля 2017, 14:21
| Отредактировано: Dsion - 24 апреля 2017, 14:24
Ага... Ну раз хорошо, то ладно... По настройкам я много информации не видел. https://www.creationkit.com/index.php?title=Category:Settings Вот тут кое-что, но комментировано очень мало из них. Легче методом тыка. Ввести фильтр "Damage" и пытаться догадаться, что они делают. Но одна из тех трех точно работала!
Фигово, что нельзя всем НИП перк выдать. Там же всякое можно... Можно было бы сделать и шанс блокирования и шанс и что-угодно еще.
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №1084
| Тема: Вопросы по скриптам Papyrus
написано: 26 апреля 2017, 05:42
| Отредактировано: Dsion - 26 апреля 2017, 05:42
Добавлено (26 Апреля 2017, 08:42) --------------------------------------------- Может, действительно просто дать перк игроку? На битвы НИП против НИП это влиять не будет, но это же не так плохо. А то страшно представить, что может пара вампиров в городе сделать, если ты им еще и урон в 4 раза поднимешь
Ну да, я тоже когда-то размышлял над альтернативами концепии "HP". Не очень реалистично, когда в кого-то всаживают 20 стрел и ему пофиг, а потом еще одна стрела и он сразу сдыхает... В Neverwinter Nights (и D&D вообще) хоть и тоже есть HP, но там иначе работает броня. Броня не уменьшает получаемый урон, а увеличивает шанс избежать урона вообще. Точно так же как ловкость. Можно было бы эту механику и в скайрим перенести. Больше бронищи - больше шанс избежать урона вообще. Но если уж урон получаешь, то он АДСКИЙ. В добавок к этом можно было бы добавить какой-то штраф при низком значении HP. При, типа, ранении. Чем меньше ХП, тем медленее и слабее игрок.
Но совсем от HP я бы не отказывался, чтоб слабые крыски не ваншотили и чтоб не потеряли актуальность заклинания лечения.
Добавлено (26 Апреля 2017, 10:10) --------------------------------------------- Кстати, можно еще рассмотреть вариант не увеличения урона, а уменьшения ХП... Эффект-то похожий?
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №1086
| Тема: Вопросы по скриптам Papyrus
написано: 26 апреля 2017, 07:47
| Отредактировано: Dsion - 26 апреля 2017, 07:50
Mengur, сам понимаешь, что отнимать от предыдущего значения текущее - это сомнительное решение. NPC могут лечиться или регенерировать или получать урон из других источников (падение с высоты итп). Я бы сначала трижды перепроверил, что желаемое нельзя сделать через game settings. Это безопасно и никаких конфликтов с другими модами.
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №1087
| Тема: Вопросы по скриптам Papyrus
написано: 27 апреля 2017, 06:37
| Отредактировано: Dsion - 27 апреля 2017, 06:39
На твоем месте, я бы все-таки попробовал. Всё тебе правильно подсказали. Моментально и с эффектом - EquipItem. А если долго и для красоты - то через пакет.
Mengur, нечего модифицировать ванильные записи без нужды... Создаешь квест, Start Game Enabled, создаешь в нем алиас на игрока. И уже на алиас вешаешь скрипт или заклинания. И работать будет, и совместимость 100%.
А по поводу сохранений, так есть трюк. Запускаешь игру, прямо в главном меню открываешь консоль и вбиваешь что-то типа
Код
coc whiterunbanneredmare
или другое место на твой вкус. Это мгновенно начинает новую игру и телепортирует игрока в указанное место. Если работаешь над модом со скриптами, его желательно каждый раз тестировать на новой игре или на сохранении, в котором мод еще не был подключен. Иначе могут, например, не поменяться property на скриптах.
Или сделать, чтоб условия на рецептах перестали выполняться. Может, поменять Keyword на Небесной Кузне или что-то такое... У меня сейчас нету CK, чтоб проверить.
Нету нормального способа... Можно в твоем квесте выполнять проверку каждые несколько секунд. Или подцепиться к какому-то событию типа "игрок перешел в другую локацию" и в нем выполнять проверку. Но это всё кривые способы... А нормального и нету-то...
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №1092
| Тема: Вопросы по скриптам Papyrus
написано: 23 июня 2017, 13:48
| Отредактировано: Dsion - 23 июня 2017, 13:49
m4mk203, да, вроде, нормально всё... Если OnClose срабатывает при закрытии... Должно работать. Не работает разве?
Если даже OnClose не срабатывает, то можно каст бяки повесить прямо на OnItemRemoved после Utility.Wait(0.1) - тогда она скастуется сразу после закрытия игроком меню сундука.
Если сундук должен быть многоразовым, можно добавить сбос переменной в OnActivate.
m4mk203, а коготь твой собственный или ты для всех когтей такое хочешь сделать? Да вариантов дофига...
Если твой собственный, то есть же событие OnContainerChanged - можно повесить скрипт на коготь и этот ивент будет срабатывать при смене контейнера. Можно проверить, является ли "контейнер" игроком.
Если не твой и делаешь для всех когтей, можно создать квест, в квесте алиас игрока, а на алиасе игрок будет вызываться OnItemAdded и OnItemRemoved, с которыми ты уже знаком. Там уж можно проверить, находится ли взятый предмет в сприске когтей от неоткрытых дверей.
Ну и если это часть квеста, можно еще на алиас игрока повесить вредящую ability (пассивный эффект), с условием "коготь в инвентаре, дверь не открыта".
Фигово. да? Лично я не люблю, когда много вариантов Сложно выбрать. Когда вариант только один, как-то легче.
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №1094
| Тема: Вопросы по скриптам Papyrus
написано: 24 июня 2017, 22:56
| Отредактировано: Dsion - 24 июня 2017, 22:57
m4mk203, по поводу спавна нежити - так скрипты там, вроде, вообще не при чем. Думаю надо смотреть, LeveledCharacter. Это списки, в которые добавляются обычные НИП (акторы) и для каждого задается уровень игрока. У тебя, наверное, получится только два актора в списке: один со статическим 50 уровнем, а второй с уровнем игрока +5. Да, точно можно сделать и даже не сложно.
У меня мой самый главный мод, без которого я вообще не играю, немного похожее делает. Он вообще отменяет концепцию "уровня игрока" и зависимость мира от уровня игрока. У игрока уровня нету, есть только уровень навыков. А в мире с самого начала лазят монстры от 1 до 100 уровня. И есть шанс найти самые лучшие вещи прямо сразу (хотя, в основном, падает хлам). Уф, сколько же с этим модом надо мучиться, чтоб драурги и бандиты-марадеры перестали ваншотить из лука. Первые дни игры можно только травку собирать и отбившихся от стаи волков выискивать, чтоб деньги заработать.
За сундук - так это легко. Когда вещи попадают, выполняешь RegisterForSingleUpdateGameTime - это заставит через указанное время (игровое) вызваться ивент OnUpdate(). А в ивенте OnUpdate() делаешь RemoveAllItems().
Скорее всего, придется тебе дофига leveled-списков редактировать: и LeveledCharacter, и LeveledItem. Посмотри их хоть, попробуй разобраться, как они работают.
Я не поклонник перезаписи ванильных объектов в т.ч. списков, но в данном случае это оправданно.
Ну или еще, если есть в тебе олдскульный программистский дух, можешь почесать репу над вариантами, не требующими перезаписи ванильных объектов. Вот для примера (я не предлагаю что-то подобное делать, а просто для примера): Есть задача: усилить всю нежить во всех подземельях. Вариант 1: Редактируем дофига leveled-списков и Actor'ов. Мод становится тяжелым и не (полностью) совместимым с любым другим модом, затрагивающим хоть один из этих же списков. Вариант 2: Создаем всего один перк и даем его игроку. А в перке прописываем увеличить весь входящий урон по игроку в нордских руинах в 4 раза, а весь исходящий (по монстрам) - уменьшить в 4 раза. Весь - это чтоб и ловушки стали опаснее. Но можно увеличить урон только от нежити. В том же духе решаем и проблему с лутом.
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №1096
| Тема: Вопросы по скриптам Papyrus
написано: 25 июня 2017, 14:45
| Отредактировано: Dsion - 25 июня 2017, 14:47
m4mk203, да редактируй списки - не так это и страшно. Никаких сложностей это не вызовет, если не подключать другой мод, который их тоже редактирует... Или если их не отредактируют разработчики в каком-то новом патче... Просто хотел сказать, что есть и другие пути. Например, можно добавить ловушку на все босс-сундуки, не редактируя при этом сами сундуки (ни референсы, ни базовый объект) и сохранив полную совместимость с чем-угодно. То же самое с любыми дверьми. Даже лут в сундуки можно добавить, не редактируя ванильных объектов.
А, ладно, забей. Это у меня мозги набекрень. Я страшные вещи делал, чтоб избежать кропотливой работы и перезаписи ванильных объектов
m4mk203, можно и без триггера... На алиасе игрока скрипт с ивентом смены локации. И если локация находится в списке запретных для простых смертных, то вешаем на игрока вредящий эффект. Опционально, можно сделать, чтоб эффект вредил только в заданном радиусе от двери. Или даже чтоб усиливался по мере приближения к двери. Лично мою интуицию такой вариант больше радует потому что гарантированно совместим с другими модами.
m4mk203, вопрос, скорее, в том, к чему подцепиться... И как должен отреагировать мод, если его подключили уже после старта игры?
Можно прицепиться к началу отсчета игрового времени. Но в ванильном варианте оно начинается не тогда, когда игрок завершает создание персонажа, а когда его освобождают от наручников в крепости. Это самый простой вариант. В "живи другой жизнью" - вообще без понятия когда начинается.
Можно к расе игрока, к стадии главного квеста, входу в любую конкретную локацию. Или просто к смене локации, но при условии, что игрок уже полностью контролирует персонажа. Или просто проверять каждый игровой час, контролирует ли игрок персонажа. К первому входу в нордские руины итд итп.
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №1099
| Тема: Вопросы по скриптам Papyrus
написано: 26 июня 2017, 18:16
| Отредактировано: Dsion - 26 июня 2017, 18:24
m4mk203, да всё можно. Можно даже в две строчки скрипта заюзать стандартного гонца, который доставит игроку посылку. Ладненько, выбор конкретного решения там, где есть много вариантов, - это не моё. Так что я сливаюсь!
Я сейчас на море без СК, но, по-моему, такой вариант срабатывает через 1/10 часа после начала отсчета игрового времени (освобождение игрока от наручиков). А если мод был подключен не с самого начала игры, то через 1/10 часа после входа игрока в мир со включенным модом.
А вариант с гонцом точно не хочешь? Оглушение и прилетающие из ниоткуда предметы - как-то не лорово.
m4mk203, а я не помню Помню только, что где-то есть квест гонца (что-то там со словом "Courier"). На квесте скрипт, а в скрипте функция, которую достаточно вызвать и всё. Как-то так:
m4mk203, попробуй сначала на стрелу хоть какое-то зачарование повесить. Я на море без СК, но не помню, чтоб такое было возможно. На арбалетных болтах висит Explosion - но это взрыв, а не зачарование. Там хрен получишь референсы тех, кого задел взрыв. А вот с помощью перка на ГГ можно сделать... Там можно к любому попаданию из любого оружия подцепиться или даже ко взмаху этим оружием.
Вот еще глянь: OnDeath другого способа не приходит в голову. вешать можно на базового актора, на конкретный референс или на алиас.
Так на неживые сундуки и магический эффект-то не накладывается. Поймать попадания по сундукам я только два способа знаю: один предполагает повешение скрипта на сам сундук, что плохо, а второй еще хуже и точно тебе не понравится.
А вобще можно определить кого именно (бандюка, солдата, гражданского, драугра, фалмера и т.д.) я убил? И если да, то как именно определяется класс жертвы?
А я почём знаю? Я так не извращался! Да, нужен квест и в квесте событие. А еще запись в SM Event Node. И не забыть снова остановить квест после обработки события.
Кейворды почти у всего есть - да. По ним можно определить, например, является ли НИП нежитью, является ли локация таверной, сделан ли какой-то предмет брони из стали.
Статистика в меню - есть такая. Эти цифры можно считывать из скрипта. Но изменять или устанавливать условия измнения - нельзя. Скайрим, в основном, на С++ написан, а скрипты ограничены в возможностях.
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №1108
| Тема: Вопросы по скриптам Papyrus
написано: 29 июня 2017, 17:30
| Отредактировано: Dsion - 29 июня 2017, 17:32
Ну OnStoryKillActor - это один из способов старта квеста. Квест может быть запущен изначально (Start game enabled), может запускаться из предыдущего квеста в цепочке, может запускаться из скрипта в любом месте. А может еще по ивентам вот такого типа, как OnStoryKillActor - их много. Но если его не остановить, то следующее убийство его и не запустит, ясно дело.
Тебе, наверное, кажется, что это способ ух-какой-кривой-и-вообще-через-задницу, но это еще ничего. CK ощутимо ограничивает фантазию людей и приходится придумывать вот такие штуки. Регулярно перезапускаемый квест - это еще цветочки и даже не вредит совместимости.
Хм... Другие вариаты? Не знаю даже... Ну можно дать пассивную абилити каждой расе, но перезаписывать все расы - бред. Еще можно подождать. Вдруг кто-то другой что-то придумает.
Начни пока реализовывать хоть что-то А то размечтался тут, заданий себе наставил)
Wdsawdsa, ну квест обязательно нужен. Запущенный. В квесте диалог. На диалоге условия, которые будет удовлетворять только управитель и только если кнопка еще не куплена. А в поле End диалога маленький скриптик. Главное в нем:
Код
MySecretButton.Enable()
Создать проперти MySecretButton и заполнить кнопкой. Подробно расписывать каждый шаг - лениво. Так что ты начинай и по ходу дела спрашивай, если что-то не получится.
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №1110
| Тема: Вопросы по скриптам Papyrus
написано: 3 июля 2017, 10:03
| Отредактировано: Dsion - 3 июля 2017, 10:25
m4mk203, а что за OnStoryRemoveFromPlayer? Я такого и не видел. Через обычный OnItemRemoved работало бы точно. А если через старт квеста... Не пробовал переместить проверку предмета из самого скрипта в условие на SM Event Node? Но лучше скрипт с OnItemRemoved на алиас игрока.