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

Результаты поиска
Multigone  Offline  Сообщение №691 | Тема: Вопросы по скриптам Papyrus написано: 5 мая 2016, 17:04



832
Lexo



Multigone  Offline  Сообщение №692 | Тема: Тех. проблемы написано: 5 мая 2016, 17:14 | Отредактировано: Multigone - 5 мая 2016, 17:15



832
Можно как-то исправить редактирование спойлеров? А то теряются Tab'ы и порой, если в спойлере много разного bb-кода, после точечного исправления, когда точно ничего не должно повредиться, получается такая каша... Особенно, если есть цветной текст. Наблюдаю это уже давно. Firefox.




Multigone  Offline  Сообщение №693 | Тема: Какие у вас обои на рабочем столе? написано: 8 мая 2016, 20:57



832
А вот и мои. Клеил давно, но менять не хочу. По традиции, интерфейс прилагается.


Multigone  Offline  Сообщение №694 | Тема: Вопросы по скриптам Papyrus написано: 9 мая 2016, 18:51 | Отредактировано: Multigone - 9 мая 2016, 19:06



832
Lexo, похоже, дело обстоит так: после активации стола игра создает список всех доступных для снятия чар предметов. Поскольку это происходит одновременно с добавлением копий, то они уже не будут учитываться в первоначальном списке. После того, как чары с любого предмета будут сняты (возможно, также после зачарования любого предмета), список будет обновлен, и в нем появятся копии. Далее по накатанной - изучаем чары с копии, копия уничтожается, уничтожается первоначальный артефакт в инвентаре.

Что делать, чтобы копии попали в инвентарь ДО активации стола - пока хз. Возможно, попробовать перк Entry - Activate, как предлагал Dsion...

Цитата Lexo

повесил скрипт просто на игрока


Он не будет работать, т.к. предназначен исключительно для ReferenceAlias.

Lexo, новая версия. Итак:




Содержание перка:

1) Тип: Entry -> Activate. Отметить флаги: Run Immediately, Replace Default.
2) Условия: Target -> (S) (HasKeyword) (IsEnchanting) (==) (1.0)

Чтобы правильно повесить скрипт на перк, нужно в точности повторить следующие действия:

- повесить на алиас основной скрипт.
- открыть Entry перка и в поле Papyrus Fragment написать:
Код
akactor.kill()

- сохранить перк, нажав OK -> OK.
- открыть папку Scripts / Source и найти там свежесозданный скрипт. Он будет наименован как "PRKF_(EditorID перка)_(FormID перка).psc" (в моем случае это был PRKF__MGTTestPERK_031662DB.psc).
- открыть этот скрипт редактором текста и написать в конце:
Код
<Имя твоего основного скрипта> Property L Auto

... в моем случае это было так:
Код
;END FRAGMENT CODE - Do not edit anything between this and the begin comment
_TestSCPTREFA Property L Auto

- сохранить скрипт.
- СКОМПИЛИРОВАТЬ этот скрипт штатными средствами СК (через Gameplay -> Compile).
- открыть перк и в поле Papyrus Scripts заполнить Property L, указав твой квест и содержащийся в нем алиас, на который навешен основной скрипт. Нажать ОК.
- открыть Entry перка и в поле Papyrus Fragment написать:
Код
L.F(akTargetRef)

- сохранить перк, нажав OK -> OK. Сохранить мод.

PS: Оба скрипта являются неотъемлемой частью мода, что следует учитывать.
PPS: У меня все работает.
PPPS: На скрине под спойлером перепутаны предметы в листах, но в целях теста это не важно.
PPPPS: Долбаные bb-коды.


Multigone  Offline  Сообщение №695 | Тема: Вопросы по скриптам Papyrus написано: 9 мая 2016, 23:05 | Отредактировано: Multigone - 24 апреля 2020, 10:44



