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

Результаты поиска
AleksTirex  Offline  Сообщение №331 | Тема: Вопросы по скриптам Papyrus написано: 19 апреля 2014, 13:37


Архимаг


371
LordVadim, если НПС твои, то всё упрощается - вешай скрипт с хит прямо на НПС.
 
*********************
 
nepewka, добавлять актёрам перки нельзя, замени действие перков маг.эффектами с похожими результатами. Мне сейчас совсем нет времени заняться вопросом перков, возможно, потом займусь.
 
**********************
 
AveDarkness, сделай свойство-массив, назначь в нём все свои яблоки, и рендомно включай одно из них:
 
ObjectReference[] Property akAple auto ; при создании свойства ставишь галочку Array и назначаешь все свои яблоки
 
В теле/окне стадии квеста пишешь эти команды:
 
int irandom = Utility.RandomInt(0, akAple.Length - 1)
akAple[irandom].Enable()


При срабатывании стадии включится одно произвольное яблоко.

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


Архимаг


371
Shefdus, если накосячил в ESP и сохранил, то ничего страшного - возьми резервную копию своего ESP и замени порченный этим (расширение bak сотри). В папке ...\Skyrim\Backup находятся 10 последних сохранений ESP. Но а если ты уже после косяка более 10 раз сохранил свой ESP, то чистить/отменять сделанное можно в СК. Для этого при запуске СК когда ставишь галочку Active File, то после этого не нажимай ОК, а нажми Detalies... Откроется окно, в котором будут написаны объекты, которые ты в ESP изменял и создавал. Для отмены этих изменений выделяешь порченный объект и жмёшь Delete, потом уже ОК, СК загрузит твой ESP, сохрани.

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


Архимаг


371
Shefdus, это надо настраивать погоду - Weather. Но это довольно много позиций перекручивать. Проще использовать ENB. Вот лично я, использую только дефолтные файлы, без "рукоблудства" модмейкеров, только 3 файла: d3d9.dll, d3d9.fx, d3d9_SFX.dll, которые лежат в папке с игрой (Skyrim, не Data). Так получается не сильное затемнение, т.к. практически все (см. выше) стараются делать очень тёмными все помещения, типа "чем темнее, тем круче".
 
 
 
************************
 
sppassword, для начала отметь/выставь в своей расе в первой вкладке две позиции: в Morph Race выставь DefaultRace или NordRace, а в Armor Race выставь DefaultRace.

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


Архимаг


371
Скрипт вешается в свою абилку.

Принцип: при попадании заклинания на НПС срабатывает OnHit(), в котором проверяется: попало именно заклинание, кастовал не сам НПС, враждебное, школа разрушения. Далее считывается кол-во эффектов и записывается магнитуда каждого эффекта в массив (10 - этого хватит, т.к. больше 10 эффектов не бывает). Далее каждый такой эффект получает магнитуду 20% от номинала. Когда все эффекты изменены НПС кастует этим спеллом сам на себя, т.к. после попадания на НПС заклинания его уже бесполезно изменять, а тут НПС кастует уже изменённым заклинанием. Потом все эффекты этого спелла взвращаем в исходное значение.

Получается второй каст заклинания с силой в 20% от исходного, что и требовалось.
Работает только на заклинания и оружие (посохи), зачарование, яды не действуют.
 
float[] aamagnitude
 
Event OnEffectStart(Actor akTarget, Actor akCaster)
  aamagnitude = new float[10]
endEvent

 
Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
  Actor akSelf = GetTargetActor()
  if akSource as Spell && akAggressor as Actor != akSelf
    Spell akSpell = akSource as Spell
    if akSpell.IsHostile()
      int numEffects = akSpell.GetNumEffects()
      int index = 0
      While index < numEffects
        MagicEffect effect = akSpell.GetNthEffectMagicEffect(index)
        if effect.GetAssociatedSkill() == "Destruction"
          float magnitude = akSpell.GetNthEffectMagnitude(index)
          aamagnitude [index]= magnitude
          magnitude = magnitude * 0.2  ; ==20%
          akSpell.SetNthEffectMagnitude(index, magnitude)
        endif
        index += 1
      endWhile
      akSpell.Cast(akSelf, akSelf)
      Utility.Wait(0.2)
      index = 0
      While index < numEffects
        MagicEffect Reffect = akSpell.GetNthEffectMagicEffect(index)
        if Reffect.GetAssociatedSkill() == "Destruction"
          akSpell.SetNthEffectMagnitude(index, aamagnitude[index])
        endif
        index += 1
      endWhile
    endif
  endif
endEvent

 
*******************
В игре не проверял, но компилиться должно. (нужен SKSE)

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


Архимаг


371
nepewka, возврат значений работает. Этот скрипт - шаблон для создания своего скрипта. Т.е. показан сам принцип, а дорабатывать его тебе надо самому.
 
При попадании в цель заклинания могут срабатывать несколько OnHit(), и поэтому второй просто переписывает значения в массиве на уже изменённые (маленькие). Для подобных обработок надо вводить "заглушку", или переменной, или статусом, чтобы пока полностью не отработает один блок, второй бы не смог работать/обрабатывать.
Если введёшь такую заглушку, то всё будет правильно с магнитудой.
 
Далее думай над кастом. Возможно, попробуй создать под ногами НПС временный маркер и пусть он кастонёт по НПС. После каста сразу удаляешь этот маркер.
 
*************************
 
Вариант, как сделать простое "Уязвимость к магии" я не предлагаю, ведь если я правильно тебя понял, то тебе нужен процесс создания, а не сам результат. Поэтому играйся с новыми идеями, я лишь подскажу сами идеи, а уж реализовывать их надо тебе самому.  :)

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


Архимаг


371
Цитата nepewka

ты писал, что используешь свои Association item, для которых как то создаешь все необходимые, различные эффекты



Не понял, приведи пример или ссылку.

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


Архимаг


371
nepewka, так это было год назад. :)
Скорее всего, я говорил об архитектуре эффекта Cloak, вот в этом варианте я добавляю нужный спелл, который надо повесть на близкого актёра, т.е. делаю как бы пассивный мониторинг близкого окружения НПС/ГГ. В том втором спелле свой эффект и свой скрипт (если надо), в моём варианте тот эффект отдавал референс актёра, который подходил ближе 170 ед.
Это хорошо тем, что нет скриптовых поисков, OnUpdate(), циклов и прочего, всё работает в дефолтном режиме.

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


Архимаг


371
Цитата nepewka

Какой маркер можно взять, самый простой такой для использования под ногами нпц для спеллкастов? Можно какой нибудь бейсик скрипт увидеть для примера, самый что ни на есть простой?)



Static Property XMarker auto
 
float[] aamagnitude
bool bDone

 
Event OnEffectStart(Actor akTarget, Actor akCaster)
  aamagnitude = new float[10]
endEvent

 
Event OnHit(ObjectReference akAggressor, Form akSource, Projectile akProjectile, bool abPowerAttack, bool abSneakAttack, bool abBashAttack, bool abHitBlocked)
  if akSource as Spell && akAggressor as Actor && !bDone
    Spell akSpell = akSource as Spell
    Actor akSelf = GetTargetActor()
    bDone = true
    if akSpell.IsHostile()
      int numEffects = akSpell.GetNumEffects()
      int index = 0
      While index < numEffects
        float magnitude = akSpell.GetNthEffectMagnitude(index)
        aamagnitude [index]= magnitude
        if akSpell.GetNthEffectMagicEffect(index).GetAssociatedSkill() == "Destruction"
          magnitude = magnitude * 1.2  ; +=20%
        else
          magnitude = 0.0 ;
        endif
        akSpell.SetNthEffectMagnitude(index, magnitude)
        index += 1
      endWhile
      ObjectReference akMarker = akSelf.PlaceAtMe(XMarker)
      akSpell.Cast(akMarker, akSelf)
      Utility.Wait(0.3)
      index = 0
      While index < numEffects
        akSpell.SetNthEffectMagnitude(index, aamagnitude[index])
        index += 1
      endWhile
      akMarker.DisableNoWait()
      akMarker.Delete()
    endif
    bDone = false
  endif
