Вверх Вниз


Модератор форума: Kris†a™  
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)
Вопросы по скриптам Papyrus
sansuli  Offline Сообщение №1 написано: 31 Августа 2012 в 17:29 | Отредактировано: sansuli - Пятница, 17 Апреля 2015, 21:08


The Red Sun


194
Уроки по скриптованию на языке Papyrus
Прежде чем задать вопрос просмотрите вышеуказанные уроки.
ok

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
modgms_user  Offline Сообщение №2761 написано: 29 Декабря 2017 в 09:37


Странник


20
[quote=Multigone;1297361]проверил на игроке, как при нулевой, так и при ненулевой продолжительности эффекта скрипт всегда завершает и старт, и финиш. Не знаю, в чем там у тебя дело.[/quote]
Так пока и не получилось повторить снова, нужные чары не сгенерировались, чтобы вызвать повторения бага с падением. Вот, только два сохранения, о которых писалось, в которых два экземпляра скриптов вызывали сильное падение фпс, с восстановлением после удаления их из активных.

Попробую третий вариант в следующем забеге по тому же маршруту в игре. В этом моде, на самом деле есть несколько скриптов, ошибки в которых происходят с тем же GetMagnitude(). Кроме xtd_fortifydecimal ошибки происходят так же в таких скриптах Worlds Dawn как: xtd_statpercentage, xtd_procself, xtd_alchattributepercent и XTD_ProcOnBlockBuff. В них, пока использованы простые проверки или пробую аналоги предлагаемых вариантов, возможно, после нахождения оптимального варианта, без ошибок в лог, непредвиденных изменений статов персонажей и падения фпс, можно будет уже использовать что-то конкретное. В может есть и другие проблемы и вопросы, многое по балансу и известно из отзывов пользователей оригинальной версии, но это пока второе.

Стоит ли в esp к некоторым эффектам добавить условие IsDead 0, чтобы избежать лишнего применения когда не надо или не требуется? Что-то уже пробую, вроде применения условия Health<100%, через esp, для эффекта ауры, восстановливающей здоровье союзных NPC. Насколько такие проверки избавят от проблем и повлияют на общую производительность? Если есть какая информация и особенности, будет полезно узнать.

А предложенный скрипт попробую обязательно, в следующей новой тестовой игре. Жаль, не вышло поймать падение с добавленной отладкой, из выводов только, что такое происходило только для определенных эффектах, на неписях и второй вариант предложенного скрипта стабильней первого, в этом плане.

Multigone  Offline Сообщение №2762 написано: 29 Декабря 2017 в 15:30



643
modgms_user,

- эффект с архетипом ValueMod не накладывается на уже мертвых актеров.
- когда актер погибает, большинство эффектов снимаются, если в них не указано NoDeathDispel. С игрока - не всегда.
- если для заклинания, кастуемого игроком, по результатам проверок условий и сопротивлений на другую цель не будет наложено ни одного эффекта, в верхнем углу появится сообщение "такой-то избегает действия того-то".
- проверки в EffectItem происходят раз в секунду, в окне TargetConditions эффекта - один раз при наложении. Множество постоянных проверок нежелательно.
- если условие TargetConditions не дает эффекту наложиться, его скрипт не инициализируется, требование DispelEffectsWithTheseKeywords не выполняется.
- условие в EffectItem не препятствует наложению эффекта, просто "переключает" его состояние, при этом срабатывают события старта и финиша (соответствующее, скрипт продолжает работать); требование DispelEffectsWithTheseKeywords выполняется один раз в момент наложения; в отключенном состоянии он все еще определяется через HasMagicEffect().
- если заклинание имеет несколько эффектов, условия TargetConditions следующего эффекта начнут проверяться после того, как будут проверены у вышестоящего.
- для эффектов Concentration условия в TargetConditions и EffectItem играют обратную роль (с СК.сом / не проверял / возможно, это только кажется из-за продолжительности большинства их в 1 секунду).

Если что еще вспомню, напишу.

Ссылка 1.
Ссылка 2.