832
Lexo, скрин не показывает саму ошибку, там после (8, 2... есть еще текст.
Скорей всего, переменная L не содержит функцию F. Возможно, имя Property L выбрано неправильно (не соотв. имени осн. скрипта).

Lexo, а, еще кое-что: если тот перк можно выбирать в меню повышения уровня, то следующие элементы надо убрать из скрипта (с последующей компиляцией):

Код
Perk Property ActivatePERK Auto

EVENT OnInit()
    GetActorRef().AddPerk(ActivatePERK)
ENDEVENT
Я-то думал, что новая система снятия чар полностью заменяет старую, поэтому и перк добавлял игроку при инициализации алиаса.

Multigone  Offline  Сообщение №696 | Тема: Что слушаем? Тема закрыта, только для просмотра. написано: 12 мая 2016, 17:18



832

Multigone  Offline  Сообщение №697 | Тема: Вопросы по скриптам Papyrus написано: 13 мая 2016, 11:11 | Отредактировано: Multigone - 24 апреля 2020, 10:47



832
Lexo, в общем, я проверил два варианта:

1) OpenInventory(). Даже если игрок находится в скрытности, все равно открывается обычное контейнер-меню, как при осмотре трупа этого НПС (надеялся, что скрытность повлияет на режим меню).

2) Через такой фрагмент на перке Activation (условия - игрок в скрытности, цель в бою):


При активации выводится сообщение, мол, вас уже поймали, и меню не открывается.

Пока только такие идеи были.

Lexo, по поводу стрел - скорее всего, да, через OnHit(). Только скрипт должен быть на маг. эффекте заклинания, которое творится от имени игрока через опред. интервалы времени, действует в большом радиусе и игнорирует преграды.

PS: Вместо selfref надо использовать akAggressor, впрочем, все это нюансы.

Multigone  Offline  Сообщение №698 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 14 мая 2016, 07:54 | Отредактировано: Multigone - 14 мая 2016, 07:54



832
Neell, минутку...



О! Вижу! Актеру добавлена фракция CurrentFollower с рангом 0, когда нужно -1.

Multigone  Offline  Сообщение №699 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 14 мая 2016, 10:01



832
Neell, все, что посчитаешь нужным. Чем больше - тем выше шанс, что кто-нибудь подскажет что-нибудь.

Multigone  Offline  Сообщение №700 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 14 мая 2016, 11:19 | Отредактировано: Multigone - 14 мая 2016, 15:13



832
Neell, хм-хм-хммм... Интересно. Если ты говоришь, что актер следует за игроком сразу после подключения .esp, значит, он изначально имеет пакет Follow. Если пакет не указан у актера во вкладке AI, значит, актер сразу попадает в алиас квеста, где этот пакет есть. Остается узнать, что является причиной попадания туда. Как заполняется алиас? Он имеет такие же настройки, как в квесте DialogueFollower?

Кстати, хотелось бы знать, заполнял ли ты Property своих скриптов, а если да, то какими формами. Везде, где в Property указывается квест DialogueFollower или его алиас, вместо них нужно указывать свой квест / алиас.


; это комментирование и можно смело убирать?
Да. Можно не убирать, в скомпилированный скрипт эти строки не попадут.

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

Когда я делал своего, создал квест только ради 2 строчек диалога ("открыть меню тренировки навыка", "навык слишком высок").

Multigone  Offline  Сообщение №701 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 14 мая 2016, 16:42 | Отредактировано: Multigone - 14 мая 2016, 17:01



832
Цитата Neell

и галочки в Fill Type (вместо Specific Reference у меня Unique Actor и ID компаньона)


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

Еще, вот это вот:
Код
_0RossenFollowerScript Property _0RossenDialogue Auto
_0RossenDialogue.DismissFollower(5)

... эквивалентно этому:
Код
(GetOwningQuest() as _0RossenFollowerScript).DismissFollower(5)

Multigone  Offline  Сообщение №702 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 14 мая 2016, 18:53



832
Neell, если о файле, который появляется после архивации контента в .bsa, то это мусор. Скрипты добавляются в архив точно так же, как и все остальное. Исходники можно не ложить.

Multigone  Offline  Сообщение №703 | Тема: Вопросы по скриптам Papyrus написано: 15 мая 2016, 12:27 | Отредактировано: Multigone - 15 мая 2016, 12:34



832
Lexo,

