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

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!
  • Это снова вы, и это снова я - MEG@VOLT, какаяя радость.
    А значит нас всех снова скоро ожидают технические работы на форуме.
    Очередные работы запланированы на начало марта, 7-9 числа.

Union Union - мини плагины

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.175
Благодарности
2.048
Баллы
320
  • Первое сообщение
  • #1
Здесь будут собираться плагины, создание отдельной темы для которых было бы излишним.


Плагины, распространяемые с помощью exe-инсталлятора, можно деинсталлировать им же.
Плагины, распространяемые в виде vdf тома, следует помещать в папку Data/Plugins/.
Каждый плагин, если не указано иного, должен работать на любых версиях игры: Gothic I Classic (G1), Gothic I Sequel (G1A), Gothic II Classic (G2), Gothic II Addon (G2A).
Код плагинов и сами плагины, автором которых являюсь я, можно распространять и использовать без ограничений.


При наличии нескольких одноименных вложений в одном посте следует скачивать последнее. Удалять старые вложения прав нет.

  1. Плагин zNoFocusFlag (Автор: Slavemaster). Для модостроителей. Делает NPC с флагом NPC_FLAG_NFOCUS полностью прозрачными для фокуса ГГ.
  2. Плагин AlterDamage (Автор: Slavemaster). Есть проблемы с совместимостью. Меняет формулы урона. Добавляет всплывающие сообщения о нанесённом уроне.
  3. Плагин zSavesBackuper (Автор: Slavemaster). Осуществляет резервное копирование сделанных сохранений.
  4. Плагин Union_Hotbar_1.0k (Автор: Haart). Добавляет панель быстрого доступа для предметов из инвентаря.
  5. Плагин QuickLoot (Автор: Slavemaster). Быстрый сбор предметов при помощи правой кнопки мыши.
  6. Плагин MarvinHelper (Автор: Slavemaster). Дополнительные возможности для консоли разработчика.
  7. Плагин MunitionInfo (Автор: Xeдин). Отображает кол-во стрел/болтов в инвентаре.
  8. Плагин zAsyncSaveLoad. (Автор: Slavemaster).Плагин делает окно игры отзывчивым к сочетанию Alt+Tab во время загрузки, сохранения и просмотра видео.
  9. Плагин Union_SaveLoadManager_i (Автор: Haart). Позволяет сохраняться в разные слоты без лишних усилий.
  10. Плагин zBugFixes (Автор: Slavemaster). Плагин содержит исправления некоторых ошибок движка Готики.
  11. Плагин zTorchControl (Автор: Slavemaster). Плагин предотвращает удаление горящих факелов при загрузке, а также позволяет их использовать по горячей клавише.
  12. Плагин zMarkItems (Автор: Slavemaster).Плагин осуществляет маркировку предметов внутри ячеек инвентаря.
  13. Плагин zMiscUtils (Автор: Slavemaster). Плагин реализует множество функций, не объединённых единой тематикой.
  14. Плагин SimpleRegen (Автор: Xeдин). Плагин реализует простой алгоритм регенерации жизни и/или маны.
  15. Плагин Union_Thief_Helper (Автор: Xeдин). Помощник вора. Маркировка не обворованных и обворованных NPC и подсказки при взломе.
  16. Плагин Union_XP_Bar (Автор: Xeдин). Плагин для отображения полоски опыта.
  17. Плагин OdyAlt (Автор: N1kX). Подробное многостраничное меню навыков для мода Одиссея 2.6.4.
  18. Плагин OdyAltMenu (Автор: N1kX). Подробное многостраничное меню навыков для мода Одиссея 2.7.0+.
  19. Плагин zUtilities (Автор: Franisz). Несколько удобных функций.
  20. Плагин oDamageHelper (Автор: Gratt). Для модостроителей. Позволяет менять наносимый урон с помощью скриптов.
  21. Плагин Union_DamageInfo (Автор: Xeдин). Плагин выводит урон по врагам и по главному герою.
  22. Плагин Union_RandomRainDX11 (Автор: Haart). При использовании с DX11 дождь будет начинаться в случайное время суток.
  23. Плагин Union_Ext_Stat (Автор: Xeдин). Небольшая дополнительная статистика по количеству убитых, выпитых зелий, квестам и времени игры.
  24. Плагин Union_Show_FPS (Автор: Xeдин). Простенький плагин на показ FPS для всех версий Готики, с возможностью отключения в меню и задания позиции отображения.
  25. Плагин zImprovedLegacyFrying (Автор: Slavemaster). Добавляет диалоги жарки мяса для костра и плиты.
  26. Плагин Union_Keep_Last_Save (Авторы: Gratt, Xeдин). Плагин для удобной работы с последним слотом записи.
  27. Плагин EquippedWeapon (Автор: MEG@VOLT). Для модостроителей. Добавляет функции экипировки / деэкипировки оружия.
  28. Плагин TradeMissItems (Автор: MEG@VOLT). Плагин создан для защиты от случайной продажи квестовых предметов.
  29. Плагин zUnstuckSlidingPlayer (Автор: Slavemaster). Автоматическая телепортация игрока при длительном скольжении.
  30. Плагин KillMeatBugs (Автор: MEG@VOLT). Позволяет затаптывать мясных жуков.
  31. Плагин ezFistMode (Автор: fyryNy). Хоткей для перехода в режим кулачного боя.
  32. Плагин Union_2hSplash (Автор: Strange). Урон по площади для двуручного оружия.
  33. Плагин CastOnDamage (Автор: MEG@VOLT). Убирает прерывание чтения заклинания, если героя атакуют. Только для Готики I.
 
Последнее редактирование:

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.175
Благодарности
2.048
Баллы
320
LikerGothic, можешь всё-таки воспроизвести баг и фикс бага из моего предыдущего поста? Я хочу убедиться, что фикс у тебя работает просто.

Я никак не могу твоим кодом баг воспроизвести. Каким макаром у тебя там 2 карты появляются?
 
Последнее редактирование:

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
2.077
Благодарности
3.299
Баллы
515
Slavemaster, ок, сейчас.

Вот, при фиксе конструктора вывод есть, вылета нету

ViewArrow: 263062860 | oCDocumentManager: 11191244 | DlgDocumentMain: 263062608 | ListChildren: 2
Entry of ListChildren: -1871598960 ref: 1 | oCViewDocumentMap <- oCViewDocument <- zCViewDialog <- zCViewPrint <- zCViewFX <- zCViewDraw <- zCViewObject (zCObject) (zCViewBase) | Child: 0
Entry of ListChildren: -1871602824 ref: 2 | oCViewDocumentMap <- oCViewDocument <- zCViewDialog <- zCViewPrint <- zCViewFX <- zCViewDraw <- zCViewObject (zCObject) (zCViewBase) | Child: 0
<---------- oCViewDocumentMap_Destr: -1871598960 | Ref: 0
<---------- oCViewDocumentMap_DestrAfter

Если убрать фикс ViewArrow.refCtr -= 1;, то вылет

То есть все как у тебя. Но это. видимо, еще один баг. Не тот, что изначально у меня.

---

Slavemaster,
смотри, при открытии карты (я хукал для теста zCViewFX::Init) внутри ListChildren УЖЕ содержится уже 1 элемент, ну и добавляется новый. В итоге когда карта закрывается = там 2 объекта внутри ListChildren , 1 из который "сломан". У него refCtrl = 1, но что именно это за объект я понять не могу, откуда он.

Вот, сломанный объект имеет свой адрес, он не совпадает ни с чем что я выводил. Мб я что-то упускаю.

1772559131429.png



А ты заменил фразу героя? у тебя он говорил словам и на экране пишет субтитры?
 
Последнее редактирование:

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.175
Благодарности
2.048
Баллы
320
А ты заменил фразу героя? у тебя он говорил словам и на экране пишет субтитры?
Да.
но что именно это за объект я понять не могу, откуда он.
Отследи вызовы CreateMap
Убедись, что когда карта закрыта у тебя нет элементов в списке
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
2.077
Благодарности
3.299
Баллы
515
Slavemaster, карта закрыта = 0, элементов, открыл карту = 1 элемент, нажал вызов звука (голоса) = 2 элемента (даже не закрывая карту).
Ну понятно что это не всегда, там шанс на баг 20-30% при вызове звука.

Я жму звук когда когда карта появилась, и сразу звук => кол-во элементов становится 2.
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
2.077
Благодарности
3.299
Баллы
515
Slavemaster, хукнул внешку, и вызывается 2 раза именно она Doc_CreateMap... а какого хрена.... Ну ок, буду проверять. Это видимо уже код в НБ 2 раза вызывает.

Мы же нашли 1 баг, в любом случае?
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.175
Благодарности
2.048
Баллы
320

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
2.077
Благодарности
3.299
Баллы
515
Slavemaster, да у меня переписано использование итемов, там вызывается 2 раз, завтра уже буду разбираться. Спасибо, в общем.
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
2.077
Благодарности
3.299
Баллы
515
Slavemaster, все я причину у себя нашел, она была сугубо в моем моде. Починил считай 2 бага, потому что там был еще один, мелкий. И ты починил 3-й баг считай ): хах. Так что мы конкретно починили с ref? Утечку?
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.175
Благодарности
2.048
Баллы
320
Так что мы конкретно починили с ref? Утечку?
Нет. Мы починили технический баг, который не воспроизводится в игре. Минимальный код для воспроизводства: (new oCViewDocumentMap())->Release();
Фикс деструктора починит вылет. И то, его бы патчем переписать.

