Они чистят. С появлением тут модераторов разделы F3 и NV заметно похудели, причём пропали не только сообщения и темы (даже те, где были и полезные сведения), но и некоторые участники. ИМХО: В "Правилах раздела" рекомендовано задавать вопросы в двух существующих темах. При этом данные темы просто не могут не превратиться в свалку всего на свете. Допустим, у кого-то не получается что-то сделать в GECK. Человек спрашивает в теме по GECK, а в процессе выясняется, что надо делать в Nifscop (FO3Edit, Photoshop, ещё где-нибудь). В итоге 70 страниц (+70 в разделе NV, +300 с лишним в архиве, который ещё не всем показывают) обо всех программах, какие только применяются для моддинга. И в темах "Вопросы по моддингу" то же самое немного в других пропорциях. Это не считая оффтопа типа этого сообщения. Естественно, никто в здравом уме не станет внимательно перелопачивать эти сотни страниц вручную. Встроенный поиск работает только по темам (которые, как мы помним, создавать не рекомендуется), обшаривать раздел Гуглом не всегда эффективно. Таким образом, о том, что какой-то вопрос уже обсуждался, помнят только участники и свидетели событий и вопрос задаётся снова (и снова, и...).
Я решаю эту проблему с помощью своих собственных квестов и фраз, выставляя им больший приоритет.
А можно тоже поподробнее? Именно про фразу "Мне пора". Пытался искоренить её из диалогов, не трогая ни квест GenericAdult, ни голос, ни Choices, но ничего у меня не вышло - топик GOODBYE оказался настолько общим, что его изменение в одном квесте (замена Topic text "мне пора идти" на другую фразу) автоматом изменяло его и в других квестах. Причём такое ощущение, что мой вариант прощания просто добавился к остальным, зашитым где-то глубоко, так как всякие "мне пора", "пока" и "до скорого", как были, так и остались, а изменённая фраза появлялась очень редко. Создание своего топ-левельного прощального топика даже с приоритетом 100 в квесте с приоритетом тоже 100 просто добавляет его выше дефолтного. Единственное, чего удалось добиться, так это практически исключить внезапное прорезание голоса у NPC в конце беззвучного диалога. Да и то, просто "забив эфир" топика GOODBYE в своём квесте множеством рандомных ответов.
Spalny_Vagon, да в общем-то ничего против фразы "мне пора" не имею. Просто Вис спрашивал про неё, а Вы ответили, что решаете это дело квестом с приоритетом, вот я и заинтересовался как. Тем не менее. Допустим (гипотетически),что имеется локация с персонажами, которые используют стандартные голоса и, следовательно, квест Generic, в стандартных ситуациях (ГГ уронил тарелку, ГГ посмотрел на запертую кассу, ГГ дал кому-то в морду и т.д.). С каждым можно поговорить. Диалог без звука кроме этого последнего "ага, пока". Вроде фигня, но если можно сделать всё в одном ключе без особого гемора, то почему бы не? ITU, Add Topics даже после Choices добавляет темы в "корень" диалога, где лежат и топ-левельные темы вроде GOODBYE (aka "мне пора"). То есть нужно весь диалог от начала до конца строить на Choices, не возвращаясь в корень.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №64
| Тема: Скрипты
написано: 25 мая 2012, 14:21
RaspaD, извиняюсь, ввёл тебя в заблуждение насчёт трассеров - они тоже настраиваются в GECK! В характеристиках прожектиля есть пункт Tracer Chance - шанс (в долях единицы), что прожектиль будет виден в полёте. Надеюсь, редактирование модели не зашло слишком далеко.
fMove влияют сразу на всех. Если надо подрегулировать только ГГ, то, наверное, лучше добавить процентов NPC Player в окошке Speed Mult на вкладке Stats.
Как заставить четверых NPC следовать в определённую точку, уничтожая на пути противников, по завершению диалога?
Как заставить следовать. Выдать им пакеты поведения с целью или локацией исполнения в виде этой определённой точки. Просто идти - пакет Travel, но возможны варианты в зависимости от того, чем им предстоит там заняться. Уничтожать их заставлять не надо - они и так это любят. На самом деле сложнее заставить их не обращать внимания на врагов. При обнаружении противника любой актёр по умолчанию бросает всё остальное и начинает боевое поведение или драпает - зависит от храбрости (Confidence), а потом, если жив, возвращается к прерванному пакету. Если поставить на вкладке Flags пакета галку на Continue During Combat, то NPC будут продолжать выполнять этот пакет, отстреливаясь, то есть в случае с Travel - следовать куда сказано, используя укрытия и стреляя на ходу в противника, пока тот в пределах досягаемости. Чтобы NPC делали всё это по завершению диалога надо задать пакету условие, а в резулт-скрипте нужной фразы сделать это условие истинным (установить стадию квеста, задать значение переменной или что там у тебя будет). Также можно в этом же скрипте (а лучше в скрипте самого NPC) сделать неписям переоценку пакетов (EVP), чтобы приступали к новому заданию сразу.
Как сделать, чтобы Гуль появлялся после того как ГГ вошёл в триггер?
Не совсем ясно, что именно требуется. Прибегал откуда-то? Возникал из воздуха? Скрипт на появление из воздуха при вхождении ГГ в триггер называется DefaultEnableLink1xSCRIPTplayer. Триггер должен быть прилинкован к "возникаемому" объекту.
Можно и через консоль. SetAV health x, где х - нужное значение здоровья, хотя лучше использовать ModAV health x, где х - значение, прибавляемое к здоровью NPC (может быть положительным и отрицательным). Похоже на то, что какой-то мод снимает галки с Auto calc stats или PC level mult (которые у непися на вкладке Stats). Или меняет там максимальный уровень на первый.
На скрине полный порядок. Неужели какой-то мод подлячит скриптово во время игры? Это уже хуже, так как возможны рецидивы. Честно говоря, не представляю, зачем кому-то дописывать к моду такой незадекларированный "вирус", но можно выковырнуть из модов скрипты (для F3 это делается FO3Dump'ом, может, он и для NV подойдёт) и прошерстить их на предмет упоминания health в связи с напарниками. Чтобы зафиксировать изменения, введённые с консоли, достаточно просто сохраниться.
В топике GREETING своего квеста сделай для NPC два приветствия. У одного (первого) поставь галку Say Once, у другого (которым он будет отказываться от разговора) - галку Goodbye. Приоритет квеста должен быть выше, чем у любого другого из тех, к которым привязан NPC (через голос, фракции или ещё как). Тут совсем недавно Spalny_Vagon хорошо и подробно объяснял насчёт этого. Галка Say Once означает, что фраза будет сказана один раз за всю игру. Галка Goodbye, применительно к топику GREETING, - что NPC произнесёт фразу, не открывая окно диалога. Таким образом, после первого разговора у непися не останется приветствий, позволяющих войти в диалог. Так же квест должен быть всегда доступен, то есть стартовать до встречи ГГ с неписем и не останавливаться командой StopQuest как минимум до его смерти.
Как сделать дверь в одной локации, а выключатель (кнопку открывания) для неё - в другой? Если нужно поставить дверь с выключателем в разных ячейках, то можно повесить на активатор (выключатель) такой скрипт:
Код
scn zzzScript short Open
Begin OnActivate
if Open==0 zzzDoor.SetOpenState 1 set Open to 1 else zzzDoor.SetOpenState 0 set Open to 0 endif Activate End
где zzzDoor - это RefID двери.
А на саму дверь надо повесить скрипт, препятствующий обычной активации GenericDoorOpenedElsewhereSCRIPT Ищите в скриптах, или запросом в Главное меню - Edit - Find text
Да, "говорить". Как и у всех актёров, с которыми, хотя бы теоретически, можно поговорить. С актёрами "говорят", двери "открывают", на стулья "садятся" и т.д. Это прописано в настройках игры и для отдельно взятого объекта не настраивается. У существ (Creature) со снятым флагом Allow PC Dialogue не появляется вообще никакой надписи, только название самого существа.
if Activated==1 if timer>0 set timer to timer - GetSecondsPassed else OpenTeammateContainer 1 set Activated to 0 endif endif
End
В топике GREETING создаём для него приветствие с отмеченной галкой Goodbye. Не обязательно из слов, можно из одних пробелов. В поле Result Script пишем:
Code
set zzzRef.timer to 1.5 set zzzRef.Activated to 1
где: zzzRef - это Reference Editor ID непися 1.5 - время задержки между активацией и открытием, можно поменять по вкусу.
Не до конца уверен насчёт рациональности предложенного решения (всё-таки GameModе), но работает.
В каком смысле одинаковых? Несколько копий одного и того же базового? Хотя отдельные квесты в любом случае не нужны, но в этом случае скрипт немного усложнится. Если же у них разные BaseID, то проблемы вообще нет.
Тогда результ-скрипты убираем и присваиваем переменным значения в блоке OnActivate. RefID в этом случае можно не давать. Скрипт на базовом неписе:
Code
scn zzzScript
float timer short Activated
Begin OnActivate
;Look player эта строка не нужна, просто я показываю, куда ещё пробовал вставлять Look set timer to 1.5 set Activated to 1 Activate; эту строку совместно с Look не использовал
End
Begin GameMode
if Activated==1 if timer>0 set timer to timer - GetSecondsPassed else OpenTeammateContainer 1 set Activated to 0 ; StopLook эта строка тоже не нужна, она прекращает действие функции Look endif endif
End
Смысл всех этих действий: каждая копия базового NPC будет использовать одну и ту же фразу из топика GREETING, но на каждой из них при активации будет запускаться своя, отдельная копия скрипта, со своим таймером и прочим.
А флаг Goodbye случайно не убрал? Если да - верни на место. Диалог начинается с твоей фразы или с общей? Если с общей - проверь приоритет квеста. Если ничего не помогает (глюкануло, бывает), то вместо Activate поставь SayTo player GREETING. Или перенеси фразу в другой топик, тогда будет SayTo player [название топика]. Вообще, можно для разворота непися к игроку использовать не фразу, а пакет, нацеленный на игрока. Тогда вместо Activate будет AddScriptPacckage [название этого пакета]. Можно поэксперементировать с расстоянием до игрока (радиус) и результ-скриптами пакета, может, получится использовать их сочетание для настройки поворота-открытия. Тогда можно будет выкинуть весь блок GameMode. И попробуй вариант без Activate, но с Look и StopLook (тогда фраза никакая не нужна). Может, это у меня Look глючит, а то вот только что и Kill работало через раз.
В окне объектов Actor Data -> Body Part Data -> Characters -> DefaultBodyPartData. Двойной клик на нужной части. Поле Part Name. Это для человечьих. Остальные в разделе Actor Data -> Body Part Data -> Creatures.
Отсоединяюсь, уже посмотрел. А что "манекены" шевелятся это баг или фича? А то тут где-то было обсуждение насчёт того, как делать статуи из актёров. Даже, по-моему, в "Картотеку" внесено.
Собственно обсуждение вот тут началось и где-то тут закончилось. Скриптовый способ вполне обратимый. A тут, так сказать, квинтэссенция.
Ещё немного удивила необходимость заталкивать "манекены" куда надо вручную. Раз уж они живые, пусть сами топают! Скрипты, конечно, усложнятся изрядно.
Возможно сделать так, чтобы он телепортировался на моё место или не много впереди?
Подозреваю, что предмет и так телепортируется на твоё место, но игра предусмотрительно смещает его в сторону, чтоб сам же ты в нём не застрял. Чтобы не оставлять это на произвол игры, добавим немного тригонометрии:
Begin OnEquip; взято для примера, замени на нужный блок
set Offset to 100; 100 - расстояние, на котором возникнет предмет, можно поменять set Angle to player.GetAngle z
if Angle<90 set TrigAngle to 90 - Angle else set TrigAngle to 450 - Angle endif
set OffsetX to Offset*Cos TrigAngle set OffsetY to Offset*Sin TrigAngle
zzzRef.MoveTo player OffsetX OffsetY Set Angle to Angle+180; см. примечание zzzRef.SetAngle z Angle; см. примечание
End
Примечание. Те две строки разворачивают предмет мордой лица к игроку. Если это не требуется, то они не нужны.
Кстати, насчёт тех "манекенов". Обязательно запиши их во фракцию игрока (вкладка Factions, правый клик -> New -> PlayerFaction), а то стрельнёшь в такого, а он чего-то убегает.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №87
| Тема: Скрипты
написано: 20 июня 2012, 15:59
один из рефов - Klaxon. Это "мигалка". Т.е. он должен быть виден всегда. Но он анимированный, т.е. мне бы включать и отключать его анимацию.
В стандартном мигалкином скрипте (KlaxonLightScript) уже всё есть для включения-выключения, нужно только назназначить ей Activation Parent и каждый раз при его активации либо включится, либо выключится. В том же скрипте можно подглядеть и команду на выключение - PlayGroup backward 0.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №88
| Тема: Скрипты
написано: 21 июня 2012, 09:13
| Отредактировано: Joopeeter - 21 июня 2012, 09:15
Менять надо скрипт не на выключателе, а на мигалке! scn zzzKlaxonLightScript
float timer short state ; 0 = off, 1 = flashing
begin OnLoad if state == 1 playgroup left 0 else playgroup backward 0 endif end
begin onActivate set timer to 10 if state == 1 set state to 0 playgroup backward 0 else set state to 1 playgroup forward 1 endif end
begin gamemode
if state == 1 if timer>0 set timer to timer - GetSecondsPassed else playgroup backward 0 set state to 0 endif if isAnimPlaying == 0 playgroup left 0 endif endif
end
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №89
| Тема: Скрипты
написано: 22 июня 2012, 17:34
| Отредактировано: Joopeeter - 22 июня 2012, 17:38
Квестов нужно ровно столько, сколько совесть позволит. В простейшем случае можно обойтись одним квестом и одним скриптом, который по очереди покажет все меню создания персонажа и выкинет игрока пинком под зад куда-нибудь в игровой мир. А чтобы нормально оформить генерацию персонажа, не уступающую оригиналу, да ещё потом логично и красиво увязать новое начало с основным сюжетом (если не предполагается вообще заменить его весь на новый), может и трёх квестов не хватить. Да ещё, как пить дать, придётся лезть в оригинальные квесты и скрипты. И даже лучше, по-моему, переиначить оригинальный стартовый квест под свои нужды. Ведь понятно, что если игрок подключил мод с альтернативным началом, то не для того, чтобы начинать опять по-старому.
Изменение репутации для пользователя JupiterJour
JupiterJourOffline
Сообщение №90
| Тема: Помощь по моддингу
написано: 28 июня 2012, 13:39
| Отредактировано: TwoFace - 28 июня 2012, 14:00
0legat0r, не думаю, что есть именно такой гайд. Есть официальный беседкин тутор по ГЕКК. Там про интерьер, но размещение объектов что в интерьере, что на улице одно и то же. Только если город будет не в своём собственном мире, а на территории какого-нибудь из имеющихся, нужно будет иметь ввиду, что удаление и перемещение уже стоящих там объектов - глюкоопасное занятие. Где, когда и что будут чесать неписи задаётся сочетанием маркеров и пакетов AI. Опять же, в том туторе (кстати, расширенная версия]), есть немного про это. Ещё есть справочник по пакетам.
Ссылки на стороний ресурс запрещены.Кидай ссылки в ЛС.