endEvent


Жирным отмечено создание маркера под ногами цели и потом его удаление (чтобы не захламлять игровой мир).

Маркер кастует на цель, а цель выбирает не он, а ты сам, и прописываешь эту цель в команду каста.
 
************************
 
Перк "на всех" создать можно, но его ведь ещё и добавить надо всем, а вот с этим и есть сложность. :)
 
************************
В Settings много чего есть, надо искать и проверять. Воспользуйся фильтром, начни с magick, damade и т.д. Сами названия переменных говорят о их применении/назначении. Меняй значения и проверяй реакцию в игре.
 
************************
 
DoCombatSpellApply() работает только на актёрах, Cast() на любом объекте.
DoCombatSpellApply() добавляет спелл актёру, Cast() не добавляет спелл.
DoCombatSpellApply() и Cast() кастуют спелл на цель.
Через DoCombatSpellApply() можно заражать и отравлять актёра, через Cast() можно только заклинания кастовать.

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


Архимаг


371
Цитата nepewka

AleksTirex, благодарю! А какой маркер выбрать в Property?



XMarker  (это и есть его ID)  ;) Нажми Auto-Fill, он сам заполнится.

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


Архимаг


371
Цитата nepewka

уже разобрался. А мы можем одновременно поставить 3 маркера например у ног нпц или только 1 за раз?



Можно хоть сотню.  А какой смысл в трёх маркерах?

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


Архимаг


371
Цитата nepewka

Ах да, маркеры будут работать в любых условиях или только для ГГ? Допустим если мой саммон, грозовой атронах, кастит в нпц под влиянием этой абилки



Этот маркер сам по себе, и кастует туда, куда ты в команде укажешь - цель. Создать его можно под ногами любого НПС. Никаких условий или зависимостей нет. Полная свобода действий.

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


Архимаг


371
Цитата nepewka

В onEffectStart - понятно, он определит наш akTarget и будет по нему кастовать.  А если эвент onSpellCast? Надо написать ему в цели GetTargetActor?



facepalm
Прочитай мой пост на предыдущей странице про "События"/эвенты. Ты внимательно причитай и постарайся понять, что такое "Событие".
Событию ничего не надо прописывать, а это ещё и невозможно.

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


Архимаг


371
Цитата nepewka

То есть и akTarget, и GetTargetActor подойдут? Главное чтобы в игре наш прицел был наведен на нпс?



Причём тут прицел?
akTarget и GetTargetActor - они относятся только к маг.эффекту, который сработал/запустился на НПС. И ему абсолютно пофиг,куда ГГ или НПС направил прицел.
 
akTarget - это цель эффекта, а не ГГ/НПС. Т.е. на ком именно сработал данный эффект, это референс НПС, на котором висит этот эффект.
GetTargetActor() - это 100% тоже самое (!).
 
*******************
А вот боевую цель НПС (но не ГГ), на которого этот НПС нападает, можно узнать через akActor.GetCombatTarget(). Маркер - это статик, а не актёр, он не умеет думать и выбирать цели, поэтому надо заранее определить цель - референс актёра, в кого он будет стрелять.

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


Архимаг


371
nepewka, примерно так:
 



 
Вот только зачем надо разбивать одно заклинание на несколько частей? Смысла в этом нет никакого.

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


Архимаг


371
Цитата nepewka

Согласен. Единственный смысл в знаниях. Хочу подхватить как можно больше знаний с твоего кода

 

Для этого лучше всего - пишешь и делаешь что-то в СК, и идёшь смотреть в игру на результат. Потом поменял/переделал - и опять провеять. Главное - запоминай, что ты делаешь и какой от этого результат. Так всему и научишься.
 
***********
***********

[offtop]Я по "специализации" квестовик, мелкими модами я не занимаюсь - не интересно. Мне интереснее большое и сложное, с максимумом наворотов, нелинейности, уникальности и прочего. (те мелкие моды на MG - исключение, они сделаны исключительно по просьбе)
Глобальные изменения геймплея... а зачем? Добавить к дефолтным багам ещё и свои? Перекрутить настройки и циферки в перках и настройках - много ума не надо, это не интересно. А вот создать что-то совершенно новое, чего раньше не было, так это намного интереснее, на мой взгляд.

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


Архимаг


371
nepewka, а ты пробуй разные варианты. Тебе надо знать точный референс цели на момент каста. Поэтому попробуй взять этот референс непосредственно в момент каста: akSpell.Cast(akMarker, GetTargetActor())
 
***********
сергей007788http://www.creationkit.com/SetPlayerTeammate_-_Actor 
Первый true - включает режим "компаньона", т.е. вслед за ГГ спрятаться/присесть, вынуть оружие, показать инвентарь, носить одежду из своего инвентаря и т.д.
Второй true - включить статус командного актёра, т.е. он будет числится как командный актёр, типа компаньона и/или призванного НПС (в условиях эффектов, скриптах и прочем есть такие проверки).

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


Архимаг


371
Цитата nepewka

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



Почему не даст работать? Работать не будет только то, что внутри этой проверки:
 
Event ...()
  if bDone == false
    bDone = true
    ...
    ...
    bDone = false

  endif
  if akActor. ...() == ...
    ...Disable()
  endif
  iNext += 1

endEvent
 
Event ...другой_эвент()
  if akSpell...
    ...Enable()
  endif
  iNext += 10
endEvent

 
Не работает только то, что красное, т.е. то, что отделено жёлтым. Всё зелёное будет работать.
Пока переменная bDone не станет "правильной", до тех пор всё внутри этой проверки работать не будет, т.к. не выполняется условие проверки. На остальные части скрипта это никак не скажется.
 
*************
В скрипте под спойлером есть ошибка:
magnitude = magnitude / iNumCast - ошибка
magnitude = magnitude / iNumCastTMP - правильно

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


Архимаг


371
nepewka, ты подпиши все свои команды, что каждая конкретно делает, тогда тебе станет ясно, где ошибка.
While - это цикл, он выполняется, пока верна проверка условия, в твоём случае - бесконечность, он никогда не закончится. И более того, он даже не начнётся, ведь твой "бегемот" всегда равен нулю, а в условиях он должен быть == 1.
Все команды в скрипте исполняются по очереди сверху вниз, и только один раз, если нет команды повтора/цикла, а в цикле... читай выше.
 
И учти, событие старта маг.эффекта в скрипте может быть только одно (!), второго события в данном скрипте возникнуть не может по определению, т.к. не бывает два начала или два конца у одной вещи (слон не в счёт).

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


Архимаг


371
Антон, ты недавно выкладывал мод на крылья:
 

Как получить предмет:Только с помощью консоли "player.addspell xx000D62"
(где "хх" - номер мода в вашем списке загрузки).
(номер мода можно легко определить, набрав в консоли "help Animated",
и найти объект SPEL с названием "Animated Dragon Wings")
Снять его можно дугой командой: "player.removespell xx000D62".

(Примечание: знаю, не всем консоль нравится, но зато мод получился без скриптов и его можно без последствий устанавливать/удалять когда угодно)


Есть простой способ добавления спеллов и предметов без скриптов:
Делаешь простой одноразовый квест с автозапуском, делаешь там алиас, назначаешь на него ГГ, и добавляешь туда свой спелл (так же можно и предметы добавлять). И не надо никакой консоли и скриптов:)

