-
Постов
928 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Новости
Статьи
Мемы
Видео
Форумы
Блоги
Загрузки
Магазин
Галерея
Весь контент Takirell
-
Ну, начнем с того, что на каждой копии базового объекта, скрипт выполняется отдельно. Естественно, что и значения переменных там тоже будут разные. Покажи свой скрипт.
-
Все верно. Это - механика и тут ничего не сделаешь.
-
Ну да, нет другого способа. Выводить значения переменных можно примерно вот так: PrintToConsole "Значение величины - %g" sValue Где "%g" - числовое значение, "%n" - имя объекта, "%i" - его RefID. В документации к OBSE есть еще несколько подобных кодировок для передачи величин в текстовые значения. Ну, а "sValue" - переменная, в конкретном случае типа Short или Float.
- 3 846 ответов
-
- 1
-
-
- как создать торговца
- oblivion cs торговец
- (и ещё 3 )
-
Поможет связка OBSE-функций "GetNumChildRefs" и "GetNthChildRef". Если дочерний объект один, то получит реф можно по типу: Ref rChild Let rChild := ObjectRef.GetNthChildRef 0 Где "0" - индекс первого такого объекта. Все дочерние объекты можно извлечь с помощью цикла while-loop.
- 3 846 ответов
-
- 1
-
-
- как создать торговца
- oblivion cs торговец
- (и ещё 3 )
-
Фракция дает только модификатор расположения на указанное кол-во единиц. Если агрессия актера больше, чем уровень его расположения к другому НПС смежной фракции, то первый НПС будет атаковать второго. Я, как правило, когда создаю новую фракцию, то для сопартийцев всегда ставлю расположение в 200 единиц, а у самих НПС - агрессию 100. Ибо даже если кто-то кого-то зацепит в бою (пусть и не раз), то актеры не начнут друг друга валить. Стоит еще помнить, что фракции пишутся в сейвы и чтобы их обновить, нужно загружаться на более раннее сохранение, где актеры еще не были заспавнены в мире. У меня лично была такая проблема и приходилось вовсе отключать плагин для обновления этих параметров. Не берусь утверждать, что так будет везде и у всех, но такую странность стоит учитывать. Никакого штрафа не будет, если был атакован априори агрессивный актер. На счет оружия у личей - ничего не могу сказать, как-то не встречался с таким дефектом.
- 3 846 ответов
-
- 1
-
-
- как создать торговца
- oblivion cs торговец
- (и ещё 3 )
-
Есть такой мод, FormID Finder. Так вот там, вроде бы, используется скриптовое заполнение пустой записки через String_Var'ы. Стоит смотреть в ту сторону.
- 3 846 ответов
-
- 1
-
-
- как создать торговца
- oblivion cs торговец
- (и ещё 3 )
-
Это все специальные топики, которые находятся в квестах с ID "Generic". Там есть вкладки "Combat", "Misc" и так далее. Я уже не помню просто, можно посмотреть, как в оригинале сделано и создать на основе "ванили" свой собственный квест для конкретной расы (рас), залив туда диалоги. У самого руки никак не дойдут до этой темы.
-
А что мешает воспользоваться банальной математикой? Зачем целых 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 единиц. Причем не важно, НПС это будет или кричер. И не играет роли - видят они игрока или нет, это работает на уровне движка, игнорируя поле зрения, дистанцию, препятствия и уровень обнаружения.
- 3 846 ответов
-
- 2
-
-
- как создать торговца
- oblivion cs торговец
- (и ещё 3 )
-
⚡ Вороне как-то Бог послал на вход 4 киловольта ⚡
-
Нет такого софта, за исключением TES4Gecko, но там нет и половины тех возможностей, кои представленный в xEdit. Даже близко.
- 3 846 ответов
-
- 1
-
-
- как создать торговца
- oblivion cs торговец
- (и ещё 3 )
-
- 663 комментария
-
- 1
-
-
- 663 комментария
-
- 2
-
-
-
- 663 комментария
-
- 663 комментария
-
- 663 комментария
-
- 663 комментария
-
- 663 комментария
-
- 663 комментария
-
Хочешь испортить отношения? Начни их выяснять.
-
- 63 комментария
-
- мод
- companions combat engine
- (и ещё 3 )
-
- 63 комментария
-
- мод
- companions combat engine
- (и ещё 3 )
-
Приветствую. Я давненько не садился за редактор и вообще, стараюсь избегать месседж-боксы, т.к раздражают они меня, но есть пример скрипта менюшки, которая собирает статы компаньона в едином окне. Там как раз используется метод объединения нескольких String_Var в один единственный и дальнейший его вывод на экран. Ниже в сообщении прикрепил, надеюсь, разберетесь. Скрипт меню.txt
-
ScriptEffectStart должен будет срабатывать даже с нулевой продолжительностью самого эффекта, т.к технически, он все равно был инициирован. Да, я забыл, что OnEquip, скорее всего, просто не успевает сработать, т.к объект, на котором он "висит" - уничтожается. На самом деле, он иногда подтупливает даже на предметах, которые не убираются из инвентаря.
-
Приветствую. Правильно, потому что функция "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, размещенный в скрипте самого зелья, Вам в помощь. Лично я бы использовал именно этот вариант, а не нагружал бы игру обработчиками событий.
- 3 846 ответов
-
- 1
-
-
- как создать торговца
- oblivion cs торговец
- (и ещё 3 )
-
Убрать галочку Effect is Hostile в скриптовом эффекте ранга Self, а так же убрать визуальный эффект с него же.