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

Результаты поиска
AleksTirex  Offline  Сообщение №301 | Тема: Вопросы по скриптам Papyrus написано: 4 апреля 2014, 20:49


Архимаг


371
Цитата LordVadim

Попробовал и так и так, эффект одинаковый. Вот скриншоты настроек моих обьектов, может там ещё что то не так ? :



Да, вот это поменяй на это:
 
Deactivator Type - DEACTIVATOR_NEVER
Solver Deactivation - SOLVER_DEACTIVATION_OFF
Quality Type - MO_QUAL_INVALID
Mass - 0.0000

Это будет имитацией статика, ведь тебе именно статик надо двигать? В этом варианте можно будет бегать по нему во время его движения.

AleksTirex  Offline  Сообщение №302 | Тема: Вопросы по скриптам Papyrus написано: 4 апреля 2014, 22:52 | Отредактировано: AleksTirex - 4 апреля 2014, 23:30


Архимаг


371
anton, попробуй мою лодку: http://rghost.ru/53777742  она то точно работает. Запускай на лодку TranslateTo() к дальнему маркеру с небольшой скоростью, и прыгай в неё. Конечно, она проходит сквозь другие статики, но на мобильные объекты работает с коллизией. Хотя, так и должно быть, ведь в самом Скайриме статик со статиком не могут взаимодействовать, движок на это не рассчитан/не умеет, да и не должен, на коллизию реагируют только мобильные объекты.

*******
anton, у меня в доме ещё и ковёр такой сделан, под ним люк скрывается, так когда его сдвигаешь, то наибольшую радость это доставляет кошаку, он на нём катается, очень прикольно смотрится. :)
Кстати, сам ковёр сделан вообще "активатор", а не моваблестатик, и коллизия двигается вместе с самим ковром.

*******
*******
Пы.Сы. Я бы мог выложить этот мод со всеми этими "наворотами", но там проблема - не могу найти девчонок на озвучку, мод то "компаньон", поэтому озвучка просто необходима, а так мод уже готов (осталось чуточку доделать одежду).

AleksTirex  Offline  Сообщение №303 | Тема: Вопросы по скриптам Papyrus написано: 5 апреля 2014, 13:16


Архимаг


371
Цитата anton

Вот только если просто стоять на статике во время движения, то ГГ начинает трясти как паралитика вверх-вниз. Но если в это время двигаться, то анимация остаётся нормальной. Наверное это так в игре "инверсная кинематика" ног действует, или скорее всего движок начинает считать, что я падаю и пытается проиграть анимацию приземления. (т.к. мой камень по диагонали вниз спускается). Интересно можно ли его будет как то обмануть ...



Можно уменьшить скорость камня. Можно на момент нахождения на камне и его движения привязать коллизию ГГ к камню SetVehicle(камень). (эту команду надо прописывать самой последней, иначе ГГ может не привязаться к камню) При этом горизонтальное перемещение ГГ будет только в плоскости камня, точнее в плоскости той точки на момент привязки. Т.е. бугры/ямки и другие неровности камня ГГ будет игнорировать.

AleksTirex  Offline  Сообщение №304 | Тема: Вопросы по скриптам Papyrus написано: 5 апреля 2014, 15:27


Архимаг


371
Цитата anton

интересно, не думал, что так можно, считал что для этого камень должен быть типа "лошадь" и иметь нод в НИФ-е для привязки, но попробую...



Подругой Вильи она не будет, она дружит только с Лидией, а если обнаружит присутствие любого другого компаньона - сразу уйдёт, в гареме жить не будет, да и делить своего ГГ с кем-то тоже не станет.
Далее по теме: в этом моде используется своя анимация и для её работы приходится привязывать НПС или ГГ к объектам. Так я просто создаю в нужном месте XMarkerHeading и к нему привязываю. Т.е. НПС можно привязать вообще к любому объекту. По окончании процесса просто удаляю этот маркер.
 
Так вот и ты можешь в верхней точке прыжка создать маркер и привязать к нему ГГ, так он не станет подать, пока не отвяжешь от маркера.
 
У драконов свой принцип передвижения, они не навмешами пользуются, а картой высот данной местности. Поэтому сам принцип драконов не применить к ГГ/НПС.
 
Как сделаны те моды - не знаю.
Можно применить для левитации/полёта простой (относительно) способ: привязать ГГ/НПС к маркеру, (или к модели дракона) и двигать этот маркер и ГГ командой TranslateTo(). Цель этой команде можно по разному задавать: или постоянно перемещать целевой маркер вперёд перед ГГ, или вычислять координаты по камере+углу_зрения+и т.д.
Нечто подобное у меня сделано для управления лодкой. (но без привязки к ней ГГ, это вариант я потом попробую реализовать)

ГГ-дракон, скорее всего сделан проще - командой переключается камера на дракона и отдаётся управление драконом игроку вместо персонажа ГГ, это всего пару дефолтных команд. Сам же ГГ визуально отключается и периодически переносится/подтягивается к дракону, для правильной загрузки локации. Возможно, так там и сделано, это один из вариантов, а как именно они сделали - я не знаю.

AleksTirex  Offline  Сообщение №305 | Тема: Вопросы по скриптам Papyrus написано: 5 апреля 2014, 16:38


Архимаг


371
Цитата anton

AleksTirex, попробовал я SetVehicle() - она привязала ГГ к камню (с низу) или к лодке (нормально), но в обоих случаях без возможности двигаться (хотя анимация движения есть но ГГ стоит при этом на месте)



Привязка идёт к главному ноду модели, и если надо привязать к другой координате, то надо изменить ниф: коллизию и видимую часть сдвинуть, т.к. основной нод сдвинуть без Макса нельзя.
 
Можешь попробовать вариант:
DisablePlayerControls()
SetVehicle()
EnablePlayerControls()
 
Так, по идее, ГГ должен начать двигаться после привязки. У меня ГГ двигается, проходит сквозь стены любого магазина... и т.д. :D

AleksTirex  Offline  Сообщение №306 | Тема: Вопросы по скриптам Papyrus написано: 5 апреля 2014, 21:41 | Отредактировано: AleksTirex - 5 апреля 2014, 21:46


Архимаг


371
Цитата anton

Есть ещё особенность: ГГ не прилипает к коллизии маркера (как было с "Movable Static"), а фиксируется на той высоте, на которой сработала команда SetVehicle().



Да, всё правильно, так и должно быть, я именно это и писал: "При этом горизонтальное перемещение ГГ будет только в плоскости камня, точнее в плоскости той точки на момент привязки." А возможная причина - отсутствие коллизии у объекта (маркера). Как мне кажется, движок при этой команде попросту назначает коллизию целевого объекта на привязываемый объект (актёру). Ведь у актёров нет своей коллизии, она "назначаемая" (в модели актёров нет коллизии), и при смерти её тоже нет.
Так вот, если у камня убрать коллизию вообще (из нифа), то возможно, ГГ сможет перемещаться как и в случае с маркером. Этот эффект можно тогда будет применить для любых "лифтов", и для твоего камня тоже. Хотя, тогда придётся и самого ГГ "транслировать" вместе с камнем, да и "умный" ГГ сможет выбежать за пределы лифта/камня, стены то его не остановят...

**************
nepewka, ничего не понятно. Объясни "на пальцах" то, что ты хочешь получит в итоге. (например, ГГ сильно ударили, а ему пофиг и здоровье не упало)

AleksTirex  Offline  Сообщение №307 | Тема: Вопросы по скриптам Papyrus написано: 6 апреля 2014, 19:05


Архимаг


371
Цитата nepewka

У него 5000 здоровья, при получении смертельного урона срабатывает эффект, добавляющий ему 5000 здоровья от 0. (желательно без задержек и выхода из боя)  И так ещё раз, после того как он якобы умрет.



Скрипт вешается на Алдуина (тип Actor) или на алиас с Алдуином (тогда добавить GetActorRef()):
 

int iNext
 