Утечка остаётся. Нужно вызывать pViewDoc->Release внутри CreateDocument / CreateMap. Тогда надо от туда же убирать вызовы DeleteListDatas.
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.175
Благодарности
2.048
Баллы
320
Потестить надо
Union:
#engine [G1, G1A, G2, G2A]
    #patch [zDocumentLeakFix]
        // engine specific
        INT text_oCDocumentManager_CreateDocument_DeleteListDatas_jz_data = ZenDef(0x007244F7, 0x00761447, 0x007707F7, 0x0065ED47)
        INT text_oCDocumentManager_CreateDocument_DeleteListDatas_jz_next = ZenDef(0x00724515, 0x00761469, 0x00770815, 0x0065ED65)
        INT text_oCDocumentManager_CreateDocument_call_Init = ZenDef(0x00724623, 0x00761575, 0x0077090A, 0x0065EE5A)
        INT text_oCDocumentManager_CreateMap_DeleteListDatas_jz_data = ZenDef(0x007246F7, 0x00761657, 0x007709C7, 0x0065EF17)
        INT text_oCDocumentManager_CreateMap_DeleteListDatas_jz_next = ZenDef(0x00724715, 0x00761679, 0x007709E5, 0x0065EF35)
        INT text_oCDocumentManager_CreateMap_call_Init = ZenDef(0x00724823, 0x00761785, 0x00770ADA, 0x0065F02A)
        INT text_oCViewDocumentMap_Destructor_call_ViewArrow_Destructor = ZenDef(0x00725F13, 0x00763465, 0x007724C3, 0x0068D4F3)
        
        INT func_zCObject_Release = ZenDef(0x0042AC30, 0x0042DB30, 0x0040C310, 0x0040C310)
        // end of engine specific
        
        HEX @(text_oCDocumentManager_CreateMap_DeleteListDatas_jz_data) = 'EB'
        HEX @(text_oCDocumentManager_CreateMap_DeleteListDatas_jz_next) = 'EB'
        
        #assembler [text_oCDocumentManager_CreateDocument_call_Init]
            orgcode
            mov ecx, esi
            call $func_zCObject_Release
        #/assembler
        
        #assembler [text_oCDocumentManager_CreateMap_call_Init]
            orgcode
            mov ecx, esi
            call $func_zCObject_Release
        #/assembler
        
        CALL(text_oCViewDocumentMap_Destructor_call_ViewArrow_Destructor, func_zCObject_Release)
    #/patch
#/engine
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
2.077
Благодарности
3.299
Баллы
515
Slavemaster, вроде работает. (тестил на своем моде, г2 ночь ворона движок).
У меня хукнут oCDocumentManager::HandleEvent, там же ничего менять не нужно по идее? Патч посмотрел, вроде нет.

Кстати, с новым патчем твоим даже двойной вызов карты не вызывает вылета.
 
Последнее редактирование:

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
2.077
Благодарности
3.299
Баллы
515
MEG@VOLT, тока на других версиях никто не тестил патч :)
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
10.897
Благодарности
7.543
Баллы
1.910
LikerGothic, я всю вашу переписку не читал. Ткни носом, что мне открыть и как поймать глюк. Может как-то в консоль или злог вывести чо-нить? Могу на Г1 часа через 4-5 проверить.
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
2.077
Благодарности
3.299
Баллы
515
MEG@VOLT, фактически ставишь патч = испльзуешь документы, книги, записки, карты. Все по очереди. Перезагружаешься и снова. Не должно быть вылетов или зависаний.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
10.897
Благодарности
7.543
Баллы
1.910
MEG@VOLT, фактически ставишь патч = испльзуешь документы, книги, записки, карты. Все по очереди. Перезагружаешься и снова. Не должно быть вылетов или зависаний.
Понял, пойду вечером тестить.
 

N1kX

Участник форума
Регистрация
13 Ноя 2009
Сообщения
6.654
Благодарности
6.262
Баллы
940
MEG@VOLT, фактически ставишь патч = испльзуешь документы, книги, записки, карты. Все по очереди. Перезагружаешься и снова. Не должно быть вылетов или зависаний.
В том и прикол, что баг появился у тебя из-за двойного вызова итема, о чем сам написал и починил - а я это заметил давно, говорил тебе, а ты, а я не знаю. В любых модах нет вылета, просто утечка выходит, что в игре не сказывается, максимум может фпс просидал
 

LikerGothic


Модостроитель
Регистрация
11 Фев 2017
Сообщения
2.077
Благодарности
3.299
Баллы
515
N1kX, я не помню, чтобы ты писал про двойной вызов карты. Я не знал причину бага, как бы я догадался.... Вот и потребовалось несколько часов, чтобы понять....
 
Сверху Снизу