|
Архив - только для чтения |
Модератор форума: andycrowz |
Форум Корзина форума Корзина Летающие(флай) маунты в Азероте. (Патч писал не я.) |
Летающие(флай) маунты в Азероте. |
Вопрос уже многократно подымался, но реального результата не было. Все, кто хоть чуть-чуть шарит в ядре, давайте поставим в этой "загадке" точку.
Начну: Code diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index f94b221..2b97e43 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -4210,7 +4210,7 @@ uint8 Spell::CanCast(bool strict) if(m_caster->GetTypeId()==TYPEID_PLAYER) { uint32 v_map = GetVirtualMapForMapAndZone(m_caster->GetMapId(), m_caster->GetZoneId()); - if( !((Player*)m_caster)->isGameMaster() && v_map != 530 && !(v_map == 571 && ((Player*)m_caster)->HasSpell(54197))) + if( !((Player*)m_caster)->isGameMaster() && v_map != 530 && v_map != 580 && v_map != 571) return SPELL_FAILED_NOT_HERE; } Суть заключается в том, чтобы при проверке зоны 530(Азерот) можно было использовать спел 54197. Работоспособность патча я не проверял, возможно работает. Также, можно просто попробовать вставить в src/game/Spell.cpp строчку: Code GetVirtualMapForMapAndZone(m_caster->GetMapId(),m_caster->GetZoneId()) != 530) Вот выписки из spell.cpp, связанные с маунтом. Code case SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED: case SPELL_AURA_FLY: { // not allow cast fly spells at old maps by players (all spells is self target) if(m_caster->GetTypeId()==TYPEID_PLAYER) { if( !((Player*)m_caster)->IsAllowUseFlyMountsHere() ) return SPELL_FAILED_NOT_HERE; } Code case SPELL_AURA_MOUNTED: { if (m_caster->IsInWater()) return SPELL_FAILED_ONLY_ABOVEWATER; if (m_caster->GetTypeId()==TYPEID_PLAYER && ((Player*)m_caster)->GetTransport()) return SPELL_FAILED_NO_MOUNTS_ALLOWED; // Ignore map check if spell have AreaId. AreaId already checked and this prevent special mount spells if (m_caster->GetTypeId()==TYPEID_PLAYER && !sMapStore.LookupEntry(m_caster->GetMapId())->IsMountAllowed() && !m_IsTriggeredSpell && !m_spellInfo->AreaGroupId) return SPELL_FAILED_NO_MOUNTS_ALLOWED; Code // zone check if(uint8 res= GetSpellAllowedInLocationError(m_spellInfo,m_caster->GetMapId(),m_caster->GetZoneId(),m_caster->GetAreaId())) return res; // not let players cast spells at mount (and let do it to creatures) if( m_caster->IsMounted() && m_caster->GetTypeId()==TYPEID_PLAYER && !m_IsTriggeredSpell && !IsPassiveSpell(m_spellInfo->Id) && !(m_spellInfo->Attributes & SPELL_ATTR_CASTABLE_WHILE_MOUNTED) ) { if(m_caster->isInFlight()) return SPELL_FAILED_NOT_FLYING; else return SPELL_FAILED_NOT_MOUNTED; } ![]()
Сообщение # 1 написано 27.02.2010 в 01:00
|
Данная тема была перемещена из раздела Патчи в ядро MaNGOS.
Причина перемещения: устарело Переместил: ph3n.
Сообщение # 7 написано 14.10.2012 в 13:33
|
| |||
| |||