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

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

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

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.096
Благодарности
1.928
Баллы
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). Урон по площади для двуручного оружия.
 
Последнее редактирование:

neocromicon

Участник форума
Регистрация
15 Апр 2020
Сообщения
20
Благодарности
4
Баллы
100
MEG@VOLT Any change you can pls fix your EquippedWeapon Plugin?
1737472878904.png
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.959
Благодарности
6.811
Баллы
1.775
neocromicon, а вы модостроитель?
Если да, то при каких условиях вылетает?
Какие плагины еще установлены?
Как мне смоделировать эту ошибку?
 

neocromicon

Участник форума
Регистрация
15 Апр 2020
Сообщения
20
Благодарности
4
Баллы
100
neocromicon, а вы модостроитель?
Если да, то при каких условиях вылетает?
Какие плагины еще установлены?
Как мне смоделировать эту ошибку?
Yes i am ^^
I use Union and have testet it without any Plugin and .Patch (Only Union.patch), with this is start but after loading, he crash:
1737480529149.png


My Mod use Ikarus, LeGo and AFSP (Amazing Features Script Packet: GitHub - Bad-Scientists/AF-Script-Packet: Fawkes' & Auronen's script package for Gothic 1 and Gothic 2: Night of the Raven.), i have deactivated AFSP intern AI_UnequipXXXWeapon too.
 

Dreamtrust

Участник форума
Регистрация
23 Янв 2023
Сообщения
195
Благодарности
79
Баллы
55
neocromicon, Hi, i have no experience in making plugins at all, could you give a advice how to make a plugin that allows to use dual swords animations from Dark Saga in Vanilla and Vanilla-like mods. Plugin that will insert 2nd sword to Main character's inventory and 2 books with lvl 1 and lvl 2 dual sword mastery that would require weapon mastery 30% and 60% to read them and learn the new animations? I ask you, because you have implemented it in your Nostalgic mod) And i wish to play with this animations in other mods too. :)
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.959
Благодарности
6.811
Баллы
1.775
Даже не знаю что и сказать. Посмотрел сейчас код, я не вижу в нем каких либо ошибок. Сами функции ничего необычного не имеют, проверка на то что дает им автор. и если что-то не так - то функция просто выходит из обработки.
Мне кажется что в этой связке проблема *sorry* + к ней еще и union... Судя по первому вашему скриншоту, где ошибка на zParserExtender.dll

Я могу вам дать сами функции, а вы их просто перепишите под LeGo или Ikarus.
C++:
    int EquipMeleeWeapon() {
        zCParser* par;
        par = zCParser::GetParser();
        if (!par) { return false; }
        oCItem* item;
        item = (oCItem*)par->GetInstance();
        if (!item) { return false; }
        oCNpc* npc;
        npc = (oCNpc*)par->GetInstance();
        if (!npc) { return false; }
        oCItem* emw;
        emw = npc->GetEquippedMeleeWeapon();
        if (emw) {
            npc->UnequipItem(emw);
        }
        if (item->mainflag != ITM_CAT_NF) { return false; }
        npc->EquipWeapon(item);
        return true;
    }
    int UnequipMeleeWeapon() {
        zCParser* par;
        par = zCParser::GetParser();
        if (!par) { return false; }
        oCNpc* npc;
        npc = (oCNpc*)par->GetInstance();
        if (!npc) { return false; }
        oCItem* emw;
        emw = npc->GetEquippedMeleeWeapon();
        if (emw->mainflag != ITM_CAT_NF) { return false; }
        if (emw) {
            npc->UnequipItem(emw);
        }
        return true;
    }
    int EquipRangedWeapon() {
        zCParser* par;
        par = zCParser::GetParser();
        if (!par) { return false; }
        oCItem* item;
        item = (oCItem*)par->GetInstance();
        if (!item) { return false; }
        oCNpc* npc;
        npc = (oCNpc*)par->GetInstance();
        if (!npc) { return false; }
        oCItem* emw;
        emw = npc->GetEquippedRangedWeapon();
        if (emw) {
            npc->UnequipItem(emw);
        }
        if (item->mainflag != ITM_CAT_FF) { return false; }
        npc->EquipWeapon(item);
        return true;
    }
    int UnequipRangedWeapon() {
        zCParser* par;
        par = zCParser::GetParser();
        if (!par) { return false; }
        oCNpc* npc;
        npc = (oCNpc*)par->GetInstance();
        if (!npc) { return false; }
        oCItem* emw;
        emw = npc->GetEquippedRangedWeapon();
        if (emw->mainflag != ITM_CAT_FF) { return false; }
        if (emw) {
            npc->UnequipItem(emw);
        }
        return true;
    }
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
472
Благодарности
305
Баллы
230
MEGA, извини за вмешательство в твой соурс код, но...
Сокращение вложенности if-условий - это хорошее дело, но не в данном случае.
В этих скриптовых функциях, нужно сначала принять все параметры, и и только потом управлять выходом.
Нельзя "недосчитывать". Поэтому, постарайся исправить этот момент.
C++:
int EquipMeleeWeapon()
{
    zCParser* par = zCParser::GetParser();

    // считывание всех входящих параметров
    oCItem* item = dynamic_cast<oCItem*>((zCVob*)par->GetInstance());
    oCNpc* npc = dynamic_cast<oCNpc*>((zCVob*)par->GetInstance());

    // управление выходом
    if (!npc || !item || item->mainflag != ITM_CAT_NF)
        return 0;

    if (oCItem* emw = npc->GetEquippedMeleeWeapon())
        npc->UnequipItem(emw);

    npc->EquipWeapon(item);
    return 0;
}
 
Последнее редактирование:
Сверху Снизу