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

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

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

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.061
Благодарности
1.020
Баллы
315
посох
Daedalus:
if (item.damageType == DAM_BLUNT) && (item.flags & ITEM_2HD_AXE)
 

Dreamtrust

Участник форума
Регистрация
23 Янв 2023
Сообщения
324
Благодарности
99
Баллы
80
посох
Daedalus:
if (item.damageType == DAM_BLUNT) && (item.flags & ITEM_2HD_AXE)
Дубинки, молотки боюсь тоже протиснутся в эту категорию :)
Пост автоматически объединён:

Финальный скрипт....не работает)
Игра спотыкается на Undefined function: STR_TOUPPER

Daedalus:
func void UpdateBattleOverlays(var C_NPC npc)
{
    if Npc_GetTrueGuild(npc) >= GIL_SEPERATOR_HUM
    {
        return;
    };

    var C_ITEM item;
    item = Npc_GetReadiedWeapon(npc);

    if !Hlp_IsValidItem(item)
    {
        item = Npc_GetEquippedMeleeWeapon(npc);
    };

    if !Hlp_IsValidItem(item)
    {
        return;
    };

    // **Проверка: по имени или по визуалной модели на "Посох" - ПЕРВАЯ ПРОВЕРКА**
    if (Str_Contains(Str_ToUpper(item.name), "ПОСОХ")) || (Str_Contains(Str_ToUpper(item.visual), "STAFF"))
    {
        var int skillLevel_2H;
        skillLevel_2H = Npc_GetTalentSkill(npc, NPC_TALENT_2H);

        if (skillLevel_2H == 1)
        {
            ReapplyOverlay(npc, "HUMANS_SPST1.MDS"); // Оверлей ST1 для Посохов
        }
        else if (skillLevel_2H == 2)
        {
            ReapplyOverlay(npc, "HUMANS_SPST2.MDS"); // Оверлей ST2 для Посохов
        }
        else
        {
            // **Ничего не делаем при уровне 0 и других уровнях, кроме 1 и 2 для Посохов**
        };
    }
    // **Проверка на ТОПОР - ВТОРАЯ ПРОВЕРКА **
    else if (Str_Contains(name, "_AXE"))
    {
        var int skillLevel_2H; // Переменная skillLevel_2H может быть переиспользована, так как она ограничена блоком else if
        skillLevel_2H = Npc_GetTalentSkill(npc, NPC_TALENT_2H);

        if (skillLevel_2H == 1)
        {
            ReapplyOverlay(npc, "HUMANS_AXEST1.MDS"); // Оверлей ST1 для Топоров
        }
        else if (skillLevel_2H == 2)
        {
            ReapplyOverlay(npc, "HUMANS_AXEST2.MDS"); // Оверлей ST2 для Топоров
        }
        else
        {
            // **Ничего не делаем при уровне 0 и других уровнях, кроме 1 и 2 для Топоров**
        };
    }
    // **Проверка на УНИКАЛЬНОЕ ОРУЖИЕ BELIAR - ТРЕТЬЯ ПРОВЕРКА (теперь без проверки навыка)**
    else if (Str_Contains(name, "_BeliarWeapon"))
    {
        // **Удалена проверка уровня навыка, всегда применяем HUMANS_1X2ST3.MDS**
        ReapplyOverlay(npc, "HUMANS_1X2ST3.MDS"); // Оверлей HUMANS_1X2ST3.MDS для Уникального оружия Beliar (без учета навыка)
    }
    // **Проверка на ОДНОРУЧНЫЙ МЕЧ - ЧЕТВЕРТАЯ ПРОВЕРКА (теперь с проверкой на атрибут ловкости по всем трем индексам)**
    else if (item.flags & ITEM_SWD)
    {
        // **Проверяем, требует ли меч атрибут Ловкость (ATR_DEXTERITY) в любом из первых трех элементов cond_atr**
        if ( (item.cond_atr[0] == ATR_DEXTERITY) || (item.cond_atr[1] == ATR_DEXTERITY) || (item.cond_atr[2] == ATR_DEXTERITY) )
        {
            var int skillLevel_1H; // Используем навык одноручного оружия
            skillLevel_1H = Npc_GetTalentSkill(npc, NPC_TALENT_1H);

            if (skillLevel_1H == 1)
            {
                ReapplyOverlay(npc, "HUMANS_RAPIER_ST1.MDS"); // Оверлей ST1 для рапир (одноручных мечей, требующих ловкость)
            }
            else if (skillLevel_1H == 2)
            {
                ReapplyOverlay(npc, "HUMANS_RAPIER_ST3.MDS"); // Оверлей ST2 для рапир (одноручных мечей, требующих ловкость)
            }
            else
            {
                // **Ничего не делаем при уровне 0 и других уровнях, кроме 1 и 2 для рапир**
            };
        }
        // **Если меч НЕ требует ловкости (ни в одном из первых трех элементов cond_atr), то ничего не делаем, игра использует стандартные анимации**
        else
        {
            // **Не накладываем overlay, игра использует стандартные анимации для одноручных мечей, не требующих ловкости**
        };
    }
    // **БЛОК ДЛЯ "ВСЕГО ОСТАЛЬНОГО ОРУЖИЯ" **
};
 
