|
Архив - только для чтения |
Модератор форума: 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. Работоспособность патча я не проверял, возможно работает.
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; } Прикрепления:
2mount.patch
(0.7 Kb)
Сообщение # 1 написано 14.03.2009 в 20:22
|
Juline
А можно как нибудь сделать чтобы в главных столицах (Оргриммар, Штромград, Подгород, Стальгорн и Дарнассус) нельзя было садится и летть на флай транспорте. Так как это приводит к фатальным эффектам. Например уход под текстуру, застрять в небе итд.
Сообщение # 3 написано 22.03.2009 в 22:23
|
если чесно, то всю эту штуку я сам искал и патчем его трудно назвать, я просто поменял значения.
единственное что мне помогло это совет Джулайна о том где искать строчки отвечающие за маунты. по идеи должно работать, но все же по идеи) -- спс, Джулайн, а то недавно искал патч этот, тк уже забыл че я там правил. Добавлено (24.04.2009, 13:31) Code 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))) return SPELL_FAILED_NOT_HERE; }
Сообщение # 7 написано 24.04.2009 в 13:31
|
мне кажется другого варианта нет! ну кроме имитации самого маунта!
Сообщение # 11 написано 24.04.2009 в 13:49
|
Данная тема была перемещена из раздела Патчи в ядро MaNGOS.
Причина перемещения: Устарело Переместил: ph3n.
Сообщение # 15 написано 11.10.2012 в 14:48
|
| |||
| |||