AleksTirex  Offline  Сообщение №350 | Тема: Вопросы по скриптам Papyrus написано: 7 мая 2014, 22:44


Архимаг


371
anton, у перка есть только одно событие - это срабатывание самого перка (это точно так же, как в топиках, сценах и стадиях квеста). В скрипте перка пишутся команды прямо в теле, без всяких функций и событий.
Это событие возникает при активации чего-либо носителем перка, т.е. когда хозяин перка что-то активирует (естественно, если активация удовлетворяет условиям перка).
 
Это очень удобно для отслеживания действий ГГ - что он трогает/берёт/нажимает и т.д. Т.к. при этом не надо вешать на все потенциальные предметы свои скрипты, достаточно одного в перке.

AleksTirex  Offline  Сообщение №351 | Тема: Вопросы по скриптам Papyrus написано: 8 мая 2014, 19:11 | Отредактировано: AleksTirex - 8 мая 2014, 20:11


Архимаг


371
Цитата anton

;BEGIN FRAGMENT CODE - Do not edit anything between this and the end comment

;NEXT FRAGMENT INDEX 18

Scriptname _Anton_ADW_GlidingPerk Extends Perk Hidden

;BEGIN FRAGMENT Fragment_0

Function Fragment_0(ObjectReference akTargetRef, Actor akActor)

;BEGIN CODE

Debug.Notification("Current movement speed " + Game.GetPlayer().GetAnimationVariableFloat("Speed"))

Debug.Notification("на ком висит данный перк == " + akActor)

Debug.Notification("кого/что активировал хозяин перка == " + akTargetRef)

;END CODE

EndFunction

;END FRAGMENT

;END

;END FRAGMENT CODE - Do not edit anything between this and the begin comment



А должно быть так.  Разницу заметил?  ;)

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

*******
В данном типе скриптов точки с запятой ";" не работают как в обычных скриптах, и всё то, что после них тоже скрипту необходимо, он этим пользуется. Поэтому там ничего нельзя менять и удалять (!).
*******
Добавлять кнопкой Add такие скрипты нельзя, их надо создавать: в окне для кода ставишь точку с запятой ";" и компилируешь, закрываешь объект, опять открываешь и желательно переименовать на своё название/ID (кнопка Rename), закрываешь,опять открываешь свой перк/топик/сцену и т.д. и уже можешь писать команды и назначать свойства (если свойства назначить раньше,то они потеряются).
Иначе скрипт не "привяжется" к объекту.

AleksTirex  Offline  Сообщение №352 | Тема: Вопросы по скриптам Papyrus написано: 8 мая 2014, 20:36


Архимаг


371
Цитата AleksTirex

Добавлять кнопкой Add такие скрипты нельзя, их надо создавать: в окне для кода ставишь точку с запятой ";" и компилируешь, закрываешь объект, опять открываешь и желательно переименовать на своё название/ID (кнопка Rename), закрываешь,опять открываешь свой перк/топик/сцену и т.д. и уже можешь писать команды и назначать свойства (если свойства назначить раньше,то они потеряются).
  Иначе скрипт не "привяжется" к объекту.

Добавлено (09 Мая 2014, 00:36)
---------------------------------------------
anton, facepalm я сослепу и не заметил, что ты пытаешься повесить скрипт на "обычный" Entry Point, а скрипты в перке можно вешать только на Entry Point Activate. На других типах перков скрипт по определению не сможет работать, ведь события то они не "хавают", так и самой возможности работы такого скрипта попросту нет, не говоря уже об остальном. :)


AleksTirex  Offline  Сообщение №353 | Тема: Вопросы по скриптам Papyrus написано: 8 мая 2014, 21:29


Архимаг


371
anton, судя по всему, ты хотел сделать условия "если надеты крылья"?
Тогда замени HasKeyword на WornHasKeyword. Это будет == "Если на ГГ надета шмотка с кейвордом крыльев". (иначе ты проверял "есть ли у ГГ такой кейворд", а откуда же он возьмётся у самого ГГ?)

