Purru, что-то мне интереснее тебя мучить, чем просто давать готовое... *демонический смех*.
Каст заклинания или крик - это мгновенное событие (если ты его не поддерживаешь, конечно). А условие должно действовать какое-то время, чтоб собаки успели вернуться. Смекаешь? Если ты ищешь условие типа "игрок скастил заклинание Х меньше минуты назад", то не, такого нету. Придумай что-то другое.
Добавлено (03 Августа 2014, 20:06) --------------------------------------------- Lucuferg, если сохранить объект, а потом снова открыть, все-равно не акивно?
Сион выполняет спасбросок по воле против сообщения Ultima: НЕУДАЧА! (13 против класса сложности 20) Сион: ыыы?? чё? Сион накладывает Fox's cunning на Сион Сион накладывает Owl's wisdom на Сион Сион выполняет спасбросок по воле против сообщения Ultima: УСПЕХ! (21 против класса сложности 20) Сион: Ооо... Дошло...
Purru, есть условие IsWeaponMagicOut, которое можно повесить на Combat Override пакет, подавляющий бой. Только проверять его нужно на игроке, конечно. И проверять не "== 1", а "!= 1" (не равно один - оружие НЕ обнажено).
Я когда-то давно путешествовал с эльфийкой Брелиной. Усовершенствовал ей все пакеты, чтоб она умнее себя вела. Но все-равно была нужна возможность отдавать кое-какие команды. Тогда я сделал особое кольцо. Его можно было поставить на горячую клавишу. При использовании оно не надевалось, но показывало менюшку. А в менюшке команды для Брелины и кое-какие галочки. Можно было намного быстрее попросить её подождать, чем через диалог. И позвать к себе, даже если она далеко где-то. Вот... Ну вряд ли это кому-то интересно.
Чаще я предпочитаю навешать десяток пакетов на NPC с десятком условий, но чтоб создать иллюзию того, что они сами думают и принимают какие-то решения.
Siel88, можно сделать, чтоб NPC раздевался, когда заходит в душ или когда ложится спать. Или чтоб какая-то эльфийка каждое утро выбирала случайный наряд из своего гардероба, а перед сном надевала случайный комплект белья. Или не случайный, а зависящий от каких-то факторов. Или даже чтоб эта эльфийка раз в неделю ходила по магазинам и покупала себе новые наряды.
Нужна только фантазия + умение писать скрипты + умение создавать пакеты. Если базовые навыки по скриптам уже есть, но что-то не получается, то спрашивай... А если нету, то лично я не смогу помочь. Как показала практика, научить кого-то понимать программирования я не могу.
Myprism, правильно не кладешь исходники... Зато никто не напишет в комментах ничего типа: "Зачем автор использует всю эту возню с пакетами? Есть ведь вполне нормальные ивенты, которые срабатывают, когда актор ложится спать и встает. И не только в том случае, если они используют пакет, основанный на конкретной ванильной заготовке. Да и без SKSE можно было обойтись при желании. А при большом желании, можно было обойтись даже без редактирования ванильных акторов".
Ну если по-простому, то есть ивенты OnSit и OnGetUp. Они вызываются не только для кроватей, а для любой фурнитуры. Потому нужно еще сделать в них проверку GetSleepState().
Вот... А еще я придумал способ использовать любую Condition как ивент. Можно, к примеру, сделать функцию OnSwimStart и чтоб она вызывалась, когда NPC погружается в воду. Это при том, без SKSE из скрипта вообще нельзя определить, плавает ли NPC.
Ultima, точно Можно дать актору констант-эффект спелл с разными эффектами и условиями. Но условия должны быть на спелле, а не на эффектах. Тогда игра периодически проверяет Актора и вешает на него те эффекты, у которых выполняются условия. И на акторе срабатывает Event OnMagicEffectApply(ObjectReference akCaster, MagicEffect akEffect).
Insomniac, а действительно надо удалять спелл и добавлять обратно? Просто заблокировать его на время кд нельзя? Можно чтоб он не кастился или даже не надевался. Или чтоб надевался, но руки не светились и не кастился.
Dialogue Views можно и не использовать. Как я понимаю, они только для удобства (сомнительного, как по мне). В следующей вкладке (Player Dialogue) и так есть все бранчи, топики и инфо. Там и текст вписывается без проблем.
Indiana_Jones, Вы же в курсе про тот старый баг, когда диалог не появляется, пока игру не сохранить с подключенным модом и не загрузить снова? Это касается только Start Game Enabled квестов. Если в курсе и все-равно нет диалога, я посмотрю...
Добавлено (07 Августа 2014, 19:53) --------------------------------------------- Глянул esp. Диалог работает после сохранения и загрузки. Остальное не получится проверить без файлов скриптов.
Да всё он видимый... Даже цвет можно настраивать для удобства.
Добавлено (08 Августа 2014, 16:00) --------------------------------------------- Вернее, в CK видны. А в игре - нет, конечно. Возможно, и в игре будет виден, если убрать галочку Is Marker. Или не будет...
Добавлено (08 Августа 2014, 16:03) --------------------------------------------- Никогда бы не догадался, что у "коллизионного куба" есть коллизия :-D
Ты смотрел defaultActivateSelf? Он намного сложнее, чем просто "активировать себя, когда кто-то заходит"... Там какие-то дополнительные проверки, Property, которые надо заполнять и настраивать. Вот он:
Код
ScriptName defaultActivateSelf extends objectReference {Default script that simply activates itself when player enters trigger}
import game import debug
bool property doOnce = TRUE auto {Fire only once? Default: TRUE} bool property disableWhenDone = FALSE auto {Disable after activating? Default: FALSE} bool property playerOnly = TRUE auto {Only Player Triggers? Default: TRUE} bool property playerAndAlliesOnly = False Auto {Only player or Allies/Followers/Summons trigger? Overrides playerOnly if that's true as well. Default: TRUE} int property minLevel auto {Optional: If set, player must be >= minLevel to activate this}
Faction property PlayerFaction Auto Faction property CurrentFollowerFaction Auto Package property Follow Auto Package property FollowerPackageTemplate Auto
;************************************
auto State waiting Event onTriggerEnter(objectReference triggerRef) Actor actorRef = triggerRef as Actor ; check whether we care if the player is activating if(actorRef == game.getPlayer() || (playerAndAlliesOnly && IsPlayerAlly(triggerRef)) || (playerOnly == False && playerAndAlliesOnly == False)) ; also check level (if we even care about that) if(minLevel == 0 || game.getPlayer().getLevel() >= minLevel) if doOnce == TRUE gotoState("allDone") endif if disableWhenDone Self.Disable() EndIf ; per the description of this script, pass self as the activating ref activate(self) endif endif endEvent endState
bool Function IsPlayerAlly(ObjectReference triggerObj) Actor triggerAct = (triggerObj as Actor)
;Short-circuit this if this isn't an Actor at all, or if it's hostile to the player. if (triggerAct == None || triggerAct.GetFactionReaction(GetPlayer()) == 1) return False EndIf
;Is this a summon or one of the various types of player followers? return ((triggerAct.IsCommandedActor()) || \ (triggerAct.GetRelationshipRank(GetPlayer()) > 0) || \ (triggerAct.IsInFaction(CurrentFollowerFaction)) || \ (triggerAct.IsPlayerTeammate()) || \ (triggerAct.GetCurrentPackage().GetTemplate() == Follow) || \ (triggerAct.GetCurrentPackage().GetTemplate() == FollowerPackageTemplate)) EndFunction
Хотя если подумать... Я никогда не открывал двери скриптом. Наверное, не все двери можно открыть/закрыть простой активацией. Если не получится, ты напиши. А я тогда постараюсь вникнуть, как оно работает с ванильными.
JoeOwl, помнишь резонансные замки в Аркнгтамзе? Когда его пинаешь, он просто вызывает GetLinkedRef().SetOpen() где GetLinkedRef() - это дверь.
Можно было и MyDoor.SetOpen() или MyDoor.SetOpen(false) - закрыть.
И на двери никаких дополнительных скриптов нету. Но ты дело говоришь. Вряд ли ВСЕ двери и решетки могут быть закрыты таким образом. На некоторых скрипт может быть нужен.
Добавлено (08 Августа 2014, 18:27) --------------------------------------------- Подозреваю, что некоторые двери - это вообще объекты не типа "Дверь", а какие-нибудь, например, MovableStatic. На которых нужно воспроизвести какую-то анимацию, чтоб они открылись. Но для обычных объектах типа Door функция SetOpen() должна работать. Даже если игрок не может активировать дверь вручную.
Сначала сама идея:Имеется дом. Комнаты в нем должны быть закрыты решетками (пока что не дошел до этого). Имеется магазин. В нем несколько решеток, за которыми находятся кнопки. Чтобы нажать кнопку, требуется купить соответствующий ключик у торговки. После этого нужно открыть решетку и нажать кнопку, которая откроет соответствующую комнату в доме.
Хотя я и не понял, зачем вообще это всё... Но если нужно, чтоб это всё работало именно так, можно сделать другие ключи. С типом предмета не "ключ", а MiscItem. А скрипт на решетке будет проверять наличие этого "лже-ключа" в инвентаре.
Вот еще другой вариант. Диалог с торговкой НЕ открывает обычное меню торговли. Вместо этого, ей можно сказать "Дорогуша, толкни мне такой-то ключ", а скипт будет добавлять игроку ключ и отбирать деньги.
Народ, извините: я такой сложный вопрос задаю или такой тупой? Третий форум, где его бесконечно игнорят . Повторю - уж простите.
Сказал бы я, что думаю об этом NPC Editor, о его авторе, о .NET и о всех, кто на нем пишет...
1. Загрузи свой DLC в CreationKit. 2. Измени какую-то характеристику своей Серане и сохрани мод. Чтоб в esp попала только она. 3. Загрузи этот плагин в NPC Editor. Появится твой NPC.
Хотя лично я, лучше, удалю эту хрень вместе с .net, на котором она писана...