Вверх Вниз


Форум » Записи участника » Dsion [1268]
Результаты поиска
Dsion  Offline Сообщение №1231 | Тема: Вопросы по скриптам Papyrus написано: 09 Февраля 2020 в 13:12



1281
s1t1s, в общем-то, можно добавить включение (или спавн) НИП в скрипт последней стадии завершаемого квеста. Но, если это ванильный квест, а не твой собственный, то лучше так не делать.

Момент завершения другого квеста особо и не поймаешь (не могу вспомнить сповобов его поймать).

Можно сделать через SM Event: Change Location Event. И там выполнять проверку завершенности другого квеста.

Ну или поэкспериментировать со скриптами на самом НИП. Если для "отключенных" (невидимых) НИП вызываются ивенты типа OnCellAttach() , то это вообще зашибись.
Когда игрок заходит в локацию с "отключенным" НИП, то на НИП вызывается OnCellAttach, выполняется проверка завершенности другого квеста и, если квест завершен, НИП "включается" и становится видимым.

Dsion  Offline Сообщение №1232 | Тема: Вопросы по скриптам Papyrus написано: 10 Февраля 2020 в 22:07



1281
Истинно надежный способ предусматривал бы возможность того, что квест будет завершен командой в консоль :-P

Dsion  Offline Сообщение №1233 | Тема: Вопросы по скриптам Papyrus написано: 11 Февраля 2020 в 21:44



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

Dsion  Offline Сообщение №1234 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 13 Февраля 2020 в 02:10



1281
Vivern_Snake, в общем-то, есть скриптовая функция для отключения фаст травела:
https://www.creationkit.com/index.php?title=EnableFastTravel_-_Game
Но при некоторых обстоятельствах он может включиться обратно. Когда я делал для себя, я просто поставил вызов этой функции каждые 2 секунды и забил. Но в продакшен такой вариант, конечно, не пустишь.

Может, можно убрать само меню фаст травела? В моде, которые его отключает, часом нет swf файлов?

Dsion  Offline Сообщение №1235 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 19 Марта 2020 в 22:01



1281
dushavolka, еще, как вариант, можно оставить объект динамическим, а в описании мода написать:

Пожалуйста, не взаимодействуйте с этим предметом и не подбирайте его! Он должен быть статическим (просто декор), но я пока не научилась так делать! girlsad  Спасибо! Ня!

По-моему, выйдет мило.

Dsion  Offline Сообщение №1236 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 20 Марта 2020 в 00:18



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

Dsion  Offline Сообщение №1237 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 20 Марта 2020 в 12:37 | Отредактировано: Dsion - Пятница, 20 Марта 2020, 12:41



1281
Предложение MyPrism заключалось в следующем:
1. Загрузить CK. Если объект - часть какого-то мода, то не забыть загрузить и этот мод тоже.
2. Найти твой объект в большом дереве, что слева. Не конкретный референс в конкретной локации, а базовый объект. Если не получается, то можно найти референс в мире и посмотреть имя базового объекта. Открыть базовый объект.
3. Там указан путь к файлу 3d модельки (.nif). Надо его скопировать (или хоть просто записать).
4. Перейти в дереве в ветку статических объектов (по-моему, "static" или "static objects"). Создать там новый объект и прописать ему нужную модель. Или скопировать один из существующих и прописать модель.
5. Разместить референсы нового объекта в мире. Взаимодействие тогда точно отключится, а за физику - не уверен. Физика может определяться в nif файле, которые из CK не изменить, а изменить можно только левыми программами типа NifSkope.

Есть еще другой способ отключить взаимодействие (подбирание предметов, но не физику). Создаешь в CK новый Keyword с любым именем (типа BlockInteraction). Вешаешь его на объекты, для которых нужно запретить взаимодействие. А потом создаешь и даешь игроку Perk с BlockActivation и условием HasKeyword - наличие твоего кейворда.

Проверил бы, но у меня сейчас Скайрим и СК не установлены.
В общем, из NifSkope физику отключить точно можно. А перемещением объекта в раздел static - не уверен.

Dsion  Offline Сообщение №1238 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 31 Марта 2020 в 18:13



1281
Arclis, скорее всего, тупо прописано в Property. Попробуй найти этот скрипт в СК (на чем там он висит) и нажать Properties в контекстном меню.
Хотя, чисто теоретически, это проперти может изменяться из любого другого скрипта (в зависимости от уровня игрока или других условий).
В крайнем случае, можешь в строке RemoveItem вместо Cost просто прописать свою цифру и всё. Или создать свою переменную LowCost.

