Модератор форума: КсюXa, ApeX  
Форум » Fallout 3 » Мастерская » Помощь по G.E.C.K. (Помощь по редактору)

Помощь по G.E.C.K.
КсюXa  Offline  Сообщение №1 написано: 25 сентября 2010, 10:57


Гид по Мастерской


Внимание!


Эта тема предназначена только для помощи, связанной с редактором G.E.C.K..
Все вопросы, касательно модмейкерского дела, прошу сюда - "Помощь по моддингу."

Тема по GECK раздела New Vegas



YikxX  Offline  Сообщение №2791 написано: 19 декабря 2023, 17:47


Местный Дон Кихот Ламанчский


Kirill11223344, в условиях срабатывания эффекта прописать GetIsCreatureType 6 == 0

Все люди - курьеры. Просто некоторые не понимают, какие сообщения они несут...
Kirill11223344  Offline  Сообщение №2792 написано: 20 декабря 2023, 16:16 | Отредактировано: Kirill11223344 - 20 декабря 2023, 16:28



15
Цитата YikxX

Kirill11223344, в условиях срабатывания эффекта прописать GetIsCreatureType 6 == 0


Спасибо!!!

AnotherJupiter  Offline  Сообщение №2793 написано: 23 декабря 2023, 13:26



17
Цитата Kirill11223344

напишите мне обозначения типов с припиской, что это, или, хоть наведете нам место где это есть


GetIsCreatureType

Kirill11223344  Offline  Сообщение №2794 написано: 10 марта 2024, 07:53 | Отредактировано: Kirill11223344 - 10 марта 2024, 08:19



15
Всем привет!!!

У меня тут вопрос. Как настроить условие активации эффекта надетой брони, что бы он применялся только если у игрока конкретная единица оружия???

Через функцию getisid почему-то не вышло? или же я не так настроил.

Подскажите пожалуйста.

Мод для Fallout 3


YikxX  Offline  Сообщение №2795 написано: 10 марта 2024, 16:13


Местный Дон Кихот Ламанчский


Kirill11223344, в инвентаре или в руках? Если первое - то GetItemCount ID_оружия > 0 если второе - GetEquipped ID_оружия == 1 Run on Reference - Player в условиях срабатывания эффекта.

Все люди - курьеры. Просто некоторые не понимают, какие сообщения они несут...
AnotherJupiter  Offline  Сообщение №2796 написано: 11 марта 2024, 14:33



17
Добавлю, что если под "конкретной единицей" понимается конкретный экземпляр из многих, то надо его подменить экземпляром другого объекта с другим BaseID.

https://modgames.net//forum/209-43678-1346569-16-1710166956


JIuKBuDaToR  Offline  Сообщение №2797 написано: 2 марта 2025, 07:21 | Отредактировано: JIuKBuDaToR - 2 марта 2025, 07:35



86
Всем здравствуйте! Такая у меня проблема!

У меня НПС F3 живет в доме (в ячейке), у него есть пакеты поведения, в определенное время он выходит из дома и юзает маркеры действия. Когда он заходит домой на ночь спать, то с утра обратно на улицу он не выходит. Как заставить его выходить из дома?) Я предпалагаю, что игра его пакет более не обрабатывает, когда он заходит в ячейку. Но у НПС из Мегатонны такой проблемы нет.
Например, НПС из Мегатонны, спокойно выходят из ячеек, гуляют, идут спать обратно к себе в дома, с утра снова выходят гулять (если ждать до утра на улице), итак циклично.

Распишу подробно каждый пакет:
PackageHomeEat7x2               - с 07:00 до 09:00 ест у себя дома.
PackageStreetSandBox9x5      - с 09:00 до 14:00 выходит на улицу, использует Х-маркер, в его радиусе использует мебель и маркеры с анимациями.
PackageHomeSandBox14x8     - с 14:00 до 22:00 идет в дом, сидит дома, использует мебель и маркеры с анимациями.
PackageHomeSleep22x9          - с 22:00 до 07:00 спист у себя доме в кровати.

"Хочешь сделать что-нибудь хорошее, сделай это сам!"
ApeX  Offline  Сообщение №2798 написано: 2 марта 2025, 09:05



Может, расписание не установлено или условия? Пакеты AI в Fallout 3

JIuKBuDaToR  Offline  Сообщение №2799 написано: 2 марта 2025, 10:08 | Отредактировано: JIuKBuDaToR - 2 марта 2025, 10:21



86
Здравствуйте! Спасибо за ответ! Ссылка ваша идет на пустой сайт. Я для изучения механик использую сайт https://geckwiki.com.
Проблему получилось решить самостоятельно! Оказалось, что необходимо было сделать ключик для НПС, и указать в ГЕКК, какая дверь им отпирается. У меня ведь скриптом двери на ночь закрываются, НПС не мог выйти из дома получается.

"Хочешь сделать что-нибудь хорошее, сделай это сам!"
JIuKBuDaToR  Offline  Сообщение №2800 написано: 2 марта 2025, 10:10 | Отредактировано: JIuKBuDaToR - 2 марта 2025, 10:15



86
Другой вопрос, как сделать вывод уведомлений текстом в левой верхней части экрана, как на скрине? 

image

"Хочешь сделать что-нибудь хорошее, сделай это сам!"
ApeX  Offline  Сообщение №2801 написано: 2 марта 2025, 11:10



Цитата JIuKBuDaToR

идет на пустой сайт.


Проблема браузера. Сам адрес https://modder.ucoz.ru/load/pakety_ai_v_fallout_3_spravochnyj_material/7-1-0-129  


Цитата JIuKBuDaToR

сделать вывод уведомлений текстом


примерно так.

JIuKBuDaToR  Offline  Сообщение №2802 написано: 2 марта 2025, 12:43 | Отредактировано: JIuKBuDaToR - 2 марта 2025, 12:46



86
ApeX, способ который вы мне подсказали, мне не подходит. Команда showmessage выводит текст по центру экрана, а не сбоку(
Я сейчас смотрю списки функций для F3 и FOSE. Не могу найти нужную функцую. Есть функция MessageEx, которая сразу сообщение выводит сбоку в верхней левой части экран. К сожалению, она только для NVSE, самого Вегаса. Мой GECK поддерживает только FOSE.

image

"Хочешь сделать что-нибудь хорошее, сделай это сам!"
ApeX  Offline  Сообщение №2803 написано: 2 марта 2025, 13:37



Это стандартная вегасовская система оповещений - вверху слева. Скрин нашел подходящий. НВСЕ не нужен для этого. Не помню, как в тройке, вроде так же было. 

Еще такой вариант вызова месседжа есть. В настройках самого сообщения в ГЭКК есть ведь опция вкл/откл его в отдельном окне. Может быть и поможет.


YikxX  Offline  Сообщение №2804 написано: 2 марта 2025, 17:22


Местный Дон Кихот Ламанчский


JIuKBuDaToR, это зависит от самого сообщения, которое выводится командой showmessage

Мессадж с галкой Message Box выводится по центру экрана, без нее - слева сверху. Там же выставляется и рожица волт-боя (поле Icon), которая будет выведена. По умолчанию все выводится с улыбающейся рожицей

Все люди - курьеры. Просто некоторые не понимают, какие сообщения они несут...
JIuKBuDaToR  Offline  Сообщение №2805 написано: 2 марта 2025, 17:38 | Отредактировано: JIuKBuDaToR - 2 марта 2025, 17:40



86
YikxX, Спасибо вам большое! Спасибо и вам, Apex! Вы мне очень помогли! Ваш способ с галкой мне подошел. Как же удобно теперь отслеживать работу скриптов!

"Хочешь сделать что-нибудь хорошее, сделай это сам!"
JIuKBuDaToR  Offline  Сообщение №2806 написано: 2 марта 2025, 20:35 | Отредактировано: JIuKBuDaToR - 2 марта 2025, 20:45



86
Нужна помощь со скриптом!

У меня есть НПС, который живет в хижине (ячейки). НПС использует разные пакеты поведения, днем он выходит на улицу и следует пакету Sandbox. Я написал скрипт, который запирает/отпирает дверь в его хижину, в зависимости от времени суток. Была проблема у меня - НПС, днем не выходил на улицу по пакету из хижины, когда я ждал его снаружи (в Пустоши). Поясню, я ждал его на улице, в 9 утра он должен был выйти, но он сидел дома. Тогда я к нему сам заходил в хижину, и только в таком случае, он выходил гулять на улицу. Потратил сутки, но нашел выход. Оказывается, необходимо было сделать НПС ключ и привязать ключ к двери в хижину. Именно с ключом, он стал выходить на улицу по пакету из дома. Но вот проблема следующая - для того, чтобы привязать ключ к двери, необходимо было указать в ref объекте принадлежность ключа, выбрал нужный ключ и дверь оказалась закрыта. То есть, при первом заходе к хижине, дверь в нее закрыта и нпс не может в нее зайти с Пустоши по пакету)) Мой скрипт не учитывает этот нюанс. Мой скрипт запирает дверь только вечером и отпирает ее с утра. Я хочу доработать скрипт с вашей помощью! 

