• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.432
Благодарности
4.771
Баллы
625
  • Первое сообщение
  • #1
1767600363729.png

RU EN

 

Вложения

  • Union_Primary_Universal 12.02.2022.zip
    44 MB · Просмотры: 28.433
  • Union 1.0m 26.06.2022.zip
    11,8 MB · Просмотры: 977
  • Union 1.0m 26.06.2022 v2.zip
    11,8 MB · Просмотры: 627
  • Union 1.0m 26.06.2022 v3.zip
    11,8 MB · Просмотры: 30.733

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.979
Благодарности
582
Баллы
275
Приветствую всех.
Возможно ли сделать своеобразный фикс/патч с помощью Union, который будет запрещать начало форсированного диалога с NPC, если в данный момент на ГГ нападает другой NPC/монстр?
Конкретный пример того, что я хочу убрать, можно увидеть в файле сохранения из последней версии "Неоф. обновления Г2 НВ":
- Друг с другом общаются ОнД Годар и Кйорн;
- Я обращаюсь к первому и в процессе диалога провоцирую его на атаку;
- Годар и ГГ достают оружие, ОнД бежит в атаку и... "мир замирает", поскольку к ГГ, посреди боя, обратился Кйорн с приветственным диалогом.
Это раздражает и сильно бьёт по атмосфере, на мой взгляд. Думаю, было бы здорово, если такие обращения будут допускаться только ДО или ПОСЛЕ агрессивных столкновений, но никак НЕ во время.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.651
Благодарности
3.425
Баллы
525
Возможно ли сделать своеобразный фикс/патч с помощью Union, который будет запрещать начало форсированного диалога с NPC, если в данный момент на ГГ нападает другой NPC/монстр?
Это можно реализовать на уровне скриптов. Но в этом случае возможны разные косяки. Например, прохождение "контрольной точки", в которой должен стартовать диалог, если рядом кто-то кого-то атакует. Впрочем, и такие вот особые случаи, думаю, можно предусмотреть и добавить в исключения. :oops:
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.979
Благодарности
582
Баллы
275
В идеале, конечно, было бы здорово все эти моменты пофиксить.
А конкретно для стражи разве нельзя, например, поставить реакцию угрозы с дальнейшей атакой (как при воровстве), если рядом происходит сражение?
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.147
Благодарности
2.021
Баллы
320
При помощи zParserExtender можно скрипты переопределить, тогда окружающие НПС будут видеть сражение сразу, а не после нанесения первого урона:
Daedalus:
func void ZS_Attack()
{
    ZS_Attack_old();
    Npc_SendPassivePerc(other, PERC_ASSESSFIGHTSOUND, other, self);
};

func void ZS_MM_Attack()
{
    ZS_MM_Attack_old();
    Npc_SendPassivePerc(other, PERC_ASSESSFIGHTSOUND, other, self);
};

func int ZS_Attack_Loop()
{
    Npc_SendPassivePerc(other, PERC_ASSESSFIGHTSOUND, other, self);
    return ZS_Attack_Loop_old();
};

func int ZS_MM_Attack_Loop()
{
    Npc_SendPassivePerc(other, PERC_ASSESSFIGHTSOUND, other, self);
    return ZS_MM_Attack_Loop_old();
};
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.979
Благодарности
582
Баллы
275
окружающие НПС будут видеть сражение сразу, а не после нанесения первого урона:
А вот это здорово поможет, например, в ситуации, когда на ГГ нападает Буллко на ферме, но застревает в столе, либо тупит еще как-то, а ГГ достает оружие и на него просто агрится вся толпа в столовой, пока агрессивный жиробас не получит удара.
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.979
Благодарности
582
Баллы
275
Приветствую всех. Есть вопрос:
- Когда ГГ приближается к стайке, например, из 3-х волков, то все трое подбегают и начинают угрожающе скалиться. Однако именно в атаку они, как правило, начинают бежать НЕ одновременно, а "в порядке начала угрозы". Если жа атаковать кого-либо из стаи, скажем, магией, то в атаку кидаются все разом, что кажется мне логичнее.
Возможно ли с помощью Union сделать небольшой фикс для поведения всех "стадных врагов" при атаке, дабы после окончания угрозы первого из них, в бой бросались все разом (как после атаки заклинанием)?
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.651
Благодарности
3.425
Баллы
525
в бой бросались все разом
Тебе, как игроку, это нужно, или как моддеру? Это сравнительно просто делается на уровне скриптов. Достаточно самых начальных знаний о том, как работает ИИ.
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.979
Благодарности
582
Баллы
275
Тебе, как игроку, это нужно, или как моддеру?
Как игроку, конечно. Хочу видеть больше внутриигровой логики.
До моддера я, пока, не дорос, а хочется. Так что если можешь кратко и доступно объяснить, буду благодарен и постараюсь сделать сам, дабы других людей не тревожить.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.651
Благодарности
3.425
Баллы
525
если можешь кратко и доступно объяснить
Это непросто в случае, когда
До моддера я, пока, не дорос
Попробую пройтись "по верхам".
Речь идёт про Г2, насколько я понимаю. Неписи в игре могут обмениваться некими предупреждениями. Вот взять, к примеру двух волков недалеко от таверны, между озером и пещерой. Они ходят туда-сюда, выполняя повседневный распорядок. Ты медленно приближаешься к ним. В какой-то момент один из волков "замечает" тебя и переходит в краткий режим выдачи нескольких предупреждений перед атакой. Второй волк сразу-же тоже "замечает" тебя, хотя может перед этим двигаться в противоположном направлении. Что произошло? Первый волк, перейдя в состояние предупреждения, посылает всем окружающим сигнал. У второго волка активирован "приёмник" этого сигнала, и он, приняв сигнал, начинает реагировать. Точно также первый волк посылает сигнал предупреждения всем окружающим, начав атаку. Только вот в этот момент у второго волка "приёмник" уже не активен. Поэтому сигнал он не принимает и не начинает атаку сразу же, вслед за первым волком.

Чтобы несколько волков начали атаку почти одновременно, нужно "включить приёмник" в состоянии краткого предупреждения врага и прописать данный случай в функции, отвечающей за приём предупреждений.
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.979
Благодарности
582
Баллы
275
Теоретически всё понятно. Но я не коддер от слова совсем. Нужно скачать Union SDK и пытать открыть через него какие-то файлы ИИ из архивов игры, чтобы там найти место для правки?
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.651
Благодарности
3.425
Баллы
525
Как это делается средствами Юньки, я не знаю. Знаю лишь, что Юнион позволяет создавать новые функции и корректировать существующие в процессе работы плагина. А значит, может справиться и с поставленной тобой задачей.

Другое дело, что описанные выше изменения вполне реально внести в скрипты, так сказать, классическим методом - с помощью старого доброго Соурсера. Именно это я имел в виду, когда написал:
Это сравнительно просто делается на уровне скриптов.
 

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.979
Благодарности
582
Баллы
275
описанные выше изменения вполне реально внести в скрипты, так сказать, классическим методом - с помощью старого доброго Соурсера.
Ок, тогда, если не сложно, прошу тебя составить краткую пошаговую инструкцию, для одного примера (тех же волков), по которой дилетант вроде меня сможет ввести эту функцию для всех необходимых существ?
 

N1kX

Участник форума
Регистрация
13 Ноя 2009
Сообщения
6.590
Благодарности
6.199
Баллы
940
Я не пойму, по моему в бородатые годы в какой-то версии SP была уже добавлена эта штука, звери сразу пачкой агрятся и нападают без возможности их выманивать по 1, почему её убрали?
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.432
Благодарности
4.771
Баллы
625
Знаю лишь, что Юнион позволяет создавать новые функции и корректировать существующие в процессе работы плагина.
Просто кидаешь .d скрипт с нужной функцией в system/autorun и считай она уже в игре. Собственно пример на троллях ты и сам видел.
И раз скрипт предполагает замену оригинальной функции, то рекомендуется явно сказать парсер экстендеру, что ты собираешься ее перезаписать.
Daedalus:
META
{
  MergeMode = true;
};
// Указывается в самом начале файла.
// MergeMode сообщает экстендеру, что данные в этом файле будут всегда
// перезаписывать оригинальные, не смотря на глобальные настройки в ini файле.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.651
Благодарности
3.425
Баллы
525
нападают без возможности их выманивать по 1
Здесь немного другой случай. Речь о том, что сагрившиеся неписи переходят в состояние атаки не "одновременно". Проходит обязательный период ожидания до момента старта атаки.

краткую пошаговую инструкцию
Я уже писал, что это непросто. Представь, что ученик, условно, 8го класса решает задачу по математике и где-то испытывает затруднения с решением. У него уже есть определённый набор знаний, который достаточен для решения задачи. Чтобы ему помочь, нужно лишь слегка его подтолкнуть, направить на правильный путь. Теперь представь, что эту же задачу пытается решить ученик 7го класса. Чтобы ему помочь, требуется уже гораздо больше усилий. Как минимум, нужно восполнить недостатки набора его знаний. Если к решению задачи приступит ученик 6го класса, то помочь ему будет уже крайне сложно. Слишком многое потребуется рассказать и показать...

Если ты ещё не работал со скриптами, то для начала придётся освоить работу в Соурсере и создать свой первый мод. Может быть, это будет самый простейший мод, например, изменяющий имя какого-нибудь непися. Если это получится, можно будет двигаться дальше. Но не ранее того. :)
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.147
Благодарности
2.021
Баллы
320
KirTheSeeker, попробуй для неоф обновления
Daedalus:
func void B_MM_AssessOtherWarn()
{
    if (Npc_IsInState(other, ZS_MM_Attack))
    {
        B_MM_AssessWarn();
    };
};

func void ZS_MM_ThreatenEnemy()
{
    ZS_MM_ThreatenEnemy_old();
    Npc_PercEnable(self,PERC_ASSESSWARN,B_MM_AssessOtherWarn);
};
 

Yxel

Участник форума
Регистрация
17 Фев 2019
Сообщения
93
Благодарности
20
Баллы
160
У меня происходит неведомая фигня после установки Юниона:
После запуска игры через модланчер окно игры визуально не открывается, но в процессах начинают плодиться в геометрической прогрессии файлы gothic2. Что это может быть? Система - 10 винда с японской локализацией, если это имеет значение.
 

Вложения

  • 66.png
    66.png
    99,1 KB · Просмотры: 51
  • DxDiag.txt
    110,8 KB · Просмотры: 17

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.432
Благодарности
4.771
Баллы
625
Yxel, может и имеет. Что будет с этой библиотекой?
заменить в Gothic/system
 

Вложения

  • Shw32.7z
    408,4 KB · Просмотры: 22

Yxel

Участник форума
Регистрация
17 Фев 2019
Сообщения
93
Благодарности
20
Баллы
160
Gratt, спасибо, заработало :)
 
Сверху Снизу