modgms_user  Offline Сообщение №2763 написано: 06 Января 2018 в 15:28 | Отредактировано: modgms_user - Суббота, 06 Января 2018, 18:35


Странник


20
Multigone, спасибо, особенности полезно знать, чтобы не пихать куда попало чего не следует или наоборот.

Сделал один забег с измененным скриптом, пока чего-то такого не заметил, хоть и недолго бегал, только пара ошибок с этой же магнитудой, от пары других скриптов, но там тоже проверки стоят, когда в магнитуде ошибка. По измененному скрипту ничего в логе не показало. Падения фпс не было и вроде как, раз бесконечного цикла нет, не должно быть. А основном только другие недостатки высматривались. Подольше побегать, потом может быть можно будет применить и к другим нескольким перечисленным ранее скриптам примерно такие же проверки, чтобы предотвратить ошибку с магнитудой и не сломать ничего.

[b]Добавлено[/b] (06 Января 2018, 15:28)
---------------------------------------------
Приветствую в очередной раз. Делал тесты скрипта и мода в целом. В моде нашел один ломающий характеристики неписей баг, но о нем позже.

1)
По скрипту xtd_fortifydecimal. Смотрел в логе, сообщения об ошибках с GetMagnitude все равно встречаются. Появились кое какие размышления. В других скриптах этого мода, например в XTD_PlayerRecoveryScript, были также разные ошибки, например RegisterForSingleUpdate выдавал ошибку no native object bound... . В том случае я вставлял сразу перед RegisterForSingleUpdate проверку вроде "if target.HasMagicEffect(abRecovery.GetNthEffectMagicEffect(0))" и больше ошибок в логе не было. Так вот, относительно xtd_fortifydecimal, как магического эффекта и ранее обсуждавшейся ситуации возникновения ошибка с GetMagnitude из за снятия эффекта, несмотря на это, но выполнения строк скрипта до конца. Обдумывался вариант получить айди эффекта через что нибудь и засунуть его в строку "if target.HasMagicEffect(abRecovery.GetNthEffectMagicEffect(0))", вместо abRecovery. Но пока писал это сообщение подумал о более тупом способе и опробовал его на том тестовом заклинании и скрипте TEST777, что ранее предлагалось посмотреть.
Условие "if self as xtd_fortifydecimal" возвращает TRUE и равно "[xtd_fortifydecimal <Active Efffect ## on ########>]", когда есть еффект, или "[xtd_fortifydecimal <None>]", когда его нет.
Сначала подумал присвоить значение какой-нибудь переменной типа activemagiceffect, например ActEffect, но если ей присвоить значение через "ActEffect = self as xtd_fortifydecimal", в моем тестовом скрипте было "ActEffect = self as xtd_fortifydecimal", соответственно, в Debug.trace\messagebox такая переменная будет показывать значение None, но в моем тестовом скрипте условие "if ActEffect == None" все равно не выполнялось.
Тогда решил сделать проверку через строковую. Создал "string EffString", потом присвоил, в тестовом скрипте TEST777, значение через "EffString=(self as TEST777) as string" и после была проверка if EffString=="[TEST777 <None>]", которая уже прошла, ведь строковое значение self as TEST777 отличалось, в случаях когда эффект был или его не было. Можно и без переменной, полагаю, просто условием " if ((self as TEST777) as string) == "[TEST777 <None>]" ".
Может тупо так и предотвращать ошибку с следующим далее GetMagnitude? Может это можно прописать более быстрым вариантом? Кстати, какое условие легче и выполнится быстрее "if target.HasMagicEffect(SpellVisual.GetNthEffectMagicEffect(0))" или " if ((self as XTD_CombatBuffScript) as string) != "[XTD_CombatBuffScript <None>]" "?

2)
Касательно описанной большой проблемой мода. Ранее писал, что замечал, что с модом у неписей косячились показатели и в одной из тестовой игр, видимо, увидел причину, которая их портит. В моде Worlds Dawn, кроме зачарований, есть еще РПГ атрибуты(сила, выносливость, проворность, ловкость, интеллект, мудрость,харизма), которые имеют свои эффекты. На игроке они работают нормально, но они также могут оказывать эффект и на неписей, вроде спутников, т.к. присутствуют в зачарованиях на вещах, которые можно одеть на тех же компаньонов. Так вот, просматривая характеристики компаньона, случайно(или не очень), увидел, в каком случае характеристики запарывались. Первое, что увидел, чрезвычайно большой бонус от характеристик, аномально большой. Своему персу, для тестов, установил все указанные атрибуты в значение 100, чтобы видеть и насколько они несбалансированы, что надо уменьшать, и в случае чего, вот такие баги.
Посмотрел у спутника параметр AttackDamageMult, он был равен 1. Была шмотка с чарами +1 к силе, а сила здесь, одним из эффектов, имеет +к урону. Надел на спутника шмотку с +1 силы и увидел, что AttackDamageMult вырос с 1-го до 2.88, что, очевидно, мягко говоря перебор, соответственно, +10 к силе уже увеличивало до неприличных значений. Это при РПГ-атрибутах игрока в значении 100. Для сравнения, 100 силы у игрока увеличивает AttackDamageMult, если не ошибаюсь, до 1.77, но это 100 силы.
Проверил, там же в игре, понизил все атрибуты до 50-ти, сбросом через Debug мода и +1 силы стало давать компаньону, в общем-то, в два раза меньший бонус к AttackDamageMult.
Далее выяснил, тогда же, когда сбросил атрибуты, в какой ситуации AttackDamageMult остался измененным навечно. Когда менял атрибуты, то шмотка была надета на персонаже и когда шмотка была снята, эффект уменьшился только на величину, которая была при значении РПГ-атрибутов 50, и AttackDamageMult уже не вернулся в значение 1.
Примерно понял, что эти дела присваиваются в скрипте xtd_alchattributepercent, сначала попробовал немного поменять в указанном скрипте код, в надежде исправить баг, не прокатило, в результате, не нашел ничего лучше, чем просто отрубить процесс для неписей, оставив только для игрока, после чего неписи перестали получать бонусы от плюсов к рпг-атрибутам на надетых на них шмотках, но и дикие прибавки и навечно измененные значения характеристик также исчезли, вроде onlyplayer рпг-атрибуты.
Вообще, начал проверять эти дела после того, как увидел, что у спутника скорость в игре стала 1500 вместо ста и из шмоток была только та, что добавляла бонус от рпг-атрибута, притом значение росло по ходу игры, видимо, когда распределял атрибуты и в других ситуация, вроде переодевания шмоток и т.п. Думал, может чего накосячил в скриптах и вернул оригинальные, начал новую игру и проверил снова, с оригинальными были такие же дела. В XTD_AlchAttributePercent тоже есть вначале GetMagnitude в начале, тоже кидал те же ошибки иногда.

Может в XTD_AlchAttributePercent там какая ошибка есть в коде? Так-то код небольшой, и из XTD_AlchAttributePercent используется также и xtd_attributes, в котором задаются величины эффектов от рпг-атрибутов, баланс велечины которых - отдельный вопрос. Код скрипта могу кинуть, если надо, но вроде, как понял с xtd_fortifydecimal, исходники есть.
Не знаю, какой именно атрибут игрока влиял на бонус от силы для непися, не проверил еще, полагаю та же сила 100, бонус которой каким-то образом перемножается с бонусом силы для непися.
Может и onlyplayer атрибуты, с отключением кода для неписей, даже и лучше, но как бы это не повлияло на работоспособность многих эффектов от других зачарований. Видимо надо кучу debug-строк вставлять в скрипт и смотреть, что там чему равно.

Multigone  Offline Сообщение №2764 написано: 06 Января 2018 в 22:21



643
modgms_user, проверил, возможно, (Self AS String != "[ScriptName ]") и даст необходимую проверку, наложен ли этот эффект на актера.

Код
if target.HasMagicEffect()
Не рекомендую, т.к. активных копий одного эффекта может быть больше 1 (некоторые архетипы позволяют это, напр., ValueMod). Один конкретный эффект уже исчез, но на актере есть и другие - проверка в скрипте первого будет положительна.


Цитата
Кстати, какое условие легче и выполнится быстрее "if
target.HasMagicEffect(SpellVisual.GetNthEffectMagicEffect(0))" или " if
((self as XTD_CombatBuffScript) as string) != "[XTD_CombatBuffScript
]" "?
Второе.


Цитата
2)
Честно говоря, не хочется быть тестером.

Dsion  Offline Сообщение №2765 написано: 07 Января 2018 в 18:38



1219
modgms_user, ты действительно хочешь потратить жизнь на придумывание кривых фиксов к кривому skse-шному моду?

modgms_user  Offline Сообщение №2766 написано: 07 Января 2018 в 22:40 | Отредактировано: modgms_user - Воскресенье, 07 Января 2018, 22:41


Странник


20
Dsion, да на самом деле относительно мало времени, когда других дел нет, в основном. Это ещё уж так даже не назвать бесполезной тратой времени, т.к. думаешь и пр., в отличие, например, от самого процесса игры, который, как раз, и является жестким сжиганием времени. Просто мод понравился, хочется нормально поиграть, вот и исправляю за авторами. :)

[quote=Multigone;1298104]Честно говоря, не хочется быть тестером.[/quote]
В общем-то просил только возможные ошибки в коде посмотреть, опытным взглядом. Но уже, похоже, начало доходить, где и чего не так, насовал отладочных сообщений и вроде нашел причину, уже сделал изменения.
Есть вопрос о скорости и затрачиваемых действиях в примере далее. Есть, допустим скрипт, в нем я, допустим, добавил необходимую проверку "IF self as string != "[Scriptname <None>]" ". Эта проверка по скрипту повторяется раз 5-10. Будет ли иметь смысл, с точки зрения скорости и затрачиваемого папирусом времени, добавить в начале определение переменной, например "string MEffectNone = "[Scriptname <None>] " и далее по скрипту заменить все проверки на "IF self as string != MEffectNone"? Будет ли это быстрее хоть как-то? Скомпилированный скрипт становится чуть меньше после таких изменений и часто это имеет смысл, особенно, когда много действий при присвоении выполняется, но здесь как-то не настолько прямо всё ясно.

Multigone  Offline Сообщение №2767 написано: 08 Января 2018 в 05:33



643
modgms_user, создание переменной- это доп. действие. В твоем случае - лишнее.

Dsion  Offline Сообщение №2768 написано: 08 Января 2018 в 19:40 | Отредактировано: Dsion - Понедельник, 08 Января 2018, 19:42



1219
Multigone, чо-то у тебя реально странные представления о программах... Попрограммировал бы на Си...

modgms_user, возьми да замерь время выполнения первого и второго вариантов... В Utility Script, вроде, есть функция получения точного реального времени. Если будет слишком быстро выполняться, можно повторить тест 1000 раз или сколько нужно. Вряд ли у нас на форуме есть кто-то, кто понимает компилятор папируса достаточно хорошо, чтоб сразу сказать, какой вариант быстрее.

Multigone  Offline Сообщение №2769 написано: 08 Января 2018 в 22:57



643
modgms_user, действительно, это быстрее. В среднем на 0.0000003 с (на моем компе). Но переменная, в отличие от литерала, занимает какую-то память, пока живет в отрезке кода, где была объявлена.
Тогда предположу, что создание переменной и литерала - это примерно одно и то же, на это затрачивается опред. время.

Как я и сказал, в твоем случае это не имеет значения.

modgms_user  Offline Сообщение №2770 написано: 11 Января 2018 в 12:41 | Отредактировано: modgms_user - Четверг, 11 Января 2018, 22:16


Странник