Event OnCombatStateChanged(Actor akTarget, int aeCombatState)
  if aeCombatState == 1 && akTarget == Game.GetPlayer()
    StartDeferredKill()
    RegisterForSingleUpdate(1.0)
  elseif aeCombatState == 0
    UnregisterForUpdate()
    ResetHealthAndLimbs()
    if iNext == 0
      EndDeferredKill()
    endif
    iNext = 0
  endif
endEvent

 
Event OnUpdate()  
  if GetAV("Health") <= 0
    if iNext == 2
      EndDeferredKill()
      UnregisterForUpdate()
      return
    else
      iNext += 1
      RestoreAV("Health", GetBaseAV("Health"))
    endif
  endif
  RegisterForSingleUpdate(1.0)
endEvent


AleksTirex  Offline  Сообщение №308 | Тема: Вопросы по скриптам Papyrus написано: 7 апреля 2014, 14:51


Архимаг


371
Цитата nepewka

Alex, чтобы контролировать кол-во добавляемого здоровья в скрипте вместо GetBaseAV("Health"), привязать int с числом?  скажем вместо базового здоровья,  добавить определенное число 3000, 4000



Можно и цифры использовать. GetBaseAV("Health") - это чтобы не писать цифры, а восстанавливать здоровье на 100% от базового, ведь неизвестно, какие моды как смогут изменить базовое значение здоровья. В таком варианте будет полное исцеление вне зависимости от изначального здоровья дракона. 

******
Число надо не int, а float.

AleksTirex  Offline  Сообщение №309 | Тема: Вопросы по скриптам Papyrus написано: 7 апреля 2014, 17:54


Архимаг


371
nepewka, а событие OnEffectStart в каком скрипте, в каком именно маг.эффекте?
Если в том эффекте, который наносит урон, то поздно давать уязвимость, эффект то уже отработал и нанёс урон.
Если в другом маг.эффекте, то сработает уязвимость, если она будет наложена на актёра раньше, чем эффект с уроном.


Как срабатывают эффекты в эвенте? По своей очереди или же одновременно?


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

************
nepewka, смени команду akTarget.DamageAV("FireResist", WeakFire), она не будет давать уязвимости к огню.
 
DamageAV - это повреждение параметра, т.е. его уменьшение.
Лучше кастонуть спеллом на уязвимость к огню, есть такие.

AleksTirex  Offline  Сообщение №310 | Тема: Вопросы по скриптам Papyrus написано: 7 апреля 2014, 18:16


Архимаг


371
nepewka, ID сейчас не помню. Ты открой СК и найди спеллы или эффекты с названием "Уязвимость к огню" (сортировка по столбцу с названиями, и далее по алфавиту легко найти).
 
Можешь даже и не кастовать отдельное заклинание, а сделать в основном/первом/скоростном маг.эффекте эту уязвимость. Тогда сделай длительность спелла/эффекта 2-3 сек. Ты просто открой дефолтный эффект с уязвимостью и посмотри как именно сделана такая уязвимость, и тоже самое сделай на своём эффекте.
 
Это точно будет работать и давать уязвимость раньше, чем файерболт, что тебе и надо.

AleksTirex  Offline  Сообщение №311 | Тема: Вопросы по скриптам Papyrus написано: 9 апреля 2014, 11:29


Архимаг


371
Цитата AveDarkness

Почему то скрипт не компилируется с функциями disable и enable. Компилятор выдает ошибку  Enable is not a function or does not exist.



 SGDoor.Enable()
 SGDoor.Enable().GetReference()
 
 MGEffect.Enable()
 MGEffect.Enable().GetReference()
 
Если MGEffect это маг.эффект, то работать не будет, а если физический объект, то будет.
 
Поскольку используются алиасы, то тип свойства Alias надо заменить на ReferenceAlias.
Если автор хотел вкл/выкл именно сами объекты и они не прописываются в алиасы, тогда так:
 
ObjectReference Property MGEffect  Auto  
ObjectReference Property SGDoor  Auto 
...
SGDoor.Enable()
MGEffect.Enable()
 ...