Прикрепляю вам видео-обзор самого мода с описанием проблемы и просьбы!
https://www.youtube.com/watch?v=acjDE6jKwt0

Итак сам скрипт:

SCN A01SpringvaleScavengerDoorQuestSCRIPT ;ID Скрипта

Short DoorLocked ;Переменная, изначально равна 2

Begin gamemode

 If (GetCurrentTime >= 22) && (DoorLocked == 0) ;Если время на Пустоши больше или равно 22 и переменная равна 0, тогда выполняется следующее:

  SetCellOwnership zBoatsAndBaitCOPY0000 A01SpringvaleScavenger ;Присваивает владельца для ячейки

  A01SpringvaleScavengerDoorRef.lock 50 ;Запирает внешнюю дверь

  A01SpringvaleScavengerDoorRefIn.lock 50 ;Запирает внутреннюю дверь

  Set DoorLocked to 1 ;Устанавливаем значение для переменной - 1

  ShowMessage A01SpringvaleScavengerDoorMessage1 ;Выводит текст: "Дверь закрыта!"

 Elseif (GetCurrentTime < 7) && (DoorLocked == 0) ;Если время на Пустоши меньше 7, и переменная равна 0, тогда выполняется следующее:

  SetCellOwnership zBoatsAndBaitCOPY0000 A01SpringvaleScavenger ;Присваивает владельца для ячейки

  A01SpringvaleScavengerDoorRef.lock 50 ;Запирает внешнюю дверь

  A01SpringvaleScavengerDoorRefIn.lock 50 ;Запирает внутреннюю дверь

  Set DoorLocked to 1 ;Устанавливаем значение для переменной - 1

  ShowMessage A01SpringvaleScavengerDoorMessage1 ;Выводит текст: "Дверь закрыта!"

 Elseif (GetCurrentTime >= 7 && GetCurrentTime < 22) && (DoorLocked == 1) ;Если время на Пустоши больше или равно 7 и меньше 22, и переменная равна 1, тогда выполняется следующее:

  SetCellOwnership zBoatsAndBaitCOPY0000 ;Убирает от ячейки владельца

  A01SpringvaleScavengerDoorRef.unlock ;Отпирает внешнюю дверь

  A01SpringvaleScavengerDoorRefIn.unlock ;Отпирает внутреннюю дверь

  Set DoorLocked to 0 ;Устанавливаем значение для переменной - 0

  ShowMessage A01SpringvaleScavengerDoorMessage0 ;Выводит текст: "Дверь открыта!"

 Endif

End


"Хочешь сделать что-нибудь хорошее, сделай это сам!"
YikxX  Offline  Сообщение №2807 написано: 2 марта 2025, 23:14 | Отредактировано: YikxX - 3 марта 2025, 00:09


Местный Дон Кихот Ламанчский


JIuKBuDaToR, не совсем понял, зачем это все... Чтобы непись без наличия рядом ГГ что-то делал по пакетам, надо всего лишь убрать у него флаг No Low Level Processing + добавить Use AI Packets (если используется шаблон)
Плюсом добавить в пакет "гуляния" проверку на закрытость двери, чтобы когда не надо непись никогда гулять даже не пытался. Хотя проще в пакет гуляния вписать временной интервал, когда это делать можно.

P.S. Для вывода отладочных сообщений в скриптах проще использовать команду printc

Все люди - курьеры. Просто некоторые не понимают, какие сообщения они несут...
JIuKBuDaToR  Offline  Сообщение №2808 написано: 3 марта 2025, 11:36 | Отредактировано: JIuKBuDaToR - 3 марта 2025, 11:39



86
YikxX, Я попробую убрать флаг No Low Level Processing, думаю это поможет, буду проверять. Шаблон не использую, Пакеты вручную выданы, Use AI Packets отмечать тогда не буду. Вам вопрос сразу, если флаг уберу, не будет ли дополнительная нагрузка идти на игру? Я стараюсь скрипт написать таким образом, чтобы не было дополнительных нагрузок на игру! 
А как вы предлагаете добавить в пакет гуления проверку? Не понимаю. У меня сам скрипт отпирает/запирает двери, в зависимости от времени. 

