Форум » Записи участника [Multigone]

Результаты поиска
Multigone  Offline  Сообщение №991 | Тема: Neverwinter Nights 2 написано: 2 апреля 2022, 15:41 | Отредактировано: Multigone - 2 апреля 2022, 15:44



832
TwilightShadow, дружественные ловушки отмечены зеленым и по ним можно ходить. Но, если напарники пробежали вперед, их придется возвращать обратно, что чревато свободными атаками от врагов.
Вообще, управлять напарниками в бою - как собирать разбегающихся в разные стороны муравьев в кучку.

Multigone  Offline  Сообщение №992 | Тема: Что слушаем? Продолжение написано: 12 апреля 2022, 13:56 | Отредактировано: Multigone - 12 апреля 2022, 13:56



832

Multigone  Offline  Сообщение №993 | Тема: Вопросы по скриптам Papyrus написано: 18 апреля 2022, 21:42



832
Lexo,

; Нужен тест.
; Требуется SKSE.
; На алиас игрока.
; Добавляет локацию в форм-лист, если ее там нет.
; С момента запуска скрипта каждая локация единожды будет определяться, как новая, когда игрок будет заходить туда.
; Возможны задержки выполнения при большом количестве посещенных локаций (в таком случае лучше использовать несколько форм-листов).

FormList Property xFLST AUTO

EVENT OnInit()
    RegisterForMenu("Loading Menu")
ENDEVENT

EVENT OnMenuClose(string menuName)
   Location xLoc = GetReference().GetCurrentLocation()
   IF xFLST.Find(xLoc) < 0
      xFLST.AddForm(xLoc)
      Debug.Notification("Открыта новая локация! " + xLoc)
   ENDIF
ENDEVENT

Multigone  Offline  Сообщение №994 | Тема: Вопросы по скриптам Papyrus написано: 20 апреля 2022, 16:39



832
Lexo, а, эт я не знаю, не пользовался. Насколько я понял из описания, GetKeywordData() и SetKeywordData() позволяют получить и установить значение некой float-переменной, соотнесенной с кейвордом, имеющимся у этой локации (зачем? почему? непонятно). При этом, добавлять новые кейворды к формам, насколько я знаю, в процессе игры нельзя.

Действительно, можно запоминать какую-либо информацию об этой локации, шифруя ее значением float-переменной кейворда, при условиях:
1) У каждой локации, данные которой требуется запомнить, есть один или несколько известных кейвордов (предустановленных в СК), и
2) Дефолтное значение переменной кейворда (если его можно устанавливать из СК) не совпадает с числами, которыми предполагается шифровать информацию, и
3) Другие моды не управляют значениями этих переменных.

Multigone  Offline  Сообщение №995 | Тема: Вопросы по скриптам Papyrus написано: 21 апреля 2022, 15:49



832
nepewka, не знаю, что там в F4, в Скайриме это делается так (пример для Ability):

1) Создается заклинание с FF / Self / Area, на что-либо вешается скрипт с апдейтом Х сек., кастующим это заклинание игроком. На заклинании скрипт, добавляющий попавшим в зону действия целям это Ability.

2) Либо (требуется SKSE) берется локация, в которой находится игрок в текущий момент, перебираются все подряд референсы этой локации (не уверен, что временные референсы тоже учитываются, хотя, скорее всего, да). Тем из них, что являются актерами, добавляется Ability.

Ability, добавленное скриптом, имеет баг - когда актер выгружается из мира, а потом снова загружается, Ability формально остается, но актер теряет его Effects. Хотя это можно обойти.

Особенности работы скриптов в F4 можно обсудить в этой теме.

Multigone  Offline  Сообщение №996 | Тема: Вопросы по скриптам Papyrus написано: 22 апреля 2022, 14:29



832
nepewka, чтобы это работало, нужно взаимодействие между скриптом и заклинанием. Каковы особенности редактора в F4, не в курсе. Поэтому, если нужно, могу расписать версию для СК Скайрима.

Multigone  Offline  Сообщение №997 | Тема: Вопросы по скриптам Papyrus написано: 24 апреля 2022, 21:49