Dsion  Offline Сообщение №1239 | Тема: Вопросы по скриптам Papyrus написано: 04 Апреля 2020 в 17:57



1281
Я не видело ничего такого. Разве что проверять каждую секунду по таймеру.

Dsion  Offline Сообщение №1240 | Тема: Вопросы по скриптам Papyrus написано: 06 Апреля 2020 в 16:51



1281
Myprism, та чо там думать... Если мод уже привязан к SKSE, то тупо каждую секунду проверять. А если надо без SKSE, то да, через магический эффект и абилу с constanteffect:

Код
Event OnEffectStart(Actor akTarget, Actor akCaster)
    (akTarget as MyStateScript).OnSwimStart();
EndEvent

Event OnEffectFinish(Actor akTarget, Actor akCaster)
    (akTarget as MyStateScript).OnSwimStop();
EndEvent

Блин, администраторы форума уже два года кормят байками о переезде форума на новый движок, а код нормально вставить как нельзя было 5 лет назад, так и сейчас нельзя.

Dsion  Offline Сообщение №1241 | Тема: Вопросы по скриптам Papyrus написано: 10 Апреля 2020 в 22:43 | Отредактировано: Dsion - Пятница, 10 Апреля 2020, 22:45



1281
emelya8307, количество убитых - это ведь просто число. Никакой информации о том, кто именно убит, из него не выдоить. Если бы мне было нужно сделать именно то, что ты описал, то я бы заюзаз story manager и OnStoryKillActor.
Это позволит вызывать функцию каждый раз, когда игрок кого-то убивает. В функции проверяем, был ли убит один из "скриптовых" НИП (скорее всего, да, по формлисту). Если убит скриптовый НИП, то прибавляем единичку к какой-то переменной типа "количество_убитых_скриптовых_НИП". А алтарь потом отнимает от счетчика столько убийств, сколько указано в этой переменной. И сбрасывает переменную в ноль. Если всего убито 3, а скриптовых убито 2, то 1 останется на совести игрока.
Можно и без алтаря. Сразу отнимать 1, если убит скриптовый НИП.
Это всё, в общем-то, сделать легко, но для совсем новичка не очень легко. Я бы забил.

Если все-таки будешь делать, то первый шаг - это сделать квест, в нем скрипт с ивентом OnStoryKillActor и настроить SM (Story Manager), чтоб этот квест запускался при убийстве пофиг-кого и выводил сообщение.

Dsion  Offline Сообщение №1242 | Тема: Вопросы по скриптам Papyrus написано: 11 Апреля 2020 в 13:42



1281
emelya8307, мы обычно не трогаем ванильные записи (в т.ч. квесты, скрипты, алиасы), если нет нужды. Это может навредить совместимости мода и обновлению игры. Так что если делать через алиасы, то, лучше, новый квест и новые алиасы. И один скрипт на все алиасы (именно один и тот же, а не одинаковый).

Dsion  Offline Сообщение №1243 | Тема: Вопросы по скриптам Papyrus написано: 13 Апреля 2020 в 18:14



1281
emelya8307,  хм, не очень понимаю, какие могут возникнуть проблемы с формлистом... В формлист из СК добавляешь нужных акторов (базовых). А в ивенте OnStoryKillActor(ObjectReference akVictim, ObjectReference akKiller, Location akLocation, int aiCrimeStatus, int aiRelationshipRank) потом нужно проверить:
1. Чтоб akKiller был игрок (Game.GetPlayer())
2. Чтоб akVictim был в списке допустимых жертв. Как-то типа myList.HasForm(akVictim.GetBaseObject())

И в конце функции может еще быть нужно остановить квест командой Stop()

Dsion  Offline Сообщение №1244 | Тема: Вопросы по скриптам Papyrus написано: 13 Апреля 2020 в 21:21



1281
Цитата emelya8307 ()
Эти данные где хранить?

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

Dsion  Offline Сообщение №1245 | Тема: Вопросы по скриптам Papyrus написано: 15 Апреля 2020 в 12:31



1281
myav, та чо там искать-то...

Сначала (на всякий случай) трижды перепроверяем, что equipitem() действительно не работает (не заставляет НИП применить яд). Для этого - максимально упростить скрипт, убрав всё сомнительное. Тот кусочек, что ты выложил, я проверить не могу т.к. это не полный скрипт. Можно временно заменить equipitem() на additem() и проверить, добавляется ли предмет в инвентарь именно НИП. Если additem() работает, а equipitem() - нет, то придется принять то, что equipitem() нам не походит.

Если equipitem() не работает и SKSE не доступно, то лично я другого способа заставить НИП применить зелье не знаю. Значит, нужно реализовывать яды иначе. Например, есть entry point у перка что-то типа "apply hit spell". Если выдать его НИП, то каждый раз при ударе оружием они будут накладывать на противника указанный маг. эффект. А в эффекте уже можно что-угодно делать. Например, удалять из инвентаря бутылку с ядром и наносить дополнительный урон.
Так же есть тип магического эффекта что-то типа "enhance weapon" - временное зачарование для оружия. Сам я его не юзал, но на вики написано, что работает. Эти варианты точно будут работать, но не смогут копировать эффекты, их силу и длительность именно с кастомных бутылочек, созданных игроком.

А если охота все-таки, чтоб эффекты яда в точности повторяли эффекты бутылочки, то в SKSE, вроде как, есть необходимые функии, но я их не юзал. Надо тестить, работают ли они и работают ли с кастомными ядами.

Добавлено (15 Апреля 2020, 12:38)
---------------------------------------------
Если equipitem() не работает с ядами для НИП, но работает для игрока, то можно еще попробовать временно передавать оружие игроку. Если яд работает только на один удар, то это будет бред полный. Но если (с помощью перка) переделать яды, чтоб он работал хоть на 50 ударов, то может иметь смысл. Хотя тут тоже свои проблемы: если передавать оружие скриптом, то может передаться не то, что нужно.


Dsion  Offline Сообщение №1246 | Тема: United Combat Mod - приветствуются энтузиасты написано: 15 Апреля 2020 в 13:40 | Отредактировано: Dsion - Среда, 15 Апреля 2020, 14:25



1281
Цитата myav ()
Ну а если тебе лень - качай игрушки и задроть)))) пока карантин не закончится.

ЧО?! ЛЕНЬ?! Да замочить Арканна на master сложности в 10 раз сложнее, чем написать мод для Скайрима!
Играть в игры - тяжкий труд! Нечего нас лентяями клеймить!
Продумывать тактику боя - это тебе не скрипты писать!
Вон позавчера мне Иноминат с Арториусом в Tales Of Berseria так зад надрали, что я воще прозрел.

Добавлено (15 Апреля 2020, 14:17)
---------------------------------------------
Я начинал новую игру в Скайрим очень много раз и, чтоб разнообразить игру, почти каждый раз делал мод, серьезно меняющий правила игры:
1. Убирал концепцию уровня игрока и уровня мира. С самого начала игрок может встретить противников от 1 до 100 уровня, а сила игрока определялась только уровнем навыков (этот мод так понравился, что без него больше не играл). Этот же мод замедляет прокачку всех навыков где-то раза в 4.
2. Отключал fast travel, но немного ускорил лошадей. Так себе.
3. Добавлял потребность в еде и сне. Тоже так себе.
4. Изменил принцип работы магики: значительно увеличил её количество всем расам, но почти убрал реген. Маги стали более опасными в начале боя, но стало возможно их "измотать". Так же делал и со стаминой. Было интересно. Приходилось спать часов 8, чтоб отрегенить ману.
5. Увеличил входящий по игроку урон в 4 раза, но сделал замедление времени во время боя для всех, кроме игрока. Типа "сверхскорость" и "сверхреакция". Стало возможно (и необходимо) уклоняться от стрел и магии. Тоже было весело.
6. Добавлял несколько "пассивных" умений, которые можно было включить или отключить, но которые, если включены, расходовали ману.
Например, постоянное медленное лечение. Или постоянный щит от магии. Поначалу маны и её регенерации хватало на поддержку их только 3-4 секунды, но потом прокачал количество маны, её реген и стало возможно держать реген здоровья постоянно включенным. Целью было создание чего-то типа "паладина", который носит тяжелый доспех, меч и щит, но которому магика так же важна, как ХП.
7. Играл с модами из пунктов 1 и 6 + на уровне сложности "мастер" + в режиме "одна жизнь". Поначалу, когда почти любой враг может тебя сваншотить, было весело. Но потом раскачал тяжелую бронь, блокирование, поднял ресист к магии до 85% и стало норм. Ну с 3-й попытки раскачал. До этого убивали и приходилось начинать заново.

