|
Баг-репорты Описываем проблемы и ошибки работы ядра |
|
Опции темы | Поиск в этой теме | Опции просмотра |
17.11.2010, 14:04 | #1 |
Ученый
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
|
[bug+fix] Use pvp trinket in process player logout
Вообщем такой незначительный и совсем не серьёзный баг (наверное) :
Нажимаем логаут и если персонаж имеет пвп триню (и она на нём одета) http://www.wowhead.com/spell=42292#used-by-item:0-2+1 ( или http://www.wowhead.com/spell=59752 ) нажимаем использовать и персонаж её использует и встаёт ,а логаут то продолжает идти , а персонаж то наш стоит. И вот решил попробывать исправить , вроде бы показалось не так уж сложно... На офе во время логаута если заюзать триню или тот рассовый спелл то пишет "Выполняется другое действие" . Пробуем запихнуть это дело в Spell::CheckCast Код:
if (((Player*)m_caster)->GetSession()->isLogingOut()) { if (!(m_spellInfo->Attributes & SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY)) return SPELL_FAILED_SPELL_IN_PROGRESS; } дальше пробуем вот так: Код:
if (((Player*)m_caster)->GetSession()->isLogingOut()) { if (!(m_spellInfo->Attributes & SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY)) m_caster->SetStandState(UNIT_STAND_STATE_SIT); return SPELL_FAILED_SPELL_IN_PROGRESS; } Быть может не тут надо это дело исправлять ? Праильно ли выбран путь для исправления этого бага ? А может всё это полный бред ? |
17.11.2010, 14:19 | #2 |
Модератор
|
имхо стоит рассмотреть это
Код:
void Spell::prepare(SpellCastTargets const* targets, Aura* triggeredByAura) { ..................................................................................................... //Prevent casting at cast another spell (ServerSide check) if(m_caster->IsNonMeleeSpellCasted(false, true, true) && m_cast_count) { SendCastResult(SPELL_FAILED_SPELL_IN_PROGRESS); finish(false); return; } Насчет верности не знаю, возможно действительно анимация происходит раньше, чем выполняется предложенная проверка в 1 посте, а возможно проблема, описанная в посткриптуме, или мб что-то еще PS : когда используется после if более одной строки, надо делать через скобки, т.к if без скобок считает только последующий оператор, а не всю группу Вот Код:
if (((Player*)m_caster)->GetSession()->isLogingOut()) { if (!(m_spellInfo->Attributes & SPELL_ATTR_EX_DISPEL_AURAS_ON_IMMUNITY)) { m_caster->SetStandState(UNIT_STAND_STATE_SIT); return SPELL_FAILED_SPELL_IN_PROGRESS; } } Последний раз редактировалось MaS0n; 17.11.2010 в 14:23. |
Пользователь сказал cпасибо: | Den (17.11.2010) |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[10744] Prevent equip/unequip items in process logout | newsbot | CMaNGOS Commits | 0 | 19.11.2010 05:49 |
[10744][fix] prevent equip and unequip item in process logout | Den | Принятые патчи | 7 | 19.11.2010 05:24 |
[10326] Process GAMEOBJECT_TYPE_FISHINGHOLE in normal way as for other GO's | newsbot | CMaNGOS Commits | 0 | 06.08.2010 16:40 |
[10325] Improve process for Use() of GAMEOBJECT_TYPE_SUMMONING_RITUAL | newsbot | CMaNGOS Commits | 0 | 06.08.2010 15:40 |
[9793] Add 'Logout Player' output to the Char.log | newsbot | CMaNGOS Commits | 0 | 25.04.2010 19:40 |