832
Lexo, плащ очень часто обновляется (период явно меньше 1 с). Это сделано для того, чтобы актер, попавший в радиус действия (который обычно оч. небольшой), сразу же почувствовал на себе его эффекты. Большой радиус плаща вызовет (значительное?) повышение нагрузки на игру из-за частых проверок множества актеров. Впрочем, это только мое мнение.

emelya8307, хороший способ, я даже никогда и не пользовался статистикой. В зависимости от того, что задумывалось делать при открытии новой локации, и что считается новой локацией, может как подходить только для новой игры, так и для установки мода при любом прогрессе игры.

nepewka, попробуй сперва с плащом.

Multigone  Offline  Сообщение №998 | Тема: Вопросы по скриптам Papyrus написано: 27 апреля 2022, 10:21



832
nepewka, https://www.creationkit.com/fallout4/index.php?title=Perk_Fragments

Multigone  Offline  Сообщение №999 | Тема: Вопросы по скриптам Papyrus написано: 27 апреля 2022, 14:20



832
nepewka, там же написано, что следует избегать Perk Fragments, если можно это сделать другим путем. Потому, что 1) Perk Fragments работают не для всех Entries, 2) Для Entries, не являющихся Activate, Perk Fragments будут срабатывать постоянно / непрерывно, чрезмерно загружая систему скриптов, 3) Желательно использовать Perk Fragments только для Entries - Activate, потому что код будет выполняться один раз при активации чего-либо, как в Скайриме.

Цитата nepewka

что я должен сделать, чтобы это сработало

Убрать первые 3 строки.


Multigone  Offline  Сообщение №1000 | Тема: Вопросы по скриптам Papyrus написано: 27 апреля 2022, 16:44



832
nepewka,

1) Вон же написано - тип переменной "текстовая" не соответствует ожидаемому "ActorValue". Все функции в F4, использующие Actor Values, имеют в качестве аргумента переменные с типом ActorValue. В отличие от Скайрима.

2) Думаю, нужно сперва написать ";" в тексте, затем скомпилировать, закрыть и заново открыть окно перка, в окне редактирования свойств скрипта добавить новую ActorValue Property Health, и только потом писать akActor.ModValue(Health, 10.0). Впрочем, я не знаю, не разбираюсь, не могу проверить.

Multigone  Offline  Сообщение №1001 | Тема: Вопросы по скриптам Papyrus написано: 27 апреля 2022, 18:58 | Отредактировано: Multigone - 27 апреля 2022, 19:24



832
nepewka, связать актера со скриптом, в котором (периодически?) будут проверяться блоки условий, соответствующих условиям всех требуемых Perk Entry, имеющихся у этого актера. В Скайриме, например, не все условия, что есть в СК Conditions, имеют аналоги в Papyrus.

V. 2: для каждого Perk Entry каждого перка создать копию, которая будет только Add Value твоего счетчика. Для этого надо найти такой тип Entry Point, который меняет какое-то неиспользуемое Actor Value, оставшееся от Скайрима (напр., Mod Armor Rating?), и значение которого можно узнать (GetAV). Нагрузка на проверку условий удваивается. Опять-таки, многие Entry Point имеют доп. вкладки с условиями, которых не будет у Mod Armor Rating. И все это в случае, если старые Entry еще работают.

Короче, не знаю. Мы тут Скайрим обсуждаем.

Multigone  Offline  Сообщение №1002 | Тема: Вопросы по скриптам Papyrus написано: 27 апреля 2022, 19:30



832
nepewka, нет. Activate добавляет выбор или доп. действие при активации предмета (игроком?). Как с помощью этого поменять AV у актера-НПС? Никак.

Multigone  Offline  Сообщение №1003 | Тема: Вопросы по скриптам Papyrus написано: 27 апреля 2022, 19:42



832
nepewka, а как работают фрагменты стадий? Не выполняют ли они свой код только при переходе квеста на эти стадии? А если у тебя такой перк, который, к примеру, увеличивает урон только в случае, когда у актера уровень здоровья ниже 50%? Здоровье - переменная, меняющая свое значение, следовательно, перк может как добавлять урон, так и нет. Тебе нужно будет отследить бонус или его отсутствие через стадию квеста.

Multigone  Offline  Сообщение №1004 | Тема: Вопросы по скриптам Papyrus написано: 27 апреля 2022, 20:12