AleksTirex  Offline  Сообщение №312 | Тема: Вопросы по Creation Kit. Старая тема написано: 9 апреля 2014, 12:23


Архимаг


371
FreiEngel, твой мод только на сам дом? Тогда вскрой мод на "благословение" и посмотри пакеты сна: какие там настройки и условия.
НПС может не ложиться спать при старте пакета сна, если: собственность кровати чужая, если в пакете указана конкретная кровать или её параметры и они не совпадают, если на кроватях стоят некорректные кейворды (например есть FurnitureSpetial), если изменены модели кроватей (и неправильно сделаны маркеры фурнитуры), если сами кровати в СК сделаны неверно, если есть проблемы с файлами анимации сна, если в СК изменена анимация кроватей (т.е. анимация не может запуститься по её условиям), если в пакете сна указана цель не Bed, а алиас и он оказался пустой (не инициализирован по какой-то причине), что бы дети спали галочки на детской кровати Can Use Child быть не должно.
 
Если НПС не спят только в твоём доме, то анимацию можно не проверять. Если НПС ночью стоят столбом на месте, то запуск пакетов сна работает. Привязывать НПС к конкретной кровати лучше кейвордами или собственностью, это зависит от построения мода благословения.
 
Для поиска проблемы надо начать с отключения привязки и не обязательных условий на кроватях.

AleksTirex  Offline  Сообщение №313 | Тема: [DEM] Demonica: "Lilith" v1.6.1 написано: 9 апреля 2014, 13:14


Архимаг


371
@perture, к тебе технический вопрос: судя по двум скелетам, для НН ты просто переключаешь расу ГГ, в итоге переключаются скелеты. Так вот как происходит этот процесс, автоматически или вручную? Если автоматически, то как это срабатывает: по типу обуви или по другому признаку? И что будет, если я (игрок) надену свои (мной сделанные) туфли на каблуках? Т.е. как дела с совместимостью на подобную обувь.

AleksTirex  Offline  Сообщение №314 | Тема: [DEM] Demonica: "Lilith" v1.6.1 написано: 9 апреля 2014, 13:41


Архимаг


371
Kris†a™, понятно. И не эффективно, увы. Вешать на всю обувь скрипты - ни есть хорошо.
 
Если позволите, дам совет: не надо вешать скрипты на всю обувь, достаточно одного скрипта на алиасе, а вот назначать на этот алиас можно любую обувь, хоть по списку форм-листу, хоть по кейвордам, хоть по проверке нифа на нужный нод (HasNode("myNode")), да по любому признаку.
Последний вариант самый предпочтительный, т.к. этим проверяется сам ниф/модель обуви.
 
Kris†a™, вот ты сама моделишь и, возможно, знаешь, если в обуви на каблуках специфические ноды? Если есть, и есть какой-то стандарт на их названия, то это решит проблему совместимости. Если нет, то можно сделать "свой стандарт" на свою обувь, и тогда никакой адаптации не надо будет. Если надо адаптировать какую-то обувь под этот мод, то достаточно чуть изменить только ниф - прописать название нода по своему стандарту, и не надо тогда отдельных патч-модов и доп.скриптов.

Я так думаю, что @perture понял мою мысль о скриптах, а Kris†a™ о нифах.

AleksTirex  Offline  Сообщение №315 | Тема: [DEM] Demonica: "Lilith" v1.6.1 написано: 9 апреля 2014, 15:25


Архимаг


371
Последний вопрос: данный мод вообще не поддерживает ничего, что не адаптировано под него? Я имею в виду одежду.
 
Тогда для каждой шмотки нужен патч-мод, отдельный ESP, и для каждого мода, где используется какая-то одежда - тоже нужен патч. Это так? А модов/ESP/ESM в игре может быть только 255...
 
Вот я делаю мод, в нём по сюжету на ГГ надевается одежда - как с этим быть, нужна адаптация? И нужна таковая для всех подобных модов?
 
Если это так, то...

AleksTirex  Offline  Сообщение №316 | Тема: Вопросы по скриптам Papyrus написано: 9 апреля 2014, 17:49


Архимаг


