CORE 335 Autoriser les montures volantes (aura) pour les MJ
#1
Bonjour Aquayoup !

Si, en tant que MJ, vous appréciez vous promener en monture volante sur Azeroth, vous risquez de rencontrer une difficulté lors des changements d'area.
En effet, il existe une vérification côté serveur qui va vous faire descendre de la monture, même si vous êtes MJ.

Voici comment corriger le problème dans le core.

Dans le player.cpp, remplacez la méthode "CanFlyInZone" comme suit :

Code :
bool Player::CanFlyInZone(uint32 mapid, uint32 zone, SpellInfo const* bySpell) const
{
   
   if (IsGameMaster())
       return true;

   // continent checked in SpellInfo::CheckLocation at cast and area update
   uint32 v_map = GetVirtualMapForMapAndZone(mapid, zone);
   if (v_map == 571 && !bySpell->HasAttribute(SPELL_ATTR7_IGNORE_COLD_WEATHER_FLYING))
       if (!HasSpell(54197)) // 54197 = Cold Weather Flying
           return false;

   return true;
}


Dans le fichier SpellInfo.cpp, dans la méthode CheckLocation, modifiez la partie concernant les limitations par continent comme suit :

Code :
   // continent limitation (virtual continent)
   if (HasAttribute(SPELL_ATTR4_CAST_ONLY_IN_OUTLAND))
   {
       if (strict)
       {
           AreaTableEntry const* areaEntry = sAreaTableStore.LookupEntry(area_id);
           if (!areaEntry)
               areaEntry = sAreaTableStore.LookupEntry(zone_id);

           if (!areaEntry || !areaEntry->IsFlyable() || !player->CanFlyInZone(map_id, zone_id, this))
               return SPELL_FAILED_INCORRECT_AREA;
       }
       else
       {
           uint32 const v_map = GetVirtualMapForMapAndZone(map_id, zone_id);
           MapEntry const* mapEntry = sMapStore.LookupEntry(v_map);

           if(!mapEntry)
               return SPELL_FAILED_INCORRECT_AREA;

           if (!player->IsGameMaster())
           {
               if(mapEntry->Expansion() < 1 || !mapEntry->IsContinent())
                   return SPELL_FAILED_INCORRECT_AREA;
           }

           //if (!mapEntry || mapEntry->Expansion() < 1 || !mapEntry->IsContinent() || !player->IsGameMaster())
           //    return SPELL_FAILED_INCORRECT_AREA;
       }
   }

Je précise que je m'équipe de mes montures en passant par la commande ".aura", vous ne pouvez pas passer par la méthode classique (catalogue de montures) car il existe une vérification côté client.

En espérant que cela dépannera quelqu'un un jour  Wink
Répondre
#2
Ceux encore en tlk apprécieront , Merci Galathil Smile
Répondre
#3
Effectivement, voila une modification que certains doivent encore chercher. Pour ma part j'ai opte pour la modification du spell.dbc. En tout cas merci pour le tutoriel
Si tu avances, tu meurs ... si tu recules, tu meurs ... alors dis moi ... pourquoi tu recules?
(Proverbe mongol)
Répondre
#4
thx very much !! =) merci à toi c'est cool =)
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)