Эта тема предназначена только для помощи, связанной с редактором G.E.C.K.. Все вопросы, касательно модмейкерского дела, прошу сюда - "Помощь по моддингу."
Если вместо ГЕККа запускается белый экран - это из-за ENBшного d3d9.dll в папке игры. Если после одного из обновлений винды при попытке редактирования лица перса или попытке открыть любое оружие стала выскакивать вот такая надпись Assert File: C:\projects\fallout3PC\BSShader\BSShaderManager.cpp(пути могут различаться) Line: 1996 После чего ГЕКК сворачивается. Вопрос решатся запуском ГЕКК через основную игровую видюху. Установленная по умолчанию в настройках интегрированная выдаёт такую ошибку.
Kirill11223344, в инвентаре или в руках? Если первое - то GetItemCount ID_оружия > 0 если второе - GetEquipped ID_оружия == 1 Run on Reference - Player в условиях срабатывания эффекта.
Все люди - курьеры. Просто некоторые не понимают, какие сообщения они несут...
Добавлю, что если под "конкретной единицей" понимается конкретный экземпляр из многих, то надо его подменить экземпляром другого объекта с другим BaseID.
У меня НПС F3 живет в доме (в ячейке), у него есть пакеты поведения, в определенное время он выходит из дома и юзает маркеры действия. Когда он заходит домой на ночь спать, то с утра обратно на улицу он не выходит. Как заставить его выходить из дома?) Я предпалагаю, что игра его пакет более не обрабатывает, когда он заходит в ячейку. Но у НПС из Мегатонны такой проблемы нет. Например, НПС из Мегатонны, спокойно выходят из ячеек, гуляют, идут спать обратно к себе в дома, с утра снова выходят гулять (если ждать до утра на улице), итак циклично.
Распишу подробно каждый пакет: PackageHomeEat7x2 - с 07:00 до 09:00 ест у себя дома. PackageStreetSandBox9x5 - с 09:00 до 14:00 выходит на улицу, использует Х-маркер, в его радиусе использует мебель и маркеры с анимациями. PackageHomeSandBox14x8 - с 14:00 до 22:00 идет в дом, сидит дома, использует мебель и маркеры с анимациями. PackageHomeSleep22x9 - с 22:00 до 07:00 спист у себя доме в кровати.
"Хочешь сделать что-нибудь хорошее, сделай это сам!"
Здравствуйте! Спасибо за ответ! Ссылка ваша идет на пустой сайт. Я для изучения механик использую сайт https://geckwiki.com. Проблему получилось решить самостоятельно! Оказалось, что необходимо было сделать ключик для НПС, и указать в ГЕКК, какая дверь им отпирается. У меня ведь скриптом двери на ночь закрываются, НПС не мог выйти из дома получается.
"Хочешь сделать что-нибудь хорошее, сделай это сам!"
JIuKBuDaToROffline
Сообщение №2800
написано: 2 марта 2025, 10:10
| Отредактировано: JIuKBuDaToR - 2 марта 2025, 10:15
ApeX, способ который вы мне подсказали, мне не подходит. Команда showmessage выводит текст по центру экрана, а не сбоку( Я сейчас смотрю списки функций для F3 и FOSE. Не могу найти нужную функцую. Есть функция MessageEx, которая сразу сообщение выводит сбоку в верхней левой части экран. К сожалению, она только для NVSE, самого Вегаса. Мой GECK поддерживает только FOSE.
"Хочешь сделать что-нибудь хорошее, сделай это сам!"
Это стандартная вегасовская система оповещений - вверху слева. Скрин нашел подходящий. НВСЕ не нужен для этого. Не помню, как в тройке, вроде так же было.
Еще такой вариант вызова месседжа есть. В настройках самого сообщения в ГЭКК есть ведь опция вкл/откл его в отдельном окне. Может быть и поможет.
JIuKBuDaToR, это зависит от самого сообщения, которое выводится командой showmessage
Мессадж с галкой Message Box выводится по центру экрана, без нее - слева сверху. Там же выставляется и рожица волт-боя (поле Icon), которая будет выведена. По умолчанию все выводится с улыбающейся рожицей
Все люди - курьеры. Просто некоторые не понимают, какие сообщения они несут...
JIuKBuDaToROffline
Сообщение №2805
написано: 2 марта 2025, 17:38
| Отредактировано: JIuKBuDaToR - 2 марта 2025, 17:40
YikxX, Спасибо вам большое! Спасибо и вам, Apex! Вы мне очень помогли! Ваш способ с галкой мне подошел. Как же удобно теперь отслеживать работу скриптов!
"Хочешь сделать что-нибудь хорошее, сделай это сам!"
JIuKBuDaToROffline
Сообщение №2806
написано: 2 марта 2025, 20:35
| Отредактировано: JIuKBuDaToR - 2 марта 2025, 20:45
У меня есть НПС, который живет в хижине (ячейки). НПС использует разные пакеты поведения, днем он выходит на улицу и следует пакету Sandbox. Я написал скрипт, который запирает/отпирает дверь в его хижину, в зависимости от времени суток. Была проблема у меня - НПС, днем не выходил на улицу по пакету из хижины, когда я ждал его снаружи (в Пустоши). Поясню, я ждал его на улице, в 9 утра он должен был выйти, но он сидел дома. Тогда я к нему сам заходил в хижину, и только в таком случае, он выходил гулять на улицу. Потратил сутки, но нашел выход. Оказывается, необходимо было сделать НПС ключ и привязать ключ к двери в хижину. Именно с ключом, он стал выходить на улицу по пакету из дома. Но вот проблема следующая - для того, чтобы привязать ключ к двери, необходимо было указать в ref объекте принадлежность ключа, выбрал нужный ключ и дверь оказалась закрыта. То есть, при первом заходе к хижине, дверь в нее закрыта и нпс не может в нее зайти с Пустоши по пакету)) Мой скрипт не учитывает этот нюанс. Мой скрипт запирает дверь только вечером и отпирает ее с утра. Я хочу доработать скрипт с вашей помощью!
Elseif (GetCurrentTime >= 7 && GetCurrentTime < 22) && (DoorLocked == 1) ;Если время на Пустоши больше или равно 7 и меньше 22, и переменная равна 1, тогда выполняется следующее:
SetCellOwnership zBoatsAndBaitCOPY0000 ;Убирает от ячейки владельца
JIuKBuDaToR, не совсем понял, зачем это все... Чтобы непись без наличия рядом ГГ что-то делал по пакетам, надо всего лишь убрать у него флаг No Low Level Processing + добавить Use AI Packets (если используется шаблон)
Плюсом добавить в пакет "гуляния" проверку на закрытость двери, чтобы когда не надо непись никогда гулять даже не пытался. Хотя проще в пакет гуляния вписать временной интервал, когда это делать можно.
P.S. Для вывода отладочных сообщений в скриптах проще использовать команду printc
Все люди - курьеры. Просто некоторые не понимают, какие сообщения они несут...
JIuKBuDaToROffline
Сообщение №2808
написано: 3 марта 2025, 11:36
| Отредактировано: JIuKBuDaToR - 3 марта 2025, 11:39
YikxX, Я попробую убрать флаг No Low Level Processing, думаю это поможет, буду проверять. Шаблон не использую, Пакеты вручную выданы, Use AI Packets отмечать тогда не буду. Вам вопрос сразу, если флаг уберу, не будет ли дополнительная нагрузка идти на игру? Я стараюсь скрипт написать таким образом, чтобы не было дополнительных нагрузок на игру! А как вы предлагаете добавить в пакет гуления проверку? Не понимаю. У меня сам скрипт отпирает/запирает двери, в зависимости от времени.
Вы смотрели мое видео? Как можно отпереть единожды двери при первом посещении дома? Дверь по умолчанию ведь закрыта, из-за того что я привязал ключ к двери.
Так же, поможете написать скрипт, который будет запускаться одним триггером (Подробнее в видео). У меня получилось написать двва скрипта через два триггера, что я считаю слишком криворуко)) Скрипт должен во время нахождении игрока в зоне триггера запускать квест со скриптом запирания/отпирания двери. При выходе из зоны триггера, квест должен останавливаться, чтобы не нести дополнительную нагрузку на игру. Ведь если его не остановить, квест со скриптом будет работать до конца игры, лишняя нагрузка все таки.
"Хочешь сделать что-нибудь хорошее, сделай это сам!"
ApeX, Действительно! Можно ведь было на один скрипт вписать два блока и повесить его на один региона! Спасибо! Квест необходим, чтобы скрипт работал постоянно и проверял условия блока до тех пор пока игрок находится в регионе триггера. Если скрипт отпирания/закрытия дверей повесить на триггер, скрипт выполнится один раз. А квестом, скрипт будет повторяться и проверять условия постоянно.
А что мне делать с закрытой дверью по умолчанию? Как ее лучше отпереть один раз? Можно создать триггер, при заходе в него, дверь сразу отопрется и скрипт отключит триггер из игры. А еще способы какие есть?
"Хочешь сделать что-нибудь хорошее, сделай это сам!"
YikxXOffline
Сообщение №2811
написано: 4 марта 2025, 09:29
| Отредактировано: YikxX - 4 марта 2025, 11:01
Не закрывать ее да и все. Локдата в 0. И непонятно, что значит закрытая? Закрытая как дверь или закрытая на ключ? Вроде по умолчанию дверь на ключ не закрывается и судя по видео, закрывать ее отдельно параметром рефа двери смысла нет.
P.S. Нашел время посмотреть видео
1) Лив триггер и ентер триггер засунуть в 1 скрипт, а не 2 отдельных и привязать его к 1 маркеру.
2) Ref_двери (должен быть персистент референс) в ячейке.lock 50 для запирания двери на средний замок и .unlock для открывания
Использовать менее громоздкую конструкцию в условии открытия/закрытия
If GetCurrentTime >= 22 && GetCurrentTime <= 7
Ref_двери (должен быть персистент референс) в ячейке.lock 50
...
else
Ref_двери (должен быть персистент референс) в ячейке.unlock
...
endif
Все. Накойхер там переменная дурлокед/опен - непонятно. Закрытие или открытие уже закрытой/открытой двери ни к чему ужасному не приведет. Просто время процессинга квеста увеличить до минуты (или лучше 2 секунд, так будет математически правильней, так как редко кто меняет скорость течения времени в игре) и всего делов. Чтобы игрок зайдя в триггер в 21:59 и дойдя до двери в 22:00 закономерно наткнулся на закрытую дверь, а не открытую.
Можно это сделать прямо в скрипте триггера, добавив SetQuestDelay Название_квеста 2 после StartQuest Название_квеста
Все люди - курьеры. Просто некоторые не понимают, какие сообщения они несут...
JIuKBuDaToROffline
Сообщение №2812
написано: 5 марта 2025, 07:32
| Отредактировано: JIuKBuDaToR - 5 марта 2025, 10:56
YikxX, Спасибо за ответ! 1) Я уже догадался так сделать, объединить в 1 скрипт и 1 триггер, так действительно удобно! ApeX, подсказал мне)
2) Я попробовал ваш способ через проверку "If (GetCurrentTime >= 22) && (GetCurrentTime <= 7)". Результат - в игре дверь не запирается! Жду в 22, в 23, дверь постоянно отпирается, выводится текст, что дверь открыта. Блок Else не работает.
Вот старый скрипт, через переменную:
3) Появился вопрос - Как мне обединить треугольники Navmesh в одну зеленую линию? Там граница между квадратом карты, треугольники нужно объединить в зеленую полосу, чтобы НПС ходили через границу))
4) И снова новая проблема, которая появилась сама собой. Нашел место, где при повороте камеры/движении проявляется такой баг. Я делал проверки, без мода такой проблемы в этом месте нет, других каких-либо модов я не использую. Оставил ссылку на видео с обзором бага - https://youtu.be/YF8Rvq_p0hs
"Хочешь сделать что-нибудь хорошее, сделай это сам!"
Чтобы неписи ходили, навмеш следует финализировать и пробить на ошибки. В экстерьерах его обычно тянут от уже существующего рабочего на новое пространство, тогда и стыков не бывает.
Здесь всё про навмеш с картинками - как тянуть, финализировать https://modder.ucoz.ru/load/7-1-0-97
ApeX, Я скачал руководство по вашей ссылке. В нем описано создание навмеша в интерьерах. Ничего не сказано о том, как соединить границы между ячейками экстерьера в зеленые линии. У меня как видите треугольники соприкасаются друг с другом на границе, но зеленой линии нет, без нее нпс не может перемещаться с одной границы на другую.
"Хочешь сделать что-нибудь хорошее, сделай это сам!"
Потому что в экстерьерах тянут от существующего навмеша на новое пространство, поэтому и нет про соединения. Это в интерьерах не страшно, можно соединять с внешним миром и через телепорты дверей.
Но есть про то, как навмеш тянуть с нуля. А с нуля придется, если не сработает слияние вершин/ребер через Q, как здесь описано. Слиянием не пользовался, поэтому хз.
JIuKBuDaToROffline
Сообщение №2816
написано: 10 марта 2025, 14:36
| Отредактировано: JIuKBuDaToR - 10 марта 2025, 15:09
JIuKBuDaToR, не думаю, что тут вообще нужна эта строка. Реф для непися задается в окне его свойств, а не в скрипте. А скрипт и сам поймет, что A01DragNPCREF - это референс на непися.
MoveTo - не идет к игроку,а переносится к нему, это немного разные вещи Чтобы непись шел к игроку, надо ему сделать соотв. AI-пакет, с целью путешествия - игрок и соотв условиями запуска этого пакета
Все люди - курьеры. Просто некоторые не понимают, какие сообщения они несут...
YikxX, Так а почему скрипт впринципе не компилируется? Подскажите пожалуйста) Буду знать что MoveTo тепелепортирует. Компилятор отказывается видеть ID ref моего НПС в локации.
Вот допустим, хочу скриптом заставить нпс телепортироваться ко мне и начать диалог. Что в скрипте не так?)
Компилятор ругается на рефссылку.
Переводчик переводит ошибку так:
"Ошибка синтаксиса. Недопустимая ссылка 'ADragNPCREF' (в этом контексте разрешены только ссылки на объекты и ссылочные переменные)."
То есть получается, что проверить НПС компилятор не может? Или может, но тогда какой функцией?
"Хочешь сделать что-нибудь хорошее, сделай это сам!"