Дубинки, молотки боюсь тоже протиснутся в эту категориюпосох
Daedalus:if (item.damageType == DAM_BLUNT) && (item.flags & ITEM_2HD_AXE)
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, игра использует стандартные анимации для одноручных мечей, не требующих ловкости**
};
}
// **БЛОК ДЛЯ "ВСЕГО ОСТАЛЬНОГО ОРУЖИЯ" **
};
а есть двуручные дубины?Дубинки, молотки боюсь тоже протиснутся в эту категорию![]()
Gratt упоминал, что через On_equip,а если просто добавить в функцию экипировки?
Код:instance ItMw_Addon_Stab03(C_Item) { ... on_equip = Equip_ItMw_Addon_Stab03; ... }; func void Equip_ItMw_Addon_Stab03rstab() { ReapplyOverlay(self, "HUMANS_1HST2.MDS"); };
Вроде работает, кажется вы упростили скрипт. А что значит закомментированная часть?мне кажется смысла в этом мало. лучше делать через функцию экипировки для конкретных инстанций.
список напишиКак сделать так, чтобы анимации стандартной боевки выбирались случайным образом из списка предоставленных 3-4.
HUMANS_1HST2A.MDS, HUMANS_1HST2B.MDS
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);
};
Будет ролл от 0 до 1? а если Hlp_Random(4) то от 0 до 3? В общем от нуля и до (число в скобка-1), так?var int rnd; rnd = Hlp_Random(2);
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);
};
// Двуручный посох
if (item.material == MAT_WOOD)
&& (item.range >= 110)
{
ReapplyOverlay(npc, "HUMANS_SPST2.MDS"); // Название оверлея для шестов/посохов
return;
};
UpdateOverlays2hMDK(npc);
return;
Поставил в одиссею, побегал чутка, в целом всё нормально работает. Правда используя одно и то же одноручное оружие могут быть разные анимации, не пойму задумано ли так, но это как будто даже контролировать можно, и таким образом с любой из трёх анимаций бегать(при 100% анимации включались анимации однорука на 90% из нб, однорука на 60% и ловкостных мечей на 60% вроде. Ещё заметил, что лук может с левого плеча на правое одеваться, с любым видом двуручного так происходит кроме обычного меча, ну это по факту мелочи(текстурпаки случайно не могут на такое влиять?). А ещё при выходе из игры стабильно acsess violations.Вроде работает, нужен альфа тест, в плагин интегрированы:
HumanRemasterlight так, как некоторые анимации без него отказываются работать
zSmoothanitransitions, чтобы лентяи не испортили себе впечатление резкими переходами
Ну и скриптовый файл положил в плагин, чтобы народ не заморачивался.
Итого:
4 анимации на топоры: по 2 на каждый уровни владения Боец и Мастер
1 анимация на шест вне зависимости от уровня владения - пока не распознает посохи магов моды с металлическим наконечником и задействует анимации топоров
5 анимации на 1р меч: 2 на Боец и 3 на Мастер
3 анимации на 2р меч: Мастер
4 анимации на ловкостные 1р мечи: 1 -Новичок, 1 - Боец и 2 на Мастера
Gratt, Slavemaster, MW 7 - Вам, господа, огромная благодарность за помощь в реализации
LikerGothic, Haart - Вам, спасибо, что разрешили использовать анимации с НБ.
Установка: просто закинуть в Data/plugins
задуманоПравда используя одно и то же одноручное оружие могут быть разные анимации, не пойму задумано ли так,
Ну отлично, у всех вылетает, кроме меня.А ещё при выходе из игры стабильно acsess violations.
Тогда всё отлично. Максимум забавно что одна из анимаций двуруча это анимация одноручника)задумано
DX11 может влиять?Ну отлично, у всех вылетает, кроме меня.
всё можетDX11 может влиять?
Поясните, можете проверить на оригинальной игре? В плагин вшита стойка из Ремастера, которая заменяется на оригинал как только вы начинаете драться либо целиться из лука.Ещё заметил, что лук может с левого плеча на правое одеваться, с любым видом двуручного так происходит кроме обычного меча
Это анимация двуручника, но ГГ настолько силен, что может удержать меч в одной рукеМаксимум забавно что одна из анимаций двуруча это анимация одноручника