В общем, все моды простенькие, но хитрые и каждый из них сильно изменял геймплей.
Хорошо будет, если и твой изменит. Сорян за оффтоп.

Dsion  Offline Сообщение №1247 | Тема: Вопросы по скриптам Papyrus написано: 15 Апреля 2020 в 18:04 | Отредактировано: Multigone - Вторник, 21 Апреля 2020, 22:22



1281
Ты же знаешь, что из ванильного папируса нельзя вызывать консольные команды, да? Лично я могу сделать плагин для skse, но это не считается.
И зачаровать оружие из папируса тоже нельзя. Хотя я мог что-то и забыть. Не стесняйся назвать функцию, если я о ней забыл.
О, да и получить список эффектов с бутылочки без SKSE нельзя...
Ну вот и ответь (самому себе): были ли твои "подсказки по концепту" полезными. Или человек только зря потратит время, пытаясь им следовать.

Я-то, если что, могу поставить 1000$ против 15$, что через "enhance weapon" или "apply hit spell" реализовать яд можно. Есть ограничения, но о них я предупредил...

Dsion  Offline Сообщение №1248 | Тема: United Combat Mod - приветствуются энтузиасты написано: 15 Апреля 2020 в 21:30



1281
Мало ли. Вдруг тебе какая-то идея понравилась бы. А у меня бац, скрипты готовые.

Dsion  Offline Сообщение №1249 | Тема: United Combat Mod - приветствуются энтузиасты написано: 15 Апреля 2020 в 22:39



1281
myav, я чужим модам не доверяю, как и ты.
И у меня есть два своих проекта...

Dsion  Offline Сообщение №1250 | Тема: Вопросы по скриптам Papyrus написано: 17 Апреля 2020 в 12:09



1281
Myprism, если говорить о ванильных скриптах, то они должны выводить сообщения только через Message, которые и локализуются. А Debug.* - только для отладки. Но ты об SKSE, да?

Dsion  Offline Сообщение №1251 | Тема: Вопросы по скриптам Papyrus написано: 17 Апреля 2020 в 15:09 | Отредактировано: Dsion - Пятница, 17 Апреля 2020, 15:12



1281
Я считаю, что лучше не иметь в коде скрипта строки, которые выводятся игроку.

1. Если скрипт ванильный (без skse или mcm), то используем Message. Тут больше нечего добавить.

2. Если скрипт на skse и mcm, то... я в этом не шарю. Но прописывать значение проперти в коде скрипта - все-равно не вариант. Пример Multigone надо исправить, как минимум, вот так:

Код
String Property MyArmorPart Auto
...
If (sPart == MyArmorPart)

Это при условии, что строковые проперти можно заполнять извне (как другие виды проперти) и при условии, что для них работает оператор == (я этого не проверял). И еще при условии, что локализация проперти не помешает работе оператора ==.

3. Если скрипт на skse и mcm, но описанные условия не соблюдаются, то можно создать какой-то предмет для каждой строки и использовать GetName().

Код
Armor Property MyArmorPart Auto
...
AddHeaderOption(MyArmorPart.GetName())
...
Костыль, конечно, жуткий. Но тогда строки, используемые в скриптах, будут переводиться через strings файлы.

4. Если все-таки обязательно надо прописывать текст именно в скрипте, то можно хоть вынести их в отдельный файл, чтоб локализаторам было легче:
Код
AddHeaderOption(MyLocalizedStrings.CuirassString()) ; CuirassString() - глобальная функция на отдельном скрипте MyLocalizedStrings
AddHeaderOption(MyLocalizedStringsInstance.CuirassString) ; MyLocalizedStringsInstance - инстанс скрипта MyLocalizedStrings, CuirassString - проперти на нем.

Или вообще полная дичь (не рекомендовано):

Код
AddHeaderOption(MyLocalizer.tr("Cuirass"));
А в MyLocalizer глобальная функция такого типа:

Код
string function tr(string s) global
    if (s == "Cuirass") return "Кираса" endif
endfunction
итд.
Похожий способ (на последний) используется в Qt(C++). Только там map, конечно, а не куча if блоков.

Dsion  Offline Сообщение №1252 | Тема: Вопросы по скриптам Papyrus написано: 17 Апреля 2020 в 18:12



1281
Myprism, я только об одном плюсе слышал: возможность сразу обнаружить то, что ты забыл поставить второй "=" в операторе "==". Но все-равно так очень мало кто делает.

А за переодевание... Если охота будет, то можно сделать его совместимым с любыми модами. Надо только подумать, как.
Ну, например, невидимую ауру вокруг игрока, которая будет накладывать на всех магический эффект со скриптом. Или не на всех, а только на teammate. Неоправданная трата ресурсов, да?
Я когда-то делал мод, чтоб спутники не вступали в бой и игнорирвали врагов, пока игрок в режиме скрытности. Тоже был нужен способ засовывать спутника в алиас, не зависимо от установленных модов. Да еще чтоб на Серану работало. Я тогда забил и просто добавил в диалог опцию "Пожалуйста, не выдавай наше присутствие.".

Dsion  Offline Сообщение №1253 | Тема: Вопросы по скриптам Papyrus написано: 26 Апреля 2020 в 15:35



1281
Я в свое время способа не нашел.
Разве что действительно создавать специальные аутфиты из LeveledItem. Там есть функции AddForm() и Revert().
Либо, как это делали большинство модов, устанавливать НИПам пустой аутфит и надевать на них все вещи вручную. Только после отключения мода они могут и голыми остаться т.к. оригинальный аутфит не вернется.

Dsion  Offline Сообщение №1254 | Тема: Вопросы по скриптам Papyrus написано: 26 Апреля 2020 в 16:40



1281
Если установить НИП "голый" аутфит, а потом надеть вещи функцией equipitem() с флагом preventunequip, то они, вроде, эти вещи больше и не снимают. Даже если отключить мод.
Я бы потестил оба варианта.

Dsion  Offline Сообщение №1255 | Тема: Вопросы по скриптам Papyrus написано: 28 Апреля 2020 в 14:10



1281
emelya8307, Myprism, там в первом табе настроек квеста был какой-то список, в который нужно вносить все глобалы, используемые для замены текста в квесте... Видели, да?

Dsion  Offline Сообщение №1256 | Тема: Вопросы по скриптам Papyrus написано: 30 Апреля 2020 в 11:13



1281
Myprism, да, вроде, копируются только простые типы: int, float, bool, string. А всё, что наследует Form, - указатели.
Только в Oblivion и только в OBSE была функция что-то типа CloneForm, которая позволяла создать временный клон формы и изменять его. Но этот клон даже не сохранялся в сейве.

Добавлено (30 Апреля 2020, 11:20)
---------------------------------------------
Вместо формлистов, есть еще массивы в скриптах. Их можно копировать и изменять. Там только ограничение на 128 элементов.


Dsion  Offline Сообщение №1257 | Тема: Вопросы по скриптам Papyrus написано: 06 Мая 2020 в 12:22



1281
Myprism, а индексы вещей в аутфите вообще с 0 начинаются или с 1?

Dsion  Offline Сообщение №1258 | Тема: Вопросы по скриптам Papyrus написано: 06 Мая 2020 в 14:09



1281
А, сорян, это в LUA с 1 (я на нем аддоны для WOW писал). Везде с нуля, а вот LUA почему-то решили пооригинальничать.
Не, без понятия, почему не работает скрипт.

Dsion  Offline Сообщение №1259 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 17 Мая 2020 в 13:19 | Отредактировано: Dsion - Воскресенье, 17 Мая 2020, 13:20



1281
Vittru1986, если собираешься писать более сложные квесты, хорошим началом будет раза три просмотреть все функции папируса на объектах всех типов:
https://www.creationkit.com/index.php?title=Category:Script_Objects
Уровень их знания не должен быть "я помню все функции", а должно быть что-то "а, да, что-то такое видел".
Потом все типы объектов в СК. С той же целью.
А потом, когда начинаешь реализовывать идею, сначала задаешься вопросом "а было ли что-то похожее в ванильном скайриме?". Если было, находишь и смотришь, как оно сделано.

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

Dsion  Offline Сообщение №1260 | Тема: Вопросы по Creation Kit (продолжение старой темы) написано: 23 Мая 2020 в 20:20



1281
Vittru1986, та чо там непонятно-то. Погляди, какие условия на соответствующих репликах. Когда-то с кем-то уже разбирались. По-моему, там требование - это чтоб голос был в каком-то FormList списке. Надо либо сунуть твой голос в этот список, либо изменить требования в самом квесте женитьбы.

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