Advertisement
Guest User

AutoLearn SPells on LevelUP

a guest
Aug 1st, 2013
1,021
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2. #include "ScriptMgr.h"
  3.  
  4. class player_learnspell : public PlayerScript
  5.  {
  6.  public:
  7.     player_learnspell() : PlayerScript ("player_learnspell") {}
  8.  
  9.     void OnLevelChanged(Player* player, uint8 oldLevel)
  10.     {
  11.     uint8 newLevel = player->getLevel();
  12.     if (newLevel < oldLevel) return;
  13.     uint32 entry;
  14.     switch (player->getClass()) {
  15.     case CLASS_ROGUE: entry = 917; break;
  16.     case CLASS_PRIEST: entry = 377; break;
  17.     case CLASS_MAGE: entry = 328; break;
  18.     case CLASS_PALADIN: entry = 927; break;
  19.     case CLASS_WARRIOR: entry = 913; break;
  20.     case CLASS_SHAMAN: entry = 20407; break;
  21.     case CLASS_DRUID: entry = 5505; break;
  22.     case CLASS_HUNTER: entry = 5515; break;
  23.     case CLASS_WARLOCK: entry = 5496; break;
  24.     case CLASS_DEATH_KNIGHT: entry = 29196; break;
  25.     }
  26.  
  27.  
  28.      TrainerSpellData const* t_spells = (sObjectMgr->GetNpcTrainerSpells(entry));
  29.      for (TrainerSpellMap::const_iterator itr = t_spells->spellList.begin(); itr != t_spells->spellList.end(); ++itr) {
  30.          uint32 f_spell = itr->first;
  31.          TrainerSpell const* spell = t_spells->Find(f_spell);
  32.          if (!spell) continue;
  33.          if ((spell->reqLevel > newLevel) || (player->HasSpell(f_spell))) continue;
  34.          const SpellInfo* prevSpellInfo = sSpellMgr->GetSpellInfo(f_spell)->GetPrevRankSpell();
  35.          if ((prevSpellInfo && player->HasSpell(prevSpellInfo->Id)) || !prevSpellInfo) player->learnSpell(f_spell, false);
  36.      }
  37.     }
  38. };  
  39.  
  40. void AddSC_player_learnspell()
  41. {
  42. new player_learnspell();
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement