Напарник Ива выронила в бою свою винтовку "красотка". Я ее поднять не могу, не берется и она не подбирает. Винтовка квестовая.
Открываем консоль. Тыкаем мышкой в Иву. Видим FormID вида 12345678. Тыкаем мышкой в валяющуюся винтовку. Видим какой-то FormID, но неважно какой - пока активный объект эта самая винтовка, исполняем команду activate 12345678 (номер этой Ивы) - винтовка оказывается в кармане напарницы.
как узнать BaseID (не путать с FormID) квеста в fo3edit?
Вопрос немного странный, поскольку о BaseID говорят только в тех случаях, когда может существовать ещё и RefID - причём, разумеется, оба эти идентификатора являются FormID. Поскольку у квеста не может быть помещённого в игровой мир экземпляра, FormID у него один - если угодно, можно называть его базовым...
Вот смотрим в FO3Edit на объект CG01 "ПЕРВЫЕ ШАГИ" [QUST:00014E83]. Это квест, что видно по типу записи QUST. Его FormID (BaseID если угодно) - 00014E83; если разбирать FormID по частям, то это запись загруженного первым модуля (счёт идёт с нуля), а внутри модуля идентификатор этой записи 014E83. У объекта имеется EditorID (символьная строка, используемая в скриптах и консольных командах) - строчка "CG01". Ну и раз уж у объекта есть поле имени, FO3Edit для пущей наглядности указывает и его... Надеюсь, среди сказанного есть ответ на твой вопрос.
Tijoe, в папке Data у тебя почти наверняка лежит файл ArchiveInvalidationInvalidated!.bsa, нужно поменять ему дату на будущий год, чтобы он был заведомо более новым, чем те файлы (текстуры и т.п.), которые ты создаёшь сейчас.
Да. Я переносил обливионовские модели в фолаут, не пользуясь ничем, кроме NifScope - потому о невозможности говорить не стоит - и я никому не рекомендую так поступать.
Говорится именно о модели брони, именно чтобы была полноценная броня из Oblivion в Fallout, используя только Nifskope.
Что такое "полноценная броня" и в чём принципиальная разница в переносе "полноценной" и "неполноценной"?
У меня такое ощущение, что ты накручиваешь счётчик сообщений смутными намёками, и, отвечая на них, я тоже оказываюсь виновен в написании слишком коротких малосодержательных сообщений. Если ты клонишь к тому, что мои слова о возможности обойтись NifScope не соответствуют действительности - лучше бы было сразу так и сказать. Желательно чем-нибудь обосновав своё мнение...
Добавляй недостающие блоки и заполняй их корректными значениями. Я не понимаю, чем вызвано твоё упорство - если обычно просто не надо делать такие вещи в NifScope, то когда ты не знаешь, как это сделать, это вдвойне не надо. Используй инструменты по назначению. Да, чайной ложечкой можно отрыть окоп полного профиля, но здравомыслящий человек всё равно будет это делать хотя бы лопатой.
как привязать определенный диалог к определенному персонажу
Что ж ты не посмотрел сначала, как это сделано в стандартных квестах?... Самое простое тут, наверное, проверка GetIsId в списке условий реплики, хотя вообще способов опознать нужного персонажа много.
Изменение репутации для пользователя Ipatow
IpatowOffline
Сообщение №248
| Тема: ВОПРОСЫ по моддингу
написано: 2 апреля 2012, 13:34
| Отредактировано: Ipatow - 2 апреля 2012, 13:35
Top-Level - замечаю галочку в в блоке редактирования диалогов. Эта что-ли?
Да, эта. Реплики без этой галочки доступны только когда на них указывает переход от других реплик. Если при старте диалога нет доступных реплик, диалог по инициативе ГГ не начнётся. Диалог по инициативе NPC может начаться с любой заданной реплики, там неважно - Top-level или нет.
Бомжи произвольные, лишь бы были способны выполнять пакеты типа Find. Поскольку смысл выделенного ты не понял... Кажется, мой метод для тебя будет слишком сложен в реализации.
Создать отдельную расу для ГГ с уникальной текстурой. Или уникальным телосложением. Или уникальной причёской. Или уникальным рисунком глаз... Или всем этим сразу - хоть ренамоном становись...
Вопрос как будто имеет внутреннее противоречие - с одной стороны, есть какие-то свои патроны, то есть хотя бы простыми приёмами редактирования объектов в GECK автор вопроса владеет. С другой стороны, редактирование списков это, пожалуй, самый простой вид редактирования объектов... Отвечая на вопрос буквально - открываем список (допустим, список боеприпасов), находим объект для добавления в дереве объектов (допустим, свой патрон), тащим мышкой объект в список. Всё, готово.
Автоматический набор опыта/уровней регулируется не очень большим набором игровых установок. Если в эти сеттинги не попали неестественно большие или маленькие величины, то подобного эффекта (уровень за десяток врагов) не может получиться. Скорее я бы заподозрил шальной скрипт, который закусил удила и лепит RewardXP когда надо и не надо... Но эта функция вывешивает сообщение в углу, когда прибавляет опыт, должно бы быть заметно... Впрочем, за цифрами и получаемого опыта, и оставшегося до левела можно хоть в пип-бое присматривать...
Plasmoid, это Game Setting. Если выставлять статически в GECK, то в менюшке Gameplay, если скриптом при NVSE, то SetNumericGameSetting fMinDamMultiplier <значение> - ноль позволит поглощать хоть весь урон... Разумеется, соседним модам никто не запрещает выставить это значение по-своему.
То есть в ребалансе оружия, например, это значение должно быть таким же?
Если ты используешь только собственные моды, то поменять значение достаточно один раз, и можно это сделать статически. Если ты используешь чужие моды - надо иметь в виду, что они могут перетянуть одеяло на себя, переправить это значение по-своему. Причём они могут это делать динамически, прямо по ходу игры.
как сделать, чтобы диалог стартовал сразу же как главный герой приблизится к NPC?
Если NPC не стоит на месте, то обычный объёмный триггер практически отпадает (это должно быть очень геморройно - сделать, чтобы триггер ползал следом за NPC). Поэтому будем мерять расстояние от NPC до ГГ.
Измерением может заниматься, например, AI-пакет самого NPC - высокоприоритетный диалог-пакет с условием на GetDistance меньше порогового. Время реакции будет не очень, поскольку NPC не так часто занимаются переоценкой пакетов, вроде раз в 10 секунд - за это время ГГ успеет и прибежать, и убежать...
Измерением может заниматься объектный скрипт на активаторе неподалёку, чтоб в нужный момент дёрнуть NPC за SayTo - тут время реакции неплохое, но если NPC бродит достаточно далеко (скажем, от посёлка до посёлка), активатор отпадает - не поползёт же он следом.
Можно мерять расстояние квестовым скриптом - тоже неплохе время реакции, но тут даунсайд тот, что этот скрипт вертится непрерывно, а не только когда ГГ недалеко.
Поэтому оптимальный, на мой взгляд, способ - мерять расстояние эффектным скриптом! Супербыстрая реакция (никто не реагирует быстрее эффектов), скрипт свисает с самого NPC и работает только когда ГГ рядом.
Это можно - так же, как и создать дополнительно когтистых тёток (строго говоря, в оригинальной игре они имеются в количестве 7 штук) и добавить их к спискам (почему бы не вместо дядек). Но это существенно больше работы, чем отредактировать десяток списков...
наверное что-то типа Актеры-НПС-и там какие-то Talon... В самой игре их ни разу не встречал.
Это экземпляры NPC под названием LDCapitolBuildingDead1; больше половины их в Метро-Центр и все они изначально мёртвые, отчего встречают их немногие (только те, у кого включен резет в зонах, содержащих эти трупы - на резете они оживают)...
"Резет" - это приблизительно сброс зоны к первоначальному состоянию. Передвинутые предметы остаются передвинутыми, свободно лежащие инвентарные (помещаемые в карман) предметы не возникают заново, если их забрали, и не исчезают, если их принесли и бросили. Мобы (существа и NPC) оживают, и содержимое их карманов приводится в оригинальный вид (ограбленные догола покойники оживут не голыми). Содержимое контейнеров также приводится в оригинальный вид - в частности, добавленные предметы исчезнут; именно таким образом происходит "завоз товаров" торговцам. Ловушки и подобные им объекты могут тоже вернуться к первоначальному состоянию - что именно исполнить в блоке OnReset, решает их скрипт...
Интервал, с которым производится резет всех зон, определяется игровой установкой iHoursToRespawnCell (см. меню Gameplay->Settings; значение в часах).
Зона - Encounter Zone (см. меню World->Encounter Zones) - может быть назначена каждому способному регенерировать объекту или территории (Cell, Worldspace); если объекту зона не назначена (чаще всего так и есть), он унаследует её от той территории, где в данный момент находится (например, обычно возрождающийся NPC, забежавший в погоне за ГГ в помещение, которому резет не разрешён, и там померший, больше не оживёт, если ему лично не назначена зона).
Включается резет либо статически - сбросом флажка Never Reset в свойствах зоны, либо динамически скриптовой функцией SetZoneRespawns.
Можно ли изменить размер объекта непропорционально?
Средствами GECK нельзя. Самый простой способ это сделать - использовать NifScope (Уроки по NifScope для начинающих) и отредактировать 3D-модель объекта, там присутствуют инструменты для сдвига и масштабирования модели по координатным осям и поворота относительно этих осей. Конечно, на основе перемасштабированной модели нужно будет создавать новые игровые объекты... Есть и более сложные способы, но проще как будто нельзя.
как сделать так, что бы при контакте с объектом (запертая дверь) стартовал квест?
Основной способ запуска квеста вручную - функция StartQuest; функция SetStage также запустит квест, если он ещё не запущен. "Контакт" - это удар главным героем об дверь, или имеется в виду что-то другое?
ГГ попытается открыть дверь, то она будет закрыта и тогда начнётся квест на поиск ключа.
Тут есть небольшая проблема - при виде "заперто, требуется ключ" игрок не будет пытаться активировать дверь, поскольку смысла-то нет. Написано же - без ключа хоть дёргай хоть не дёргай... Причём определить, что игрок прочитал это, совершенно невозможно - мало ли куда он курсор наводил не глядя на экран...
А вообще-то... Если сначала двери прописать уровень замка "легче лёгкого", то игрок может попытаться ткнуть, чтобы взломать. А тогда в привязаном к двери скрипте в блоке OnActivate можно и уровень замка сразу на максимум поменять, чтобы в дальнейшем было написано "требуется ключ", и квест стартовать, и объявления поперёк экрана вывесить "а замок-то оказался непрост"... Что-то наподобие
Code
SCRIPTNAME xxx BEGIN OnActivate IF GetLocked == 0 Activate ; уже открыто ELSEIF GetQuestRunning yyy ;или GetQuestCompete yyy или GetObjectiveCompleted yyy 111 или GetStageDone yyy 222 Lock 255 ; запираем на максимум ShowMessage zzz StartQuest yyy ;или SetStage yyy 333 ELSE Activate ; использовать ключ, если он есть ENDIF END
сделать так, чтобы после нажатия определенной клавиши воспроизводилась нужная анимация? Или чтобы та анимация воспроизводилась после взятия выбранного предмета в Пип-бое.
Обработка клавиш - это прямая дорога к скрипт-экстендеру. Не очень удобно, не очень изящно, но работает.
Реагировать на активацию предметов в инвентаре можно, всё нужное есть в стандартной игре/GECK, лишь бы предмет был в принципе активируемым (в частности, мусор или патроны не годятся). Кажется, чаще всего используют алхимию (книжки, бутерброды и т.п.). Блок скрипта OnEquip тебе помощник.
Дальше всё зависит от того, что такое нужная анимация. В простейшем случае - использовать функции PlayGroup или PlayIdle (см. относящиеся к анимации функции).
как создать отображения неба в игре на "открытой", экстейерной локации?
Солнце, луна и звёзды являются элементами климата. Климат назначается мировому пространству или внутренней ячейке, которой предписано быть как будто снаружи. Текстуры облачных слоёв и раскраска всего, что на небе, являются элементами погоды, которая назначается тому или иному климату и, вообще говоря, наступает иногда.