скорее всего пропущена масса условий в скриптах,подскажите какие условия нужно добавить?
Пропущено, судя по показанному, много чего... Например, в "set CantineEmptyV13 to +1" не сказано, к чему прибавляется единица - переменная просто выставляется в плюс единицу и всё. А вообще конструкция затейливая - одних скриптовых эффектов вон не меньше двух - так что по фрагментам восстановить, что ещё там не так, затруднительно.
в первом эффекте должна прибавляться полная фляжка (player.additem CentieFoolV13) но она либо не прибавляется,либо прибавляется один раз и все!
Должна прибавляться, да. Если эффект вообще запускается - то прибавляется. Возможно, что и один раз - зависит от параметров эффекта, которые ты не указал... Вообще, для чего тебе два скриптовых эффекта? Только ради того, чтобы заменить IF в скрипте условием на эффекте? Не думаю, что это рациональный подход... Я бы вместо двух скриптов использовал
BEGIN ScriptEffectStart IF CantineEmptyV13 > 3 ; выпито по крайней мере четыре, то есть пьём не менее чем пятый глоток Player.AddItem CentieV13 1 SET CantineEmptyV13 TO 0 ELSE Player.AddItem CentieFoolV13 1 SET CantineEmptyV13 TO CantineEmptyV13 + 1 ENDIF END
Я тут нашел способ создавать катсцены в третьем Fallout
Ну, если твоим модам катсцены полезны - что б их не создавать? А если хочешь, чтобы в "фильмах" участвовал и разговаривал ГГ - просто клонируй его. Клоны немотой не болеют, а настоящий ГГ всё равно в это время работает оператором камеры и потому перед камерой появиться не может.
Изменение репутации для пользователя Ipatow
IpatowOffline
Сообщение №1535
| Тема: Скрипты
написано: 14 сентября 2015, 21:27
Не будет защиты от коврового бомбометания... Которое не только всю рощу разом на дрова разбирает, так недобитые дрова ещё и разлетятся по ближним оврагам
В самой стадии квеста где нужно убить НПС (в Резалт скрипте) прописываю скрипт: Begin gamemode
Вообще, я помню, что эти всяческогого происхождения "результовые" скрипты (диалоги, пакеты, стадии квеста, перки.. где там ещё бывают эти странные скрипты без заголовков?) на самом деле для исполнения ловко всовываются в середину настоящих скриптов (в результате вызывая, например, конфликты имён переменных), определяемых системой невнятным способом... А поскольку правила синтаксиса интепретируют одноимённые блоки как один блок, непринуждённо продолжая какой-нибудь онтриггер следующим онтриггером... То, вероятно, гейммод в "результовом" скрипте куда-то там влипнет и, вполне возможно, отработает... Но вообще "результовые" скрипты по смыслу одноразовые, то есть не повторяющиеся автоматически.
При штатном использовании каждый result script определённой стадии квеста (лога в игре нет, но log entry в одной stage может быть описано множество, каждый со своим скриптом) исполняется один раз от начала до конца в момент вызова функции SetStage (очерёдность исполнения скриптов стадии, когда их больше одного, не документирована) - то есть перед выполнением следующей строчки того скрипта, который вызвал SetStage. Своего рода подобие подпрограммы, только параметры нельзя передать.
Предположительно, то, что ты хотел сделать, традиционно делается так. Скрипт самого квеста крутит гейммод-блок с примерно такой конструкцией:
IF LocalCounter == 0 SetObjectiveDisplayed 1 SET LocalCounter TO 1 ELSEIF LocalCounter ==1 IF сделано что надо для первого этапа SetObjectiveCompleted 1 SetObjectiveDisplayed 2 SET LocalCounter TO 2 ENDIF ELSEIF LocalCounter ==2 IF сделано что надо для второго этапа SetObjectiveCompleted 2 SetObjectiveDisplayed 3 SET LocalCounter TO 3 ENDIF ELSEIF повторяем столько раз, сколько этапов у квеста ENDIF
если я правильно понял,то скрипт с такой конструкцией вешается на сам квест?И что такое LocalCounter?
Да, как я и написал, такое пишется в скрипт самого квеста. Это просто переменная SHORT LocalCounter при запуске квеста инициализируется нулём, как и все переменные...
Раздел Гекка связанный с созданием брони, оружия, рас и прочего, связанного с текстурами и мешами является для меня неизведанным. Не говоря уже о том, что разбираться в чужих модификациях сама по себе уже задача не из легких, если нет соответствующих знаний в этой области.
Если речь о том, что сложно сделать модель надеваемого на человека или перетекстурировать существующую модель с правкой нормалей - ну, это действительно сложно, и подавляющее большинство тех, кто делал и публиковал моды, такое делать не умеет. Другое дело, если сложной оказывается работа с экипировкой, не затрагивающая изменение моделей/текстур - если для тебя сложно, скажем, изменить вес какого-то балахона, то на таком уровне твоя задача практически невыполнима... Тут даже туториал как бы неуместен (открыть мод, открыть объект, изменить значение, закрыть объект, сохранить мод - оно не нуждается в объяснениях).
Простейший случай алгоримта, по которому должен работать твой мод... Всю существующую броню заносим в список А (формлист) - это "стандартная" броня, в котрую одет весь мир (допустим, Type-N). Делаем копии каждого объекта брони, меняя только модели (допустим, на Type-V) - это будет броня, в которую одет ГГ - и заносим эту "нестандартную" броню в список Б. Списки упорядочены и соответствуют друг другу - допустим, под номером 18 в первом "Шипастая броня рейдера" Type-N, во втором под номером 18 "Шипастая броня рейдера" Type-V. Остаётся только запустить два фокуса. Один при попадании предмета из Списка А в руки ГГ подменяет этот предмет соответствующим номером из списка Б. Второй фокус при попадании предмета из списка Б в руки кому угодно кроме ГГ подменяет этот предмет соответствующим номером из списка А. Это, собственно, весь мод.
Мультирасовый вариант этого алгоритма сложнее и возможны интересные вариации, но для твоих нужд предыдущий абзац исчерпывающе описывает решение задачи. Что-нибудь в предыдущем абзаце кажется сложным?
мне бы еще пример использования в скрипте, если не трудно. Тупое, Player.RestoreLimbHead я так понял, не катит
Ты не разобрался, о чём речь. Скрипт в эффекте использовать можно, а наоборот - эффект в скрипте - нельзя. Ну, строго говоря, можно изготовить Actor Effect или Ingestible, внутрь которого будет завёрнут нужный Base Effect вроде RestoreLimbHead (который по существу делает ровно то же, что нелюбимый тобой RestoreAV, но на свой лад), и из скрипта результат вешать на нужную цель при помощи CastImmediateOnSelf. Рациональности в таком способе... Как делать три правых поворота вместо одного левого - лишь бы не ходить налево
есть ли возможность сделать так, что бы NPC носил только определенную одежду, а при добавлении в его инвентарь другой одежды просто напросто ее не одевал. Соответственно при этом не завышая ПУ брони до невиданных высот.
Согласно документации, второй параметр функции EquipItem отвечает за невозможность снятия надеваемого предмета иначе как при помощи UnequipItem. Насколько это надёжно, я не проверял.
.. а в это время ГГ стоит, зевая и поглядывая на часы, в ожидании, пока эта мать Тереза обойдет всех страждущих и немощных.
Да ты видела, как наш фельдшер стимпаки бросает? Не успеваешь договорить "Васе плохо" - а он уже метнул в Васю самонаводящийся шприц, не в бровь а в глаз! Поговаривают, у него и шприцемёт гатлинговый есть для массхила
идея-то фонтанировала такая, чтобы не из пулеметамантумёта пациентов мочить, а по-старинке, со стетоскопом
Строго говоря... Оно ведь - дым, зеркала и ассистентка в купальнике в нашей профессии незаменимы... Да, могут оказаться не-Persistent и дохтур, и пациенты, и потому при выходе движение останавливается. Но ведь мы знаем, что на самом деле бегемот только пасть открывает, а поёт тоже крокодил. То есть на самом деле исцеление производится в момент завершения реплики разговора - доктор ещё идёт вразвалочку, нашаривая в кармане свой резиновый молоток, а на пациенте уже повис спелл, который его вылечит по таймауту. Поэтому если ГГ вышел на пару часиков, то по возвращении и пациенты здоровы, и все свидетели присягают, что - да, ходил дохтур, ходил-ходил, лечил-лечил!
Как бы можно сделать так чтобы ремонт можно было делать только когда находишься вне бою? Осуществимо?
Есть моды, которые во время боя попросту блокируют пип-бой (например, ребаланс имени Arwen) - хотя там изначальная идея была в борьбе с бесконечной жизнью (невесомые мгновенно лечащие стимпаки в классической игре делают ГГ, мягко говоря, трудно убиваемым), попутно оно и к ремонту тоже не подпустит...
Как альтернативный вариант - ловить MenuMode 1035 и принудительно выходить, хотя, вероятно, экран ремонта успеет нарисоваться на какие-нибудь полсекунды.
Так или иначе, мне это кажется всё-таки какими-то полумерами. Почему я могу посреди боя остановить время и выпить, закусить, уколоться парой препаратов, залечить одну-две сломаных ноги, использовать пачку ремонтных комплектов, которые чинят вещи без помощи экрана починки, а потом переодеться - и вдруг после всего этого экран починки использовать не могу? Логики не улавливаю.
Как можно проверить что надето не на Player, а на любом НПС? Хотя, мне кажется, что так делать не верно.
Проверять-то так же, но это приобретает смысл, только если делается полноценный Armor-by-Race мод, в котором "обычная" броня нуждается в трансформации при передаче от одного NPC другому, то есть логически одна и та же вещь на разных NPC должна выглядеть по-разному. Когда вариантов всего два, и один из них ГГ, этот угол практичней срезать.
Или все-таки нужно еще внутри разместить проверку, не является ли объектом Player? Если да, то был бы очень признателен примеру команды на подобную проверку..
Или в данной ситуации getself используется некорректно?
Не помню, как обстоит дело с OnAdd, но иногда это действительно так. Вдвойне падки на подобное инвентарные объекты в инвентаре - дело в том, что у них на самом деле нет FormID (они не совсем референсы, поскольку они не объекты мира). При этом самонаведение функций срабатывает. Неприцельный GetBaseObject честно скажет, кто у нас база - и уже эту базу ты сверяешь со списком. Да, и вместо RemoveItem тут желательно использовать RemoveMe (который, собственно, кроме как в OnAdd-блоках и не используется).
Есть какой-нибудь способ это исправить и заставить расу видеть прически из других модов?
Один модуль может увидеть объекты другого модуля тогда и только тогда, когда этот другой модуль является для первого мастер-модулем. Идеальное классическое решение для случая, когда и модуль расы, и модуль причёсок - ESM: загружаем в GECK оба модуля, не делая активным никакой модуль, перетаскиваем нужные объекты причёсок в список причёсок нужной расы, сохраняем патч новым модулем. Возможны вариации этой процедуры для разных обстоятельств, но основа технологии такая.
таких условий не в одном пакете нет как и в оригинале, что может еще влиять?
Не обязательно именно эта функция может всё останавливать, тысячей способов заклинить можно. Ты все условия проверил? Пакеты переключаются чем? Переменной? Чья это переменная, своя ли она у каждого из неписей? Предметом-маркером? Кому в карман клядётся маркер? В чьём кармане он ищется? Раз не работает, значит, в каком-то месте проверяется не то или не там или не так...
как отключить слайды в игре, чтоб загрузку ускорить?
Это регулируется, насколько возможно, в INI-файле в секции [Loading]... Выставить fLoadingInitUpdateInterval в ноль, например. Но убрать-то можно только умышленную задержку, а если оно слайды показывает из-за того, что ещё не прогрузилось, толку от их убирания не будет - будешь сидеть перед пустым экраном столько же, сколько сидишь перед слайдами.
Мне нужна переменная, значение которой будет изменяться (прибавляться и отниматься) в зависимости от выбора реплик диалога.
Можно для этой цели использовать глобальную переменную (в скриптах обращаться просто по имени переменной), можно переменную скрипта квеста, в котором лежит этот диалог (обращаться как имяквеста.имяпеременной), а можно и любую другую универсально доступную переменную.
как сделать что бы на определенного NPC не действовали ловушки, как на главного героя с перком "легкий шаг"
Эта функциональность реализована как Entry Point для перка; поскольку только ГГ может быть носителем перка, функциональность доступна только ГГ. Хотя в FNV и появились "компаньонские" перки, они тоже не позволят навесить эффект Entry Point на моба.
Изменение репутации для пользователя Ipatow
IpatowOffline
Сообщение №1560
| Тема: ВОПРОСЫ по моддингу
написано: 6 ноября 2015, 04:57
| Отредактировано: Ipatow - 6 ноября 2015, 04:58
Я, помнится, тоже когда-то проверял, взрываются ли функции AddPerk, RemovePerk и HasPerk, когда нацелены не на ГГ. Они действительно не взрываются, на идеологической заре цивилизации авторская концепция предполагала курс развития, предусматривающий доступность перков для всех. Но это из того же разряда, что у мобов есть такие Actor Value - Action Points или Invisibility - просто их значение не играет никакой роли. Так что пока твоё "добавлял" означает "вызывал функцию", никто не упрекнёт - но Сhastener хотел, чтобы оно работало.