1) Думаю, да. Но реализация может быть разной. Вот какие идеи, когда игрок в скрытности действует телекинезом на актера:
- он активирует его на расстоянии (процесс по умолчанию).
- он заставляет его выбросить случайный (не экипированный) предмет из инвентаря, который затем можно подобрать. Игроку наносится урон магии, скажем, 50 ед., или перезарядка Х сек. Нужен SKSE.
- открывается контейнер-меню для этого НПС. Первый предмет, который выберет игрок, выбрасывается из инвентаря актера (можно выбирать экипированное), меню закрывается и НПС переходит в состояние тревоги (если выбран экипированный предмет, то атакует). Нужен SKSE.

2) На пред. странице Dsion уже говорил про двери и заклинания. Есть еще вариант - искать ближайший референс указанного типа - FindClosestReferenceOfAnyTypeInListFromRef(). Но кол-во дверей и сундуков в сумме больше 400 (или около того), так что искать будет долго. Плюс, модные типы учитываться не будут. Не знаю, стоит ли оно того...

Multigone  Offline  Сообщение №704 | Тема: Вопросы по скриптам Papyrus написано: 15 мая 2016, 15:15 | Отредактировано: Multigone - 15 мая 2016, 15:16



832
Lexo, можно создать отдельное заклинание FF - Target Actor, длительностью 5с и условием "этого заклинания нет на актере". На телекинез повесить скрипт с постоянным апдейтом и кастом этого заклинания (цель не указывать). Тогда, как только игрок наведет прицел на актера, следующее заклинание в апдейте сработает и выполнит повешенный на него скрипт с Activate. Следующие 5с оно срабатывать не будет (типа кулдаун).
Конечно, было бы проще, если б скриптом можно было узнавать референс, на который смотрит игрок. Но я такой функции не нашел (плохо искал?).

Multigone  Offline  Сообщение №705 | Тема: Вопросы по скриптам Papyrus написано: 15 мая 2016, 17:15 | Отредактировано: Multigone - 15 мая 2016, 17:24



832
Dsion, как ты знаешь, в Form есть SKSE-событие OnCrosshairRefChange(), но если в момент запуска скрипта с ним игрок уже смотрит на к.-л. референс, то его получить не выйдет. Событие полезное, но не в том конкретном случае.

Lexo, а? Я бы не стал на одно заклинание накручивать много разных вещей. Ванильные тем и хороши, что они простые и игроку легко запомнить, что какое делает.
К тому же то, что ты предложил, уже есть в оригинале у крика... Эм, не помню название.
К тому же, первое уже содержит второе (т.е. до боя можно снять экипированное оружие).
К тому же, эта идея не слишком простая в реализации. Но если надо...

Multigone  Offline  Сообщение №706 | Тема: Вопросы по скриптам Papyrus написано: 16 мая 2016, 10:25 | Отредактировано: Multigone - 16 мая 2016, 10:26



832
Цитата Dsion

А в SKSE есть, но я не проверял её.


Честно говоря, здесь я не нашел. Может... даже как-то неудобно... эээ... как бы это лучше сказать... напишешь ее? :D

Multigone  Offline  Сообщение №707 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 16 мая 2016, 10:59



832
Lexo, можно так, как это сделано для эффекта PerkImpactStaggerPushFFAimed.

Еще можно сделать абсолютно разное действие в зависимости от того, с левой руки творится заклинание, с правой или с обеих. Для этого понадобится алиас игрока, SKSE-событие OnActorAction() и проверка GetAnimationVariableBool("IsCastingDual") для левой руки. Будет работать только для игрока.

Multigone  Offline  Сообщение №708 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 16 мая 2016, 17:21



832
Lexo, там скрипт отслеживает OnHit() от допустимых источников. Чтобы заклинание проходило проверку, его нужно добавить в mineOreToolsList. Как сделать, чтобы заклинание с Self могло творить другое заклинание, я уже говорил.

Multigone  Offline  Сообщение №709 | Тема: Вопросы по скриптам Papyrus написано: 16 мая 2016, 18:10



832
Lexo, в общем, почти реализовал третий способ воровства (как-бы) с телекинезом. Вот он:

1) Заклинание телекинеза (свиток тоже не забыть):





2) Вспомогательное заклинание (с др. стороны, это как раз основное заклинание):