20
Приветствую. Есть вопрос по скрипта и особенностям. В все том же моде World Dawn есть скрипты, где используется RegisterForSingleUpdate. Этот RegisterForSingleUpdate кидал ошибку "Unable to call RegisterForSingleUpdate - no native object bound to the script object, or object is of incorrect type", для ликвидации которых я использовал, в последний раз, условие "self as sring != "[scriptname <None>]" ", которое везде работало, кроме одного скрипта, где продолжало иногда кидать ошибку.
Засунал между условием и RegisterForSingleUpdate отладочное сообщение, чтобы посмотреть состояние разных переменных на момент ошибки. В логи было следующее:
-------------------------------------
[01/10/2018 - 10:12:35PM] XTD_CombatBuffScript line 80 > target=[NPCPotions < (02003478)>]XTD_Debug.GetValue() as int=2, SpellVisual.GetNthEffectMagicEffect(0)=[MagicEffect < (920CA0CE)>], Self=[XTD_CombatBuffScript <Active effect 11 on (02003478)>], SpellVisual.GetNthEffectMagicEffect(0) as bool=TRUE, (target.HasMagicEffect(SpellVisual.GetNthEffectMagicEffect(0))) as bool=False
[01/10/2018 - 10:12:36PM] XTD_CombatBuffScript line 80 > target=[NPCPotions < (02003478)>]XTD_Debug.GetValue() as int=2, SpellVisual.GetNthEffectMagicEffect(0)=[MagicEffect < (920CA0CE)>], Self=[XTD_CombatBuffScript <Active effect 11 on (02003478)>], SpellVisual.GetNthEffectMagicEffect(0) as bool=TRUE, (target.HasMagicEffect(SpellVisual.GetNthEffectMagicEffect(0))) as bool=False
[01/10/2018 - 10:12:36PM] Error: Unable to call RegisterForSingleUpdate - no native object bound to the script object, or object is of incorrect type
stack:
[Active effect 11 on (02003478)].XTD_CombatBuffScript.RegisterForSingleUpdate() - "<native>" Line ?
[Active effect 11 on (02003478)].XTD_CombatBuffScript.OnUpdate() - "xtd_combatbuffscript.psc" Line 81
------------------------------------
Отладочное сообщение вставил после условия (строка 79), перед RegisterForSingleUpdate. Этот скрипт работает для баффов, которые активируются в начале боя и какое-то время. Дело в том, что как помню, с оригинальным скриптом, до условия, ошибка была вида "[None].XTD_CombatBuffScript.RegisterForSingleUpdate() - "<native>" Line ?". Но тут и вроде и эффект есть, типа self не None, но все равно иногда попадается ошибка. Это только в этом скрипте так, условие было добавлено после таких же ошибок и в другой скрит, но там нет такого.
С чем это может быть связано? Может быть каким-то другим способом можно предотвратить подобного рода ошибки? Может показывает, когда объект с эффектом мертв и нужно еще добавить какой-нибудь "!target.isDead", какие-то еще особенности?

ps
в последней тестовой игре похожая история получилась с GetMAgnitude. Проверкаs elf as string перед есть и в ошибке вроде как наличие эффекта отображает, но всё равно ошибка:
[01/11/2018 - 10:34:02PM] Error: Unable to call GetMagnitude - no native object bound to the script object, or object is of incorrect type
stack:
[Active effect 12 on (FF001B58)].XTD_StatPercentage.GetMagnitude() - "<native>" Line ?
[Active effect 12 on (FF001B58)].XTD_StatPercentage.OnPlayerLevelUpEx() - "xtd_statpercentage.psc" Line 59
----------------------------
Опять же, до этого такого рода случаев не замечалось и в ошибках было обычно [None].XTD_StatPercentage.GetMagnitude() и против таких ошибок self as string помогает, но вот с последней, естественно, нет.

Multigone  Offline Сообщение №2771 написано: 11 Января 2018 в 23:45



643

Цитата
Error: Unable to call RegisterForSingleUpdate - no native object bound to the script object, or object is of incorrect type
Невозможно вызвать RegisterForSingleUpdate - нет объекта. Значит, эффект был снят в промежутке, когда выполнялся очередной onUpdate(). Даже если сделать проверку на наличие эффекта перед каждым RegisterForSingleUpdate (а их там 2), это не даст 100% гарантии, поскольку эффект может быть снят точно между проверкой и регистрацией. Типа так:


Код
Event onUpdate()
    ; ...
    IF self as sring != "[scriptname <None>]"
        ; в этот момент эффект внезапно! снимается.
        RegisterForSingleUpdate(1.0)
    ENDIF
endif
Endevent

Шанс этого ничтожен, но если эффекты распространенные, несколько могут и сработать таким образом.

Ну, я так думаю.

Вообще, такую конструкцию, как в том скрипте, я много раз где видел, никто с этим особо не парился. Ну да, в лог может кинуть ошибку. И... все.

sansuli  Offline Сообщение №2772 написано: 12 Января 2018 в 20:05 | Отредактировано: sansuli - Пятница, 12 Января 2018, 20:05


The Red Sun


194
Так, ищу функцию для добавления предмета(брони/оружия) в избранное.
И функцию отнимающее управление частично (об Game.Enable/DisablePlayerControls знаю, но она не подходит).
Хотелось бы избирательно убрать управление, такие как ниже:

Если функции нет, то можно но ли как нибудь заблокировать выбранный контроль, или придется блокировать клавишу?

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
Multigone  Offline Сообщение №2773 написано: 12 Января 2018 в 21:47 | Отредактировано: Multigone - Пятница, 12 Января 2018, 21:49



643
Цитата sansuli ()
ищу функцию для добавления предмета(брони/оружия) в избранное
Хмм. А зачем? Оно на то и избранное, что игрок сам определяет, что там должно быть. Во всяком случае, в SKSE такого нет и не планируется.

Цитата sansuli ()
или придется блокировать клавишу
Как ты хочешь это сделать? Input позволяет получить клавишу контроля, или нажать / зажать / отпустить. Такого, чтобы разбиндить управление, там нет.
Когда я делал мод на прыжки, в меню менял управление с пробела на неиспользуемую клавишу, регистрировал пробел, и когда игрок нажимал его, через TapKey() нажимал эту неиспользуемую клавишу.
Ну а что поделать? Беседка построила кривую беседку, а мы продолжаем ее в чудесную башню (нет).

sansuli  Offline Сообщение №2774 написано: 12 Января 2018 в 23:15 | Отредактировано: sansuli - Пятница, 12 Января 2018, 23:16


The Red Sun


194
Multigone, хотел добавлять в меню избранное объекты которые экипировал ГГ автоматически.

Красное солнце
Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
AlexeyVN  Offline Сообщение №2775 написано: 16 Января 2018 в 23:40 | Отредактировано: AlexeyVN - Вторник, 16 Января 2018, 23:44


Начинающий


65
Здравствуйте, скажите пожалуйста через скрипт можно ли узнать, когда ГГ убил кого нибудь? (без SKSE)
Хочу сделать статистику убийств ГГ

Lexo  Offline Сообщение №2776 написано: 17 Января 2018 в 18:46 | Отредактировано: Lexo - Среда, 17 Января 2018, 18:44


Всепознающий мододел


211
Цитата AlexeyVN ()
когда ГГ убил кого нибудь
Тебе прям дату точную нужно отслеживать? Или просто количество убийств?

Если просто количество убийств, то тут 2 способа:

1) Скайримский - в Скайриме уже ведётся счёт твоих убийств. Насколько я понял, определяется глобальными. Выбери раздел Global и впиши в фильтр Kill - там будет много разных... и убийства риклингов, и драконов и т.п. Хочешь статистику вписать куда-то, то просто впиши (без ковычек) "< Global="здесь твоя глобальная, которую ты хочешь считать" >" и тебе будет высвечено число, например, в магическом эффекте. Это определит все убийства, которые уже были сделаны раньше и которые будут сделаны дальше.

2) Скриптом. Повесить на игрока магический эффект (Постоянный "на себя"), который будет плащом. Плащ распространяет эффект, на котором висит скрипт