832
nepewka, оптимальный способ, как я и говорил - когда необходимо узнать множители урона / прочего у актера, скриптом проверяются условия, соответствующие условиям требуемых Perk Entry. На основании проверок делаются выводы, какие Perk Entry в данный момент активны, и высчитывается множитель (по такой же формуле, что указана в Entry Point). Проблема, что не все условия СК можно проверить в папирусе. Проблема 2 в том, что бонус урона может предоставляться против опред. целей (вкладка условий Target), значит, чтобы узнать, применяется ли этот бонус, нужно еще и знать, какую цель атакует этот актер.

Multigone  Offline  Сообщение №1005 | Тема: Вопросы по скриптам Papyrus написано: 29 апреля 2022, 17:08



832
nepewka, посмотри OnTimer() и OnTimerGameTime(), похоже, это аналоги OnUpdate() и OnUpdateGameTime(), только лучше, потому что в одном скрипте можно использовать сразу несколько таймеров. Впрочем, не уверен.

Multigone  Offline  Сообщение №1006 | Тема: Вопросы по скриптам Papyrus написано: 29 апреля 2022, 21:33



832
nepewka, нельзя что? Код покажи-то.

Multigone  Offline  Сообщение №1007 | Тема: Вопросы по скриптам Papyrus написано: 29 апреля 2022, 21:41



832
nepewka, кхм, тебе нужно:

Эвент ОнТаймер (ИД_Таймер)

   Если ИД_Таймер == Т1

       Код 1

   ИначеЕсли ИД_Таймер == Т2

      Код 2


Multigone  Offline  Сообщение №1008 | Тема: Вопросы по скриптам Papyrus написано: 29 апреля 2022, 22:06



832
Цитата nepewka

всё равно не понимаю, чем ты считаешь это лучше апдейта. а если у них разные таймеры, как они будут работать ?

Может, и ничем не лучше, кроме того факта, что в одном скрипте могут выполняться несколько параллельных / независимых таймеров вместо одного. Работать они должны так, как показано выше.

Цитата nepewka

тогда как старый добрый апдейт насколько я помню код выполнял до конца несмотря на слетевший эффект

И OnUpdate() и OnUpdateGameTime() точно так же кончались, когда прекращал действовать маг. эффект. Только цикл WHILE c Wait() продолжает работать, пока условия выполняются, с сохранением всех переменных скрипта.


Multigone  Offline  Сообщение №1009 | Тема: Вопросы по скриптам Papyrus написано: 30 апреля 2022, 11:43



832
nepewka,

Spell MySPEL= Game.GetFormFromFile(0x001234, "MyESPModName.esp") AS Spell

; 0x001234 - FormID формы, первые 2 цифры всегда 0
; MyESPModName.esp - имя и расширение мода, содержащего форму

Multigone  Offline  Сообщение №1010 | Тема: Вопросы по скриптам Papyrus написано: 30 апреля 2022, 18:27



832
nepewka, не возражаю, доделывай. Вкратце, алгоритм: в алиас квеста для игрока добавляется абилити с эффектом констант-селф-плащ. Квест запускается стандартным скриптом (флаги runOnce, startGameEnabled, может что еще)...
EVENT OnInit()
IF !IsCompleted()
Start()
ENDIF
ENDEVENT

 Как выглядит и работает плащ, ты знаешь, а если нет, посмотри ваниль. На конечном эффекте плаща указываешь заметный шейдер (контроль работы) и скрипт "при старте этого эффекта дать перк". В условиях эффекта указать "если субъект не имеет этого перка". Подавляющее большинство вопросов по функционалу скриптов можно изучить в СК-вики.

Это все для Скайрима, исключая выдачу перка, что там для F4 - не в курсе.


Multigone  Offline  Сообщение №1011 | Тема: Вопросы по скриптам Papyrus написано: 30 апреля 2022, 21:58 | Отредактировано: Multigone - 30 апреля 2022, 22:05



832
nepewka, да,  хочешь, туда! Типа...
Start()
Game.GetPlayer().AddSpell(MyPlasch)

Но лучше так, как полагается:
Цитата Multigone

в алиас квеста для игрока добавляется абилити с эффектом констант-селф-плащ. Квест запускается стандартным скриптом