Как работает: при касте телекинеза на актера открывается его инвентарь. Первый выбранный игроком предмет выбрасывается, игроку наносится урон магии 50 ед. за перенапряжение, создается шумовое событие амплитудой (от 10 + 10 за каждый 1 ед. веса выброшенного предмета + 50 за экипированный предмет, максимум 100; нужен тест события). Кулдаун 3с. Не проработана реакция дружественного НПС на такую кражу.

Что учтено:
- игрок не может положить предмет в инвентарь актеру или напрямую взять его оттуда.
- нельзя одновременно взять предмет телекинезом и копаться в инвентаре актера.
- если игрок просто закроет меню, не выбрав предмет, ничего не произойдет.

PS: Возможно, я что-нибудь забыл указать, т.к. сказывается недостаток времени. Как я и говорил, этот идея не слишком простая в реализации.

Multigone  Offline  Сообщение №710 | Тема: Что слушаем? Тема закрыта, только для просмотра. написано: 16 мая 2016, 18:28



832


Пойду-ка я уже...

Multigone  Offline  Сообщение №711 | Тема: Вопросы по скриптам Papyrus написано: 16 мая 2016, 20:48 | Отредактировано: Multigone - 16 мая 2016, 20:51



832
Lexo, вот это требует (чем заменить, хз):

RegisterForMenu()
TapKey()
GetWeight()

Я б не сказал, что совсем уж потрясающе. Единственное, что в скрипте ценного (и над чем я долго думал), это система возврата предметов, но я ее пилил еще давно, а сейчас просто чуть улучшил.

А, в первом спойлере нужно закомментировать Debug.Notification("+").

Multigone  Offline  Сообщение №712 | Тема: Вопросы по скриптам Papyrus написано: 16 мая 2016, 21:08



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

Multigone  Offline  Сообщение №713 | Тема: Вопросы по скриптам Papyrus написано: 24 мая 2016, 10:25



832
Holtof55, положение камеры можно менять с помощью SetINIFloat() и UpdateThirdPerson() (обе SKSE). См. скрипт Customizable Camera by Arindel.

Multigone  Offline  Сообщение №714 | Тема: Игра в которую вы сейчас играете написано: 27 мая 2016, 16:34



832
RE: Revelations 2.

Multigone  Offline  Сообщение №715 | Тема: Какие книги вы сейчас читаете? написано: 27 мая 2016, 17:03



832
Скотт Линч - Обманы Локки Ламоры.

Multigone  Offline  Сообщение №716 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 28 мая 2016, 15:44 | Отредактировано: Multigone - 28 мая 2016, 15:49



832
lit789, скрипт на "шлагбауме" не соответствует текущей задаче. Нужен новый.



PS: В референсе засова LinkedRef и LinkedFrom указывать не нужно. Дверь НЕ нужна.

Multigone  Offline  Сообщение №717 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 28 мая 2016, 20:00



832
lit789, да без проблем.

Цитата lit789

не работает скопированный вариант, магия какая то


После копирования нужно заново связывать дверь и засов в их вкладках LinkedRef, т.к. связи ведут на первоначальные объекты.

Multigone  Offline  Сообщение №718 | Тема: Вопросы по скриптам Papyrus написано: 2 июня 2016, 14:51



832
Aksyonov, если предметы квестовые (их нельзя выкинуть), то вот примерный скрипт на алиасы:


Код
Scriptname X extends ReferenceAlias

GlobalVariable Property MyGlobal Auto ; Новая глобальная, значение 0.

Event OnContainerChanged(ObjectReference akNewContainer, ObjectReference akOldContainer)
    if akNewContainer == Game.GetPlayer()
        MyGlobal.Value += 1.0 ; Считаем предметы.
    EndIf
    IF MyGlobal.Value >= 5.0 ; Пусть у нас 5 разных квестовых предметов.
        GetOwningQuest().SetStage(7) ; Нам нужно установить 7 стадию.
    Endif
EndEvent

Вместо глобальной можно использовать переменную скрипта квеста.
В общем, см. FreeformRiften14, правда, там немного по-другому.

Multigone  Offline  Сообщение №719 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 4 июня 2016, 21:37



832
baglebld, ссылка.

Multigone  Offline  Сообщение №720 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 5 июня 2016, 09:53



832
RanJin, CK -> Gameplay -> Settings -> iAVDAutoCalcSkillMax -> 9999 -> OK -> Save.

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





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