AleksTirex  Offline  Сообщение №354 | Тема: Анимация написано: 8 мая 2014, 22:16


Архимаг


371
Цитата Kris†a™

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



facepalm Мда... и где же ты нашла такую "кнопочку" в СК? В самом СК в разделе Race можно только смотреть на установленные файлы анимации, а вот "берите и прописывайте, заменяйте, удаляйте и т.д. " это по определению невозможно, не морочь людям голову. Там можно только указать новый бехавиор файл, а уже в самом этом файле надо менять пути к базовому "половому" бехавиор файлу. А в том файле надо прописать всю используемую анимацию НПС данной расы, все файлы и пути к ним. И так же всё это надо внести в бехавиор мастер-файл.
 
Сам СК этого не может делать (!). Без FNIS по любому не обойтись, если только сможешь вручную "вскрыть" данные файлы и поменять там все пути, а потом правильно обратно "запаковать" эти файлы. (в теории это возможно, хоть и не так просто)
 
И более того, без FNIS можно только сменить файлы анимации на другие такие же файлы.
Добавлять новую анимацию без FNIS нельзя вообще (!). Ведь для запуска файла анимации необходимо сперва назначить этому файлу именное событие (ID), иначе его просто нечем будет запускать. Далее это событие надо прописать в бехавиор мастер-файле. И ещё это событие надо привязать к нужному действию.
 
СК не умеет добавлять и изменять эти события, а равно он не умеет изменять какие либо файлы вообще, кроме ESP. (файлы скриптов тоже не сам СК делает/изменяет, хоть управление идёт и из него тоже)
 
Т.е. как либо менять анимацию только через СК нельзя, об этом можно забыть.

******************
Пы.Сы. Последующие посты похожи на вариант Соловьёва - "Зверь, именуемый кот."  ;)

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


Архимаг


371
Цитата anton

есть ли способ поменять игровую переменную "fJumpHeightMin" без скрипта (например как в перке, где некоторые параметры можно умножать на число) ?



Если не ошибаюсь, то в СК вообще нет доступа к этим настройкам, кроме прямого их изменения в соответствующем разделе.

А чем скрипт плох? Можно сделать имитацию перка через абилку на ГГ. В абилке (но не на эффекте) ставишь условия "Если одеты крылья". И на эффекте скрипт:

Event OnEffectStart(Actor akTarget, Actor akCaster)
Game.SetGameSettingFloat("fJumpHeightMin", fNewValue)
endEvent

Event OnEffectFinish(Actor akTarget, Actor akCaster)
Game.SetGameSettingFloat("fJumpHeightMin", fdefaultValue)
endEvent

Добавлено (09 Мая 2014, 16:14)
---------------------------------------------
anton, и даже больше можно сделать - добавить второй эффект (в абилке на нём добавить условие "если бежит") с новым скриптом, тогда при беге можно будет прыгать ещё выше, нежели при прыжке с места. (этот параметр ещё больше увеличить).

float fValue

Event OnEffectStart(Actor akTarget, Actor akCaster)
fValue = Game.GetGameSettingFloat("fJumpHeightMin")
Game.SetGameSettingFloat("fJumpHeightMin", fNewHighValue)
endEvent

Event OnEffectFinish(Actor akTarget, Actor akCaster)
Game.SetGameSettingFloat("fJumpHeightMin", fValue)
endEvent

****************
Переменные, кроме fValue пиши циферками, в виде переменных они написаны для образца.

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


Архимаг


371
Цитата anton

-> Как правильно сделать это заклинание переключатель, между этими 2-мя маг-эффектами, чтобы кастуя один и то же спелл Крылья то появлялись, то исчезали ?



Ты хочешь сделать всё на одном заклинании, без второго уничтожающего?
 
Крылья ты добавляешь скриптом? Тогда сделай добавление "по инверсу":
 
