Перейти к содержанию

Takirell

Модмейкер
  • Постов

    928
  • Зарегистрирован

  • Посещение

Весь контент Takirell

  1. Ну, начнем с того, что на каждой копии базового объекта, скрипт выполняется отдельно. Естественно, что и значения переменных там тоже будут разные. Покажи свой скрипт.
  2. Ну да, нет другого способа. Выводить значения переменных можно примерно вот так: PrintToConsole "Значение величины - %g" sValue Где "%g" - числовое значение, "%n" - имя объекта, "%i" - его RefID. В документации к OBSE есть еще несколько подобных кодировок для передачи величин в текстовые значения. Ну, а "sValue" - переменная, в конкретном случае типа Short или Float.
  3. Поможет связка OBSE-функций "GetNumChildRefs" и "GetNthChildRef". Если дочерний объект один, то получит реф можно по типу: Ref rChild Let rChild := ObjectRef.GetNthChildRef 0 Где "0" - индекс первого такого объекта. Все дочерние объекты можно извлечь с помощью цикла while-loop.
  4. Фракция дает только модификатор расположения на указанное кол-во единиц. Если агрессия актера больше, чем уровень его расположения к другому НПС смежной фракции, то первый НПС будет атаковать второго. Я, как правило, когда создаю новую фракцию, то для сопартийцев всегда ставлю расположение в 200 единиц, а у самих НПС - агрессию 100. Ибо даже если кто-то кого-то зацепит в бою (пусть и не раз), то актеры не начнут друг друга валить. Стоит еще помнить, что фракции пишутся в сейвы и чтобы их обновить, нужно загружаться на более раннее сохранение, где актеры еще не были заспавнены в мире. У меня лично была такая проблема и приходилось вовсе отключать плагин для обновления этих параметров. Не берусь утверждать, что так будет везде и у всех, но такую странность стоит учитывать. Никакого штрафа не будет, если был атакован априори агрессивный актер. На счет оружия у личей - ничего не могу сказать, как-то не встречался с таким дефектом.
  5. Есть такой мод, FormID Finder. Так вот там, вроде бы, используется скриптовое заполнение пустой записки через String_Var'ы. Стоит смотреть в ту сторону.
  6. Это все специальные топики, которые находятся в квестах с ID "Generic". Там есть вкладки "Combat", "Misc" и так далее. Я уже не помню просто, можно посмотреть, как в оригинале сделано и создать на основе "ванили" свой собственный квест для конкретной расы (рас), залив туда диалоги. У самого руки никак не дойдут до этой темы.
  7. А что мешает воспользоваться банальной математикой? Зачем целых 3 переменных то? Short sDisp Let sDisp := NPCRef.GetDisposition PlayerRef*-1 (получаем полный уровень расположения и умножаем на "-1", чтобы получить отрицательное значение) NPCRef.ModDisposition PlayerRef sDisp (таким образом делаем расположение к игроку в 0 единиц) NPCRef.ModDisposition 200 (улучшаем отношение к нам на 200 единиц или на любое другое число). 100 единиц - не предел, расположение может быть и 500 и 1000, я лично тестировал это как-то раз. Просто отображается всегда, как 100. Для постоянного поддержания конкретного уровня расположения, в своем [CCE] я использовал следующий блок: Short sDispLvL if (NPCRef.GetDisposition PlayerRef < 100)      Let sDispLvL := 100 - NPCRef.GetDisposition PlayerRef      if (sDispLvL > 0)       NPCRef.ModDisposition PlayerRef sDispLvL       Return      Endif     Endif Этот модуль позволял делать так, что все компаньоны, зарегистрированные в системе, постоянно хорошо относились к игроку, даже когда тот начинал их атаковать. Кстати, стоит еще знать такой момент - когда игрок расчехляет свою валыну, отношение всех актеров к ГГ, в довольно большом радиусе, ухудшается на 10 единиц. Причем не важно, НПС это будет или кричер. И не играет роли - видят они игрока или нет, это работает на уровне движка, игнорируя поле зрения, дистанцию, препятствия и уровень обнаружения.
  8. ⚡ Вороне как-то Бог послал на вход 4 киловольта ⚡
    1. Показать предыдущие комментарии  2 ещё
    2. Daylight Dancer

      Daylight Dancer

      Мораль сей басни такова:
      А вот и нехрен было садиться на ЛЭП отдыхать!
    3. Ewlar

      Ewlar

      Так выход-то не послал.
    4. Пакость

      Пакость

      ээммм как-то бог на вход шлёт от 400от. А тут максимум электрик ;)
  9. Нет такого софта, за исключением TES4Gecko, но там нет и половины тех возможностей, кои представленный в xEdit. Даже близко.
  10. Takirell

    Лилит Мерунес

    Krot1234, Не реагирует, потому что мы ей еще не давали такой способности. Продолжение сюжета будет, как и все остальное, но когда - хз.
  11. Takirell

    Лилит Мерунес

    Krot1234, Там вся проблема заключается в скрипте-загрузчике самой Лилит. Код проверяет версии и ревизии, а в новом xOBSE они меняются каждый раз.
  12. Takirell

    Лилит Мерунес

    Раvyk, "Вроде как" или точно все установлено верно? Проблема еще может быть в новых релизах xOBSE, которые Лилит, в данный момент, не поддерживает.
  13. Takirell

    Лилит Мерунес

    SergGrey, С проблемой разобрались в ЛС.
  14. Takirell

    Лилит Мерунес

    Влад Дракула, Все виды авто-сохранений отключите.
  15. Takirell

    Лилит Мерунес

    Turlog, Разверните соответствующее поле мышкой, оно должно быть во всех версиях.
  16. Takirell

    Лилит Мерунес

    Izuki, Не, раз выдал ошибку, значит - OBSE есть, но вот другие плагины не были установлены или игра их просто не видит.
  17. Хочешь испортить отношения? Начни их выяснять.
    1. Показать предыдущие комментарии  3 ещё
    2. Ewlar

      Ewlar

      Можно просто не заводить отношения. Нет отношений - нет проблем.
    3. Атомный Белый

      Атомный Белый

      Если хочется начать их выяснять, то они уже паршивые.
    4. Ewlar

      Ewlar

      Точно.
  18. Corey_Taylor, Значит, пока не используйте новую. Я так задолбаюсь каждый раз делать перезаливы. Подожду, пока выйдет более-менее стабильный билд.
  19. Приветствую. Я давненько не садился за редактор и вообще, стараюсь избегать месседж-боксы, т.к раздражают они меня, но есть пример скрипта менюшки, которая собирает статы компаньона в едином окне. Там как раз используется метод объединения нескольких String_Var в один единственный и дальнейший его вывод на экран. Ниже в сообщении прикрепил, надеюсь, разберетесь. Скрипт меню.txt
  20. ScriptEffectStart должен будет срабатывать даже с нулевой продолжительностью самого эффекта, т.к технически, он все равно был инициирован. Да, я забыл, что OnEquip, скорее всего, просто не успевает сработать, т.к объект, на котором он "висит" - уничтожается. На самом деле, он иногда подтупливает даже на предметах, которые не убираются из инвентаря.
  21. Приветствую. Правильно, потому что функция "OnDrinkPotion" - это Event-Handler, который необходимо запускать при загрузке игры\сохранения из квеста или токена. Помимо всего прочего, Вам необходимо создать саму функцию на это событие, которая будет включаться при выпивании зелья. Пример самой функции: scn OnDrinkFunctionScript Ref rUser Ref rPotion Begin Function {rUser, rPotion} if (IsFormValid rUser == 0) || (IsFormValid rPotion == 0) ;Сразу завершаем выполнение функции, если хотя бы одна из форм не является валидной Return Endif ;Здесь Вы уже прописываете то действие\проверку, которое должно выполняться в вашем случае. End Теперь, необходимо задать при старте игры само событие. scn OnDrinkQSTScript Begin GameMode if (GetGameLoaded || GetGameRestarted) SetEventHandler "OnDrinkPotion" OnDrinkFunctionScript first::playerRef second::HealPotion Endif End Фрагмент фильтров "first::playerRef second::HealPotion" может быть проигнорирован и не указан, вместо этого, необходимые условия проверки выпившего и конкретного зелья можно задать в самой функции, наряду с проверкой валидности форм. Надеюсь, это Вам поможет.   Вообще, любое зелье - это тот же магический эффект, который прекрасно отслеживается функцией IsSpellTarget, где в качестве аргумента используется EDID самого зелья. Это при условии, если снадобье имеет продолжительность. Если же нужно просто проверить - было ли использовано зелье, тогда блок OnEquip, размещенный в скрипте самого зелья, Вам в помощь. Лично я бы использовал именно этот вариант, а не нагружал бы игру обработчиками событий.
  22. Убрать галочку Effect is Hostile в скриптовом эффекте ранга Self, а так же убрать визуальный эффект с него же.
×
×
  • Создать...