Последнее редактирование:

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.061
Благодарности
1.020
Баллы
315
Дубинки, молотки боюсь тоже протиснутся в эту категорию :)
а есть двуручные дубины?:) тогда добавь проверку по range, посохи должны быть длинные. ну или просто выпиши в отдельную проверку все посохи и проверь по инстанции.
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.061
Благодарности
1.020
Баллы
315
мне кажется это бессмысленная дичь. лучше через функцию экипировки назначать оверлеи для конкретных инстанций.
 

Вложения

  • UpdateBattleOverlays.zip
    1,3 KB · Просмотры: 2
Последнее редактирование:

Dreamtrust

Участник форума
Регистрация
23 Янв 2023
Сообщения
324
Благодарности
99
Баллы
80
MW 7, Не, я рукожоп.
Кодить не умею от слова совсем.
А эту муть мне Gemini накидала, и то не работает нифига.
а если просто добавить в функцию экипировки?

Код:
instance ItMw_Addon_Stab03(C_Item)
{
...
    on_equip = Equip_ItMw_Addon_Stab03;
...
};

func void Equip_ItMw_Addon_Stab03rstab()
{
        ReapplyOverlay(self, "HUMANS_1HST2.MDS");
};
Gratt упоминал, что через On_equip,
Но, как я понял, Slavemaster реализовал через другую функцию. Мб разница непринципиальна или есть какие нибудь нюансы
 
Последнее редактирование:

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.061
Благодарности
1.020
Баллы
315
Dreamtrust, скинь оверлеи. у тебя какая версия игры?
 

Dreamtrust

Участник форума
Регистрация
23 Янв 2023
Сообщения
324
Благодарности
99
Баллы
80
MW 7, тестирую на Г2 Ночь Ворона. Анимации предварительные. Как скрипт заработает подберу более-менее.
P.S: Честно сворованные из НБ :) Но с разрешения разработчиков.
 

Вложения

  • UpdateBattleOverlays.d
    1,5 KB · Просмотры: 3
  • zUpdateBattleOverlays.vdf
    1,2 MB · Просмотры: 3

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.061
Благодарности
1.020
Баллы
315
мне кажется смысла в этом мало. лучше делать через функцию экипировки для конкретных инстанций.
 

Вложения

  • UpdateBattleOverlays.zip
    1,3 KB · Просмотры: 9

Dreamtrust

Участник форума
Регистрация
23 Янв 2023
Сообщения
324
Благодарности
99
Баллы
80
мне кажется смысла в этом мало. лучше делать через функцию экипировки для конкретных инстанций.
Вроде работает, кажется вы упростили скрипт. А что значит закомментированная часть?
Пост автоматически объединён:

И еще, то что придаст этому плагину фишку/уникальность.
Как сделать так, чтобы анимации стандартной боевки выбирались случайным образом из списка предоставленных 3-4.
 
Последнее редактирование:

Dreamtrust

Участник форума
Регистрация
23 Янв 2023
Сообщения
324
Благодарности
99
Баллы
80
MW 7, Окончательную подборку анимации я еще не закончил, но приблизительно можно оперировать HUMANS_1HST2A.MDS, HUMANS_1HST2B.MDS и HUMANS_2HST2A.MDS, HUMANS_2HST2B.MDS, HUMANS_2HST2C.MDS.
Где-то 2-3 оверлея на 1р Мастер и 3-4 оверлея на 2р Мастер.
 

MW 7


Модостроитель
Регистрация
26 Мар 2004
Сообщения
2.061
Благодарности
1.020
Баллы
315
HUMANS_1HST2A.MDS, HUMANS_1HST2B.MDS
Daedalus:
func void UpdateOverlays1hMDK(var C_NPC npc)
{
    var int skillLevel; // Добавляем переменную для уровня навыка двуручного оружия
    skillLevel = Npc_GetTalentSkill(npc, NPC_TALENT_1H); // Получаем уровень навыка
    
    var string Overlay;   
    
    if      (skillLevel == 1)   { Overlay = "HUMANS_1HST1.MDS"; }
    else if (skillLevel == 2)   
    {
        var int rnd; rnd = Hlp_Random(2);
        if      (rnd == 0)      { Overlay = "HUMANS_1HST2A.MDS"; }
        else /*if (rnd == 1)*/  { Overlay = "HUMANS_1HST2B.MDS"; };
    }
    else                        { Overlay = "HUMANS_1HST0.MDS"; };
    ReapplyOverlay(npc, Overlay);
};
 

Dreamtrust

Участник форума
Регистрация
23 Янв 2023
Сообщения
324
Благодарности
99
Баллы
80
var int rnd; rnd = Hlp_Random(2);
Будет ролл от 0 до 1? а если Hlp_Random(4) то от 0 до 3? В общем от нуля и до (число в скобка-1), так?

А если 4 варианта то:
Daedalus:
func void UpdateOverlays1hMDK(var C_NPC npc)
{
    var int skillLevel; // Добавляем переменную для уровня навыка двуручного оружия
    skillLevel = Npc_GetTalentSkill(npc, NPC_TALENT_1H); // Получаем уровень навыка
  
    var string Overlay; 
  
    if      (skillLevel == 1)   { Overlay = "HUMANS_1HST1.MDS"; }
    else if (skillLevel == 2) 
    {
       var int rnd; rnd = Hlp_Random(4);

        if      (rnd == 0)  { Overlay = "HUMANS_1HST2A.MDS"; }

        else if (rnd == 1)  { Overlay = "HUMANS_1HST2B.MDS"; }

        else if (rnd == 2)  { Overlay = "HUMANS_1HST2C.MDS"; }

        else if (rnd == 3)  { Overlay = "HUMANS_1HST2D.MDS"; };
    }
    else                        { Overlay = "HUMANS_1HST0.MDS"; };
    ReapplyOverlay(npc, Overlay);
};

так?


UPD.: Ага, вроде всё работает

Теперь осталось с посохом разобраться, так вроде норм:
Daedalus:
// Двуручный посох
        if (item.material == MAT_WOOD)
        && (item.range >= 110)
        {
            ReapplyOverlay(npc, "HUMANS_SPST2.MDS"); // Название оверлея для шестов/посохов
            return;
        }; 
        UpdateOverlays2hMDK(npc);
        return;
 
Последнее редактирование:

Dreamtrust

Участник форума
Регистрация
23 Янв 2023
Сообщения
324
Благодарности
99
Баллы
80
Вроде работает, нужен альфа тест, в плагин интегрированы:
HumanRemasterlight так, как некоторые анимации без него отказываются работать
zSmoothanitransitions, чтобы лентяи не испортили себе впечатление резкими переходами
Ну и скриптовый файл положил в плагин, чтобы народ не заморачивался.
Итого:
4 анимации на топоры: по 2 на каждый уровни владения Боец и Мастер
1 анимация на шест: Мастер - пока не распознает посохи магов моды с металлическим наконечником и задействует анимации топоров
5 анимации на 1р меч: 2 на Боец и 3 на Мастер
3 анимации на 2р меч: Мастер
3 анимации на ловкостные 1р мечи: , 1 - Боец и 2 на Мастера
Gratt, Slavemaster, MW 7 - Огромная благодарность за помощь в реализации
LikerGothic, Haart - Спасибо, что разрешили использовать анимации с НБ.


Плагин обновлен



Установка: просто закинуть в Data/plugins
 

Вложения

  • zUpdateBattleOverlays.vdf
    2,8 MB · Просмотры: 6
Последнее редактирование:

Abdylbek

Участник форума
Регистрация
26 Мар 2023
Сообщения
126
Благодарности
115
Баллы
75
Вроде работает, нужен альфа тест, в плагин интегрированы:
HumanRemasterlight так, как некоторые анимации без него отказываются работать
zSmoothanitransitions, чтобы лентяи не испортили себе впечатление резкими переходами
Ну и скриптовый файл положил в плагин, чтобы народ не заморачивался.
Итого:
4 анимации на топоры: по 2 на каждый уровни владения Боец и Мастер
1 анимация на шест вне зависимости от уровня владения - пока не распознает посохи магов моды с металлическим наконечником и задействует анимации топоров
5 анимации на 1р меч: 2 на Боец и 3 на Мастер
3 анимации на 2р меч: Мастер
4 анимации на ловкостные 1р мечи: 1 -Новичок, 1 - Боец и 2 на Мастера
Gratt, Slavemaster, MW 7 - Вам, господа, огромная благодарность за помощь в реализации
LikerGothic, Haart - Вам, спасибо, что разрешили использовать анимации с НБ.

Установка: просто закинуть в Data/plugins
Поставил в одиссею, побегал чутка, в целом всё нормально работает. Правда используя одно и то же одноручное оружие могут быть разные анимации, не пойму задумано ли так, но это как будто даже контролировать можно, и таким образом с любой из трёх анимаций бегать(при 100% анимации включались анимации однорука на 90% из нб, однорука на 60% и ловкостных мечей на 60% вроде. Ещё заметил, что лук может с левого плеча на правое одеваться, с любым видом двуручного так происходит кроме обычного меча, ну это по факту мелочи(текстурпаки случайно не могут на такое влиять?). А ещё при выходе из игры стабильно acsess violations.
 

Slavemaster


Модостроитель
Регистрация
10 Июн 2019
Сообщения
1.127
Благодарности
1.968
Баллы
320
Правда используя одно и то же одноручное оружие могут быть разные анимации, не пойму задумано ли так,
задумано
А ещё при выходе из игры стабильно acsess violations.
Ну отлично, у всех вылетает, кроме меня.
 

Dreamtrust

Участник форума
Регистрация
23 Янв 2023
Сообщения
324
Благодарности
99
Баллы
80
Ещё заметил, что лук может с левого плеча на правое одеваться, с любым видом двуручного так происходит кроме обычного меча
Поясните, можете проверить на оригинальной игре? В плагин вшита стойка из Ремастера, которая заменяется на оригинал как только вы начинаете драться либо целиться из лука.
Максимум забавно что одна из анимаций двуруча это анимация одноручника
Это анимация двуручника, но ГГ настолько силен, что может удержать меч в одной руке:)
 
Сверху Снизу