можно ли увеличить карту, ну или как сказать территорию, пространство игровое
Пространство игры делится на миры и подземелья (которые вполне могут выглядеть как кусок местности под открытым небом - с солнцем, погодой и т.д.). И тех, и тех может быть практически сколько угодно. Расширение игрового пространства путём добавления новых миров и подземелий - рациональный способ (и авторы игры при создании расширений-дополнений игры поступали именно так). Растягивание вширь существующих (и, вообще, чужих, не тебе принадлежащих) - трудно, невежливо и порождает конфликты между модами.
Раз "озвучки нет и не предвидится", то оригинал изготавливаешь ты сам. Отключаешь микрофон, включаешь звукозапись, записываешь два часа тишины, сохраняешь, результат используешь в качестве файла озвучки. Два часа хватит на чтение даже самой невразумительной реплики...
Строка "Terminals\TerminalInterface01.NIF" прошита в EXE игры. Кажется, ни один из параметров секции [RenderedTerminal] в INI не позволяет задать имя модели.
Может кто-нибудь подсказать команду для скрипта чтобы ГГ убирал оружие?
Посади ГГ на диван. Назначь ГГ пакет с флагом Weapons Unequipped.
Мне кажется, эта беда сродни попытке проверить, заметил ли игрок противника - игра просто отказывается проверять, не ушёл ли чудак из-за клавиатуры на балкон покурить... Казалось бы, заставь ГГ подчиняться SetAlert и всё - ан нет, те же грабли, что с IsSwimming, только в профиль... Возможно, с беспатронным оружием, включая карате, седьмой контрол сработает?..
после активации стула у игрока забирается весь инвентарь, а затем происходит активация объекта, но при этом он продолжает держать оружие которого нет.
Не уверен, что я мыслю вполне правильно... Вроде бы у этой ситуации два аспекта. Один - то, что для логики движка состояние ГГ "готов шарахнуть" (алерта у ГГ не бывает, но функции кнопок соответствуют этому состоянию и т.д.). Другой - состояние ГГ как объекта системы анимаций. Формально второе должно соответствовать первому, но нестыковки легкодоступны. Ну, как вот я перед предыдущим сообщением чуток поигрался с SetAlert и успел увидеть несколько смешных вещей наподобие Idle анимации почёсывания в затылке с приаттаченным к правой руке двуручным дробовиком... Возможно, при подобных нестыковках есть смысл принудительно заставить ГГ исполнить анимацию Holster (если будет упираться - завернуть это в OnActivate чего-то побочного и дёрнуть за верёвочку) - даже если для логики у ГГ всё ещё в руках карамультук, визуально всё будет уже убрано, и зацепиться нечем.
Честно говоря, я бы выбрал табуретку попроще - не с такой заковыристой анимацией усаживания...
Третий флаг, видимо, не второй (второй про пип-бой). Хорошо, что нашлось аккуратное штатное решение. А что я не вспомнил (я вообще знал?), что "If the player currently has a weapon out, the weapon will be holstered" - то мне позор!
Да, и "если пусто значит" 1 1 1 1 0 0 0 для DisablePlayerControls, а не все нули и не все единицы...
решил сам сгенерировать новые через функцию World LOD ( разумеется предварительно удалив все из папки Data\Meshes\Landscape\LOD ) , он все сгенерировал
Перегенерировать тебе надо не весь LOD, а только LOD деревьев. То есть не все четыре генератора гонять (ты, кстати, не сказал, что именно ты там внутри "функции World LOD" исполнял), а только Generate Trees.
Где именно находились помешавшие тебе деревья, ты тоже не упомянул... Предполагаю, что в каком-то из оригинальных миров игры. В этом случае папка, которую ты пытался удалить (в ней что, действительно что-то было?), находится в BSA-архиве. То есть даже если ты и в самом деле сгенерировал LOD для деревьев нужного мира, тебе следует или удалить оригинальные файлы из архива, или (думаю, для LOD это работает) позаботиться о свежести ArchiveInvalidationInvalidated!.bsa
Изменение репутации для пользователя Ipatow
IpatowOffline
Сообщение №1660
| Тема: Скрипты
написано: 16 июня 2017, 18:54
возможно ли привязать эффект увеличения роста (на подобие команды "setscale") к силовой броне?
Гм. Первая мысль была делать это не динамически, а статически - то есть просто увеличить размеры самой силовой брони. Не будет конфликтов с другими модами, тоже изменяющими масштаб (навскидку вспоминается мод, который просто вносит небольшое разнообразие в размеры людей, чтобы не выглядели слишком штамповаными), не будет странностей с перемасштабированием, когда объект меняется, а его коллизия - нет (скажем, ты можешь увеличить человечка, чтобы ему озеро стало по колено, но он всё равно через озеро "поплывёт" над водой, потому что помнит, какой у него "на самом деле" размер). Но поскольку броня надевается на тот же самый человеческий скелет, увеличенная в пропорции 1.3 броня будет сидеть... Ну, как если бы там внутри действительно был человек (представь себе, что силовая броня сгибает ногу не там, где колено у человека внутри, а где колено у брони! движок сломать ногу человеку не позволит, и выглядеть это будет странно - скорее всего, ногу скрутит в крендель).
Получается, что придётся наплевать на побочные эффекты перемасштабирования и именно его и устроить. В точности как ты предположил - дать броне новый эффект, скрипт которого будет по старту эффекта выставлить буквально SetScale 1.3, а по финишу SetScale 1.0...
Ещё одна причина, почему я не люблю невадские вегасы! У нас на вашингтонщине климатические беды хотя бы разрешимы... С холодом бороться несоизмеримо проще!
Как сделать так, чтобы диалог шел, если происходит одно из двух условий?
Когда условия соединены связкой "И" (по умолчанию), необходимо всполнение всех так связаных условий. Когда связка "ИЛИ" (галочка "OR" в GECK) - достаточно выполнения одного из.
Мне нужно создать объект, который можно активировать. При активации нужно что-бы появилось сообщение. Как такое можно реализовать? Да и в какой категории нужно создавать такой объект?
Тип объекта - в простейшем случае активатор. Ему назначен скрипт. В скрипте в блоке OnActivate прописана функция ShowMessage, которая вывалит на экран объект типа Message. Если нужно, чтобы сообщение выдавалось однократно или ещё с какими-то ограничениями вроде того, что реагировать только когда объект активируется ГГ - соответственно дополнить скрипт проверками. Кроме активатора это может быть практически любой тип объекта, главное чтобы на него можно было скрипт повесить.
Мне нужно чтобы при активации этого объекта, 1 ветка диалога у нпс стала недоступна игроку.
Чтобы заблокировать реплику скриптом, надо добавить этой реплике проверку чего-то - а в скрипте это что-то устроить. Можно пойти банальным путём - скажем, менять в скрипте значение глобальной переменной или переменной квеста, а в условиях реплики использовать GetGlobalValue или GetQuestVariable... Но можно подойти к делу более творчески - например, передвигать в скрипте какой-нибудь памятник, а в условии проверять, где памятник стоит!
Изменение репутации для пользователя Ipatow
IpatowOffline
Сообщение №1667
| Тема: Скрипты
написано: 24 июня 2017, 18:56
Как можно сделать так, чтобы при определенных действий, в определенном месте появлялся объект. Например: отправил гулей в космос, на тумбочке в Новаке появилась маленькая ракета. Это из области скриптов или как-то еще можно этого добиться?
Например, можно нужный объект в нужное место положить сразу, поставить этому его экземпляру (reference) флажок Initially Disabled, и в какой-то момент в каком-то скрипте выдать про него функцию Enable. Если и так уже какие-то Enable/Disable происходят, можно привязать этот экземпляр к уже пропадающему/появляющемуся при помощи свойства экземпляра Enable Parent (возможно, с инверсией). Можно объекты не исчезать/появлять, а перетаскивать их с места на место - например, лежала ракета на полу в недоступном складе, а ты её рраз и MoveTo на тумбочку. Наконец, можно просто динамически сотворить объект при помощи PlaceAtMe...
Я создал нпс, диалог, правильно написал условие, но в игре нпс не говорят то, что я им прописал. В чем причина?
Могут быть разные причины. Например, если бедняга вообще ничего сказать не может и даже не моргает - проверь, не без сознания ли он. Ты квест диалоговый запустить не забыл?
Что значит: „Ты квестовый диалог запустить не забыл"?
Не знаю! Но запуск диалогового квеста - того квеста, в котором прописан диалог - означает галочку на квесте Start Game Enabled (не знаю, как это пишется в руссифицированном GECK) или динамический запуск квеста при помощи StartQuest или SetStage. Диалоги незапущенного квеста игра игнорирует.
Что esp - существенно. GECK отказывается сохранять имена мастер-модулей в формате esp, хотя ссылки на сами объекты сохраняет. Без дополнительных действий такие ссылки в никуда будут проигнорированы и игрой, и самим GECK при следующей загрузке модуля. Штатный способ решения - перевести модули, на объекты которых хочется ссылаться, в формат esm. Хитрованский способ - при помощи FNVEdit или чего-то наподобие вписать в список мастеров своего модуля имена использовавшихся esp-файлов (это придётся делать после каждого редактирования модуля в GECK, поскольку при сохранении модуля он опять пропишет мастерами только esm).
В некоторых случаях игра считает время персонажа, а в некоторых время игрока. Которые друг от друга отличаются по умолчанию в 30 раз (2 минуты за клавиатурой = час в Пустоши). Длительность эффектов, помнится, считается по времени игрока... А по чьёму секундомеру тикает урон, вот это мне не помнится. Если бы я задался вопросом, пришлось бы именно проверять на добровольцах.
ковыряясь нифскопом в них не нахожу какие либо "звуковые пути", может плохо ищу
Там в NiTextKeyExtraData не "пути", там имена объектов типа Sound, которые описаны где-то в esm/esp. Чем и вызвано то, что для множества звуков UseInfo в GECK не может ничего осмысленного сказать. Некоторые костыли авторы игры исполняли не в традиционном архитектурном стиле, и вот такая связь по имени - один из них.
Как сделать так что бы она дралась только в рукопашную в любом случае?
У неё должен быть активен Combat Style, в котором Weapon Restriction установлено в Melee Only. Если ты уже пытался этого добиться - первым делом проверь, тот ли стиль у неё включен в нужный момент.
традиционный совет в таких случаях - взять что-то работающее как надо, ванильное например, и посмотреть, чем оно отличается от твоего.
Если дело именно в этих граблях - в том, что только пакеты сопровождения автоматически переоцениваются (EvaluatePackage), когда посреди менюмода IsPlayerMovingIntoNewSpace - то ситуация получается довольно тупиковая. Если хочется, чтобы спутник реагировал независимо от того, в каком он сейчас настроении, но "работающего как надо" образца в природе нет - что делать-то? Я, например, пытался в аналогичной ситуации создать квази-спутника, работающего погонщиком остальных спутников - дёргающего их всех за хвост по случаю дверей, быстрых телепортов или внезапных MoveTo - но хотя проблему с отставанием это решало, возникала другая противная проблема, которая идею зарубила... Печальное резюме тут: традиционный совет работает только для традиционных обстоятельств