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

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

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

В разработке... Union. Пожелания насчёт плагинов

KirTheSeeker

Участник форума
Регистрация
18 Авг 2017
Сообщения
1.931
Благодарности
560
Баллы
275

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.086
Благодарности
1.909
Баллы
320
Поясни, пожалуйста, как настроить этот плагин, чтобы у отскока просто НЕ было "фреймов неуязвимости"?
Нужно к каждой анимации отскока добавить вышеупомянутый тэг с числами 0 2 1. Анимации отскока есть в \_work\data\anims\humans.mds, а также в подпапке mds_overlay 4 файла (для бойца и мастера ближнего боя). Затем нужно удалить одноимённые .msb файлы из тома anims.vdf, а также из подпапки _compiled (если есть).
 

Minks-62

Участник форума
Регистрация
13 Мар 2022
Сообщения
156
Благодарности
21
Баллы
60
Здравствуйте. А нельзя сделать так, чтобы плагин плагин Union_Ahssun_IgnoreBonuses.vdf, предназначенный для Легенды Ахссуна, заработал и в Одиссее ?
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
1.661
Благодарности
2.486
Баллы
380
Minks-62, нет, он сделан под мод конкретный, только если кто-то сделает.
 

Vic7im

Участник форума
Регистрация
15 Мар 2016
Сообщения
49
Благодарности
18
Баллы
175
Hey everyone!

Would it be possible to NOT drop the torch when going into combat stance, maybe saving its position on the hand of the hero/npc until deselected/expires?
 

Fabiosek

Участник форума
Регистрация
17 Июн 2017
Сообщения
147
Благодарности
47
Баллы
190
Hey everyone!

Would it be possible to NOT drop the torch when going into combat stance, maybe saving its position on the hand of the hero/npc until deselected/expires?
Yes, but without new animations it doesn't make sense. In gothic it doesn't make sense. Tried once, it's stupid. In the original, when there is a threat, the torch falls to the ground, it is more interesting and immediately illuminates the area (when it is dark).
 

Vic7im

Участник форума
Регистрация
15 Мар 2016
Сообщения
49
Благодарности
18
Баллы
175
Yes, but without new animations it doesn't make sense. In gothic it doesn't make sense. Tried once, it's stupid. In the original, when there is a threat, the torch falls to the ground, it is more interesting and immediately illuminates the area (when it is dark).
I believe the shield animations found everywhere could be of use here, don't you think? I always liked the "UH OH DANGER" move the hero does, dropping the torch to the ground adds dramacity and all, but I was using 2H weapons2 24/7 so it made sense. if you have a one handed weapon, the most obvious thing to do is to reach for it without dropping the torch lol.

Anyway, I believe that with the shield animations (USCS) the torch fight could become viable. If anyone can help with this, is most welcome!
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
Есть демо. Задумка такая:
  1. Вместо того чтобы резко встать из-за сломанной отмычки, персонаж будет вставать плавно
  2. Если персонаж встаёт из-за сломанной отмычки не в состоянии подкрадывания, то он пинает сундук, а тот трясётся
  3. При отпирании сундука проигрываются соответствующие анимации замка и персонажа
  4. Если персонаж закрывает сундук от которого у него есть ключ, то он запирает сундук с проигрыванием соответствующих анимаций
  5. При загрузке мира для всех незапертых сундуков мгновенно проигрывается анимация отпирания замка
Привет! Удосужился опробовать этот плагин. Не прошло и года. :)
Был ли он допилен или остался в таком же виде? Если был допилен, то можно ли получить новый вариант на тест?
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.086
Благодарности
1.909
Баллы
320
Привет! Удосужился опробовать этот плагин. Не прошло и года. :)
Был ли он допилен или остался в таком же виде? Если был допилен, то можно ли получить новый вариант на тест?
Останется в таком же виде - исходники утеряны.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
Останется в таком же виде
К сожалению, в текущем виде демка, а именно так этот плагин позиционировался год назад, не пригодна для практического применения в игре (в Г1, во всяком случае). Причина - то, что пинание сундука происходит после КАЖДОЙ сломанной отмычки. В то время как, по задумке разрабов, это должно происходить, если сломана ПОСЛЕДНЯЯ отмычка в инвентаре. Отмычек за игру ломается немало, и прикольная, вроде бы, анимация пинка будет просто раздражать игрока. Увы.

Кроме этого, есть пожелания для доработки плагина. Во-первых, желательно, чтобы ГГ не прерывал взаимодействие с сундуком, если ломается отмычка. В Г2 это реализовано так, а вот в Г1 ГГ взаимодействие прерывает. Возможно, поэтому и пинок сундука происходит каждый раз, когда ломается отмычка. Во-вторых, функция G_PickLock (пишу по памяти) вызывается с двумя аргументами, и в случае, когда поворот отмычки отпирает замок, оба аргумента должны быть равны 1. В этом случае на экран должна выводиться надпись "Замок открыт", звуковой эффект должен быть иным, а ГГ иногда должен произносить удовлетворённый комментарий.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
Возможно, поэтому и пинок сундука происходит каждый раз, когда ломается отмычка.
Проверил, как плагин работает на движке Г2НВ. Там пинок сундука после поломки отмычки происходит в случае, если эта отмычка последняя. Можно сделать вывод, что неправильная работа в Г1 связана с прерыванием взаимодействия.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
ElderGamer, сравни с гэнджином как оно там сделано было..
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
Сравнил. У Керракса сделано так, как задумывали разрабы. После поворота отмычки, открывающего замок, на экране появляется надпись "Замок открыт."

Это для сундука. Для двери не проверял.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.816
Баллы
995
для дверей аналогично быть должно..
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.086
Благодарности
1.909
Баллы
320
Проверил, как плагин работает на движке Г2НВ. Там пинок сундука после поломки отмычки происходит в случае, если эта отмычка последняя. Можно сделать вывод, что неправильная работа в Г1 связана с прерыванием взаимодействия.
Именно так. Наверное, лучше будет убрать прерывание взаимодействия пока отмычки не кончились
Union:
#engine [G1]
    #patch [zContiniousLockpicking]
        // engine specific
            INT text_oCMobLockable_Interact_call_StopInteraction = 0x006824BF
            INT text_oCMobLockable_Interact_call_StopInteraction_end = 0x006824CA
            
            INT offset_parser = ZenDef(0x008DCE08, 0x00925048, 0x00984C08, 0x00AB40C0)
            
            INT str_lockpick = CreateMemString("ITKELOCKPICK")
            
            INT func_oCNpc_IsInInv = ZenDef(0x006A4E80, 0x006D7930, 0x006EA700, 0x007491E0)
            INT func_zCParser_GetIndex = ZenDef(0x006EA0C0, 0x00723120, 0x00733A30, 0x00793470)
            
            INT vfunc_oCMobLockable_StopInteraction = 0xD0
        // end of engine specific
        
        #assembler [text_oCMobLockable_Interact_call_StopInteraction]
            push $str_lockpick
            mov ecx, $offset_parser
            call $func_zCParser_GetIndex
            
            test eax, eax
            jle stop_interaction
            
            push 1
            push eax
            mov ecx, ebp
            call $func_oCNpc_IsInInv
            
            test eax, eax
            jnz return
            
        stop_interaction:
            mov eax, [esi]
            push ebp
            mov ecx, esi
            jmp 0x006824C4
            
        return:
        #/assembler [text_oCMobLockable_Interact_call_StopInteraction_end]
    #/patch
#/engine
 
Последнее редактирование:

N1kX


Модостроитель
Регистрация
13 Ноя 2009
Сообщения
6.176
Благодарности
5.697
Баллы
910
Создать файл с именем и расширением
zContiniousLockpicking.patch

В файл скопировать весь код и все.
Patch файл копируем в gothic 1\System\Autorun
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.410
Благодарности
3.241
Баллы
525
Да, вроде бы, всё работает. Спасибо! Теперь бы ещё поправить вызов функции G_PickLock с правильными аргументами при открытии замка. :)
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.086
Благодарности
1.909
Баллы
320
Patch файл копируем в gothic 1\System\Autorun
Можно просто в System, Аutorun тут необязателен. Также можно запаковать в виртуальный том (тоже в подпапку System внутри тома).
Теперь бы ещё поправить вызов функции G_PickLock с правильными аргументами при открытии замка.
Проверь этот вариант:
Union:
#engine [G1]
    #patch [zSuccessLockpickingCallback]       
        // engine specific
            INT text_oCMobLockable_Interact_or_eax_1 = 0x00682285
            
            INT offset_parser = ZenDef(0x008DCE08, 0x00925048, 0x00984C08, 0x00AB40C0)
            
            INT str_SELF = CreateMemString("SELF")
            
            INT func_zCParser_CallFunc = 0x006E9690
            INT func_zCParser_SetInstance = ZenDef(0x006EB3C0, 0x00724640, 0x00734E30, 0x00794870)
        // end of engine specific
    
        #assembler [text_oCMobLockable_Interact_or_eax_1]
            orgcode
            
            push esi
            push $str_SELF
            mov ecx, $offset_parser
            call $func_zCParser_SetInstance
            
            push 1
            push 1
            push dword ptr [esp+0x1C]
            push $offset_parser
            call $func_zCParser_CallFunc
            add esp, 16
            
        #/assembler
    #/patch
#/engine
 
Сверху Снизу