371
nepewka, в одном спелле могут быть только однотипные эффекты. Если спелл типа "на цель", то и все эффекты там будут "на цель".
У тебя этот эффект "на себя" - переделай его "на цель". Точнее не его переделывай, а задублируй этот и уже крути дубликат, дабы не испортить дефолтный эффект.
А так же сделай, как пишет сергей007788.

AleksTirex  Offline  Сообщение №317 | Тема: Вопросы по скриптам Papyrus написано: 9 апреля 2014, 21:19


Архимаг


371
Цитата nepewka

Хочу точно определить кол-во хп у нпц, будь то охранник или вызванный огненный атронах. У меня 24 уровень, есть ли формула?



Полистай официальный сайт СК, там есть такая формула.
Можно и просто посчитать: возьми посмотри класс НПС, открой этот класс, там указано, сколько и чего повышается за один уровень. У каждого класса разное поднятие здоровья/магии/силы. Перемножь показатель/коэффициент здоровья на уровень НПС и прибавь стартовый показатель здоровья. Так же прибавь бонусы от способностей, если они есть.
 
Или узнай в игре через консоль: тырк по НПС и команда getav health
В скрипте почти так же: GetAV("Health")

AleksTirex  Offline  Сообщение №318 | Тема: Вопросы по скриптам Papyrus написано: 10 апреля 2014, 12:14


Архимаг


371
Цитата nepewka

можно ли с эффектом уязвимости сделать так, чтобы он увеличивал уязвимость цели с течением времени.



Можно. Читаем это: http://www.creationkit.com/%D0%9C%....2%D1%8B 
Смотри абзац Tapering, эти параметры отвечают за "временну'ю нелинейность": подъём и спад магнитуды по времени.

AleksTirex  Offline  Сообщение №319 | Тема: Вопросы по Creation Kit. Старая тема написано: 11 апреля 2014, 11:36


Архимаг


371
Цитата DarkVetal

Я вот хочу перенести некоторые агрегаты из Хертфайра (печь и мельница), но кроме моделей и текстур там есть ещё и анимация (совать лопатой пирожки в печь). Она привязана к модели или её нужно извлекать из другого места? (типа папка Animations) и как её привязать к модели?



Есть два способа:
1. использовать тот аддон как мастер и просто использовать тот агрегат, или сделать свой такой на основе того нифа с полным сохранением всех кейвордов.
2. если без мастер-файла, тогда надо сделать свою фурнитуру на том нифе, взять из того аадона анимацию (файлы), сделать свою анимацию (ID) по аналогии с анимацией из аддона.
Для создания своей анимации фурнитуры нужен FNIS версии не ниже 5.01 (лучше 5.02). Принцип создания бехавиора и обновления стандартный для FNIS.
 
Сам принцип запуска анимации для фурнитуры: при активации фурнитуры возникает "событие" ActionActivate - ActivateRootChar. Далее генерится событие анимации, чьё условие совпадёт с условиями объекта и НПС: тип фурнитуры, кейворды, статус НПС (GetSit) и т.д. И запускается файл анимации.
 
У фурнитуры должно быть не менее трёх файлов анимации: старт (сесть), ожидание/работа (сидеть) и конец (встать).
По сути, почти вся фурнитура - это стул (тип Sit), и различается только кейвордами, вот за счёт них и выбирается нужная анимация. Поэтому на своей фурнитуре должен стоять свой уникальный кейворд, помимо необходимых (FurnityreSpetial и т.д.).
 
НО! Добавленная анимация фурнитуры через FNIS очень глючная. Слишком большой шанс пропуска стартовой и финальной анимации (~20-50%), анимация старта и финиша пропускается и срабатывает только анимация работы (сидеть), т.е. смотрится довольно некрасиво.

AleksTirex  Offline  Сообщение №320 | Тема: Вопросы по Creation Kit. Старая тема написано: 11 апреля 2014, 12:33


Архимаг


371
DarkVetal, FNIS создаёт новый мастер-бехавиор файл взамен дефолтного, в который добавляет твою анимацию.
В общем, или использовать FNIS и тебе и всем игрокам с твоим модом, или забыть о любых новых анимациях. Третьего варианта не существует (почти, но FNIS нужен по любому).

AleksTirex  Offline  Сообщение №321 | Тема: Вопросы по скриптам Papyrus написано: 12 апреля 2014, 15:44


Архимаг


371
anton, "Idle Marker" на ГГ не работает, если не отобрать управление и не дать АИ (выполнять пакеты). ГГ по дефолту что-либо активирует только "мышкой".
 
"карта высот", а зачем? Она никак не поможет заставить летать актёров. Но есть вариант: делаешь дракона, а он может летать, и назначаешь ему свой скин (ты в Максе умеешь работать, поэтому сможешь сделать такое). Можно даже в процессе игры менять скины, тем самым можно "подменять" любого актёра на своего дракошу с заменой скина, типа это сам тот актёр полетел. Конечно, можно скриптами заставить "летать/левитировать", но это совсем не то.
 
**********************************

serdj_st, можно с SKSE применить событие OnActorAction : http://www.creationkit.com/OnActorAction_-_Form 
или без SKSE - OnAnimationEvent : http://www.creationkit.com/OnAnimationEvent_-_Form 
 
Unequip_Out - убрать оружие,
Weapequip_Out - вынуть оружие,
Magic_Equip_Out - экипировать магию,
Magic_UnEquip_Out - убрать магию.

*************************************
 
nepewka, RegisterForSingleUpdate - регистрация события OnUpdate() : http://www.creationkit.com/OnUpdate_-_Form 
 

AleksTirex  Offline  Сообщение №322 | Тема: Вопросы по скриптам Papyrus написано: 12 апреля 2014, 16:29


Архимаг


371
nepewka, можно: OnItemAdded, и далее проверка итема и добавление/применение на ГГ аналогов зачарования. Но это 100% чит (!), т.к. можно будет применить все зачарования из инвентаря, хоть сотню, хоть тысячу. Тогда проще TGM...

AleksTirex  Offline  Сообщение №323 | Тема: Вопросы по скриптам Papyrus написано: 13 апреля 2014, 12:04


Архимаг


371
anton, чтобы дракон мог летать, у него в пакете должна быть процедура Orbit, вот эта процедура и заставляет лететь дракона. (это типа Travel/Sandbox, но только для полёта)
 
Конечно, управлять "куда и как" должен лететь дракон нельзя, как в Sandbox нельзя указать "как и куда" должен двигаться/ходить НПС. Но можно динамически менять TargetLocation - центр полёта, тем самым как бы направляя дракона (через алиас, а его всегда можно сменит/изменить).

Добавлено (13 Апреля 2014, 16:04)
---------------------------------------------
***************************
 
У меня просьба ко всем - есть у кого сохранки: перед освобождением дракона в Драконьем пределе, и перед квестом соратников, где надо идти в Древний каирн и там соратник превращается в оборотня.
 
Сойдут любые расы и задействованные моды. Если у кго есть такие сохранки - сбросьте мне, пожалуйста.


AleksTirex  Offline  Сообщение №324 | Тема: Вопросы по скриптам Papyrus написано: 13 апреля 2014, 13:34


Архимаг


371
anton, СПАСИБО!
 
В Древний каирн ведёт Фракас за обломком секиры, там ГГ попадает за решётку и видит сцену, как Фракас превращается в оборотня и всех "Серебрянноруких" кусает. Вот мне надо сохранка до этого похода, чтобы проверить правильно ли мой компаньон работает в этом квесте, ведь там квест соратников подменяет компаньона на Фракаса (хоть мой компаньон и не использует дефолтный квест компаньонов, то терпеть не может конкурентов, типа ревнует).
 
*********
ГГ тоже может пользоваться пакетами, поэтому можно сделать как с НПС, так и с ГГ.

AleksTirex  Offline  Сообщение №325 | Тема: Вопросы по скриптам Papyrus написано: 13 апреля 2014, 16:23


Архимаг


371
Цитата anton

Просто запустить "SetPlayerAIDriven()" и пакет начнёт выполнятся ?



Не совсем. После этой команды назначаешь ГГ в свой алиас своего квеста (который к этому времени уже запущен) - AliasPlayer.ForceRefTo(Game.GetPlayer)
 
В этом алиасе есть окно для пакетов, в него в СК добавляешь свой пакет. Когда на алиас назначится НПС/ГГ, то заработает этот пакет на этом НПС/ГГ.
Сам же пакет делаешь собственностью этого квеста, тогда в параметре "цель" можно будет использовать алиас из этого квеста. Этот алиас так же назначается такой же командой, но только маркер, который и будет целью пакета (он создаётся у ГГ и дальше просто передвигается). Этот маркер можешь двигать как хочешь, и в теории (!) дракон должен следовать за этим маркером.
Управлять положением маркера при отсутствии управления персонажем просто - OnKeyUp / OnKeyDown, и дальше ты сам знаешь как.
 
По окончании "одраконивания" просто очищаешь алиас AliasPlayer.Clear(), удаляешь этот маркер и очищаешь его алиас, возвращаешь ГГ в своё состояние SetPlayerAIDriven(false), и меняешь расу.
 
***********
Как себя поведёт процедура Orbit на изменение координат цели я не знаю, но все основные процедуры адекватно на это реагируют.
 
****************
****************
anton, спасибо за сейвы!!! :)

AleksTirex  Offline  Сообщение №326 | Тема: Вопросы по Creation Kit. Старая тема написано: 13 апреля 2014, 16:41


Архимаг


371
nepewka, не мучайся, НПС используют только заклинания, крики и абилки. При этом крики добавляться скриптом не могут - словишь СТД.
Заклинания должны быть уровнем использования ниже, чем уровень НПС (Minimum Skill Level < Level_NPC) и надо выставить школу заклинания (для правильной работы АИ).
Тип каста должен быть только на руки: L, R, L+R.
Если заклинание возможно "с двух рук", то в CombatStyle должна быть галочка Allow Dual.
 
Если очень хочется дать НПС талант, то сделай заклинание на основе этого таланта и дай его НПС.

AleksTirex  Offline  Сообщение №327 | Тема: Вопросы по Creation Kit. Старая тема написано: 13 апреля 2014, 20:07


Архимаг


371
MemoriaVetusta, совершенно верно, конечно уровень школы. :)
С двух рук два снаряда или двумя руками один снаряд?

nepewka, а зачем? Хочешь армию клонов - прямо в игре сделай клон ГГ и играй за любого из них.

AleksTirex  Offline  Сообщение №328 | Тема: Вопросы по скриптам Papyrus написано: 13 апреля 2014, 20:15


Архимаг


371
anton, если алиас назначаемый, то необходима галочка Optional, а также пустая позиция SpecificReference (но не уникальный актёр).

Я обычно создаю маркеры через PlaceAtMe(), потом назначаю его в алиас как и НПС/ГГ (см. выше).
 
Пакет правильно.
 
**************
В скрипте: ГГ назначен правильно, маркер не очень, т.к. не понятно, зачем назначать movablestatic, да ещё и который находится чёрт знает где, здесь лучше использовать XMarker (создаёшь и назначаешь на алиас точно так же, как и с ГГ).
Если movablestatic нужен для чего-то, то пусть будет (и имей в виду, что подвижный movablestatic не транслируется).

Добавлено (14 Апреля 2014, 00:15)
---------------------------------------------
anton, и ещё, нельзя делать генерируемые/создаваемые алиасы, если они привязаны к назначаемым алиасам. Квест не запустится, ведь объект, у которого или в котором должен сгенерироваться новый объект/алиас не существует на момент старта квеста, и он из-за этого не может создаться, и алиас, соответственно, не может заполнится.


AleksTirex  Offline  Сообщение №329 | Тема: Вопросы по скриптам Papyrus написано: 18 апреля 2014, 12:39 | Отредактировано: AleksTirex - 18 апреля 2014, 12:45


Архимаг


371
Цитата LordVadim