Вы смотрели мое видео? Как можно отпереть единожды двери при первом посещении дома? Дверь по умолчанию ведь закрыта, из-за того что я привязал ключ к двери.

Так же, поможете написать скрипт, который будет запускаться одним триггером (Подробнее в видео). У меня получилось написать двва скрипта через два триггера, что я считаю слишком криворуко))
Скрипт должен во время нахождении игрока в зоне триггера запускать квест со скриптом запирания/отпирания двери. При выходе из зоны триггера, квест должен останавливаться, чтобы не нести  дополнительную нагрузку на игру. Ведь если его не остановить, квест со скриптом будет работать до конца игры, лишняя нагрузка все таки.



"Хочешь сделать что-нибудь хорошее, сделай это сам!"
ApeX  Offline  Сообщение №2809 написано: 3 марта 2025, 12:30



Цитата JIuKBuDaToR

Скрипт должен во время нахождении игрока в зоне триггера запускать квест со скриптом запирания/отпирания двери


Можно же без квестов, проще.

JIuKBuDaToR  Offline  Сообщение №2810 написано: 3 марта 2025, 17:51 | Отредактировано: JIuKBuDaToR - 3 марта 2025, 17:52



86
ApeX, Действительно! Можно ведь было на один скрипт вписать два блока и повесить его на один региона! Спасибо! 
Квест необходим, чтобы скрипт работал постоянно и проверял условия блока до тех пор пока игрок находится в регионе триггера. 
Если скрипт отпирания/закрытия дверей повесить на триггер, скрипт выполнится один раз. А квестом, скрипт будет повторяться и проверять условия постоянно.

А что мне делать с закрытой дверью по умолчанию? Как ее лучше отпереть один раз? Можно создать триггер, при заходе в него, дверь сразу отопрется и скрипт отключит триггер из игры. А еще способы какие есть?

"Хочешь сделать что-нибудь хорошее, сделай это сам!"
YikxX  Offline  Сообщение №2811 написано: 4 марта 2025, 09:29 | Отредактировано: YikxX - 4 марта 2025, 11:01


Местный Дон Кихот Ламанчский


Цитата JIuKBuDaToR

А что мне делать с закрытой дверью по умолчанию?


Не закрывать ее да и все. Локдата в 0. И непонятно, что значит закрытая? Закрытая как дверь или закрытая на ключ? Вроде по умолчанию дверь на ключ не закрывается и судя по видео, закрывать ее отдельно параметром рефа двери смысла нет.

P.S. Нашел время посмотреть видео smile

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 Название_квеста

Все люди - курьеры. Просто некоторые не понимают, какие сообщения они несут...
JIuKBuDaToR  Offline  Сообщение №2812 написано: 5 марта 2025, 07:32 | Отредактировано: JIuKBuDaToR - 5 марта 2025, 10:56



86
YikxX, Спасибо за ответ!
1) Я уже догадался так сделать, объединить в 1 скрипт и 1 триггер, так действительно удобно! ApeX, подсказал мне)

2) Я попробовал ваш способ через проверку "If (GetCurrentTime >= 22) && (GetCurrentTime <= 7)".
Результат - в игре дверь не запирается! Жду в 22, в 23, дверь постоянно отпирается, выводится текст, что дверь открыта. Блок Else не работает.

image3

Вот старый скрипт, через переменную:

image2

3) Появился вопрос - Как мне обединить треугольники Navmesh в одну зеленую линию? Там граница между квадратом карты, треугольники нужно объединить в зеленую полосу, чтобы НПС ходили через границу))

image

4) И снова новая проблема, которая появилась сама собой. Нашел место, где при повороте камеры/движении проявляется такой баг.
Я делал проверки, без мода такой проблемы в этом месте нет, других каких-либо модов я не использую.
Оставил ссылку на видео с обзором бага - https://youtu.be/YF8Rvq_p0hs

image4
image5

"Хочешь сделать что-нибудь хорошее, сделай это сам!"
ApeX  Offline  Сообщение №2813 написано: 5 марта 2025, 10:53



Цитата JIuKBuDaToR

чтобы НПС ходили через границу


Чтобы неписи ходили, навмеш следует финализировать и пробить на ошибки. В экстерьерах его обычно тянут от уже существующего рабочего на новое пространство, тогда и стыков не бывает. 

Здесь всё про навмеш с картинками - как тянуть, финализировать https://modder.ucoz.ru/load/7-1-0-97


JIuKBuDaToR  Offline  Сообщение №2814 написано: 5 марта 2025, 13:08



86
ApeX, Я скачал руководство по вашей ссылке. В нем описано создание навмеша в интерьерах. Ничего не сказано о том, как соединить границы между ячейками экстерьера в зеленые линии. У меня как видите треугольники соприкасаются друг с другом на границе, но зеленой линии нет, без нее нпс не может перемещаться с одной границы на другую.

"Хочешь сделать что-нибудь хорошее, сделай это сам!"
ApeX  Offline  Сообщение №2815 написано: 5 марта 2025, 14:00



Потому что в экстерьерах тянут от существующего навмеша на новое пространство, поэтому и нет про соединения. Это в интерьерах не страшно, можно соединять с внешним миром и через телепорты дверей. 

Но есть про то, как навмеш тянуть с нуля. А с нуля придется, если не сработает слияние вершин/ребер через Q, как здесь описано. Слиянием не пользовался, поэтому хз.


JIuKBuDaToR  Offline  Сообщение №2816 написано: 10 марта 2025, 14:36 | Отредактировано: JIuKBuDaToR - 10 марта 2025, 15:09



86
Здравствуйте! У меня не получается скомпилировать скрипт. Не понимаю почему)

Скриптом хочу заставить НПС идти к Игроку и начинать с ним диалог, когда Игрок входит в зону триггера.

P.s. Я видел в картотеке пример подобного скрипта. Он мне не подходит, потому что функция IsActionRef работает только с блоком OnActivate.

А блок OnActivate не повесить на зону триггера, использую блок OnTriggerEnter.

Вот не пойму, что я делаю неправильно))

scn A01DragSCRIPTStartDialogue

ref A01DragNPCREF; Ссылка на NPC

Begin OnTriggerEnter Player

    ; Проверяем, что игрок вошёл в триггер

    if A01DragNPCREF.GetDistance Player < 500 ; Проверка расстояния

        A01DragNPCREF.MoveTo Player ; NPC подходит к игроку

        A01DragNPCREF.StartConversation Player ; Начинает диалог

    endif

End

Вот ошибка, которую выдает мне компилятор:

image


"Хочешь сделать что-нибудь хорошее, сделай это сам!"
ApeX  Offline  Сообщение №2817 написано: 10 марта 2025, 16:37



Переменная из другого скрипта, поэтому ошибка? GECK PowerUp (старее), GECK Extender FO3 (новее) вроде как показывают ошибки. Ссылка на ссылки.

YikxX  Offline  Сообщение №2818 написано: 10 марта 2025, 16:41


Местный Дон Кихот Ламанчский


JIuKBuDaToR, не думаю, что тут вообще нужна эта строка. Реф для непися задается в окне его свойств, а не в скрипте. А скрипт и сам поймет, что A01DragNPCREF - это референс на непися.

MoveTo - не идет к игроку,а переносится к нему, это немного разные вещи wink Чтобы непись шел к игроку, надо ему сделать соотв. AI-пакет, с целью путешествия - игрок и соотв условиями запуска этого пакета

Все люди - курьеры. Просто некоторые не понимают, какие сообщения они несут...
JIuKBuDaToR  Offline  Сообщение №2819 написано: 10 марта 2025, 16:55



86
ApeX, У меня версия ГЕКК: "FO3 GECK Extender Rev. 0.12"
A01DragNPCREF имеет реф айди нпс в ячейке/локации

"Хочешь сделать что-нибудь хорошее, сделай это сам!"
JIuKBuDaToR  Offline  Сообщение №2820 написано: 10 марта 2025, 17:12 | Отредактировано: JIuKBuDaToR - 10 марта 2025, 17:55



86
YikxX, Так а почему скрипт впринципе не компилируется? Подскажите пожалуйста)
Буду знать что MoveTo тепелепортирует. Компилятор отказывается видеть ID ref моего НПС в локации.

image

Вот допустим, хочу скриптом заставить нпс телепортироваться ко мне и начать диалог. Что в скрипте не так?)

Компилятор ругается на рефссылку.


image

Переводчик переводит ошибку так:

"Ошибка синтаксиса. Недопустимая ссылка 'ADragNPCREF' (в этом контексте разрешены только ссылки на объекты и ссылочные переменные)."

То есть получается, что проверить НПС компилятор не может? Или может, но тогда какой функцией?




"Хочешь сделать что-нибудь хорошее, сделай это сам!"
Форум » Fallout 3 » Мастерская » Помощь по G.E.C.K. (Помощь по редактору)
Поиск:





Ответ на жалобу смотрите в разделе жалоб
Загружается...