В референс алиас квеста, изначально заполненный игроком. Абилити можно добавить только в окно Spells алиаса. Скрипт со Start() вешается во вкладку Scripts квеста. Это ж все базовые вещи.


Multigone  Offline  Сообщение №1012 | Тема: Что слушаем? Продолжение написано: 6 мая 2022, 17:22



832

Multigone  Offline  Сообщение №1013 | Тема: Вопросы по скриптам Papyrus написано: 6 мая 2022, 17:34



832
Mgichko, попробуй следующее (не уверен, что подойдет для SE): в Data/Scripts/Source создай текстовый файл с указанным содержанием, затем переименуй его в TESV_Papyrus_Flags.flg
Flag Hidden 0
{
    Script
    Property
}
Flag Conditional 1
{
    Script
    Variable
}

Multigone  Offline  Сообщение №1014 | Тема: Что слушаем? Продолжение написано: 19 мая 2022, 15:46



832

Multigone  Offline  Сообщение №1015 | Тема: Вопросы по скриптам Papyrus написано: 31 мая 2022, 09:24 | Отредактировано: Multigone - 31 мая 2022, 09:53



832
valambar,

ScriptName _TESTNEW Extends ObjectReference

WordOfPower Property MyWord Auto ; заполнить в СК properties.

EVENT OnRead()
    Game.TeachWord(MyWord)
ENDEVENT

Multigone  Offline  Сообщение №1016 | Тема: Вопросы по скриптам Papyrus написано: 31 мая 2022, 13:58



832
valambar, а так:

ScriptName _TESTNEW Extends ObjectReference

WordOfPower Property MyWord Auto ; заполнить в СК properties.

EVENT OnRead()
    Game.TeachWord(MyWord)
ENDEVENT

EVENT OnEquipped(Actor akActor)
    IF akActor == Game.GetPlayer()
        Game.TeachWord(MyWord)
    ENDIF
ENDEVENT

Multigone  Offline  Сообщение №1017 | Тема: Вопросы по скриптам Papyrus написано: 31 мая 2022, 15:44 | Отредактировано: Multigone - 31 мая 2022, 15:59



832
valambar, в вики.

А также:
https://www.creationkit.com/index.php?title=Category:Script_Objects
https://www.creationkit.com/index.php?title=Keyword_Reference
https://www.creationkit.com/index.php?title=Operator_Reference
https://www.creationkit.com/index.php?title=Flag_Reference
https://www.creationkit.com/index.php?title=State_Reference
https://www.creationkit.com/index.php?title=Hotkey_reference

https://www.creationkit.com/index.php?title=Category:Papyrus_Language_Reference

Multigone  Offline  Сообщение №1018 | Тема: Вопросы по скриптам Papyrus написано: 1 июня 2022, 16:40 | Отредактировано: Multigone - 1 июня 2022, 16:45



832
valambar, общее правило для пустого окна скрипт-фрагментов диалогов: в одном из окон написать ";", скомпилировать, сохранить (закрыть) окно диалога, открыть его, добавить нужное Property (кнопка сбоку), стереть ";", написать желаемый код, в котором выполняются операции с этим Property. Скомпилировать.

Событий там нет, код выполняется в момент начала или конца диалога (это и есть события скрипт-фрагментов диалогов). Сам код будет выглядеть так:
Game.GetPlayer().AddItem(MyPropertyName, 1)
Также там есть доп. предустановленные переменные (говорящий).

Multigone  Offline  Сообщение №1019 | Тема: Преимущества различных изданий Скайрима написано: 7 июня 2022, 08:30 | Отредактировано: Multigone - 7 июня 2022, 08:35



832
6aJI_aMyT, и Skyrim LE, и Skyrim SE имеют возможность установки модификаций, но не одних и тех же, а заточенных под соотв. версию. Здесь рассуждения об их различии. Большинство популярных модов портировано на SE. Обычно в их описаниях указано, для каких версий подходит мод.

Multigone  Offline  Сообщение №1020 | Тема: Что слушаем? Продолжение написано: 6 июля 2022, 16:56



832

Форум » Записи участника [Multigone]
Поиск:





Ответ на жалобу смотрите в разделе жалоб