Знаю про такую проблему и так, вот в чем баг:
Когда игрок нажимает за 1 секунду или менее, больше, чем 1 раз, спелл багается, как буд то у него якобы 2 кд, исправляется 4мя строчками.
Spell.cpp Функция: SpellCastResult Spell::CheckCast(bool strict)
Код:// check cooldowns to prevent cheating if (m_caster->GetTypeId() == TYPEID_PLAYER && !(m_spellInfo->Attributes & SPELL_ATTR0_PASSIVE)) { //can cast triggered (by aura only?) spells while have this flag if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CASTER_AURASTATE) && m_caster->ToPlayer()->HasFlag(PLAYER_FLAGS, PLAYER_ALLOW_ONLY_ABILITY)) return SPELL_FAILED_SPELL_IN_PROGRESS; if (m_caster->ToPlayer()->HasSpellCooldown(m_spellInfo->Id)) { if (m_triggeredByAuraSpell) return SPELL_FAILED_DONT_REPORT; else { if (m_spellInfo->Id == 46584) return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; return SPELL_FAILED_NOT_READY; } } // check if we are using a potion in combat for the 2nd+ time. Cooldown is added only after caster gets out of combat if (m_caster->ToPlayer()->GetLastPotionId() && m_CastItem && (m_CastItem->IsPotion() || (m_spellInfo->Attributes & SPELL_ATTR0_DISABLED_WHILE_ACTIVE))) return SPELL_FAILED_NOT_READY; }после данной правки залипаний спелла Вы не увидите.Код:// Check global cooldown if (strict && !(_triggeredCastFlags & TRIGGERED_IGNORE_GCD) && HasGlobalCooldown()) { if (m_spellInfo->Id == 46584) return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; return SPELL_FAILED_NOT_READY; }




Ответить с цитированием