AleksTirex, приветствую!  Можно как то сделать, чтобы дистанционное заклинание срабатывало на НПС у которого установлено свойство Ghost?  Или как то отслеживать его попадание в НПС?



Можно использовать возвратный принцип заклинания.

Делается алиас ГГ в своём квесте (или по другому вешается скрипт на ГГ), на него вешается скрипт.
Но сперва надо сделать свой Explosion. Он должен быть "невидимым", т.е. без визуализации, и с нужным радиусом дкйствия, чтобы радиус был не меньше предполагаемого срабатывания/расстояния от ГГ до цели, например 4000-9000.
В своём маг.эффекте заклинания против призраков добавляется этот Explosion, делается площадь (Area) срабатывания. Или в Projecticle этого маг.эффекта (делается свой Projecticle) добавляется тот свой созданный Explosion. Подойдёт любой вариант.

Explosion Property myExplosion auto  ; свой сделанный Explosion

Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
  if akSource as Explosion == myExplosion
    ObjectReference closestExplosion = Game.FindClosestReferenceOfTypeFromRef(akSource, Game.GetPlayer(), 1500.0)
    if closestExplosion
      Actor akActor = Game.FindClosestActorFromRef(closestExplosion, 50.0)
      if akActor.IsGhost()
       ; akActor - ближайший актёр*призрак к месту попадания снаряда
      endif
    endif
  endif
endEvent

**********************************
1500.0 - радиус обнаружения взрыва, т.е. максимальное расстояние от ГГ до цели, оно равно (<=) радиусу/размеру Explosion.
50.0 - радиус поиска ближайшего актёра от центра взрыва, настраивается по желанию.
***********************************

Принцип работы: при касте заклинания на цель Projecticle сработает/врежится в НПС, даже если тот Ghost, произойдёт взрыв и этот взрыв отработает на ГГ (событие OnHit()). Этим событием определим место взрыва, и найдём ближайшего актёра в точке взрыва. На поиск актёра не повлияют ни его состояние, ни какие другие факторы. Далее... уже то, что придумает автор что именно делать с этим найденным актёром.

AleksTirex  Offline  Сообщение №330 | Тема: Вопросы по скриптам Papyrus написано: 19 апреля 2014, 10:15


Архимаг


371
Цитата сергей007788

У меня такой вопрос, если в скрипте ввести переменную, int X, Затем при определенных события присваивать этой переменной нужные значения. Будут ли эти значения стабильны, то есть, не обнулятся ли они при респауне.



При респауне объекта переменные в его скрипте обнулятся/сбросятся.
Если надо сохранить данные, то лучше их хранить в невыключаемом квесте.
 
************************
 
LordVadim, да, действительно, хоть снаряды и "разлетаются визуально" при попадании в призрака (Огненная стрела, Ледяной шип), но взрыв происходит только на объекте, где останавливается снаряд, и это не призрак. Я этого эффекта раньше не замечал, каюсь.
 
Тогда есть другой вариант, но только уточни, это твои призраки или неизвестные и рендомные? И как ты насчёт SKSE?
 
В общем, принцип такой: на НПС вешается абилка со скриптом, там событие OnHit(). На призраках абилки работают, хит тоже срабатывает (проверил в игре :) ). При касте ГГ и попадании в призрака срабатывает хит в абилке НПС, и дальше проверка на агрессора и тип снаряда (если надо), и далее - любое нужное действие.
Раздавать абилки можно в СК, если НПС твои, а если рендомные чужие, то динамически. Сама раздача тоже может быть по разному: или постоянное сканирование, или старт сканирования при экипировки магии (тут тоже есть разные способы).

При этом снаряд не остановится и полетит дальше (ведь это призрак) и может попасть во второго, третьего и т.д. призрака. Если это не критично, то ничего далее делать не надо, если нужен только один первый призрак, то надо тогда вводить общую обработку хитов, например в алиасе ГГ.
 
Удобнее всего это всё делать с SKSE, но можно и без него. Если принцип понятен и подходит, то пробуй, возникнут сложности - распишу подробнее, и сами скрипты тоже.

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





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