• Прежде, чем задать вопрос, пожалуйста, убедитесь, что такой вопрос не задавался раньше. Старайтесь описать суть вопроса как можно подробней. • Прежде, чем опубликовать ответ на вопрос, пожалуйста, убедитесь, что обладаете необходимыми для этого знаниями. Старайтесь cформулировать суть ответа как можно лаконичней. • При желании ответить в приватном порядке, пожалуйста, воспользуйтесь ЛС. • При желании поблагодарить ответившего, пожалуйста, воспользуйтесь кнопкой "+" полезного сообщения.
Сообщения, не относящиеся к вопросам по скриптам Papyrus, ответам на них или уточнениям, являются оффтопом и могут быть удалены.
Красное солнце Есть вопросы по скриптам Papyrus? Пиши не в ЛС, а в эту тему.
anton, у меня на озере, недалеко от Ривервуда в Полулунной лесопилке, есть лодка, на которой можно покататься по озеру. Можно с собой и подружек взять и покатать их. Лодка плавает, управляется, по ней можно ходить во время плавания и т.д. (но не ГГ, т.к. управление лодкой повторяет управление ГГ, а НПС могут по ней ходить) Т.е. всё работает. Вот только проблему столкновения с препятствиями и берегом я не стал решать, так и оставил - лодка их не видит.
Эвента на столкновение с коллизией нет, в бехавиоре другой принцип - он использует эвенты для запуска анимации, а не генерит само событие. Это событие/эвент с привязкой к объекту генерит движок, а бехавиор реагирует на него и запускает нужную анимацию на нужном объекте (точнее это движок запускает анимацию, ведь бехавиор - это в принципе как список анимаций, а не исполнительное устройство). Если движок сгенерил событие Weapequip_Out, то бехавиор запускает анимацию вынимания оружия из ножен. А вот почему движок сгенерил это событие - он сам знает (нажата кнопка №№, если событие на НПС, то при начале атаки или режима Alert и т.д.). Так же и с приземлением - движок определяет это дело, и выдаёт нужную команду/событие и т.д. И не факт, что можно найти и "выцепить" само событие приземления, в лучшем случае, можно засечь реакцию движка на это дело (например, запуск анимации приземления).
Высота прыжка действительно не зависит от анимации, это длительность воспроизведения/работы самой анимации зависит от высоты. Сама анимация прыжка длится около 10 сек. (точно не помню), и этого хватает для любой высоты. SpeedMult - это скорость перемещения НПС. В параметрах/скиллах есть JumpingBonus, но вот работает ли он... не знаю. akActor.SetAV("JumpingBonus", 100) - ??? я что-то разницы не замечал.
Добавлено (04 Апреля 2014, 21:09) ---------------------------------------------
Цитата anton
1. Коллизия у "статика" сама всё таки не перемещается. (перемещаю триггером со скриптом, командой Stone.TranslateToRef(Place, StoneSpeed))
Не Static, а MovableStatic. На статике и не будет работать, этот объект надо в моваблестатике прописать.
Поменял - всё равно не работает, коллизия осталась на месте Когда то читал на форумах, ребята пытались побороть эту проблему, но ни у кого так ничего и не вышло. Я удивляюсь как у тебя лодка работает ?
anton, попробуй мою лодку: http://rghost.ru/53777742 она то точно работает. Запускай на лодку TranslateTo() к дальнему маркеру с небольшой скоростью, и прыгай в неё. Конечно, она проходит сквозь другие статики, но на мобильные объекты работает с коллизией. Хотя, так и должно быть, ведь в самом Скайриме статик со статиком не могут взаимодействовать, движок на это не рассчитан/не умеет, да и не должен, на коллизию реагируют только мобильные объекты.
******* anton, у меня в доме ещё и ковёр такой сделан, под ним люк скрывается, так когда его сдвигаешь, то наибольшую радость это доставляет кошаку, он на нём катается, очень прикольно смотрится. Кстати, сам ковёр сделан вообще "активатор", а не моваблестатик, и коллизия двигается вместе с самим ковром.
******* ******* Пы.Сы. Я бы мог выложить этот мод со всеми этими "наворотами", но там проблема - не могу найти девчонок на озвучку, мод то "компаньон", поэтому озвучка просто необходима, а так мод уже готов (осталось чуточку доделать одежду).
Изменение репутации для пользователя LordVadim
LordVadimOffline
Сообщение №877
написано: 5 апреля 2014, 05:23
| Отредактировано: LordVadim - 5 апреля 2014, 05:28
Поменял - всё равно не работает, коллизия осталась на месте
anton, я вместо Static использовал MiscObject с подправленым, по совету Алекса, нифом. Все работает, коллизия перемещается, ГГ свободно ходит по объекту во время перемещения, единственно если объект перемещать слишком быстро (особенно вверх) ГГ может в него провалиться. MovableStatic не использовал, так как объект у меня создается в скрипте.
C MovableStatic сделал так, вытащил ниф файл нужного мне статика и в КС в окне редактирования подходящего MovableStatic поменял Ниф на Ниф статика, и все работает. В Ниф файле не вносил ни каких изменений. И вопросик. Можно ли как отследить количество неудачных попыток взлома сундука.
Вопрос можно. Как сделать так чтобы скрипт работал мгновенно. Без ожиданий, без очереди. Как повысить приоритет скрипта так, чтобы он выполнялся прежде всех других и выполнялся независимо от количества фпс?
Raser0919, присоединяюсь к вопросу. У меня мод запакован в бса-архив, и при высоких настройках графики скрипты либо тормозят, либо вобще не срабатывают: в моем новом моде свет должен срабатывать автоматически, но при запаковке в архив и выставлении ультра-графики всё тормозит.
AleksTirex, действительно работает ! это я сам был виноват. Я использовал сейв файл, но забыл что изменил скрипт. А ведь в этой **** игре если скрипт уже попал в сейв, то просто так уже он не изменится. И в итоге скрипт продолжал двигать старый обьект, а я этого в упор не замечал, пока форму ему не сменил на лодку (до этого они были одинаковые и стояли в одном месте).
Так что покатался я и на твоей лодке и на своём камушке Вот только если просто стоять на статике во время движения, то ГГ начинает трясти как паралитика вверх-вниз. Но если в это время двигаться, то анимация остаётся нормальной. Наверное это так в игре "инверсная кинематика" ног действует, или скорее всего движок начинает считать, что я падаю и пытается проиграть анимацию приземления. (т.к. мой камень по диагонали вниз спускается). Интересно можно ли его будет как то обмануть ...
Цитата AleksTirex
Кстати, сам ковёр сделан вообще "активатор",
А я заметил, когда изменил объект из обычного в "Movable Static", у него появилась возможность активации. Когда на него курсор наводишь, он пишет своё имя и предлагает нажать кнопку "Е" (взять). Правда ничего при этом не происходит )).
ПС: Эх, жаль, хотел бы посмотреть на катающегося на ковре кота ! Для компаньона озвучка и уникальное поведение - очень важны. Я за такими компаньонами "охочусь". )) Может попробовать тут на сайте кастинг провести ? наверняка найдутся таланты ! Или ещё вариант - можно попробовать связаться с ребятами, которые анимешки озвучивают ( анидаб / анимереактор ...). У них голоса есть просто потрясающие ! Может и не откажутся озвучить несколько строчек...
Вот только если просто стоять на статике во время движения, то ГГ начинает трясти как паралитика вверх-вниз. Но если в это время двигаться, то анимация остаётся нормальной. Наверное это так в игре "инверсная кинематика" ног действует, или скорее всего движок начинает считать, что я падаю и пытается проиграть анимацию приземления. (т.к. мой камень по диагонали вниз спускается). Интересно можно ли его будет как то обмануть ...
Можно уменьшить скорость камня. Можно на момент нахождения на камне и его движения привязать коллизию ГГ к камню SetVehicle(камень). (эту команду надо прописывать самой последней, иначе ГГ может не привязаться к камню) При этом горизонтальное перемещение ГГ будет только в плоскости камня, точнее в плоскости той точки на момент привязки. Т.е. бугры/ямки и другие неровности камня ГГ будет игнорировать.
интересно, не думал, что так можно, считал что для этого камень должен быть типа "лошадь" и иметь нод в НИФ-е для привязки, но попробую...
================================================================================== А тем временем я продолжаю собирать материал для будущей "шапки" :
* задача: подпрыгнуть высоко в воздух и там зависнуть, пока ... пока "шапку" не сниму
* решение: прыжок увеличил и падение вроде как отключил: --> "Game.SetGameSettingFloat("fJumpHeightMin", 200.0)" --> "Utility.SetIniFloat("fInAirFallingCharGravityMult:Havok",0)" но мой ГГ всё равно по тихоньку начинает падать вниз (медленно, но уверенно)
* вопрос: есть ли способ перевести ГГ в режим парения на месте (как у драконов) ? (чтобы не отключать силу притяжения всей игре) (может есть ещё какая то переменная, типа "bFlyingState", куда надо 1-ку записать ? ) (ведь есть же функция "GetFlyingState()", а вот "SetFlyingState()" я не нашёл)
И ещё интересные моды сегодня нашёл, связанные с полётом: "Flyable Dragon Races 3 - BURNING SKIES" и "Festive Flight - A Flying Mount for Christmas" (кстати в обоих коллизии при полёте прекрасно работают) Интересно №1, я так понял, что в моде, где ГГ-дракон, для полёта используется невидимый обьект к которому ГГ-дракон и направляется скриптом, выходит так он и летает ? (ну то есть не по настоящему, не с помощью движка игры)(но как то же он тут парит, и не падает) Интересно №2, как олень из 2-го мода набирает высоту ? Ему невидимую плоскость с коллизией подставляют под ноги ? (кстати в обоих модах есть упоминание фейк-поверхности, может это и есть решение для парения в воздухе...)
интересно, не думал, что так можно, считал что для этого камень должен быть типа "лошадь" и иметь нод в НИФ-е для привязки, но попробую...
Подругой Вильи она не будет, она дружит только с Лидией, а если обнаружит присутствие любого другого компаньона - сразу уйдёт, в гареме жить не будет, да и делить своего ГГ с кем-то тоже не станет. Далее по теме: в этом моде используется своя анимация и для её работы приходится привязывать НПС или ГГ к объектам. Так я просто создаю в нужном месте XMarkerHeading и к нему привязываю. Т.е. НПС можно привязать вообще к любому объекту. По окончании процесса просто удаляю этот маркер.
Так вот и ты можешь в верхней точке прыжка создать маркер и привязать к нему ГГ, так он не станет подать, пока не отвяжешь от маркера.
У драконов свой принцип передвижения, они не навмешами пользуются, а картой высот данной местности. Поэтому сам принцип драконов не применить к ГГ/НПС.
Как сделаны те моды - не знаю. Можно применить для левитации/полёта простой (относительно) способ: привязать ГГ/НПС к маркеру, (или к модели дракона) и двигать этот маркер и ГГ командой TranslateTo(). Цель этой команде можно по разному задавать: или постоянно перемещать целевой маркер вперёд перед ГГ, или вычислять координаты по камере+углу_зрения+и т.д. Нечто подобное у меня сделано для управления лодкой. (но без привязки к ней ГГ, это вариант я потом попробую реализовать)
ГГ-дракон, скорее всего сделан проще - командой переключается камера на дракона и отдаётся управление драконом игроку вместо персонажа ГГ, это всего пару дефолтных команд. Сам же ГГ визуально отключается и периодически переносится/подтягивается к дракону, для правильной загрузки локации. Возможно, так там и сделано, это один из вариантов, а как именно они сделали - я не знаю.
AleksTirex, попробовал я SetVehicle() - она привязала ГГ к камню (с низу) или к лодке (нормально), но в обоих случаях без возможности двигаться (хотя анимация движения есть но ГГ стоит при этом на месте)
AleksTirex, попробовал я SetVehicle() - она привязала ГГ к камню (с низу) или к лодке (нормально), но в обоих случаях без возможности двигаться (хотя анимация движения есть но ГГ стоит при этом на месте)
Привязка идёт к главному ноду модели, и если надо привязать к другой координате, то надо изменить ниф: коллизию и видимую часть сдвинуть, т.к. основной нод сдвинуть без Макса нельзя.
то надо изменить ниф: коллизию и видимую часть сдвинуть
Да, это я попробовал, но угадать куда улетит коллизия довольно сложно. Отношение где то 1 юнит смещения коллизии для 100 юнитов смещения меша. В общем, проще новую сделать. С EnablePlayerControls() тоже не работает. ГГ стоит в центре лодки, лодка едет, а он всё стоит... В общем пока без SetVehicle() лучше (по крайней мере если двигаться по прямой). В этом случае ГГ бегает по камню как угодно, только выпадает часто ; особенно от первого лица - даже по прямой, даже если не двигаться ! Но если использовать коллизию как у лодки, то все проблемы отпадают. ГГ цепляется ногой за одно из сидений лодки и прекрасно едет в любом из видов.
Подскажите, можно ли как нибудь получить эффект сбрасывания больших кулдаунов на таланты (eg berserker rage Orc) из TGM? (the god mode)
Я так понимаю в СК это нигде редактировать нельзя, остаются скрипты... Нужно получить эффект сбрасывания кулдаунов из консольной команды TGM и сделать с ним скрипт, чтобы появилась возможность использовать его без TGM.
AleksTirex, с маркером, ГГ и SetVehicle() всё получилось, и работает именно так как ты описывал - ГГ свободно двигается в плоскости, и проходит сквозь все обьекты кроме НПС. Есть ещё особенность: ГГ не прилипает к коллизии маркера (как было с "Movable Static"), а фиксируется на той высоте, на которой сработала команда SetVehicle(). (я ставил маркер по PlaceAtMe(ГГ) + MoveTo(ГГ,0,0,800) на высоте 800 юнитов над ГГ, но ГГ туда не поднялся, а остался на высоте прыжка)
Есть ещё особенность: ГГ не прилипает к коллизии маркера (как было с "Movable Static"), а фиксируется на той высоте, на которой сработала команда SetVehicle().
Да, всё правильно, так и должно быть, я именно это и писал: "При этом горизонтальное перемещение ГГ будет только в плоскости камня, точнее в плоскости той точки на момент привязки." А возможная причина - отсутствие коллизии у объекта (маркера). Как мне кажется, движок при этой команде попросту назначает коллизию целевого объекта на привязываемый объект (актёру). Ведь у актёров нет своей коллизии, она "назначаемая" (в модели актёров нет коллизии), и при смерти её тоже нет. Так вот, если у камня убрать коллизию вообще (из нифа), то возможно, ГГ сможет перемещаться как и в случае с маркером. Этот эффект можно тогда будет применить для любых "лифтов", и для твоего камня тоже. Хотя, тогда придётся и самого ГГ "транслировать" вместе с камнем, да и "умный" ГГ сможет выбежать за пределы лифта/камня, стены то его не остановят...
************** nepewka, ничего не понятно. Объясни "на пальцах" то, что ты хочешь получит в итоге. (например, ГГ сильно ударили, а ему пофиг и здоровье не упало)
Изменение репутации для пользователя nepewka
nepewkaOffline
Сообщение №892
написано: 6 апреля 2014, 04:10
| Отредактировано: nepewka - 6 апреля 2014, 06:53
Но есть новая задачка, для всего форума! Назовем это вопросом дня!
Итак задача:
Есть обьект - дракон Алдуин. Допустим у него 5000 здоровья.
Цель - теоритически, дать ему 3 жизни. Или 15 тысяч здоровья, путем скрипта.
Обьясню:
У него 5000 здоровья, при получении смертельного урона срабатывает эффект, добавляющий ему 5000 здоровья от 0. (желательно без задержек и выхода из боя) И так ещё раз, после того как он якобы умрет.
Цель - обойти, максимальное кол-во здоровья которое можно установить в Creation Kit'e любому актеру.
То есть, в ките допустим у алдуина будет 5000, а путем скрипта он при получении смертельного урона, будет получать всё свое здоровье назад и так 2 раза. Потом уже умирает, если мы сможем продамажить его на 15000.
Какое может быть решение?
Надеюсь меня все поняли, очень нужна помощь в решении вопроса
З.ы. В СК на простое изменение здоровья обьекту не направлять!
Цель - обойти, максимальное кол-во здоровья которое можно установить в Creation Kit'e любому актеру.
1 Можно дать перк мертвые души 2 Есть перк у гг там скрипт, когда у нпк становиться мало жизней у него востанавливаются 200 ед здоровья, скрипт соответственно подкоректировать, сам перк по мойму находится в ветке востоновления.
И вопросик не большой. Кто нибудь сталкивался с такой проблемой. Когда гг превращаешь в какую нибудь расу,
Target.SetRace(PolymorphRace), то камера почему то болтается в ногах. С веровульфами все нормально а с остальными, вот такая ерунда.
Ещё одно маленькое наблюдение для SetVehicle(): - при привязке к маркеру, команда TranslateTo() двигает только ГГ, но не Маркер. - при привязке к MovableStatic(лодка/камень), команда TranslateTo() двигает только этот Статик (вместе с ГГ), самого ГГ переместить ею уже нельзя. - при привязке к MovableStatic(ванильная черепушка), команда TranslateTo() вообще ничего не двигает, а ГГ валяется на полу как какая нибудь фурнитура.
И попутно вопросик: а может ли команда TranslateToRef() перестить к маркеру, который находится за пределами загруженных ячеек ? Например, если ГГ стоит в Рифтене, а маркер - в Вайтране, станет ли эта команда перемещать ГГ в Вайтран ?
И попутно вопросик: а может ли команда TranslateToRef() перестить к маркеру, который находится за пределами загруженных ячеек ? Например, если ГГ стоит в Рифтене, а маркер - в Вайтране, станет ли эта команда перемещать ГГ в Вайтран ?
Я пробывал с кораблем, когда ставил его далеко от гг он не плыл, ставил ближе, плыл. Тоже хотелось бы узнать как решить эту проблему.
У него 5000 здоровья, при получении смертельного урона срабатывает эффект, добавляющий ему 5000 здоровья от 0. (желательно без задержек и выхода из боя) И так ещё раз, после того как он якобы умрет.
Скрипт вешается на Алдуина (тип Actor) или на алиас с Алдуином (тогда добавить GetActorRef()):
Mod Incoming Damage = *Х (например, 0,25) Mod Armor Rating = *X
В результате входящий урон от оружия и заклинаний снижается в Х раз (во столько, во сколько раз требуется повысить его здоровье), соответственно, во столько же раз снижается броня, чтобы соотношение (входящий урон/броня) оставалось постоянным (иначе после изменений урон от оружия может быть меньше уровня брони). Mod Incoming Damage, если не ошибаюсь, применяется для любого входящего урона от любых источников (оружие, магия, яды, и т.д.), т.е. по сути, эквивалент повышения здоровья.
Nothing is...
Изменение репутации для пользователя nepewka
nepewkaOffline
Сообщение №899
написано: 7 апреля 2014, 08:13
| Отредактировано: nepewka - 7 апреля 2014, 08:14
А не проще добавить ему способность (Perk): Mod Incoming Damage = *Х (например, 0,25) Mod Armor Rating = *X
В результате входящий урон от оружия и заклинаний снижается в Х раз (во столько, во сколько раз требуется повысить его здоровье), соответственно, во столько же раз снижается броня, чтобы соотношение (входящий урон/броня) оставалось постоянным (иначе после изменений урон от оружия может быть меньше уровня брони). Mod Incoming Damage, если не ошибаюсь, применяется для любого входящего урона от любых источников (оружие, магия, яды, и т.д.), т.е. по сути, эквивалент повышения здоровья.
нет, я хотел именно количество здоровья ему увеличить, Incoming Damage - уж слишком примитивный обход. ;;
AlexTirex, как всегда
Добавлено (07 Апреля 2014, 12:13) --------------------------------------------- add:
Alex, чтобы контролировать кол-во добавляемого здоровья в скрипте вместо GetBaseAV("Health"), привязать int с числом?
скажем вместо базового здоровья, добавить определенное число 3000, 4000
Alex, чтобы контролировать кол-во добавляемого здоровья в скрипте вместо GetBaseAV("Health"), привязать int с числом? скажем вместо базового здоровья, добавить определенное число 3000, 4000
Можно и цифры использовать. GetBaseAV("Health")- это чтобы не писать цифры, а восстанавливать здоровье на 100% от базового, ведь неизвестно, какие моды как смогут изменить базовое значение здоровья. В таком варианте будет полное исцеление вне зависимости от изначального здоровья дракона.
****** Число надо не int, а float.
Форум » TES V: Skyrim » Мастерская » Вопросы по скриптам Papyrus (О скриптах Papyrus (Skyrim). Скриптеры не проходите мимо!)