Diyvol

NPC Other (TrinityCore)

Dec 12th, 2015
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 14.29 KB | None | 0 0
  1. REPLACE INTO `creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid1`, `modelid2`, `modelid3`, `modelid4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction_A`, `faction_H`, `npcflag`, `speed_walk`, `speed_run`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `dmg_multiplier`, `baseattacktime`, `rangeattacktime`, `unit_class`, `unit_flags`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `spell5`, `spell6`, `spell7`, `spell8`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `Health_mod`, `Mana_mod`, `Armor_mod`, `RacialLeader`, `questItem1`, `questItem2`, `questItem3`, `questItem4`, `questItem5`, `questItem6`, `movementId`, `RegenHealth`, `equipment_id`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`, `WDBVerified`) VALUES
  2. ('100006', '0', '0', '0', '0', '0', '18', '0', '18', '0', 'Акционер', '', '', '0', '59', '61', '0', '35', '35', '1', '1.48', '1.14286', '0.0', '0', '655.0', '663.0', '0', '158', '1.0', '1500', '1900', '1', '0', '0', '0', '0', '0', '0', '0', '0.0', '0.0', '100', '7', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '', '1', '3', '1.0', '1.0', '1.0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', 'npc_other', '1');
  3. */
  4.  
  5. #include "ScriptPCH.h"
  6. #include "ScriptMgr.h"
  7.  
  8. #define MSG_GOSSIP_TEXT_GETTING_STARTED    "Приветствуем вас на сервере WoW!"
  9.  
  10. #define MSG_ERR_AURA "Снятие дебафа 'Слабость после воскрешения' не возможна."
  11. #define MSG_ERR_INCOMBAT "Вы находитесь в бою. Чтобы использовать данного Npc выйдите из него."
  12. #define MSG_ERR_ARENA_POINT "У вас не достаточно Апа!"
  13.  
  14. #define MSG_COMPLETE_RENAME "Оплата Успешно Произведена Сделайте Логаут и Введите Новое Имя Персонажа.Не Забудьте После Смены Имени,Выйти Из Игры и Удалить Из Клиента Папку Cache!"
  15. #define MSG_CUSTOMIZE_COMPLETE "Оплата Успешно Произведена Сделайте Логаут и Измените Внешность Персонажа.Не Забудьте После Смены Внешности,Выйти Из Игры и Удалить Из Клиента Папку Cache!"
  16. #define MSG_CHANGE_FACTION_COMPLETE "Оплата Успешно Произведена Сделайте Логаут и Измените Фракцию Персонажа.Не Забудьте После Смены Внешности,Выйти Из Игры и Удалить Из Клиента Папку Cache!"
  17.  
  18. #define MSG_GOSSIP_TEXT_MAX_HEALTH "Вылечи меня!"
  19. #define MSG_GOSSIP_TEXT_MAX_SKILL "Выучить все навыки оружия и защиты."
  20. #define MSG_GOSSIP_TEXT_UNAURA_ALL "Снять бафы, дебафы, заклинания."
  21. #define MSG_GOSSIP_TEXT_BAGS "Купить Сумки."
  22. #define MSG_GOSSIP_TEXT_RIDING "Изучить Верховую Езду."
  23.  
  24. #define MSG_GOSSIP_TEXT_RENAME "Сменить Имя персонажа за 3 тысячи Апа."    // Thank Crispi
  25. #define MSG_GOSSIP_TEXT_CUSTOM "Сменить Внешность персонажа за 3 тысячи Апа." // Thank Crispi
  26. #define MSG_GOSSIP_TEXT_CHANGE_FACTION "Сменить Фракцию персонажа за 5 тысяч Апа."
  27.  
  28. #define MSG_GOSSIP_TEXT_A7_PRIEST_HEAL "Плечи А8 для Приста-хила {Дух}."
  29. #define MSG_GOSSIP_TEXT_A7_PRIEST_DD "Плечи А8 для Приста на дд."
  30. #define MSG_GOSSIP_TEXT_A7_DRUID_FERAL "Плечи А8 для Друида-ферала."
  31. #define MSG_GOSSIP_TEXT_A7_DRUID_RESTOR "Плечи А8 для Друида-рестора."
  32. #define MSG_GOSSIP_TEXT_A7_DRUID_BALANSE "Плечи А8 для Друида-баланса."
  33. #define MSG_GOSSIP_TEXT_A7_WARRIOR "Плечи А8 для Воина."
  34. #define MSG_GOSSIP_TEXT_A7_MAGE "Плечи А8 для Мага."
  35. #define MSG_GOSSIP_TEXT_A7_HUNTER "Плечи А8 для Охотника."
  36. #define MSG_GOSSIP_TEXT_A7_PALLADIN_HOLI "Плечи А8 для Палладина-хила."
  37. #define MSG_GOSSIP_TEXT_A7_PALLADIN_DD "Плечи А8 для Палладина-дд."
  38. #define MSG_GOSSIP_TEXT_A7_ROGUE "Плечи А8 для Разбойника."
  39. #define MSG_GOSSIP_TEXT_A7_DK "Плечи А8 для Рыцаря Смерти."
  40. #define MSG_GOSSIP_TEXT_A7_LOOK "Плечи А8 для Чернокнижника."
  41. #define MSG_GOSSIP_TEXT_A7_SHAMAN_HOLI "Плечи А8 для Шамана-хила {Дух}."
  42. #define MSG_GOSSIP_TEXT_A7_SHAMAN_RDD "Плечи А8 для Шамана-рдд"
  43. #define MSG_GOSSIP_TEXT_A7_SHAMAN_DD "Плечи А8 для Шамана-дд."
  44.  
  45. #define CONST_ARENA_POINT_1 3000
  46. #define CONST_ARENA_POINT_2 5000
  47.  
  48.  
  49.         int bag = 21843;
  50.         int warlockItem[1] =            {51540};
  51.         int warriorItem[1] =            {51545};
  52.         int druidRestorItem[1] =        {51424};
  53.         int druidBalanceItem[1] =        {51424};
  54.         int druidFeralItem[1] =            {51430};
  55.         int priestDiscItem[1] =            {51486};
  56.         int priestShadowItem[1] =        {51491};
  57.         int mageItem[1] =                {51467};
  58.         int hunterItem[1] =                {51462};
  59.         int paladinHolyItem[1] =        {51473};
  60.         int paladinMeleeItem[1] =        {51479};
  61.         int rogueItem[1] =                {51496};
  62.         int deathknightItem[1] =        {51418};
  63.         int shamanMeleeItem[1] =        {51508};
  64.         int shamanElementalItem[1] =    {51514};
  65.         int shamanRestorItem[1] =        {51502};
  66.  
  67. class npc_other : public CreatureScript
  68. {
  69.     public:
  70.     npc_other() : CreatureScript("npc_other") { }
  71.  
  72.     void AddSet(Player* player, int massive[1])
  73.     {
  74.         for (int i = 0; i < 1; ++i)
  75.             {
  76.                 player->AddItem(massive[i], 1);
  77.             }
  78.         player->CLOSE_GOSSIP_MENU();
  79.     }
  80.  
  81.     bool OnGossipHello(Player *player, Creature *creature)
  82.         {
  83.         creature->MonsterWhisper(MSG_GOSSIP_TEXT_GETTING_STARTED, player->GetGUID());
  84.         player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR , MSG_GOSSIP_TEXT_BAGS, GOSSIP_SENDER_MAIN, 2);
  85.         int playerClass = player->getClass();
  86.         switch (playerClass)
  87.         {
  88.         case CLASS_WARLOCK:
  89.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_LOOK, GOSSIP_SENDER_MAIN, 7);
  90.         break;
  91.         case CLASS_WARRIOR:
  92.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_WARRIOR, GOSSIP_SENDER_MAIN, 8);
  93.         break;
  94.         case CLASS_DRUID:
  95.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_DRUID_RESTOR, GOSSIP_SENDER_MAIN, 9);
  96.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_DRUID_BALANSE, GOSSIP_SENDER_MAIN, 10);
  97.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_DRUID_FERAL, GOSSIP_SENDER_MAIN, 11);
  98.         break;
  99.         case CLASS_PRIEST:
  100.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_PRIEST_HEAL, GOSSIP_SENDER_MAIN, 12);
  101.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_PRIEST_DD, GOSSIP_SENDER_MAIN, 13);
  102.         break;
  103.         case CLASS_MAGE:
  104.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_MAGE, GOSSIP_SENDER_MAIN, 14);
  105.         break;
  106.         case CLASS_PALADIN:
  107.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_PALLADIN_HOLI, GOSSIP_SENDER_MAIN, 15);
  108.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_PALLADIN_DD, GOSSIP_SENDER_MAIN, 16);
  109.         break;
  110.         case CLASS_ROGUE:
  111.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_ROGUE, GOSSIP_SENDER_MAIN, 17);
  112.         break;
  113.         case CLASS_DEATH_KNIGHT:
  114.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_DK, GOSSIP_SENDER_MAIN, 18);
  115.         break;
  116.         case CLASS_SHAMAN:
  117.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_SHAMAN_DD, GOSSIP_SENDER_MAIN, 19);
  118.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_SHAMAN_RDD, GOSSIP_SENDER_MAIN, 20);
  119.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_SHAMAN_HOLI, GOSSIP_SENDER_MAIN, 21);
  120.         break;
  121.         case CLASS_HUNTER:
  122.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7_HUNTER, GOSSIP_SENDER_MAIN, 22);
  123.         break;
  124.         }
  125.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MAX_HEALTH, GOSSIP_SENDER_MAIN, 3);
  126.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_MAX_SKILL, GOSSIP_SENDER_MAIN, 4);
  127. //            player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_UNAURA_ALL, GOSSIP_SENDER_MAIN, 5);
  128. //            player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_RIDING, GOSSIP_SENDER_MAIN, 6);
  129.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_RENAME, GOSSIP_SENDER_MAIN, 23);
  130.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_CUSTOM, GOSSIP_SENDER_MAIN, 24);
  131.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_INTERACT_1, MSG_GOSSIP_TEXT_CHANGE_FACTION, GOSSIP_SENDER_MAIN, 25);
  132.             player->SEND_GOSSIP_MENU (DEFAULT_GOSSIP_MESSAGE,creature->GetGUID());
  133.         return true;
  134.     }
  135.  
  136.  
  137.       bool OnGossipSelect(Player *player, Creature *creature, uint32 sender, uint32 action )
  138.         {
  139.           if (!player->getAttackers().empty())
  140.     {
  141.         creature->MonsterWhisper(MSG_ERR_INCOMBAT, player->GetGUID());
  142.         player->CLOSE_GOSSIP_MENU();
  143.         return false;
  144.           }
  145.           switch (action)
  146.     {
  147.           case 2:
  148.             player->AddItem(bag, 4);
  149.             player->CLOSE_GOSSIP_MENU();
  150.             break;
  151.           case 3:
  152.               player->SetHealth(player->GetMaxHealth());
  153.               player->CLOSE_GOSSIP_MENU();
  154.               break;
  155.           case 4:
  156.               player->UpdateSkillsToMaxSkillsForLevel();
  157.               player->CLOSE_GOSSIP_MENU();
  158.               break;
  159.           case 5:
  160.             if (player->HasAura(15007))
  161.             {
  162.         creature->MonsterWhisper(MSG_ERR_AURA, player->GetGUID());
  163.         player->CLOSE_GOSSIP_MENU();
  164.         }else
  165.             {
  166.         player->RemoveAllAuras();
  167.         player->CLOSE_GOSSIP_MENU();
  168.         player->RemoveAllSpellCooldown();
  169.         }
  170.               break;
  171.           case 6:
  172.               player->SetSkill(762, 6, 450, 450);
  173.               player->learnSpell(54197, true);
  174.               player->CLOSE_GOSSIP_MENU();
  175.               break;
  176.           case 7:
  177.               AddSet(player, warlockItem);
  178.               player->CLOSE_GOSSIP_MENU();
  179.               break;
  180.           case 8:
  181.               AddSet(player, warriorItem);
  182.               break;
  183.           case 9:
  184.               AddSet(player, druidRestorItem);
  185.               break;
  186.           case 10:
  187.               AddSet(player, druidBalanceItem);
  188.               break;
  189.           case 11:
  190.               AddSet(player, druidFeralItem);
  191.               break;
  192.           case 12:
  193.               AddSet(player, priestDiscItem);
  194.               break;
  195.           case 13:
  196.               AddSet(player,  priestShadowItem);
  197.               break;
  198.           case 14:
  199.               AddSet(player,  mageItem);
  200.               break;
  201.           case 15:
  202.               AddSet(player,  paladinHolyItem);
  203.               break;
  204.           case 16:
  205.               AddSet(player,  paladinMeleeItem);
  206.               break;
  207.           case 17:
  208.               AddSet(player, rogueItem);
  209.               break;
  210.           case 18:
  211.               AddSet(player, deathknightItem);
  212.               break;
  213.           case 19:
  214.               AddSet(player, shamanMeleeItem);
  215.               break;
  216.           case 20:
  217.               AddSet(player, shamanRestorItem);
  218.               break;
  219.           case 21:
  220.               AddSet(player, shamanElementalItem);
  221.               break;
  222.           case 22:
  223.               AddSet(player, hunterItem);
  224.           case 23:
  225.         if (player->GetArenaPoints() < CONST_ARENA_POINT_1)
  226.         {
  227.               creature->MonsterWhisper(MSG_ERR_ARENA_POINT, player->GetGUID());
  228.               player->CLOSE_GOSSIP_MENU();
  229.         }else{
  230.               // Делаем Ренейм
  231.               player->SetAtLoginFlag(AT_LOGIN_RENAME);
  232.               player->ModifyArenaPoints(-CONST_ARENA_POINT_1);
  233.               creature->MonsterWhisper(MSG_COMPLETE_RENAME, player->GetGUID());
  234.               player->CLOSE_GOSSIP_MENU();
  235.               }
  236.               break;
  237.           case 24:
  238.               if (player->GetArenaPoints() < CONST_ARENA_POINT_1)
  239.               {
  240.               creature->MonsterWhisper(MSG_ERR_ARENA_POINT, player->GetGUID());
  241.               player->CLOSE_GOSSIP_MENU();
  242.         }else{
  243.               // Делаем Смену внешности
  244.               player->SetAtLoginFlag(AT_LOGIN_CUSTOMIZE);
  245.               player->ModifyArenaPoints(-CONST_ARENA_POINT_1);
  246.               creature->MonsterWhisper(MSG_CUSTOMIZE_COMPLETE, player->GetGUID());
  247.               player->CLOSE_GOSSIP_MENU();
  248.               }
  249.               break;
  250.           case 25:
  251.               if (player->GetArenaPoints() < CONST_ARENA_POINT_2)
  252.               {
  253.               creature->MonsterWhisper(MSG_ERR_ARENA_POINT, player->GetGUID());
  254.               player->CLOSE_GOSSIP_MENU();
  255.         }else{
  256.               // Делаем Смену фракции
  257.               player->SetAtLoginFlag(AT_LOGIN_CHANGE_FACTION);
  258.               player->ModifyArenaPoints(-CONST_ARENA_POINT_2);
  259.               creature->MonsterWhisper(MSG_CHANGE_FACTION_COMPLETE, player->GetGUID());
  260.               player->CLOSE_GOSSIP_MENU();
  261.               }
  262.               break;
  263. }
  264.       return true;
  265. }
  266.       };
  267.  
  268.       void AddSC_npc_other()
  269. {
  270.     new npc_other;
  271. }
Advertisement
Add Comment
Please, Sign In to add comment