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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Друзья, доброго времени суток!
    Стартовал новый литературный конкурс от "Ордена Хранителей" - "Пираты Миртанского моря".
    Каждый может принять в нём участие и снискать славу и уважение, а в случае занятия призового места ещё и получить награду. Дерзайте
  • Дорогие друзья, год подходит к концу, и пришло время подвести его итоги и наградить достойных

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

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.931
Благодарности
560
Баллы
275
Возможно ли тогда подключить в текущее прохождение, например, долину из L'hiver Edition?
Если да, то какие файлы мне необходимо извлечь и перепаковать из VDF мода? Ведь не только лишь ZEN?
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
Возможно ли тогда подключить в текущее прохождение, например, долину из L'hiver Edition?
Скорее НЕТ, чем ДА. Первым делом может вылезти отсутствие каких-то ресурсов (текстуры, модели...), которые в L'hiver Edition используются, а у тебя их нет. Но кроме этого, возможны и другие несовместимости локации, например, со скриптами. В результате этого косяки могут вылезти не сразу, а по ходу прохождения.
 

Vlad_Torop

Участник форума
Регистрация
2 Май 2014
Сообщения
873
Благодарности
501
Баллы
245
Ковыряюсь с модом,и заметил,что зомби,при долгом состоянии атаки на ГГ,со временем начинают самовыпиливаться (не помню,это с оригинала,или я у себя накосячил).
Как можно этот бред исправить?
 

Lorddemonik

★★★★★
Редактор раздела
Регистрация
17 Дек 2011
Сообщения
1.119
Благодарности
584
Баллы
350
ElderGamer, с анимацией смерти падают. Вообще году в 14 видел где-то подобное, но исключительно в виде прикола. Они просто лежат до следующей встречи. Потом опять вскакивают. А ну и вроде как в Гильдиях или Путях действительно были ядовитые зомби которые самоуничтожались
Vlad_Torop, смотри по какой причине смерть. Закончилось хп или принудительно переводятся в состоянии смерти. Акцент скорее всего на их гильдию или подкласс
 

Vlad_Torop

Участник форума
Регистрация
2 Май 2014
Сообщения
873
Благодарности
501
Баллы
245
смотри по какой причине смерть. Закончилось хп или принудительно переводятся в состоянии смерти. Акцент скорее всего на их гильдию или подкласс
Причина была в том,что я удалил в прототипе зомбарей строку level =. После того как вернул,все исправилось.
Не знаю как это работает,но если ее удалить,или поставить level равный нулю,то в состоянии агра монстры со временем самовыпиливаются.:oops:
 
Последнее редактирование:

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.176
Благодарности
5.697
Баллы
910
Не знаю как это работает,но если ее удалить,или поставить level равный нулю,то в состоянии агра монстры со временем самовыпиливаются
\Content\AI\Monster\ZS_Monster\ZS_MM_Attack.d
Daedalus:
    // ------ Summon Time ------
    if (self.level == 0)
    {
        if (Npc_GetStateTime (self) > self.aivar[AIV_StateTime])
        {
            self.aivar[AIV_SummonTime] = (self.aivar[AIV_SummonTime] + 1);
       
            self.aivar[AIV_StateTime] = Npc_GetStateTime (self);
        };
       
        if (self.aivar[AIV_SummonTime] >= MONSTER_SUMMON_TIME)
        {
            Npc_ChangeAttribute (self, ATR_HITPOINTS, -self.attribute[ATR_HITPOINTS_MAX]);
        };
    };

Если надо управлять более точно саммонами и имеется пустые aivar, лучше сделать так
Daedalus:
//AI_Constants.d
const int AIV_SummonedNPC = 89;


//ZS_MM_Attack.d
    // ------ Summon Time ------
    if (self.aivar[AIV_SummonedNPC] == TRUE)
    {
        if (Npc_GetStateTime (self) > self.aivar[AIV_StateTime])
        {
            self.aivar[AIV_SummonTime] = (self.aivar[AIV_SummonTime] + 1);
       
            self.aivar[AIV_StateTime] = Npc_GetStateTime (self);
        };
       
        if (self.aivar[AIV_SummonTime] >= MONSTER_SUMMON_TIME)
        || (hero.attribute[ATR_HITPOINTS] <= 0)
        || (Npc_GetDistToNpc(self,hero) > 3000)
        {
            Npc_ChangeAttribute (self, ATR_HITPOINTS, -self.attribute[ATR_HITPOINTS_MAX]);
        };
    };

Также не забывая прописать aivar у саммонов. Таким образом можешь хоть кому нулевой левел дать без риска убить хз как существо.
 
Последнее редактирование:

D36


Модостроитель
Регистрация
3 Дек 2014
Сообщения
2.224
Благодарности
3.454
Баллы
485
Можно и без новых aivar, потому что можно проверить уже существующий aivar[AIV_MM_REAL_ID] на соответствие этим константам:
Daedalus:
const int ID_SUMMONED_GOBBO_SKELETON = 6;
const int ID_SUMMONED_WOLF = 15;
const int ID_SUMMONED_SKELETON = 20;
const int ID_SUMMONED_GOLEM = 31;
const int ID_SUMMONED_DEMON = 33;
const int ID_SummonedGuardian = 61;
const int ID_SummonedZombie = 62;
Или гильдию:
Daedalus:
const int GIL_SUMMONED_GOBBO_SKELETON = 21;
const int GIL_SUMMONED_WOLF = 28;
const int GIL_SUMMONED_SKELETON = 32;
const int GIL_SUMMONED_GOLEM = 42;
const int GIL_SUMMONED_DEMON = 44;
const int GIL_SummonedGuardian = 54;
const int GIL_SummonedZombie = 55;
Daedalus:
func int C_NpcIsSummon(var C_Npc slf)
{
    if(slf.guild == GIL_SUMMONED_GOBBO_SKELETON)
    {
        return TRUE;
    }
    else if(slf.guild == GIL_SUMMONED_WOLF)
    {
        return TRUE;
    }
    else if(slf.guild == GIL_SUMMONED_SKELETON)
    {
        return TRUE;
    }
    else if(slf.guild == GIL_SUMMONED_GOLEM)
    {
        return TRUE;
    }
    else if(slf.guild == GIL_SUMMONED_DEMON)
    {
        return TRUE;
    }
    else if(slf.guild == GIL_SummonedGuardian)
    {
        return TRUE;
    }
    else if(slf.guild == GIL_SummonedZombie)
    {
        return TRUE;
    };
    return FALSE;
};

Daedalus:
//ZS_MM_Attack.d
    // ------ Summon Time ------
    if (C_NpcIsSummon(self))
 
Последнее редактирование:

Vlad_Torop

Участник форума
Регистрация
2 Май 2014
Сообщения
873
Благодарности
501
Баллы
245
Подскажите,на что влияют цифры в строках "прикрепления" звука в MDS-никах?
Например (128,140,152...), из Orc.MDS:
Daedalus:
ani      ("T_ORCDRUM_RANDOM_3"         2               ""                    0.1 0.1   M. "ORC_DRUMNOMOVE_JUE02.ASC"         F  116 164)                 
        {
            *eventSFX (128 "INST_CONGA01" EMPTY_SLOT)
            *eventSFX (140 "INST_CONGA02" EMPTY_SLOT)
            *eventSFX (152 "INST_CONGA01" EMPTY_SLOT)
            *eventSFX (164 "INST_CONGA02" EMPTY_SLOT)
        }
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455

Vlad_Torop

Участник форума
Регистрация
2 Май 2014
Сообщения
873
Благодарности
501
Баллы
245
Такая задача:
ГГ участвует в муз. батле играя на барабане ItMi_IEDrum (Item используемый из инвентаря).
После n времени непрерывной игры нпс-ы пускаются впляс,а еще через n времени,ему защитывается победа.
Как отследить в режиме реального времени,что ГГ находится в состоянии использования этого айтема?
Может,есть функции отслеживания по проигрыванию определенной муз.дорожки или анимации?
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
Как отследить в режиме реального времени
Из циклической функции мод-фикса:
Daedalus:
        ...
        if(C_BodyStateContains(hero,BS_MOBINTERACT_INTERRUPT))
        {
            var string detectedMob;
            detectedMob = Npc_GetDetectedMob(hero);
            
            // Восстановление здоровья при умывании из ведра.
            if(Hlp_StrCmp(detectedMob,"BSWASHSELF"))
            {
                Npc_ChangeAttribute(hero,ATR_HITPOINTS,1);
            };
            
            ...
        };
 

vadymg

Участник форума
Регистрация
1 Мар 2013
Сообщения
11
Благодарности
0
Баллы
155
Всем привет!
Хочу модифицировать Готику 2 "под себя" чисто ради удовольствия.
Прошу помощи у сообщества.
С Sourcer'ом я вроде разобрался. Взял оригинальный GOTHIC.DAT, декомпилировал скрипты, исправил в них ошибки по гайдам в инете, внёс тестовые изменения, скомпилировал обратно. Заменил оригинальные файлы игры в _work\Data\Scripts\_compiled.
Но изменения в самой игре не применяются, и это, если честно, ставит меня в тупик. Помогите разобраться, что я делаю не так. Заранее спасибо)
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.176
Благодарности
5.697
Баллы
910
Но изменения в самой игре не применяются, и это, если честно, ставит меня в тупик. Помогите разобраться, что я делаю не так. Заранее спасибо)
Только с новой игрой увидишь изменения.
На сохранении изменения можно увидеть только используя Union и плагин zParserExtender или Ninja
 

vadymg

Участник форума
Регистрация
1 Мар 2013
Сообщения
11
Благодарности
0
Баллы
155
Только с новой игрой увидишь изменения.
На сохранении изменения можно увидеть только используя Union и плагин zParserExtender или Ninja
Да, забыл уточнить - с новой игрой изменения тоже не применяются...
 

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.176
Благодарности
5.697
Баллы
910
Да, забыл уточнить - с новой игрой изменения тоже не применяются...
Gothicgame.mod случайно не лежит в Gothic 2\Data\Modvdf?
Если он есть удали его, тогда будет игра запускаться используя скрипты из _work\Data\Scripts\_compiled
В Gothicgame.mod находятся неизменные скрипты.
 

vadymg

Участник форума
Регистрация
1 Мар 2013
Сообщения
11
Благодарности
0
Баллы
155
Gothicgame.mod случайно не лежит в Gothic 2\Data\Modvdf?
Если он есть удали его, тогда будет игра запускаться используя скрипты из _work\Data\Scripts\_compiled
В Gothicgame.mod находятся неизменные скрипты.
Нет, \Data\Modvdf пустой.
Забыл уточнить, что у меня Steam версия игры, если это имеет какое-то значение...
...
Проверил свой GOTHIC.DAT обратно его декомпилировав в новом проекте. Изменения в скриптах есть.
Изменение самое простое: в классе ItMw_1h_Bau_Mace поменял свойство name.
Но "Тяжелый сук" по-прежднему называется по-старому.
 
Последнее редактирование:

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
Steam версия игры
Если есть русификатор, то в томе с русификатором наверняка лежат скрипты. Они имеют приоритет по отношению к скриптам, лежащим в папке игры.
 

vadymg

Участник форума
Регистрация
1 Мар 2013
Сообщения
11
Благодарности
0
Баллы
155
Если есть русификатор, то в томе с русификатором наверняка лежат скрипты. Они имеют приоритет по отношению к скриптам, лежащим в папке игры.
Да, наверняка что-то устанавливал.
Но скрипты в GOTHIC.DAT с русской локализацией, т.е. руссификатор их же и должен был подменить. Или нет?
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
Движок нашёл основные скрипты в vdf- или в mod-томе. В этом случае скрипты из папки с игрой он даже не ищет. На время тестирования внесённых изменений удобно использовать именно папку с игрой в качестве места нахождения скриптов. Можно просто кидать туда скомпилированные скрипты, минуя стадию упаковки в vdf- или mod-том. Но для использования такого режима нужно, чтобы в папке Data не было vdf-томов, содержащих корректируемые скрипты.

P.S. Вернее, нужно, чтобы в vdf-томах, которые лежат в папке Data, не было корректируемых скриптов. Я для этой цели просто переименовываю их прямо в vdf-томе с помощью программы GoMan.
 
Последнее редактирование:
Сверху Снизу