Теперь при каждом убийстве будет заполняться глобальная. Но считаться будут только те убийства, которые совершены после того, как эффект начался.
Так же можно диффиренцировать убийства, например, драконов отдельно, кроликов отдельно и т.п. Но тогда придётся на каждый вид существ свою переменную создавать.

В общем, надо больше данных... хотите конкретный ответ - задавайте конкретные вопросы...

Добавлено (17 Января 2018, 18:46)
---------------------------------------------
А вот теперь вопрос от меня:

Продвинутые ребята, подскажите, пожалуйста, есть способ скриптом отслеживать использование Ту'ума? Я пробовал через "Event OnSpellCast", выбирая при этом третье заклинание в крике, но это не дало никакого эффекта... не подскажите?


"Всё слишком относительно, что бы утверждать столь однозначно..." ©

Dsion  Offline Сообщение №2777 написано: 17 Января 2018 в 21:26



1219
AlexeyVN, Lexo, попробуйте обое разобраться с запуском квестов по Story Manager Event. Там можно и убийство актора поймать, и каст заклинания. Хотя, может, от крика оно и не срабатывает.

AlexeyVN  Offline Сообщение №2778 написано: 17 Января 2018 в 22:04 | Отредактировано: AlexeyVN - Среда, 17 Января 2018, 22:07


Начинающий


65
Dsion, Здравствуйте, пробовал Story Manager Event. Проблема в том, что если спутник взят собой, то и его убийства зачитываются ГГ (не могу понять почему так)

Lexo  Offline Сообщение №2779 написано: 18 Января 2018 в 19:05


Всепознающий мододел


211
Цитата AlexeyVN ()
почему так
потому что ВСЕ преступления, сделанные спутником перекидываются на ГГ. То же самое касается, если попросить его что-то украсть и т.п. "Вы в ответе за тех, кого приручили" ©

Цитата Dsion ()
и каст заклинания
это-то я и обычным скриптом отследил... проблема именно с криками... квест, когда мы первый раз убиваем дракона, там есть "(Дополнительно: применить крик)"... я исковырял весь квест, но так и не понял, где там идёт отслеживание использования крика... в триггер-зоне, что ли?

"Всё слишком относительно, что бы утверждать столь однозначно..." ©

Aksyonov  Offline Сообщение №2780 написано: 18 Января 2018 в 20:01 | Отредактировано: Aksyonov - Четверг, 18 Января 2018, 21:32



914
Может вопрос очень простой но... как скриптом скрыть сразу несколько объектов?
Больше 40? Если писать в ручную по одному очень долго, и не удобно - Object.disable()

А ещё как промотать время скриптом - функция в игре когда жмешь по кнопке T?

Мой сайт - Сообщество - YouTube Канал - Группа Вконтакте
Lexo  Offline Сообщение №2781 написано: 18 Января 2018 в 21:47


Всепознающий мододел


211
Цитата Lexo ()
отслеживать использование Ту'ума
походу, я нашёл способ:
отслеживать, какой ту'ум экипирован функцией GetEquippedShout()
отслеживать анимацию крика функцией OnAnimationEvent("BeginCastVoice")

Пойду проверять... надеюсь, сработает...

Цитата Aksyonov ()
скрыть сразу несколько объектов
мне кажется, что только вручную... если, конечно, все объекты не находятся в одной зоне...

"Всё слишком относительно, что бы утверждать столь однозначно..." ©

Aksyonov  Offline Сообщение №2782 написано: 18 Января 2018 в 21:56



914
Цитата Lexo ()
мне кажется, что только вручную... если, конечно, все объекты не находятся в одной зоне...

А как используется зона? Сейчас просто решил вопрос подменой локации (Интерьера) С другими объектами которые мне нужно было убрать, но всё равно интересен способ с зоной? Можно по подробней чуть чуть, и да мне сейчас очень нужен скрипт что бы промотать время игровое - есть такой?

Мой сайт - Сообщество - YouTube Канал - Группа Вконтакте
Dsion  Offline Сообщение №2783 написано: 18 Января 2018 в 23:05 | Отредактировано: Dsion - Четверг, 18 Января 2018, 23:06