Event OnEffectStart(Actor akTarget, Actor akCaster)
  if akTarget.IsEquipped(крылья)
    akTarget.UnequipItem(крылья, true, true)
  else
    akTarget.EquipItem(крылья, true, true)
  endif
endEvent

 
Event OnEffectFinish(Actor akTarget, Actor akCaster)
  Utility.Wait(1.0)
  if akTarget.IsEquipped(крылья) && !akTarget.HasEffectKeyword(Keyword_эффекта_зелья)
    akTarget.UnequipItem(крылья, true, true)
  endif
endEvent

AleksTirex  Offline  Сообщение №357 | Тема: Вопросы по скриптам Papyrus написано: 9 мая 2014, 14:04


Архимаг


371
anton, так сделай имитацию экипировки - вместо одевания используй добавление/удаление абилки, на которой и будет этот арт-эффект.
Т.е. твоё заклинание будет включать и выключать (добавлять/удалять) абилку с арт-эффектом. Скрипт, в принципе, останется таким же, только изменятся команды (одеть на добавить и т.д.).
 
К сожалению, не всё и не всегда можно сделать только на дефолте, иногда без скриптов не обойтись.

AleksTirex  Offline  Сообщение №358 | Тема: Вопросы по Creation Kit. Старая тема написано: 15 мая 2014, 14:59


Архимаг


371
Цитата Trollhammer

А как сделать, что бы неписи не реагировали на атаки спутника? Допустим, делаю спутника, владеющего криком БС. Спутник кричит, задевает квестового или случайного NPC (животное в том числе), и начинается драка, которая решается только перезагрузкой последнего сохранения. Есть способы заставить NPC не реагировать на такие случайные атаки? На друг друга ведь они не реагируют.



Дай своему спутнику свои заклинания и крики, а не дефолтные.
Задублируй нужные заклинания и крики ( и естественно, их эффекты), во всех маг.эффектах в условия добавь (на самый низ), и дай эти заклинания/крики своему спутнику вместо дефолтных:
 
Subject - IsHostileToActor - Player == 1 (OR "или")
Subject - IsHostileToActor - ID_спутника == 1 (OR "или")

 
Тогда все заклинания и крики будут срабатывать только на враждебных НПС к ГГ или спутнику, на остальных они не подействуют.
 
*********
Тестировать надо на чистом сейве, иначе дефолтные заклинания так и останутся у спутника.

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


Архимаг


371
Цитата AveDarkness

Проблема в следующем, создал квест, протестировал все в порядке все работает, сделал второй квест, решил протестировать, загрузил чистый сэйв, и тут почему то у первого квеста не появляется стартовый диалог хотя он ни как не связан со вторым, ф5 ф9 не помогает, создавал SEQ файл реакций ноль.



Не правильно сделан квест. Скорее всего, проблема в алиасах, если они есть, то какой-то из них (или несколько) сделан неправильно - он не может заполниться при старте квеста, вот сам квест и не стартует.

AleksTirex  Offline  Сообщение №360 | Тема: Вопросы по Creation Kit. Старая тема написано: 3 июня 2014, 23:14


Архимаг


371
Цитата Myprism

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



Квесты с автозапуском не дают работать своим топикам/диалогам без перезагрузки игры. В остальном у них всё в порядке и на работу скриптов никак не влияет тип запуска квеста.
Скрипт для имитации автозапуска простой:
 
Event OnInit()
  if !IsRunning()
    Start()
  endif
endEvent

 
*************************
Для наложения на назгула статуса "враг всем" можно и не трогать фракции вообще, достаточно установить всем девяти назгулам флаг "враг". Для этого на них вешается простой скрипт (тип скрипта Actor):
 
Event OnInit()
  SetAttackActorOnSight()
endEvent

 
Event OnLoad()
  SetAttackActorOnSight()
endEvent


Тогда назгул всегда будет восприниматься любым НПС с любой фракцией как враг.
Несовместимостей нет ни с чем.

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





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