• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Dsion, да это понятно дело. У меня вообще ощущение, что в моем скрипте переменная предыдущего урона одна общая на всех, и постоянно меняется. Хотя хз, как это проверить. С настройками будет гораздо лучше вариант=)
Я просто обдумываю будущий фронт работ и изучения=)
nepewka, Точно нет возможности проверить, но может профит будет в пакетах АИ? Неписи же хавают зачастую. Все это игра организует пакетами. А пакет, насколько я помню, можно вызвать скриптом.
Синтаксиса сейчас не припомню, так как на работе, но суть такая была бы:
=== Событие - предмет добавляется в инвентарь цели Цель получает пакет сожрать предмет Конец события ===
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №2436
написано: 27 апреля 2017, 06:37
| Отредактировано: Dsion - 27 апреля 2017, 06:39
На твоем месте, я бы все-таки попробовал. Всё тебе правильно подсказали. Моментально и с эффектом - EquipItem. А если долго и для красоты - то через пакет.
Спасибо. Да я как-то сомневался, как еквипитем может заработать, если а)предмета в инвентаре нет б)в коде не написан слот, куда одевать в)сам по себе скрипт этот хочу впихнуть в магический эффект, чтобы от аое взрыва спелла/энчанта на группу актеров, через команду target можно было всех заставить скушать этот ингредиент/пищу
Изменение репутации для пользователя Mengur
MengurOffline
Сообщение №2438
написано: 27 апреля 2017, 20:39
| Отредактировано: Multigone - 22 апреля 2020, 15:58
Погоди. Неписи под воздействием скрипта кушают необходимый ингредиент, если он есть у них в инвентаре? Или они должны есть его даже если у них этого ингредиента нет?
Если должны есть в любом случае, то перед самим поеданием можно им в инвентарь его добавить. Если же только те, у кого есть, то добавить проверку на наличие предмета в инвентаре, и если она успешна, уже поедать.
Еще вариант (не знаю, насколько он актуален в твоем случае): Если не нужна анимация самого поедания, а важен сам эффект, то можно на магический эффект вместо скрипта поедания повесить скрипт с аналогичным эффектом, действующим при поедании необходимого ингредиента =)
По факту тебе нужно, чтобы при действии определенного заклинания на неписей, те получили эффект от определенного ингредиента. Как ты это делаешь:
1) создаешь заклинание с ударом по области. 2) В магические эффекты вешаешь скрипт поедания ингредиента 3) Непись поедает ингредиент 4) Непись получает эффект, прописанный в ингредиенте.
Я могу ошибаться, но можно во втором пункте сразу выполнить 4-й пункт, сделав все красивее и проще (то есть в магических эффектах заклинания прописать такие-же эффекты, какие действовали бы при поедании ингредиента). Но такой вариант имеет место быть, если нужно реализовать поедание какого-нибудь определенного ингредиента (или нескольких). При динамическом выборе ингредиентов такой скрипт окажется сложнее простого поедания.
Честно, я таким не занимался. Но насколько я знаю движок, это может сработать. Если ошибаюсь, поправьте пожалуйста. =)
Еще вопросы к скриптерам. Кто занимался игровыми настройками. Нашел настройку урона физического оружия. : fDamageWeaponMult
А вот настройку для увеличения урона от магических эффектов так и не обнаружил. Может кто находил?
Также хочу увеличить урон именно от луков. Но тоже не нашел никаких подобных усилителей в настройках. (fDamageWeaponMult увеличивает урон и там, и там. Но быть может есть еще настройки разделения)
Есть мысли, конечно, тупо увеличить урон от самих стрел. Но на крайний случай.
Хотя через тот корявый скрипт, что я запихивал в Actor, ощущается гораздо круче. Пусть там кривое чтение урона, но все равно надо искать варианты внедрения этого скрипта. Буду рыться.
Изменение репутации для пользователя KAS_Programmer
Ребят. Может кто знает, как вообще игра обрабатывает скрипты? (делаю все для skyrim special. возможно из-за этого не работает)
Суть в том, что вообще не могу понять, как и когда скрипты запускаются. Добавил в актера player заклинание для теста. Оно не появилось. Добавил ему скрипт, который должен выводить сообщение после загрузки сохранения. Тоже голяк. Скрипт был вот такой, но ни одно из событий не сработало:
Scriptname _1MgGGMMainStartScript
event OnPlayerLoadGame () Debug.MessageBox("***енно, оно заскриптовалось!") endevent
event OnPlayerBowShot(Weapon akWeapon, Ammo akAmmo, Float afPower, Bool abSunGazing) Debug.Notification("***енно, оно все-же заскриптовалось!") endevent
Вот и думаю, как вообще скайрим обрабатывает скрипты, и нового ли ская это проблема, или же в прошлом тоже было что-то такое. Мод стоит всего один - мой. Но для теста каждый раз начинать новую игру - далеко не вариант. Чистить сохранение от скриптов тоже пробовал, но как-то либо неправильно чистил, либо что еще, но результата ноль. Знаю, что не совсем в тему. Но хочу сперва узнать, проблема ли это новой версии ская. (да и на форуме с новым скаем мне уже больше недели не отвечают на похожий вопрос)
Mengur, нечего модифицировать ванильные записи без нужды... Создаешь квест, Start Game Enabled, создаешь в нем алиас на игрока. И уже на алиас вешаешь скрипт или заклинания. И работать будет, и совместимость 100%.
А по поводу сохранений, так есть трюк. Запускаешь игру, прямо в главном меню открываешь консоль и вбиваешь что-то типа
Код
coc whiterunbanneredmare
или другое место на твой вкус. Это мгновенно начинает новую игру и телепортирует игрока в указанное место. Если работаешь над модом со скриптами, его желательно каждый раз тестировать на новой игре или на сохранении, в котором мод еще не был подключен. Иначе могут, например, не поменяться property на скриптах.
Изменение репутации для пользователя AlexeyVN
AlexeyVNOffline
Сообщение №2444
написано: 8 мая 2017, 17:20
| Отредактировано: AlexeyVN - 8 мая 2017, 17:21
Проблема в том что когда делаю так - Debug.Notification("Персонаж ещё восстанавливается") - сообщение нормально отображается в игре а когда так - String SelfName = Self.GetBaseObject().GetName() Debug.Notification(SelfName + " ещё восстанавливается") -то сообщение отображается не корректно
Даже не знаю, куда именно написать... в общем, не подскажете, как сделать, что бы в Скайриме у врага можно было снизить силу заклинаний? Есть, конечно, вариант через перк, но тогда этот перк надо будет всунуть каждому НИПу в игре (к тому же, на НИПов из других модов это не подействует). Не знаете, есть ли способ сделать это? Средствами СК или скриптами...
Можете подсказать один скрипт? Нужно, чтобы после прочтения записки/книги, в одно место, где гг прочитал записку/книгу, телепортировался специальный НПС, и первый начал диалог. Еще желательно, чтобы когда нпс телепортировался, нужно чтобы появился визуальный эффект призыва из обливиона т.е как мы призываем обычного питомца через заклинание! Буду очень благодарен!
Изменение репутации для пользователя Aksyonov
AksyonovOffline
Сообщение №2447
написано: 15 июня 2017, 16:19
| Отредактировано: Aksyonov - 11 июня 2017, 18:15
Всем привет, нужно помощь с советом, написал такой скрипт ↓ задача воскресить при помощи заклинания мертвый трел 24 NPV - одержимых, когда кастует заклинание игрок, всё в порядке - когда выбираю в качестве источника каста источник света или любой другой объект каст заклинания происходит но труп не встает, мысли такие, наверняка скрипт заклинания присваивает оживленный труп в качестве компаньона для игрока поэтому и не работает, правильно ли всё я понимаю? И как воскресить огромное количества NPC разом лучше всего? Нужен эффект что бы подымались и воскресали. Как в оригинальном заклятье.
Scriptname SilviScriptQuestZombi extends ObjectReference Quest Property jr Auto
spell Property zap Auto actor Property fa Auto ObjectReference Property ac Auto
Quest Property SilviaQuest Auto Event OnTriggerEnter(ObjectReference akActionRef) Zap.Cast(ac, fa) if akActionRef == Game.GetPlayer() && SilviaQuest.GetStage() == 35
Добавлено (15 Июня 2017, 19:19) --------------------------------------------- Всем привет кто нибудь знает как можно скриптом заставить сказать npc определенную реплику из квеста? Допустим сразу после каста заклинания, очень нужно! Помогите!
Изменение репутации для пользователя MagicalDagger
MagicalDaggerOffline
Сообщение №2448
написано: 21 июня 2017, 17:00
| Отредактировано: MagicalDagger - 21 июня 2017, 17:11
Всем привет! Подскажите, пожалуйста, как работают функции Int GetEnchantmentValue() и SetEnchantmentValue(Int value). Они работают с максимальным или текущим значением уровня зачарования? На сайте редактора нет информации по ним (функции из SKSE), а опытным путем выяснять дольше выйдет.
И если кто знает: есть ли какие-то специфические функции для зарядки зачарованного оружия или, если что, в каком стандартном скрипте игры смотреть реализацию?
Aksyonov, дело не в самом заклинании точно, так как висящий на эффекте скрипт управляет топиком, который произносит дружественный персонаж при применении заклинания на него (если это именно "Мертвый трелл"). Возможно, дело в архетипе эффекта, а как откопать его реализацию, лично я не в курсе.
Изменение репутации для пользователя m4mk203
m4mk203Offline
Сообщение №2449
написано: 23 июня 2017, 12:16
| Отредактировано: Multigone - 22 апреля 2020, 15:45
В первую очередь спасибо за огромное количество полезнейшего материала по скриптингу.
Вопрос. Есть локация. В ней сундук. На сундуке скрипт с защитным проклятием. Срабатывает эта пакость на событии OnClose сундука. В данный момент схема срабатывания вероятностная. Что нужно: как корректно отследить в момент закрытия сундука тот факт, что ГГ что-то из него взял / не взял? Что именно он взял значения не имеет. Важно только лутали ли сундук вообще или содержимое осталось нетронутым. Отловить это нужно именно в событии закрытия.
Будет ли правильным такое решение в скрипте на сундуке:
Код
Bool WasLooted = False ; флаг лутался ли сундук
Event OnItemRemoved(Form akBaseItem, int aiItemCount, ObjectReference akItemReference, ObjectReference akDestContainer) If akDestContainer == Game.GetPlayer() WasLooted = True EndIf endEvent
Event OnClose(ObjectReference akActionRef) If WasLooted == True ; контейнер был полутан - выполняем нужные действия. endif endEvent
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №2450
написано: 23 июня 2017, 13:48
| Отредактировано: Dsion - 23 июня 2017, 13:49
m4mk203, да, вроде, нормально всё... Если OnClose срабатывает при закрытии... Должно работать. Не работает разве?
Если даже OnClose не срабатывает, то можно каст бяки повесить прямо на OnItemRemoved после Utility.Wait(0.1) - тогда она скастуется сразу после закрытия игроком меню сундука.
Если сундук должен быть многоразовым, можно добавить сбос переменной в OnActivate.
Dsion, работает. Я просто еще слабенько знаком с взаимосвязью ивентов и консультируюсь на тему правильный ли набор событий я использую для решения задачи. То, что она работает сейчас, не грантирует работу всегда Спасибо Вам за ответ.
Цитата Dsion
Если сундук должен быть многоразовым, можно добавить сбос переменной в OnActivate.
Да, это стандартный сундук в подземелье с респавном. Но переменная-флаг же не глобальная. Разве она не реинициализируется при каждом контакте с сундуком?
Еще такой момент. Как правильно реализовать следующую штуку: Если ГГ таскает в инвентаре драконий коготь от еще не открытой двери могильника, то его неким образом плющит. Если дверь уже открыта, то коготь безвреден. Очень хотелось бы избежать постоянных проверок инвентаря и вкл/отк пакости повесить на события касающиеся исключительно взятия / выбрасывания когтя.
m4mk203, а коготь твой собственный или ты для всех когтей такое хочешь сделать? Да вариантов дофига...
Если твой собственный, то есть же событие OnContainerChanged - можно повесить скрипт на коготь и этот ивент будет срабатывать при смене контейнера. Можно проверить, является ли "контейнер" игроком.
Если не твой и делаешь для всех когтей, можно создать квест, в квесте алиас игрока, а на алиасе игрок будет вызываться OnItemAdded и OnItemRemoved, с которыми ты уже знаком. Там уж можно проверить, находится ли взятый предмет в сприске когтей от неоткрытых дверей.
Ну и если это часть квеста, можно еще на алиас игрока повесить вредящую ability (пассивный эффект), с условием "коготь в инвентаре, дверь не открыта".
Фигово. да? Лично я не люблю, когда много вариантов Сложно выбрать. Когда вариант только один, как-то легче.
Ага. Суть понял. Да, когти игровые и больше всего подойдет вариант отработки смены контейнера на самом когте.
Умаялся с этими дверями для когтей. Оказывается это не единый объект, а целая лесопарковая зона:) Я так понимаю, что состояние открыта/закрыта должно храниться в глобальных переменных? И к сожалению сами когти это просто болванки в мискайтемах без явной привязки к двери. Придется видимо прописывать двери для каждого когтя ручками в скриптах.
А в каком месте лежит скрипт, отвечающий за спавн драугров в данжах? К чему вопрос: нужно изменить спавн так, что пока гг ниже 50-го уровня в данжах могильников спавнится нечисть уровня 50 (знаю что жесть но так надо), а если гг достиг уровня 50 то спавнится нечисть с левелом = уровень гг + 5. Такое вобще возможно?
И еще вопрос по спавну. Есть созданный мною сундук. В какой-то момент игрового времени туда попадают вещи. Нужно чтобы через 3 игровых дня с момента попадания в сундук шмота (если гг не забрал шмот из этого сундука) он автоматом очищался в ноль. Возвращать шмот игроку не нужно. Просто очистить сундук.
З. Ы.
На мой вкус куча вариантов - это хорошо Больше свободы действий.
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №2454
написано: 24 июня 2017, 22:56
| Отредактировано: Dsion - 24 июня 2017, 22:57
m4mk203, по поводу спавна нежити - так скрипты там, вроде, вообще не при чем. Думаю надо смотреть, LeveledCharacter. Это списки, в которые добавляются обычные НИП (акторы) и для каждого задается уровень игрока. У тебя, наверное, получится только два актора в списке: один со статическим 50 уровнем, а второй с уровнем игрока +5. Да, точно можно сделать и даже не сложно.
У меня мой самый главный мод, без которого я вообще не играю, немного похожее делает. Он вообще отменяет концепцию "уровня игрока" и зависимость мира от уровня игрока. У игрока уровня нету, есть только уровень навыков. А в мире с самого начала лазят монстры от 1 до 100 уровня. И есть шанс найти самые лучшие вещи прямо сразу (хотя, в основном, падает хлам). Уф, сколько же с этим модом надо мучиться, чтоб драурги и бандиты-марадеры перестали ваншотить из лука. Первые дни игры можно только травку собирать и отбившихся от стаи волков выискивать, чтоб деньги заработать.
За сундук - так это легко. Когда вещи попадают, выполняешь RegisterForSingleUpdateGameTime - это заставит через указанное время (игровое) вызваться ивент OnUpdate(). А в ивенте OnUpdate() делаешь RemoveAllItems().
Он вообще отменяет концепцию "уровня игрока" и зависимость мира от уровня игрока. У игрока уровня нету, есть только уровень навыков. А в мире с самого начала лазят монстры от 1 до 100 уровня.
Аминь, брат!
Делаю полную перебалансировку нордских подземелий с максимальной отвязкой от уровня гг и мощной магической защитой. Задолбало ходить в могильники величайших воинов и черных магов прошлого, как в долбанный Диснейленд и находить в могилах таких людей по 3 септима паллитре и жравые подштанники.
Скорее всего, придется тебе дофига leveled-списков редактировать: и LeveledCharacter, и LeveledItem. Посмотри их хоть, попробуй разобраться, как они работают.
Я не поклонник перезаписи ванильных объектов в т.ч. списков, но в данном случае это оправданно.
Ну или еще, если есть в тебе олдскульный программистский дух, можешь почесать репу над вариантами, не требующими перезаписи ванильных объектов. Вот для примера (я не предлагаю что-то подобное делать, а просто для примера): Есть задача: усилить всю нежить во всех подземельях. Вариант 1: Редактируем дофига leveled-списков и Actor'ов. Мод становится тяжелым и не (полностью) совместимым с любым другим модом, затрагивающим хоть один из этих же списков. Вариант 2: Создаем всего один перк и даем его игроку. А в перке прописываем увеличить весь входящий урон по игроку в нордских руинах в 4 раза, а весь исходящий (по монстрам) - уменьшить в 4 раза. Весь - это чтоб и ловушки стали опаснее. Но можно увеличить урон только от нежити. В том же духе решаем и проблему с лутом.
Dsion, согласен, курочить родную отбалансированную систему спавна нефиг. Но и обвешивать гг приблудами тоже не очень хочется.
Пока общую картину вижу для себя так:
1. Скрипты защиты на сундуках. (там будет жесть вплоть до срезания навыков с выбиванием перков скрытности, красноречия, взлома) 2. Все сундуки запереть на экспертные замки 3. Доступ к ключевым дверям защищен кил-тригером , убивающим любого (или ка-то оригинальнее портящим жизнь (ну там манну в 0 и выносливость с жизнью пополам на 10 игровых часов) ), кто подойдет к ним без специальной приблуды (защитного амулета). 4. Дополнительно разместить в подземельях (на стенах потолках и в разных укромных местах) руны с неким своим сильнодолбящим эффектом (кстати где эта пакость лежит в СК?). 5. По левеллистам. На сколько я понял их логику они прописываются в объекте по кнопке эдитбэйз. Ведь можно не трогать родной левеллист и просто добавить сундуку еще один свой со своей системой спавна плюшек (можно вобще присобачить объекту несколько левеллистов?). Или это все же будет влиять на совместимость по левеллистам? 6. По поводу тварей. Если ребаланс родных ведет к сложностям, то может добавить новые точки спавна высокоуровневых неписей (военачальников и драконьих жрецов) в местах, где раньше гг безпрепятственно скакал аки горный козел по пастбищу? У них будет свой спавн (как мне кажется) и уровень априори сильнее ванили. 7. Защитные амулеты. Будут делаться в кузнице атронахов из редких и дорогих ингридиентов, а основными ингридиентами для них будут магические свитки, которые спавнятся исключительно в сундуках драугров и нигде больше их взять нельзя. Так что в любом случае гг придется лезть в подземелья и сундуки. 8. Дополнительным стимулом будут разные располезные трофеи, лежащие в конце подземелий (с периодическим респавном). Так что будет смысл и ходить и возвращаться в уже пройденные данжи.
Изменение репутации для пользователя Dsion
DsionOffline
Сообщение №2458
написано: 25 июня 2017, 14:45
| Отредактировано: Dsion - 25 июня 2017, 14:47
m4mk203, да редактируй списки - не так это и страшно. Никаких сложностей это не вызовет, если не подключать другой мод, который их тоже редактирует... Или если их не отредактируют разработчики в каком-то новом патче... Просто хотел сказать, что есть и другие пути. Например, можно добавить ловушку на все босс-сундуки, не редактируя при этом сами сундуки (ни референсы, ни базовый объект) и сохранив полную совместимость с чем-угодно. То же самое с любыми дверьми. Даже лут в сундуки можно добавить, не редактируя ванильных объектов.
А, ладно, забей. Это у меня мозги набекрень. Я страшные вещи делал, чтоб избежать кропотливой работы и перезаписи ванильных объектов
Изменение репутации для пользователя Нарада
НарадаOffline
Сообщение №2459
написано: 25 июня 2017, 18:45
| Отредактировано: Нарада - 25 июня 2017, 18:48
Нарада, простой фокус. Перед ключевыми дверями подземелья ставится тригер-зона. Когда игрок в нее попадает ему становится весьма фигово или совсем кердык не зависимо от того, что он открыл эту дверь или нет. Суть в том что в моей модификации по подземельям драугров могут шастать только драугры или же посвященные культа жрецов (вполне логичная защита для таких мест от проникновения туда разных праздношатающихся особей). Остальным в подземельях хана. Для посвященных же существуют защитные амулеты. К примеру через ключевые двери без вреда для себя можно пройти только будучи в особой маске жреца. Ну и т.д. Амулеты же крафтятся сложно и с участием ингридиентов, которые можно добыть только в подземельях.
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)