1219
Цитата Aksyonov ()
как скриптом скрыть сразу несколько объектов

Можешь посмотреть, как сделано в Hearthfire: есть один X маркер, который включается и отключается скриптом. А к нему через enable parent привязано сколько нужно других объектов, которые всегда включаются и отключаются вместе с ним. Ну и через FormList тоже можно. Примеры прямо на creationkit.com есть.

Цитата Lexo ()
квест, когда мы первый раз убиваем дракона

Там обычное OnSpellCast на алиасе игрока (MQ104PlayerScript). Весьма подозрительно, что у тебя оно не работает :)

Aksyonov  Offline Сообщение №2784 написано: 18 Января 2018 в 23:17



914
Цитата Dsion ()
А к нему через enable parent привязано сколько нужно других объектов

Уже пробовал - создал Xmarker выбрал объекты которые нужно скрыть и в Enable Parent каждого из
них указал на Xmarker, сам Xmarker скрыл скриптом - disable() - зашел а объекты связанные не скрыты =_=

Мой сайт - Сообщество - YouTube Канал - Группа Вконтакте
DarkVetal   Сообщение №2785 написано: 19 Января 2018 в 00:12



Aksyonov, в своё время добрые люди дали мне скрипты, с их помощью можно активатором включать или выключать предметы, или же включая одни предметы, выключать другие. Используются для подмены не горящих дров в камине на горящие с добавлением огня и дыма. Или просто расставить предметы в доме. Действует на людей и прочее (можно отключать лошадь или толпу фолловеров (делал отряд клонов, бегающих за Довакином)... Если интересует, скину с инструкцией...

Aksyonov  Offline Сообщение №2786 написано: 19 Января 2018 в 03:39 | Отредактировано: Aksyonov - Пятница, 19 Января 2018, 03:40



914
Цитата DarkVetal ()
Если интересует, скину с инструкцией...

Да было бы неплохо ))  DarkVetal, напиши в лс.

Мой сайт - Сообщество - YouTube Канал - Группа Вконтакте
DarkVetal   Сообщение №2787 написано: 19 Января 2018 в 10:32



Aksyonov, ок, но немного попозже, вечером например, ща нету доступа к скриптам. Если невтерпёж, можешь раскурочить мои моды и посмотреть, как там всё устроено. Все можно увидеть на примере камина или других предметах, работающих на кнопках.

Aksyonov  Offline Сообщение №2788 написано: 23 Января 2018 в 17:55



914
Цитата DarkVetal ()
Если невтерпёж

Да не я подожду, спасибо.

Добавлено (23 Января 2018, 17:55)
---------------------------------------------
Какой скриптовой командой можно заставить изменится стадию после пропуска
времени? Конкретно нужно после сна на любой кровати. Такое возможно?


Мой сайт - Сообщество - YouTube Канал - Группа Вконтакте
Dsion  Offline Сообщение №2789 написано: 23 Января 2018 в 20:56 | Отредактировано: Dsion - Вторник, 23 Января 2018, 20:56



1219
Aksyonov, а событие OnGetUp на игроке не срабатывает, когда тот встает? А там можно проверить, встал ли он именно с кроватки.

Aksyonov  Offline Сообщение №2790 написано: 25 Января 2018 в 17:49 | Отредактировано: Aksyonov - Пятница, 26 Января 2018, 08:44



914
Цитата Dsion ()
а событие OnGetUp на игроке не срабатывает, когда тот встает? А там можно проверить, встал ли он именно с кроватки.

За условие спасибо, а можно пример как все койки захватить - что бы стадия сменилось если игрок после допустим захода в тригер - если поспит после на любой кровати стадия изменился - слушайте был же квест где то с этим действием связан - если не ошибаюсь гильдия темного братства!? Точно - может там скрипт подглядеть - там тоже после получения записки вроде если поспать оказываешься теле портируешься в хижину можно и там посмотреть правильно понимаю? - В прочем а как в вашем примере использовать можно функцию OnGetUp?

Мой сайт - Сообщество - YouTube Канал - Группа Вконтакте
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)
Поиск: