Нашел интересный скрипт, который может заменить нашего НПЦ, который выдает разные вещи по классам.Вот он:
Код:
#include "ScriptPCH.h"

#include "ScriptMgr.h"

 

#define MSG_ERR_AURA "Снятие дебафа 'Слабость после воскрешения' не возможна."

#define MSG_ERR_INCOMBAT "Вы находитесь в бою. Чтобы использовать данного Npc выйдите из него."

#define MSG_ERR_ARENA_POINT "У вас не достаточно Апа!"

 

#define MSG_COMPLETE_RENAME "Оплата Успешно Произведена Сделайте Логаут и Введите Новое Имя Персонажа.Не Забудьте После Смены Имени,Выйти Из Игры и Удалить Из Клиента Папку Cache!"

#define MSG_CUSTOMIZE_COMPLETE "Оплата Успешно Произведена Сделайте Логаут и Измените Внешность Персонажа.Не Забудьте После Смены Внешности,Выйти Из Игры и Удалить Из Клиента Папку Cache!"

#define MSG_CHANGE_FACTION_COMPLETE "Оплата Успешно Произведена Сделайте Логаут и Измените Фракцию Персонажа.Не Забудьте После Смены Внешности,Выйти Из Игры и Удалить Из Клиента Папку Cache!"

 

#define MSG_GOSSIP_TEXT_MAX_HEALTH "Вылечи меня!"

#define MSG_GOSSIP_TEXT_MAX_SKILL "Выучить все навыки оружия и защиты."

#define MSG_GOSSIP_TEXT_UNAURA_ALL "Снять бафы, дебафы, заклинания."

#define MSG_GOSSIP_TEXT_BAGS "Купить Сумки."

#define MSG_GOSSIP_TEXT_RIDING "Изучить Верховую Езду."

 

#define MSG_GOSSIP_TEXT_RENAME "Сменить Имя персонажа за 3 тысячи Апа."    // Thank Crispi

#define MSG_GOSSIP_TEXT_CUSTOM "Сменить Внешность персонажа за 3 тысячи Апа." // Thank Crispi

#define MSG_GOSSIP_TEXT_CHANGE_FACTION "Сменить Фракцию персонажа за 5 тысяч Апа."

 

#define MSG_GOSSIP_TEXT_A7_PRIEST_HEAL "Купить Сет А7 для Приста-хила {Дух}."

#define MSG_GOSSIP_TEXT_A7_PRIEST_DD "Купить Сет А7 для Приста на дд."

#define MSG_GOSSIP_TEXT_A7_DRUID_FERAL "Купить Сет А7 для Друида-ферала."

#define MSG_GOSSIP_TEXT_A7_DRUID_RESTOR "Купить Сет А7 для Друида-рестора."

#define MSG_GOSSIP_TEXT_A7_DRUID_BALANSE "Купить Сет А7 для Друида-баланса."

#define MSG_GOSSIP_TEXT_A7_WARRIOR "Купить Сет А7 для Воина."

#define MSG_GOSSIP_TEXT_A7_MAGE "Купить Сет А7 для Мага."

#define MSG_GOSSIP_TEXT_A7_HUNTER "Купить Сет А7 для Охотника."

#define MSG_GOSSIP_TEXT_A7_PALLADIN_HOLI "Купить Сет А7 для Палладина-хила."

#define MSG_GOSSIP_TEXT_A7_PALLADIN_DD "Купить Сет А7 для Палладина-дд."

#define MSG_GOSSIP_TEXT_A7_ROGUE "Купить Сет А7 для Разбойника."

#define MSG_GOSSIP_TEXT_A7_DK "Купить Сет А7 для Рыцаря Смерти."

#define MSG_GOSSIP_TEXT_A7_LOOK "Купить Сет А7 для Чернокнижника."

#define MSG_GOSSIP_TEXT_A7_SHAMAN_HOLI "Купить Сет А7 для Шамана-хила {Дух}." 

#define MSG_GOSSIP_TEXT_A7_SHAMAN_RDD "Купить Сет А7 для Шамана-рдд" 

#define MSG_GOSSIP_TEXT_A7_SHAMAN_DD "Купить Сет А7 для Шамана-дд."

 

#define CONST_ARENA_POINT_1 1000

#define CONST_ARENA_POINT_2 3000

 

 

        int bag = 23162;

        int warlockItem[5] =                    {41994,41999,42006,42012,42018};

                int warriorItem[5] =                    {40829,40790,40850,40870,40810};

                int druidRestorItem[5] =                {41322,41311,41299,41276,41288};

                int druidBalanceItem[5] =               {41328,41317,41305,41282,41328};

                int druidFeralItem[5] =                 {41679,41662,41668,41716,41774};

                int priestDiscItem[5] =                 {41855,41860,41865,41870,41875};

                int priestShadowItem[5] =               {41916,41922,41928,41935,41941};

                int mageItem[5] =                               {41947,41954,41960,41966,41972};

                int hunterItem[5] =                             {41158,41088,41206,41218,41144};

                int paladinHolyItem[5] =                {40934,40910,40940,40964,40928};

                int paladinMeleeItem[5] =               {40831,40792,40852,40872,40812};

                int rogueItem[5] =                              {41673,41651,41656,41684,41768};

                int deathknightItem[5] =                {40830,40791,40851,40871,40811};

                int shamanMeleeItem[5] =                {41152,41082,41200,41212,41138};

                int shamanElementalItem[5] =    {41020,40995,41034,41045,41008};

                int shamanRestorItem[5] =               {41014,40994,41028,41039,41002};

 

class npc_other : public CreatureScript

{

    public: 

    npc_other() : CreatureScript("npc_other") { }

 

        void AddSet(Player* player, int massive[5])

        {

                for (int i = 0; i < 5; ++i)

                        {

                                player->AddItem(massive[i], 1);

                        }

                player->CLOSE_GOSSIP_MENU();

        }

 

        bool OnGossipHello(Player *player, Creature *creature)

                { 

        creature->MonsterWhisper(MSG_GOSSIP_TEXT_GETTING_STARTED, player->GetGUID());

                player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR , MSG_GOSSIP_TEXT_BAGS, GOSSIP_SENDER_MAIN, 2);

                int playerClass = player->getClass();

                switch (playerClass)

                {

                case CLASS_WARLOCK:

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_LOOK, GOSSIP_SENDER_MAIN, 7);

                break;

                case CLASS_WARRIOR:

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_WARRIOR, GOSSIP_SENDER_MAIN, 8);

                break;

                case CLASS_DRUID:

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_DRUID_RESTOR, GOSSIP_SENDER_MAIN, 9);

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_DRUID_BALANSE, GOSSIP_SENDER_MAIN, 10);

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_DRUID_FERAL, GOSSIP_SENDER_MAIN, 11);

                break;

                case CLASS_PRIEST:

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_PRIEST_HEAL, GOSSIP_SENDER_MAIN, 12);

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_PRIEST_DD, GOSSIP_SENDER_MAIN, 13);

                break;

                case CLASS_MAGE:

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_MAGE, GOSSIP_SENDER_MAIN, 14);

                break;

                case CLASS_PALADIN:

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_PALLADIN_HOLI, GOSSIP_SENDER_MAIN, 15);

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_PALLADIN_DD, GOSSIP_SENDER_MAIN, 16);

                break;

                case CLASS_ROGUE:

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_ROGUE, GOSSIP_SENDER_MAIN, 17);

                break;

                case CLASS_DEATH_KNIGHT:

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_DK, GOSSIP_SENDER_MAIN, 18);

                break;

                case CLASS_SHAMAN:

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_SHAMAN_DD, GOSSIP_SENDER_MAIN, 19);

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_SHAMAN_RDD, GOSSIP_SENDER_MAIN, 20);

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_SHAMAN_HOLI, GOSSIP_SENDER_MAIN, 21);

                break;

                case CLASS_HUNTER:

                        player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_HUNTER, GOSSIP_SENDER_MAIN, 22);

                break;

                }

                    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MAX_HEALTH, GOSSIP_SENDER_MAIN, 3);

                    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MAX_SKILL, GOSSIP_SENDER_MAIN, 4);

            player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_UNAURA_ALL, GOSSIP_SENDER_MAIN, 5);

            player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_RIDING, GOSSIP_SENDER_MAIN, 6);

                    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_RENAME, GOSSIP_SENDER_MAIN, 23);

                    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_CUSTOM, GOSSIP_SENDER_MAIN, 24);

                    player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_CHANGE_FACTION, GOSSIP_SENDER_MAIN, 25);

            player->SEND_GOSSIP_MENU (DEFAULT_GOSSIP_MESSAGE,_creature->GetGUID()); 

        return true;

        }

 

 

      bool OnGossipSelect(Player *player, Creature *creature, uint32 sender, uint32 action )

                {

                  if (!player->getAttackers().empty())

        {

                creature->MonsterWhisper(MSG_ERR_INCOMBAT, player->GetGUID());

                player->CLOSE_GOSSIP_MENU();

        return false;

                  }

                  switch (action)

        {

                  case 2:

                         player->AddItem(bag, 4);

                         player->CLOSE_GOSSIP_MENU();

                         break;

                  case 3:

                          player->SetHealth(player->GetMaxHealth());

                      player->CLOSE_GOSSIP_MENU();

                          break;

                  case 4:

                          player->UpdateSkillsToMaxSkillsForLevel();

                      player->CLOSE_GOSSIP_MENU();

                          break;

                  case 5:

                         if (player->HasAura(15007))

                         {

                _creature->MonsterWhisper(MSG_ERR_AURA, player->GetGUID());

                player->CLOSE_GOSSIP_MENU();

                }else

                        {

        player->RemoveAllAuras();

                player->CLOSE_GOSSIP_MENU();

                player->RemoveAllSpellCooldown();

                }

                      break;

                  case 6:

                      player->SetSkill(762, 6, 450, 450);

                      player->learnSpell(54197, true);

                      player->CLOSE_GOSSIP_MENU();

                          break;

                  case 7:

                          AddSet(player, warlockItem);

                          player->CLOSE_GOSSIP_MENU();

                          break;

                  case 8:

                          AddSet(player, warriorItem);

                          break;

                  case 9:

              AddSet(player, druidRestorItem);

                          break;

                  case 10:

                          AddSet(player, druidBalanceItem);

                          break;

                  case 11:

                          AddSet(player, druidFeralItem);

                          break;

                  case 12:

                          AddSet(player, priestDiscItem);

                          break;

                  case 13:

                          AddSet(player,  priestShadowItem);

                          break;

                  case 14:

                          AddSet(player,  mageItem);

                          break;

                  case 15:

                          AddSet(player,  paladinHolyItem);

                          break;

                  case 16:

                          AddSet(player,  paladinMeleeItem);

                          break;

                  case 17:

                          AddSet(player, rogueItem);

                          break;

                  case 18:

                          AddSet(player, deathknightItem);

                          break;

                  case 19:

                          AddSet(player, shamanMeleeItem);

                          break;

                  case 20:

                          AddSet(player, shamanRestorItem);

                          break;

                  case 21:

                          AddSet(player, shamanElementalItem);

                          break;

                  case 22:

                          AddSet(player, hunterItem);

                  case 23:

                if (player->GetArenaPoints() < CONST_ARENA_POINT_1)

                {

                          creature->MonsterWhisper(MSG_ERR_ARENA_POINT, player->GetGUID());

                  player->CLOSE_GOSSIP_MENU();

                }else{

                      // Делаем Ренейм

                      player->SetAtLoginFlag(AT_LOGIN_RENAME);

                      player->ModifyArenaPoints(-CONST_ARENA_POINT_1);

              creature->MonsterWhisper(MSG_COMPLETE_RENAME, player->GetGUID());

              player->CLOSE_GOSSIP_MENU();

                      }

                      break;

                  case 24:

                          if (player->GetArenaPoints() < CONST_ARENA_POINT_1)

                          {

                      creature->MonsterWhisper(MSG_ERR_ARENA_POINT, player->GetGUID());

                      player->CLOSE_GOSSIP_MENU();

            }else{

                      // Делаем Смену внешности

                      player->SetAtLoginFlag(AT_LOGIN_CUSTOMIZE);

                      player->ModifyArenaPoints(-CONST_ARENA_POINT_1);

              creature->MonsterWhisper(MSG_CUSTOMIZE_COMPLETE, player->GetGUID());

              player->CLOSE_GOSSIP_MENU();

                          }

                          break;

                  case 25:

                          if (player->GetArenaPoints() < CONST_ARENA_POINT_2)

                          {

                       creature->MonsterWhisper(MSG_ERR_ARENA_POINT, player->GetGUID());

                       player->CLOSE_GOSSIP_MENU();

             }else{

                       // Делаем Смену фракции

                       player->SetAtLoginFlag(AT_LOGIN_CHANGE_FACTION);

                       player->ModifyArenaPoints(-CONST_ARENA_POINT_2);

               creature->MonsterWhisper(MSG_CHANGE_FACTION_COMPLETE, player->GetGUID());

               player->CLOSE_GOSSIP_MENU();

                          }

                          break; 

}

      return true;

}

          };

 

          void AddSC_npc_other()

{

        new npc_other;

}