Как сделать так, чтобы при включении голозаписи проигрывался звук или голос ? (КсюХа)Всё это делается путем создания заметки-Note в соответствующем разделе редактора - Items-Note. В настройках заметки есть четыре радио-кнопки с выбором типа заметки: голосовая, текстовая, звуковая, картиночная.
Становится доступным кнопка выбора проигрываемого звука Сам звук, как объект игры, должен быть предварительно создан в разделе Audio-Sound. В настройках этого звука-объекта указывается путь к звуковому файлу в папке Data, который будет проигрываться при "чтении" заметки в Пип-бое. Аудио-файл должен быть читаемого формата и заранее положен в указанную папку.
Становится доступной кнопка выбора файла-картинки. Сама картинка в формате DDS должна быть предварительно размещена в папке Data-Textures-папка картинки. Размер картинки - не более 512х512 Px
Становится доступным поле написания текста заметки Note Data. Здесь пишем то, что будет показываться при просмотре заметки в Пип-бое.
Становятся доступными поле выбора персонажа, который будет произносить текст заметки - Speaker и поле выбора произносимого топика (монолога) - Topic Предварительно должен быть создан сам персонаж, квест, топик для этого квеста, привязанный к данному персонажу и звуковой файл, привязанный к этому топику.
PS. Ответ создавался исходя из того, что под "включением голозаписи" подразумевался просмотр заметки в Пип-Бое.
Как создать радиацию в помещении или на открытом пространстве? (КсюХа)в ГЕКК, в разделе Static существуют так называемые маркеры радиации (RadiationMarker).
Скидываем такой маркер в нужном месте, задаем у скинутой копии на вкладке Extra радиус действия и силу излучения.
Как создать квест по поиску каких-либо предметов ? (КсюХа)Делаем так:
Предварительно набросаем "схему" (сюжет) квеста. Допустим, игрок находит некую записку, в которой рассказывается о чем-то, что может заинтересовать игрока. После прочтения записки выводится надпись о запуске квеста и выводится текст задания этого квеста. На компасе появляется маркер, указывающий направление поиска. Идем по маркеру и находим предмет поиска. После нахождения выводятся сообщения о выполнении задания, о завершении квеста и получении награды. Такой вот простенький квест, без всяких диалогов. Прежде всего надо создать записку, которую мы будем читать в Пип-бое. Для этого заходим в раздел Item-Note и создаем новый объект-записку. Тип записки - текстовый, в поле текста пишем то, что хотели бы поведать игроку, ну скажем - "Ходят слухи, что если собрать 20 крышек от Квантовой Ядер-колы, то в казино Топс дадут приз - годовую подписку на журнал "Мурзилка". Модель записке назначать необязательно, потому что в игровом мире она не появляется в "живом" виде. Поскольку при получении записки должно произойти некое событие - значит нам нужен скрипт, запускающий это событие. Но к записке-Note нельзя прикрутить скрипт - значит нам нужна "фальшивая" записка из раздела Item-MiscItem, к которой мы и прицепим скрипт. Находим в указанном разделе мискитемов любую готовую записку с моделью листка бумаги, (например - записка HVRangerNoteItem), меняем ей айди и сохраняем, как новый объект. У нас теперь есть две записки: одна - Note, "настоящая", текст которой можно будет читать в Пип-бое, и одна - MiscItem, "фальшивая", которую мы будем находить в игре. Теперь нужен скрипт, который будет убирать "фальшивую" записку из инвентаря, давать игроку "настоящую" записку и запускать планируемое событие. Идем в раздел скриптов и создаем новый, простенький скрипт. Пока пишем в скрипте предварительно вот такие команды: scn Имя скрипта
begin OnAdd player ;(срабатывает при добавлении игроку заскриптованного этим скриптом предмета) player.addnote айди_настоящей записки ;(эта команда добавляет игроку "настоящую" записку-note) removeme ;(эта команда удаляет из инвентаря заскриптованный предмет. т.е. полученную фальшивую записку) end
Тип скрипта - объектный. Сохраняем скрипт, открываем "фальшивую" MiscItem-записку и назначаем ей только что созданный скрипт.
Скидываем эту записку в нужное место на локации. Или кладем в какой-нибудь сундук и уже сундук размещаем на месте, короче - по вкусу. На этом этапе мы имеем такой результат: находим в игре предмет-записку, подбираем и получаем в Пип-бое в разделе Заметок нужный текст про крышки от Ядер-колы. Далее нам нужно сделать запуск некоего события, которое мы планируем, а именно - получение задания по поиску этих 20-ти крышек. Значит - нужен квест. Идем в раздел квестов и создаем новый квест. Пишем ему айди и ЗАГЛАВНЫМИ буквами пишем имя, например - В ПОИСКАХ КРЫШЕК. Ставим приоритет по желанию, допустим - 50 и, не переходя на другие вкладки, сохраняем квест. Чек-бокс "Стартовать с началом игры" отмечать необязательно, квест будет запускаться командой от записки. Открываем квест, переходим на вкладку стадий и создаем три последовательные стадии - 1, 10, 20. Почему номера стадиям даются не по-порядку (1, 2, 3) - это для того, чтобы можно было впоследствии "втиснуть" между стадиями еще другие, если мы решим что-то внести еще в квест. В каждой стадии в правом окне создаем по одному пустому Quest Stage Items, чтобы стало доступным поле назначения результ-скрипта для данной стадии. Сохраняем квест. Открываем квест снова и переходим на вкладку заданий квеста. Заданий у нас будет два: первое (№1) будет сообщать, что нужно найти 20 крышек, второе (№10)) скажет нам, что все крышки найдены. Создаем задание номер раз, пишем необходимый текст (найти 20 крышек). Создаем задание номер десять, пишем в нем текст (все крышки найдены, нате вам награду). Сохраняем квест. Теперь нужно внести в ранее созданный скрипт записки команду на запуск квеста. Открываем скрипт и добавляем в конец блока (до слова end !!!) следующую команду - setstage айди_нашего_квеста 1 . Этой командой мы запускаем 1-ю стадию нашего квеста. Сохраняем скрипт. Открываем КВЕСТ и переходим там на вкладку стадий. Выбираем стадию 1, выделяем в правом окне строчку Empty и в поле результ-скрипта пишем: setobjectivedisplayed айди_квеста 1 1 . Обязательно после этого жмем под полем текста скрипта кнопочку Compile Result! Этим результ-скриптом мы запускаем квест и выводим на экран текст задания номер 1. Теперь надо определиться с предметами поиска. Если нужно будет найти один и тот же предмет, разбросанный по Пустоши в количестве 20-ти штук (те же "особенные" крышки) - то в таком случае нам будет проще. Создаем в соответствующем разделе этот самый предмет и раскидываем его в 20-ти местах по всей Мохаве, где душе угодно. Переходим в раздел скриптов и создаем еще один, КВЕСТОВЫЙ, скрипт. В нем пишем: scn имя_этого_скрипта
short DoOnce
begin GameMode if (player.GetItemCount айди_нужного_предмета == 20) && (DoOnce == 0) ;если есть 20шт необходимого setstage айди_нашего_квеста 10 ;переключить данный квест в стадию 10 set DoOnce to 1 ;сделать значение отслеживающей переменной DoOnce равным 1 elseif (GetStage айди_нашего_квеста == 10) && (DoOnce == 1) ;иначе, если стадия равна 10 и переменная равна 1 setobjectivecompleted айди_нашего_квеста 10 1 ; отметить в Пип-бое задание 10 как выполненное setstage айди_нашего_квеста 20 ;переключить данный квест в стадию 20 set DoOnce to 2 ;сделать значение отслеживающей переменной DoOnce равным 2 endif end Что делает скрипт: вначале он проверяет, что у игрока есть необходимое количество указанных предметов и, если есть, переключает квест на стадию 10. Затем, поскольку стадия стала равной 10, скрипт следом отмечает в Пип-бое, что и задание №10 тоже выполнено и переключает квест в стадию 20. Отслеживающая переменная DоOnce нужна для того, чтобы скрипт после нахождения предметов не выводил каждую секунду сообщения и не "скакал" по стадиям, переключая их по-очереди до бесконечности. Это такая переменная "одноразовости". Имя ей можно дать любое, просто по сложившейся традиции переменной, которая отвечает за одноразовость, дают такое понятное имя DoOnce (сделать один раз). Назначаем этот квестовый скрипт нашему созданному квесту.
Осталось расписать стадии квеста. Идем в квест, выделяем в нем 10-ю стадию. В результ-скрипте этой стадии пишем: setobjectivecompleted айди_квеста 1 1 ; эта команда отмечает в Пип-бое, что задание №1 выполнено setobjectivedisplayed айди_квеста 10 1 ; эта команда выводит показ задания №10 Жмем кнопку компиляции результата. Выделяем затем 20-ю стадию и по аналогии со стадией 10 в поле результ-скрипта вносим команду на получение награды, например - RewardKarma 50 (увеличить карму игроку) или же Player.additem айди_даваемого_предмета-награды. Затем в этой же стадии 20. чуть ниже ставим галочку в чек-боксе Complete Quest (Квест завершен). Если хотим, чтобы на компасе появился маркер, указывающий на цель поиска - то тогда сначала загружаем в окно рендера локацию, где находится искомый предмет (в нашем случае - крышка №1), находим эту самую крышку. Затем открываем квест, переходим на вкладку заданий и выделяем наше первое задание "найти 20 крышек". В поле Target Ref (ниже) по клику ПКМ создаем цель поиска.Выделяем строчку этой цели (в ней будет надпись No Target) и жмем внизу длинную кнопку "Select Reference in Render Window". У нас автоматически окно локаций выведется поверх всех окон и курсор сменится на изображение прицела. Тыкаем этим прицелом в цель поиска (крышка №1). Затем в окне квеста отмечаем чек-бокс "Compass Markers Ignore Locks" (маркеры компаса игнорируют запертое). Для первой крышки мы создали маркер компаса. Повторяем эту процедуру еще 19 раз для всех последующих крышек и в итоге имеем список из 20-ти таргетов (оно нам надо?). На этом всё. Можно проверять в игре.
Если же нужно найти не 20 штук одного и того же предмета, а 20 уникальных, то есть совершенно разных - то тут могут быть варианты. Можно в квестовом скрипте в строчке проверки наличия необходимых предметов прописать все 20, типа: if (player.GetItemCount айди_нужного_предмета№1== 1) && (player.GetItemCount айди_нужного_предмета№2== 1) && (и так далее). Это хоть и громоздко, зато просто. Можно на каждый из предметов повесить один общий скрипт, увеличивающий при добавлении этого предмета некую глобальную переменную, а в квестовом скрипте отслеживать не количество предметов в инвентаре, а значение этой глобальной переменной. Короче - надо сначала определиться, что мы именно и в каком количестве будем "разбрасывать" по локациям, чтобы потом выбрать способ отслеживания найденных предметов
В плагине в Гудспрингсе на крыльце магазина Чета лежит записка, после прочтения которой появляется задание по поиску 5-ти предметов. Сами предметы разбросаны неподалеку и на каждый указывает маркер компаса. После нахождения всех пяти целей возвращаемся к крыльцу магазина и получаем ждущую там награду.
Как заменить оптику на оружии на свою собственную ? (ApeX)Это нетрудно:
Пример на размере стандартного оптического прицела 1024х1024. Возможны и другие размеры для пропорций экрана 16х9, 16х10, 5х4, 4х3. Первым делом нам нужна сама текстура сетки оптического прицела в формате .dds, то, как это будет отображаться на игровом экране. Ее можно скачать, вытащить из другой игры или самим нарисовать. Главное условие при этом - перекрестие сетки должно быть точно по центру. От этого зависит точность при стрельбе с оптикой в игре. Сетка у нас есть и перекрестие точно по центру. Кидаем ее по любому удобному адресу в папку textures. Маленький секрет: если залить свободное место в круге таким или подобным полупрозрачным цветом, то оптический прицел будет давать подсветку при взгляде через него.. Этакий легкий прибор ночного видения. Работает в любое время суток.
Теперь открываем стандартную модель сетки по адресу meshes\interface\hud. К примеру, germanscope.nif. Раскрываем NiNode\NiTriStrips Additive\BSShaderPPLighting и заменяем в нем имеющуюся текстуру на свою.
Должно получиться так. Проверяем точность перекрестия. Сохраняем .nif под другим именем. Открываем ГЭКК и идем в конфиг интересующего нас оружия. Во второй вкладке выбираем нашу модель прицела и в зависимости от того, какая эта оптика(ставящаяся с модификацией или установленная изначально), ставим галочки в нужных местах.
Как сделать "взрыв" из крышек, при убийстве в голову? По подобию перка из Fallout4. (Joopeeter)Тоже делаем перк с Entry Point'ом Add level list on death... Нам потребуется: один перк, один посмертный левел-лист, один посмертный инвентарный предмет и один скрипт. Как говорил КАIN48 - делаем!
Для начала изготовим посмертный инвентарный предмет. Идем в раздел Items - Misc Item, открываем любой итем (например - пепельницу) и меняем ей айди (ID) на новое, к примеру - на CapsExplosionMisc. Больше нам тут ничего менять не нужно, ни модель, ни картинку, ни параметры. Эту вещь "живьем" в игре мы не увидим. Сохраняем, как новый объект: Затем нам нужно создать посмертный левельный список, который перк и будет добавлять жертве. Идем в раздел Items - Leveled Item, кликаем в правом окне ПКМ на списке имеющихся левельных списков и выбираем в контексте строчку New. В открывшемся окне даем собственное айди новому списку, к примеру - CapsExplosionLVL, и справа, в выпадающем списке, выбираем созданный нами инвентарный предмет CapsExplosionMisc. Шанс "невыпадения" (Chance None) ставим ноль, т.е. - предмет 100% будет появляться в этом списке. Теперь создаем нужный перк, который будет добавлять жертве этот самый посмертный список. Идем в раздел Actor Data - Perk и по ПКМ создаем новый перк, даем ему свое уникальное ID, ну скажем - CapsExplosionPerk. Ставим требуемый уровень (Level) для получения перка, отмечаем чек-бокс Playable, чтобы перк был доступен игроку, пишем описание перка. Затем в нижнем окне PerkEntries кликаем ПКМ, чтобы выбрать точку входа: В открывшемся новом окне отмечаем радио-кнопку Entry Point, в левом раскрывающемся списке выбираем параметр Add Leveled List On Death (добавлять левел-лист при смерти), в среднем окне у нас остается единственная там функция Add Leveled List, ну а в правом раскрывающемся списке выбираем, какой посмертный лист будем добавлять жертве, т.е. - наш созданный левел-список CapsExplosionLVL. Затем там же открываем вкладку Target (Цель), кликаем в ней ПКМ и выбираем условие GetIsCreature. В сравнении ставим равно нулю. Это нужно для того, чтобы перк НЕ действовал на животных и прочую живность\железякость из категории кричеров. Жмем ОК, затем еще раз ОК и попадаем на первую страницу перка. В законченном виде он выглядит так: . В игре, при достижении игроком 10-го уровня этот перк будет доступен при уровневом распределении заработанных очков. Если нужно получить перк раньше - ставим уровень поменьше. Осталось написать скрипт, который будет организовывать всю сцену выпадения крышек из жертвы. Идем в раздел Miscellaneous - Script и по клику ПКМ создаем новый скрипт: Вот сам скрипт: --------------------------------- scn CapsExplosionScript
short DoOnce short Z
ref MyDead ref MyOuterItem
Begin OnLoad PlaceAtMe Caps001 20 Disable MarkForDelete End
Begin GameMode
if DoOnce == 10 set MyDead to GetContainer if ( MyDead != 0 ) set Z to ( GetPos z + 100 ) if MyDead.IsLimbGone 1 set MyOuterItem to PlaceAtMe CapsExplosionMisc MyOuterItem.SetPos z Z endif endif endif
if ( DoOnce >= 0 ) && ( DoOnce < 20 ) set DoOnce to ( DoOnce + 1 ) else set DoOnce to -1 RemoveMe endif
End ------------------------------------ Тип скрипта - объектный. Автор скрипта - Joopeeter Осталось только открыть наш посмертный предмет CapsExplosionMisc и в выпадающем списке скриптов выбрать наш новый скрипт: Ну и сохранить всю работу в файл-плагин. Отмечаем этот плагин в мод-менеджере. запускаем игру и идем вышибать мозги крышки из противников.
Как сделать валидацию текстур в FOMM? (КсюХа)А вот как:
Запускаешь FOMM, жмешь кнопку Tools > Archive Invalidation (в разных версиях название и расположение кнопки валидации может отличаться, но слово invalidation в ней обязательно присутствует). На запрос мод-менеджера об удалении СТАРОГО архива валидации отвечаешь "Да".
Затем жмешь еще раз эту же кнопку и на вопрос о создании НОВОГО архива валидации также отвечаешь "Да". На этом - всё, больше ничего не требуется. Примечание: переведенный на русский язык FOMM довольно часто глючит, поэтому желателен оригинальный на английском.
Изменение репутации для пользователя КсюXa
КсюXaOffline
Сообщение №157
написано: 1 июня 2018, 03:37
| Отредактировано: КсюXa - 18 июня 2018, 07:19
После одного из обновлений винды, при попытке редактирования лица перса или попытке открыть любое оружие, стала выскакивать вот такая надпись Assert File: C:\projects\fallout3PC\BSShader\BSShaderManager.cpp Line: 1996 После чего ГЕКК сворачивается. (Колобок2)Возможное решение: Вопрос решается запуском ГЕКК через основную игровую видеокарту. Установленная по-умолчанию в настройках интегрированная карта выдаёт такую ошибку.
Как можно изменить время задержки дыхания под водой? Так она где-то около 10 сек, как можно сделать больше? (Ipatow)Изменить указанную ниже настройку:
fActorSwimBreathBase (по умолчанию 10) - Определяет продолжительность нахождения актера под водой.
ну и по желанию можно поэкспериментировать с этими настройками: fActorSwimBreathMult (по умолчанию 0.5) - Множитель продолжительности нахождения под водой. Базируется на значении атрибута "Выносливость". fActorSwimBreathDamage (по умолчанию 0.2) - Определяет процент общего ущерба здоровью, наносимого в секунду, если слишком долго находиться под водой.
Это параметры игры. Изменяются они в GECK: меню -> Gameplay -> Settings...
Как и где прописать в файлах анимации .kf и в файлах моделей .nif, содержащих анимацию, пути к звукам. (ApeX)Вот так:
Пример показан на анимации перезарядки 1hpreloadl.kf. Однако это применимо и к других анимационным файлам, различие может быть только в местонахождении блока NiTextKeyExtraData. Также пример исходит из того, что нам понадобилось изменить имеющийся звук для анимации на свой не просто заменой звуковых файлов, а указанием нового пути для звука. Для начала нам понадобится запись о звуковом файле в плагине. Настройки.
Открываем ГЭКК, идем в Sound. Создаем новый звук с такими настройками.
Таким же образом создаем и другие, необходимые для перезарядки звуки, как то ...ClipOut, ...ClipIn и подобные. Сохраняем плагин, закрываем ГЭКК. Открываем в NifSkope искомую анимацию. Находим в самом низу NiTextKeyExtraData, жмем по нему мышом один раз. В нижнем поле открываем вкладки Text Keys, пока не находим ту, в котором и прописано название звукового файла из ГЭКК.
Жмем ПКМ и выбираем Edit String Index. Вписываем свое.
Так же делаем и с другими путями для звуков(...ClipOut, ...ClipIn etc). Сохраняем .kf. Все. Для того, чтобы игра подхватила новый путь к звуку в анимации, необходимо будет подключить плагин.
Как перенести существа из Fallout 3 в Fallout New Vegas? (КсюХа)Пример на роботе чужих:
а)скопировать из Фол3 в Вегас папку с моделями роботов и их анимациями (возможно, придется распаковывать из bsa-архива). Если робот использует оружие - скопировать папку с моделью этого оружия. Если оружие использует свои патроны - скопировать папку с моделями этих патронов. Если оружие использует свои пули - скопировать папку с моделями этих пуль прожектилей. Если прожектиль использует какой-то спец-эффект - скопировать арт-модель этого эффекта. Если используются какие-то звуки - ну ты понел... В общем - смотришь в настройках переносимого объекта каждый параметр, чтобы увидеть, что с ним повязано и тянешь всю ниточку. Не забывая при этом, что многое самими разработчиками уже перенесено и имеется в Вегасе (это чтобы лишнего не тянуть) б) скопировать из Фол3 в Вегас папку с текстурами роботов (возможно, придется распаковывать из bsa-архива). Скопировать папку с текстурами оружия. Скопировать папку .... и .т.д. в) открыть ГЕКК для Фол3 г) открыть ГЕКК для Вегас д) смотреть в ГЕКК для Фола и создавать по аналогии в ГЕКК для Вегаса необходимые объекты, в первую очередь - бодипарт. Для объектов указать путь к папке с скопированными моделями. Если папка с текстурами скопирована и размещена по тому же пути, что и в оригинале - то модели сами найдут свои текстуры. Если же путь иной - придется в моделях через Нифскоп переписывать пути. Кое что можно взять и от стандартных роботов, в частности - брызги "крови", в смысле - обломки всякие. е) Раздать роботам пакеты поведения, оружие и прочие ништяки и разместить в локации ж) сохранить все это в свой плагин з) ??? и) PROFIT Пункты в), г) и д) можно заменить на работу в другом редакторе, если воспользоваться ФОЭдит-ом и ФНВЭдит-ом (реально будет удобней и быстрее). В Фоловском Эдите делаем копирование бодипарт робота и самого базового робота в отдельный плагин. При этом перенесутся все-все настройки и параметры. Если робот использует свое, космическое оружие - копируем из соответствующей ветки и его. Заодно и используемые этим оружием боеприпасы и снаряды (прожектили). Не забываем скопировать КомбатСтайл и всё-всё-всё остальное (см. выше). Затем в том же Эдите отвязываем от своего плагина мастер-файл Fallout3.esm и мастер-файл Zeta.esm и назначаем ему мастером один FalloutNV.esm. Перекидываем плагин в папку Вегаса, открываем в вегасовском Эдите и проверяем на наличие ошибок(есть там такая кнопка). Заодно чистим плагин от неизбежного мусора, от всего, что не относится к роботам, но записалось в еспешник. Далее, если всё ОК - открываем плагин в ГЕКК и работаем, как с обычным вегасовским модом, "добивая" вручную то, что позабыли скопировать ранее . Если Эдит показал наличие ошибок - рассматриваем каждую и смотрим что можно сделать (тут вариантов много). Этот путь удобней тем, что не нужно с нуля в Вегасе создавать всё-всё-всё, а остается лишь править упущенное при копировании в Эдит-е. Вот - плагин с двумя портированными роботами: робот-охранник и робот-монтажник. Можно использовать, как базу для своего мода. Плагин не привязан ни к одному стороннему моду, все объекты имеют собственные уникальные ID, все необходимые модели, текстуры, звуки собраны в своих модовых папках, пути к текстурам в моделях переписаны, т.е. - мод полностью автономен. Заодно, если еспешник в FNVEdit-е поковырять - можно увидеть из чего мод состоит, чтобы понять сам принцип переноса. Самих роботов в редакторе можно найти в разделе кричеров, это две новые железяки - ADCombatDroidTemplate и ADMaintenanceDroidTemplate. Можно по вкусу им статы подправить, а то больно уж слабенькие они для Вегаса. В игре же для проверки это чудо иноземной техники можно увидеть на северной дороге, ведущей из Гудспринг к Племени
Как открыть два GECK одновременно? (КсюXa)Для этого...
Надо изменить в GECKCustom.ini строчку bAllowMultipleEditors = 0 на bAllowMultipleEditors = 1. Файл конфигурации редактора GECKCustom.ini расположен в папке Мои документы\My Games\FalloutNV или Fallout 3 или С:\Пользователи\Имя пользователя\Мои документы
У меня в ГЭККе пропали диалоги, условия, списки объектов в локации, вообще всё пропало, везде пустые окна! (Joopeeter)Бывает на Windows 10 - - колонки сузились до нуля. Надо запустить ГЭКК в режиме совместимости с XP, Вистой или семёркой, ткнуть мышкой в пустое окно и нажать сочетание Ctrl и +. Колонки развернутся. Повторять каждый раз в каждом окошке с пропавшими колонками.
Как сделать так, чтобы свет вращался. Ну, например, как полицейские мигалки? (КсюXa)Вращение света клаксона заложено в саму 3D-модель этой лампы,
то есть - в ней (в модели) есть встроенные анимации свечения и вращения. По умолчанию эти анимации не проигрывается, поэтому к этой лампочке прикручен скрипт, заставляющий в нужный момент проигрывать нужную анимацию (команда playgroup в скрипте). А нужный момент для этого клаксона - это как раз открывание двери. Клаксон связан с дверью реф-связью и дверь является "включателем" для клаксона. Скрипт для клаксона называется KlaxonLightScript. Его можно взять за основу, чуть подправить и приспособить под свои нужды. Как править - тут нужны уточнения. В том плане, что нужно знать, как задумано это вращение в игре: что это будет за "мигалка", где будет стоять, когда должна включаться и кто её должен включать. Названия встроенных анимаций, если они есть в моделях, можно посмотреть в Превью. Это когда в окне объектов выделяешь выбранный объект и по клику ПКМ в контексте выбираешь "Просмотр". Откроется окно и в низу окна будет отдельное поле со списком встроенных в модель анимаций. Можно выбрать любую и по кнопке пуск, посмотреть, как она проигрывается. Итак:
Реппконовский скрипт нежелательно брать из-за всяких в нем условий проверки на нахождение там и сям. А вот второй скрипт - простой KlaxonLightScript можно легко использовать на своем объекте. Вопрос - скрипт, полагаю, цепляется к активаторам? Ну, т.е. - к объектам из раздела World Objects - Activators и из раздела Actors - TalkingActivators? И в том и в другом случае - это активаторы. Анимацию они проигрывают, когда их активируют в игре тем или иным способом (а в принципе - не только они, любой объект, у которого есть встроенная анимация, не будет её просто так, сам по себе, проигрывать. Его нужно "заставить" это сделать). К активатору, например, нужно, как минимум, подойти в игре, навести курсор и нажать клавишу Е. Так делали? Срабатывает мигалка? Если да - то скрипт работает правильно. А если хочется, чтобы мигалка крутилась изначально, сама по себе, без активации игроком - то нужно слегка подкорректировать скрипт. Модель клаксона (этого желтого колпачка) имеет в себе три встроенные анимации: 1) forward (анимация постоянного свечения лампы), 2) left (анимация вращения света лампы) и 3) backward (анимация плавного гашения свечения лампы). Чтобы в игре эти анимации включились в нужной последовательности - работает скрипт, навешенный на этот клаксон. Разбор скрипта: скрипт KlaxonLightScript scn KlaxonLightScript
short state ; 0 = off, 1 = flashing
begin OnLoad if state == 1 playgroup left 0 endif end
begin onActivate 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 isAnimPlaying == 0 playgroup left 0 endif endif end
В скрипт введена переменная State (short state). В комментарии к этой строчке сказано, что состояние 0 - это клаксон выключен, состояние 1 - клаксон вспыхивает. По-умолчанию значение переменной равно 0, т.е. клаксон изначально выключен и не светится. Далее идут блоки скрипта. Функции в них обрабатываются сверху вниз, по-порядку. Если для какой-то функции не соблюдены условия - она пропускается и исполняется следующая. Первый блок OnLoad Срабатывает при загрузке заскриптованного объекта в игру - т.е. когда для игрока подгружается локация с размещенным данным объектом (клаксоном). В этом блоке указано, что если значение переменной равно 1 (if state == 1), - тогда проиграть анимацию вращения света лампы (playgroupleft0). Ноль в строчке после left означает, что анимация будет проигрываться бесконечно, по кругу. Но, поскольку значение переменной State не равно 1 (оно равно 0, так заложено в движке игры - объявленные в скриптах переменные имеют по-умолчанию нулевое значение), то при самой первой загрузке объекта в игру, а также при загрузке этого объекта ранее не активированным - анимация проигрываться не будет, поскольку условия не выполнены. Свет клаксона не вращается и сам клаксон не горит. Далее идет блок OnActivate (срабатывает при активации объекта-клаксона) В функциях расписано, что если значение переменной State было когда-либо ранее установлено как 1 (if state == 1), т.е. - лампу ранее включали и она сейчас по-прежнему включена - то установить значение переменной в 0 (set state to 0) и после этого проиграть анимацию выключения лампы клаксона (playgroup backward 0). Иначе же (else) - если предыдущее условие не соблюдено (значение переменной State не равно 1, т.е. лампа уже выключена или еще вообще ни разу не включалась) - то установить значение переменной State в 1 (set state to 1) и проиграть анимацию включения лампы (playgroupforward 1). Отсюда следует, что, поскольку изначально переменная State равна 0 (лампа выключена), то при первой активации клаксона - сработает вторая часть этого блока (то, что написано после слова еlse) и произойдет включение лампы, она загорится (но не замигает - это другая анимация!). Ну и последний блок GameMode (срабатывает в режиме игры). Когда после активации клаксона возвращаемся в игру - срабатывает условие проверки переменной. Если значение переменной State на данный момент равно 1 (if state == 1), а в предыдущем блоке мы как раз установили такое состояние (включили лампу), и если объект в данный момент НЕ проигрывает какую-либо анимацию (if isAnimPlaying == 0), а в предыдущем блоке мы заставили проиграть анимацию лишь однократно ( playgroup forward с флагом 1, что на практике означает однократное проигрывание) - то в таком случае скрипт заставляет включиться анимацию вращения света лампы (playgroupleft 0). Свет клаксона начинает вращаться. И раз значение переменной теперь равно 1 - то при выходе из локации, а затем при следующем заходе в неё будет выполняться условие для первого блока OnLoad. Т.е. - при загрузке локации этот нами включенный клаксон уже будет мигать сразу. А вот при повторной активации этого клаксона (блок OnActivate) поскольку значение переменной State на данный момент равно 1 (мы ее установили в это значение при первой активации, когда включили лампу) - сработает выключение мигалки (if state == 1 playgroup backward 0) и сброс на первоначальное состояние (set state to 0). Т.е. - сработает первая часть блока, до слова else. Исходя из этого: - что нужно подправить в скрипте, чтоб он работал, как нужно по задумке? Естественно, трогать родной скрипт не надо. Нужно сделать на его основе свой собственный, новый скрипт и уже его цеплять к клаксону. Простейший вариант - убрать переменную State и все строчки, где она упоминается (и, соответственно - ненужные if-ы и endif-ы), а также убрать блок OnActivate. Пусть при загрузке и в игровом режиме всегда срабатывает playgroup left 0 и лампа вращается вечно. Вариант второй - переделать так, чтобы свет вращался изначально, но выключался при активации клаксона. Нужно изменить кое-какие цифирки в скрипте на противоположные Оставляю для самостоятельного разбора Вариация первого варианта: scn {Имя скрипта} - без скобок и английскими буквами
begin OnLoad playgroup left 0 end
begin gamemode if isAnimPlaying == 0 playgroup left 0 endif end
Затем размещаешь лампу-активатор в локации, "вешаешь" на неё колечком луч-свечение и готово. В игре эта мигалка-сирена всегда будет светиться и свет вращаться. Кстати, у копии луча света (которую разместишь в локации) на вкладке Extra можно увеличить радиус освещения. По-умолчанию там стоит 256. PS. Если нужна вторая лампа другого цвета - делаем дубликат модели клаксона (не в ГЕКК, а в проводнике Виндовс), правим у неё в нифскопе цвет свечения (в КАРТОТЕКЕ был ответ, как это сделать) и на основе этой модели делаем в ГЕККе второй объект-лампу. Скрипт - один общий для обеих, ему фиолетово у какой лампы запускать анимацию.
Ой, всё...
Изменение репутации для пользователя ApeX
ApeXOffline
Сообщение №164
написано: 11 апреля 2019, 10:58
| Отредактировано: ApeX - 18 июня 2019, 17:33
запускать nvse_loader.exe с параметром "-editor". Для этого надо отредактировать существующий ярлык GECK'а на рабочем столе. Зайдите в свойства ярлыка и в поле "Объект" после закрывающей кавычки допишите "-editor". Например: "C:\Games\Fallout New Vegas\nvse_loader.exe" -editor.
Тема закрыта для вопросов, ибо до сих пор находятся люди, не читающие лозунгов. Вопросы нужно задавать в соответствующих темах Мастерской.
Форум » Fallout: New Vegas » Мастерская » Картотека ОТВЕТОВ по GECK и моддингу (ЗДЕСЬ НЕ ЗАДАЮТ ВОПРОСЫ !!! Здесь собраны готовые ответы)