• Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: andycrowz  
Летающие(флай) маунты в Азероте.
Juline
!1
Вопрос уже многократно подымался, но реального результата не было. Все, кто хоть чуть-чуть шарит в ядре, давайте поставим в этой "загадке" точку.

Начну:
Когда-то, бывшим модератор Атом, писал патч, чтобы флай маунты были доступны в Азероте:

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;
      }
Прикрепления: 2mount.patch (0.7 Kb)
Сообщение # 1 написано 14.03.2009 в 20:22
Grever
Капрал
мне кажецо флаи в азероте это уже перебор smile
Сообщение # 2 написано 15.03.2009 в 03:03
kampeador
Центурион
Juline
А можно как нибудь сделать чтобы в главных столицах (Оргриммар, Штромград, Подгород, Стальгорн и Дарнассус) нельзя было садится и летть на флай транспорте. Так как это приводит к фатальным эффектам. Например уход под текстуру, застрять в небе итд.
Сообщение # 3 написано 22.03.2009 в 22:23
Truel
Рыцарь
А можно сделать sql файл и залить в базу чтобы на флаях можно по азероту летать?
Сообщение # 4 написано 21.04.2009 в 17:37
Orionen
Mangos Site Master
Juline, классно ! Но помоему уже вылаживали, но давно smile
Сообщение # 5 написано 21.04.2009 в 22:40
Целитель
WOWJP client DEV
Выкладывали для ASCENT и атом под него кидал )))
Сообщение # 6 написано 24.04.2009 в 13:10
AtOM
Рыцарь
если чесно, то всю эту штуку я сам искал и патчем его трудно назвать, я просто поменял значения.
единственное что мне помогло это совет Джулайна о том где искать строчки отвечающие за маунты. по идеи должно работать, но все же по идеи)
--
спс, Джулайн, а то недавно искал патч этот, тк уже забыл че я там правил.

Добавлено (24.04.2009, 13:31)
---------------------------------------------
можно поколдовать и тупо удалить строчки в spell.cpp :

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
deni
Маршал
Бред)
Сообщение # 8 написано 24.04.2009 в 13:45
Hulko
Центурион
deni, в чем же именно бред то?))...
Сообщение # 9 написано 24.04.2009 в 13:46
AtOM
Рыцарь
deni, предложи свой вариант.
Сообщение # 10 написано 24.04.2009 в 13:48
NameNot
1
мне кажется другого варианта нет! ну кроме имитации самого маунта!
Сообщение # 11 написано 24.04.2009 в 13:49
AtOM
Рыцарь
DЖoRiK, позже затестирую удаление, выложу патч под 2.4.3 и 3.х.х
Сообщение # 12 написано 24.04.2009 в 14:26
Gromobot2010
Сержант
А вот я вас всех сейчас ОБЛОМАЮ , так-как нету флай манутов в азероте их и ставить не надо потомучто когда переступаешь новую локу тебя скидывает с маунта, так что это бред флай в азероте

Сообщение # 13 написано 09.03.2010 в 04:01
Kreat{ER}
Маршал
ну, если бы собрали сборку с этим патчем в ядре, это было бы класс.
Сообщение # 14 написано 09.03.2010 в 16:38
ph3n
Developer
Данная тема была перемещена из раздела Патчи в ядро MaNGOS.
Причина перемещения: Устарело

Переместил: ph3n.
Сообщение # 15 написано 11.10.2012 в 14:48
  • Страница 1 из 1
  • 1
Поиск: