Advertisement
Arden

MVendor

Mar 2nd, 2014
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 23.46 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2.  
  3. #define MSG_GOSSIP_TEXT_GETTING_STARTED         "Game on War-Gate Server"
  4. #define MSG_GOSSIP_TEXT_BUYING_BAGS             "Add 4 bags (36 cells each) in inventory"
  5. #define MSG_GOSSIP_TEXT_MAIN_MENU               "Back to main menu"
  6. #define MSG_GOSSIP_TEXT_A7FORCLASS_UNIVERSAL    "A7 for the class of your game character"
  7. #define MSG_GOSSIP_TEXT_A7FORCLASS_RESTOR       "A7 for the class of your game character (restor)"
  8. #define MSG_GOSSIP_TEXT_A7FORCLASS_BALANCE      "A7 for the class of your game character (balance)"
  9. #define MSG_GOSSIP_TEXT_A7FORCLASS_FERAL        "A7 for the class of your game character (feral)"
  10. #define MSG_GOSSIP_TEXT_A7FORCLASS_SHADOW       "A7 for the class of your game character (shadow)"
  11. #define MSG_GOSSIP_TEXT_A7FORCLASS_DISC         "A7 for the class of your game character (disc)"
  12. #define MSG_GOSSIP_TEXT_A7FORCLASS_HOLY         "A7 for the class of your game character (holy)"
  13. #define MSG_GOSSIP_TEXT_A7FORCLASS_MELEE        "A7 for the class of your game character (melee)"
  14. #define MSG_GOSSIP_TEXT_A7FORCLASS_ELEMENTAL    "A7 for the class of your game character (elemental)"
  15. #define MSG_GOSSIP_TEXT_NON_SET                 "Window with all Nonset A7"
  16. #define MSG_GOSSIP_TEXT_PRIMARY_PROFESSION      "[Menu]Primary profession"
  17. #define MSG_GOSSIP_TEXT_SECONDARY_PROFESSION    "[Menu]Secondary profession"
  18. #define MSG_GOSSIP_TEXT_TELEPORT_MENU           "[Menu]Teleport"
  19. #define MSG_GOSSIP_TEXT_CURE_CHARACTER          "Cure character"
  20. #define MSG_GOSSIP_TEXT_WRITTEN_BY              "Written by"
  21. //Spells
  22. #define SPELL_TELEPORT_VISUAL_EFFECT            35517
  23. //Horde teleport text
  24. #define TELEPORT_IN_ORGRIMMAR                   "Teleport you in Orgrimmar"
  25. #define TELEPORT_IN_UNDERCITY                   "Teleport you in Undercity"
  26. #define TELEPORT_IN_THUNDER_BLUFF               "Teleport you in Thunder Bluff"
  27. #define TELEPORT_IN_SILVERMOON                  "Teleport you in Silvermoon City"
  28. //Alliance teleport text
  29. #define TELEPORT_IN_STORMWIND                   "Teleport you in Stormwind city"
  30. #define TELEPORT_IN_IRONFORGE                   "Teleport you in Ironforge"
  31. #define TELEPORT_IN_DARNASSUS                   "Teleport you in Darnassus"
  32. #define TELEPORT_IN_EXODAR                      "Teleport you in Exodar"
  33. //Random teleport dot
  34. #define TELEPORT_IN_RANDOM_LOCATION             "Teleport you to a random location available to you"
  35. //Profession (primary) (All 11)
  36. #define MSG_GOSSIP_TEXT_ALCHEMY                 "Learn alchemy (450)"
  37. #define MSG_GOSSIP_TEXT_BLACKSMITHING           "Learn blacksmithing (450)"
  38. #define MSG_GOSSIP_TEXT_ENCNANTING              "Learn enchanting (450)"
  39. #define MSG_GOSSIP_TEXT_ENGINEERING             "Learn engineering (450)"
  40. #define MSG_GOSSIP_TEXT_HERBALISM               "Learn herbalism (450)"
  41. #define MSG_GOSSIP_TEXT_INSCRIPTION             "Learn inscription (450)"
  42. #define MSG_GOSSIP_TEXT_JEWELCRAFTING           "Learn jewelcrafting (450)"
  43. #define MSG_GOSSIP_TEXT_LEATHERWORKING          "Learn leatherworking (450)"
  44. #define MSG_GOSSIP_TEXT_MINING                  "Learn mining (450)"
  45. #define MSG_GOSSIP_TEXT_SKINNING                "Learn skinning (450)"
  46. #define MSG_GOSSIP_TEXT_TAILORING               "Learn tailoring (450)"
  47.  
  48. //Profession (secondary) (All 4)
  49. #define MSG_GOSSIP_TEXT_RIDING                  "Learn master riding"
  50. #define MSG_GOSSIP_TEXT_COOKING                 "Learn cooking (450)"
  51. #define MSG_GOSSIP_TEXT_FIRST_AID               "Learn first aid (450)"
  52. #define MSG_GOSSIP_TEXT_FISHING                 "Learn fishing (450)"
  53.  
  54. class npc_multyvendor : public CreatureScript
  55. {
  56.     public:
  57.     npc_multyvendor() : CreatureScript("npc_multyvendor") { }
  58. #pragma region Teleport Function
  59.     void Teleport(Player* pPlayer, float array[5])
  60.     {
  61.         pPlayer->CastSpell(pPlayer, SPELL_TELEPORT_VISUAL_EFFECT, true);
  62.         pPlayer->TeleportTo(array[0], array[1], array[2], array[3], array[4]);
  63.     }
  64. #pragma endregion (void) Teleport(Player* pPlayer, int map, float X, float Y, float Z, float orient)
  65. #pragma region MileageOnThings
  66.     void MileageOnThings(Player* pPlayer, int array[5])
  67.     {
  68.         for (int i = 0; i < 5; ++i)
  69.             {
  70.                 pPlayer->AddItem(array[i], 1);
  71.             }
  72.         pPlayer->CLOSE_GOSSIP_MENU();
  73.     }
  74. #pragma endregion (void) MileageOnThings(Player* pPlayer, int array[5])
  75. #pragma region PlayerAlreadyHasTwoPrimaryProfessions
  76.     bool PlayerAlreadyHasTwoPrimaryProfessions(Player* pPlayer)
  77.         {
  78.             int primaryskillCount = 0;
  79.             int mainskills[11] = {171, 186, 333, 202, 182, 773, 775, 165, 393, 197,164};
  80.             for (int i = 0; i < 11; ++i)
  81.             {
  82.                 if (pPlayer->HasSkill(mainskills[i]))
  83.                     {
  84.                         ++primaryskillCount;
  85.                     }
  86.             }
  87.             if (primaryskillCount < 2)
  88.             {
  89.                 return true;
  90.             }
  91.             return false;
  92.         }
  93. #pragma endregion (bool) PlayerAlreadyHasTwoPrimaryProfessions(Player *pPlayer);
  94. #pragma region PlayerAlreadyHasFourSecondaryProfessions
  95.     bool PlayerAlreadyHasFourSecondaryProfessions(Player *pPlayer)
  96.         {
  97.             int secondaryskillCount = 0;
  98.             int secondaryskills[4] = {185, 129, 356, 762};
  99.             for (int i = 0; i < 4; ++i)
  100.             {
  101.                 if (pPlayer->HasSkill(secondaryskills[i]))
  102.                     {
  103.                         ++secondaryskillCount;
  104.                     }
  105.             }
  106.             if (secondaryskillCount < 4)
  107.             {
  108.                 return true;
  109.             }
  110.             return false;
  111.         }
  112.     #pragma endregion (bool) PlayerAlreadyHasFourSecondaryProfessions(Player *pPlayer);
  113.     bool OnGossipHello(Player* pPlayer, Creature* pCreature)
  114.     {
  115.         if (pPlayer->isInCombat())
  116.         {
  117.             pCreature->MonsterWhisper("You in combat", pPlayer->GetGUID(), false);
  118.             pPlayer->CLOSE_GOSSIP_MENU();
  119.         }
  120.         else
  121.         {
  122.         pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, MSG_GOSSIP_TEXT_GETTING_STARTED, GOSSIP_SENDER_MAIN, 1);
  123.         pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_BUYING_BAGS, GOSSIP_SENDER_MAIN, 2);
  124. #pragma region A7_SET_SECTION
  125.         int playerClass = pPlayer->getClass();
  126.         if (playerClass == CLASS_WARLOCK)
  127.         {
  128.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_UNIVERSAL, GOSSIP_SENDER_MAIN, 3);
  129.         }
  130.         if (playerClass == CLASS_WARRIOR)
  131.         {
  132.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_UNIVERSAL, GOSSIP_SENDER_MAIN, 4);
  133.         }
  134.         if (playerClass == CLASS_DRUID)
  135.         {
  136.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_RESTOR, GOSSIP_SENDER_MAIN, 5);
  137.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_BALANCE, GOSSIP_SENDER_MAIN, 6);
  138.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_FERAL, GOSSIP_SENDER_MAIN, 7);
  139.         }
  140.         if (playerClass == CLASS_PRIEST)
  141.         {
  142.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_SHADOW, GOSSIP_SENDER_MAIN, 8);
  143.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_DISC, GOSSIP_SENDER_MAIN, 9);
  144.         }
  145.         if (playerClass == CLASS_MAGE)
  146.         {
  147.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_UNIVERSAL, GOSSIP_SENDER_MAIN, 10);
  148.         }
  149.         if (playerClass == CLASS_PALADIN)
  150.         {
  151.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_HOLY, GOSSIP_SENDER_MAIN, 11);
  152.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_MELEE, GOSSIP_SENDER_MAIN, 12);
  153.         }
  154.         if (playerClass == CLASS_ROGUE)
  155.         {
  156.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_UNIVERSAL, GOSSIP_SENDER_MAIN, 13);
  157.         }
  158.         if (playerClass == CLASS_DEATH_KNIGHT)
  159.         {
  160.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_UNIVERSAL, GOSSIP_SENDER_MAIN, 14);
  161.         }
  162.         if (playerClass == CLASS_SHAMAN)
  163.         {
  164.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_MELEE, GOSSIP_SENDER_MAIN, 15);
  165.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_ELEMENTAL, GOSSIP_SENDER_MAIN, 16);
  166.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_RESTOR, GOSSIP_SENDER_MAIN, 17);
  167.         }
  168.         if (playerClass == CLASS_HUNTER)
  169.         {
  170.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_A7FORCLASS_UNIVERSAL, GOSSIP_SENDER_MAIN, 18);
  171.         }
  172.         #pragma endregion (ADD_GOSSIP_ITEM Action ended on 18)
  173.         pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_VENDOR, MSG_GOSSIP_TEXT_NON_SET, GOSSIP_SENDER_MAIN, 46);
  174. #pragma region Profession Gossip
  175.         if (pPlayer->getLevel() > 5)
  176.         {
  177.         if (PlayerAlreadyHasTwoPrimaryProfessions(pPlayer))
  178.         {
  179.         pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, MSG_GOSSIP_TEXT_PRIMARY_PROFESSION, GOSSIP_SENDER_MAIN, 19);
  180.         }
  181.         if (PlayerAlreadyHasFourSecondaryProfessions(pPlayer))
  182.         {
  183.         pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, MSG_GOSSIP_TEXT_SECONDARY_PROFESSION, GOSSIP_SENDER_MAIN, 20);
  184.         }
  185.         }
  186. #pragma endregion (ADD_GOSSIP_ITEM Action ended on 20)
  187.         pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, MSG_GOSSIP_TEXT_TELEPORT_MENU, GOSSIP_SENDER_MAIN, 37);
  188.         pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_RANDOM_LOCATION, GOSSIP_SENDER_MAIN, 47);
  189.         pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, MSG_GOSSIP_TEXT_CURE_CHARACTER, GOSSIP_SENDER_MAIN, 48);
  190.         pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_WRITTEN_BY, GOSSIP_SENDER_MAIN, 73);
  191.         pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID());
  192.         }
  193.         return true;
  194.     }
  195.  
  196.     bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction)
  197.     {
  198.         if (uiSender != GOSSIP_SENDER_MAIN)
  199.             return false;
  200. #pragma region Item values (arrays)
  201.         int bag = 23162; //Foror's Crate of Endless Resist Gear Storage
  202.         //As example, form: HEAD, CHEST, LEGS, SHOULDER, HANDS
  203.         int warlockItem[5] =            {41994,41999,42006,42012,42018};
  204.         int warriorItem[5] =            {40829,40790,40850,40870,40810};
  205.         int druidRestorItem[5] =        {41322,41311,41299,41276,41288};
  206.         int druidBalanceItem[5] =       {41328,41317,41305,41282,41328};
  207.         int druidFeralItem[5] =         {41679,41662,41668,41716,41774};
  208.         int priestDiscItem[5] =         {41855,41860,41865,41870,41875};
  209.         int priestShadowItem[5] =       {41916,41922,41928,41935,41841};
  210.         int mageItem[5] =               {41947,41954,41960,41966,41972};
  211.         int hunterItem[5] =             {41158,41088,41206,41218,41144};
  212.         int paladinHolyItem[5] =        {40934,40910,40940,40964,40928};
  213.         int paladinMeleeItem[5] =       {40831,40792,40852,40872,40812};
  214.         int rogueItem[5] =              {41673,41651,41656,41684,41768};
  215.         int deathknightItem[5] =        {40830,40791,40851,40871,40811};
  216.         int shamanMeleeItem[5] =        {41152,41082,41200,41212,41138};
  217.         int shamanElementalItem[5] =    {41020,40995,41034,41045,41008};
  218.         int shamanRestorItem[5] =       {41014,40994,41028,41039,41002};
  219. #pragma endregion
  220. #pragma region Zone coords
  221.         //Alliance
  222.         float StormwindCityCoord[5] = {0, -8899.667969, 564.989441, 92.821983, 0.630244};
  223.         float IronforgeCoord[5] = {0, -4788.0, -1122.0, 498.890015, 0.630244};
  224.         float DarnassusCoord[5] = {1.0, 9929.448242, 2224.156494, 1330.245239, 2.633672};
  225.         float ExodarCoord[5] = {530.0, 3951.163818, -11617.237305, -138.709396, 2.075017};
  226.         //Horde
  227.         float OrgrimmarCoord[5] = {1.0, 1630.201782, -4373.678711, 31.487324, 3.53064};
  228.         float UndercityCoord[5] = {0, 1641.848389, 239.868973, 62.591763, 3.194554};
  229.         float ThunderBluffCoord[5] = {1, -1281.144775, 130.717270, 131.329987, 5.372736};
  230.         float SilvermoonCoord[5] = {530.0, 9468.745117, -7278.426270, 14.215015, 6.218467};
  231.         //Coord for random dot
  232.         float SiStormwindCoord[5] = {0, -8804.427734, 345.061920, 123.251915, 4.599};
  233.         float ValleyOfHonorOrgrimmarCoord[5] = {1.0, 2022.425659, -4605.340820, 26.191210, 3.600264};
  234.         float MireKalimdorCoord[5] = {1.0, -3747.916992, -3190.030029, 33.029397, 5.049343};
  235.         float DalaranCoord[5] = {571.0, 5645.322266, 860.978271, 569.715637, 2.722937};
  236.         float ArgentumTournamentCoord[5] = {571.0, 8505.782227, 1180.126587, 569.419128, 5.194586};
  237.         float HiddenNisinNorthlandCoord[5] = {571.0, 7459.662109, 4938.676270, -21.139856, 5.263686};
  238.         float WyrmrestTempleNorthlandCoord[5] = {571.0, 3546.667480, 273.056244, 441.757172, 6.214012};
  239.         float WestfallKingdomCoord[5] = {0, -10292.445313, 1409.313721, 40.233257, 0.867435};
  240. #pragma endregion
  241.  
  242.         pPlayer->PlayerTalkClass->ClearMenus();
  243.         int RandomTeleportDot;
  244.         int RandomTeleportDotGM;
  245.         switch (uiAction)
  246.         {
  247.             case 2:
  248.             pPlayer->AddItem(bag, 4);
  249.             pPlayer->CLOSE_GOSSIP_MENU();
  250.             break;
  251.             case 3:
  252.             MileageOnThings(pPlayer, warlockItem);
  253.             break;
  254.             case 4:
  255.             MileageOnThings(pPlayer, warriorItem);
  256.             break;
  257.             case 5:
  258.             MileageOnThings(pPlayer, druidRestorItem);
  259.             break;
  260.             case 6:
  261.             MileageOnThings(pPlayer, druidBalanceItem);
  262.             break;
  263.             case 7:
  264.             MileageOnThings(pPlayer, druidFeralItem);
  265.             break;
  266.             case 8:
  267.             MileageOnThings(pPlayer, priestShadowItem);
  268.             break;
  269.             case 9:
  270.             MileageOnThings(pPlayer, priestDiscItem);
  271.             break;
  272.             case 10:
  273.             MileageOnThings(pPlayer, mageItem);
  274.             break;
  275.             case 11:
  276.             MileageOnThings(pPlayer, paladinHolyItem);
  277.             break;
  278.             case 12:
  279.             MileageOnThings(pPlayer, paladinMeleeItem);
  280.             break;
  281.             case 13:
  282.             MileageOnThings(pPlayer, rogueItem);
  283.             break;
  284.             case 14:
  285.             MileageOnThings(pPlayer, deathknightItem);
  286.             break;
  287.             case 15:
  288.             MileageOnThings(pPlayer, shamanMeleeItem);
  289.             break;
  290.             case 16:
  291.             MileageOnThings(pPlayer, shamanElementalItem);
  292.             break;
  293.             case 17:
  294.             MileageOnThings(pPlayer, shamanRestorItem);
  295.             break;
  296.             case 18:
  297.             MileageOnThings(pPlayer, hunterItem);
  298.             break;
  299.             case 19:
  300.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_ALCHEMY, GOSSIP_SENDER_MAIN, 21);
  301.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_BLACKSMITHING, GOSSIP_SENDER_MAIN, 22);
  302.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_ENCNANTING, GOSSIP_SENDER_MAIN, 23);
  303.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_ENGINEERING, GOSSIP_SENDER_MAIN, 24);
  304.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_HERBALISM, GOSSIP_SENDER_MAIN, 25);
  305.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_INSCRIPTION, GOSSIP_SENDER_MAIN, 26);
  306.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_JEWELCRAFTING, GOSSIP_SENDER_MAIN, 27);
  307.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_LEATHERWORKING, GOSSIP_SENDER_MAIN, 28);
  308.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_MINING, GOSSIP_SENDER_MAIN, 29);
  309.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_SKINNING, GOSSIP_SENDER_MAIN, 30);
  310.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_TAILORING, GOSSIP_SENDER_MAIN, 31);
  311.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_MAIN_MENU, GOSSIP_SENDER_MAIN, 36);
  312.             pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID());
  313.             break;
  314.             case 20:
  315.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_RIDING, GOSSIP_SENDER_MAIN, 32);
  316.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_COOKING, GOSSIP_SENDER_MAIN, 33);
  317.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_FIRST_AID, GOSSIP_SENDER_MAIN, 34);
  318.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TRAINER, MSG_GOSSIP_TEXT_FISHING, GOSSIP_SENDER_MAIN, 35);
  319.             pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_MAIN_MENU, GOSSIP_SENDER_MAIN, 36);
  320.             pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID());
  321.             break;
  322.             case 21:
  323.                 pPlayer->learnSpell(51304, true);
  324.                 pPlayer->SetSkill(171,6,450,450);
  325.                 pPlayer->CLOSE_GOSSIP_MENU();
  326.             break;
  327.             case 22:
  328.                 pPlayer->learnSpell(51300, true);
  329.                 pPlayer->SetSkill(164,6,450,450);
  330.                 pPlayer->CLOSE_GOSSIP_MENU();
  331.             break;
  332.             case 23:
  333.                 pPlayer->learnSpell(51313, true);
  334.                 pPlayer->SetSkill(333,6,450,450);
  335.                 pPlayer->CLOSE_GOSSIP_MENU();
  336.             break;
  337.             case 24:
  338.                 pPlayer->learnSpell(51306, true);
  339.                 pPlayer->SetSkill(202,6,450,450);
  340.                 pPlayer->CLOSE_GOSSIP_MENU();
  341.             break;
  342.             case 25:
  343.                 pPlayer->learnSpell(50300, true);
  344.                 pPlayer->SetSkill(182,6,450,450);
  345.                 pPlayer->CLOSE_GOSSIP_MENU();
  346.             break;
  347.             case 26:
  348.                 pPlayer->learnSpell(45363, true);
  349.                 pPlayer->SetSkill(773,6,450,450);
  350.                 pPlayer->CLOSE_GOSSIP_MENU();
  351.             break;
  352.             case 27:
  353.                 pPlayer->learnSpell(51311, true);
  354.                 pPlayer->SetSkill(755,6,450,450);
  355.                 pPlayer->CLOSE_GOSSIP_MENU();
  356.             break;
  357.             case 28:
  358.                 pPlayer->learnSpell(51302, true);
  359.                 pPlayer->SetSkill(165,6,450,450);
  360.                 pPlayer->CLOSE_GOSSIP_MENU();
  361.             break;
  362.             case 29:
  363.                 pPlayer->learnSpell(50310, true);
  364.                 pPlayer->SetSkill(186,6,450,450);
  365.                 pPlayer->CLOSE_GOSSIP_MENU();
  366.             break;
  367.             case 30:
  368.                 pPlayer->learnSpell(50305, true);
  369.                 pPlayer->SetSkill(393,6,450,450);
  370.                 pPlayer->CLOSE_GOSSIP_MENU();
  371.             break;
  372.             case 31:
  373.                 pPlayer->learnSpell(51309, true);
  374.                 pPlayer->SetSkill(197,6,450,450);
  375.                 pPlayer->CLOSE_GOSSIP_MENU();
  376.             break;
  377.             case 32:
  378.                 pPlayer->learnSpell(90265, true);
  379.                 pPlayer->SetSkill(762, 6, 450, 450);
  380.                 pPlayer->learnSpell(54197, true);
  381.                 pPlayer->CLOSE_GOSSIP_MENU();
  382.             break;
  383.             case 33:
  384.                 pPlayer->learnSpell(51296, true);
  385.                 pPlayer->SetSkill(185,6,450,450);
  386.                 pPlayer->CLOSE_GOSSIP_MENU();
  387.             break;
  388.             case 34:
  389.                 pPlayer->learnSpell(45542, true);
  390.                 pPlayer->SetSkill(129,6,450,450);
  391.                 pPlayer->CLOSE_GOSSIP_MENU();
  392.             break;
  393.             case 35:
  394.                 pPlayer->learnSpell(51294, true);
  395.                 pPlayer->SetSkill(356,6,450,450);
  396.                 pPlayer->CLOSE_GOSSIP_MENU();
  397.             break;
  398.             case 36:
  399.                 OnGossipHello(pPlayer, pCreature);
  400.             break;
  401.             case 37:
  402.                 if (pPlayer->isGameMaster())
  403.                 {
  404.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_STORMWIND, GOSSIP_SENDER_MAIN, 38);
  405.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_IRONFORGE, GOSSIP_SENDER_MAIN, 39);
  406.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_DARNASSUS, GOSSIP_SENDER_MAIN, 40);
  407.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_EXODAR, GOSSIP_SENDER_MAIN, 41);
  408.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_ORGRIMMAR, GOSSIP_SENDER_MAIN, 42);
  409.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_UNDERCITY, GOSSIP_SENDER_MAIN, 43);
  410.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_THUNDER_BLUFF, GOSSIP_SENDER_MAIN, 44);
  411.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_SILVERMOON, GOSSIP_SENDER_MAIN, 45);
  412.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_MAIN_MENU, GOSSIP_SENDER_MAIN, 36);
  413.                 pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID());
  414.                 }
  415.                 else if (pPlayer->GetTeam() == ALLIANCE)
  416.                 {
  417.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_STORMWIND, GOSSIP_SENDER_MAIN, 38);
  418.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_IRONFORGE, GOSSIP_SENDER_MAIN, 39);
  419.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_DARNASSUS, GOSSIP_SENDER_MAIN, 40);
  420.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_EXODAR, GOSSIP_SENDER_MAIN, 41);
  421.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_MAIN_MENU, GOSSIP_SENDER_MAIN, 36);
  422.                 pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID());
  423.                 }
  424.                 else if (pPlayer->GetTeam() == HORDE)
  425.                 {
  426.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_ORGRIMMAR, GOSSIP_SENDER_MAIN, 42);
  427.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_UNDERCITY, GOSSIP_SENDER_MAIN, 43);
  428.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_THUNDER_BLUFF, GOSSIP_SENDER_MAIN, 44);
  429.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, TELEPORT_IN_SILVERMOON, GOSSIP_SENDER_MAIN, 45);
  430.                 pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, MSG_GOSSIP_TEXT_MAIN_MENU, GOSSIP_SENDER_MAIN, 36);
  431.                 pPlayer->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, pCreature->GetGUID());
  432.                 }
  433.             break;
  434.             case 38:
  435.                 Teleport(pPlayer, StormwindCityCoord);
  436.             break;
  437.             case 39:
  438.                 Teleport(pPlayer, IronforgeCoord);
  439.             break;
  440.             case 40:
  441.                 Teleport(pPlayer, DarnassusCoord);
  442.             break;
  443.             case 41:
  444.                 Teleport(pPlayer, ExodarCoord);
  445.             break;
  446.             case 42:
  447.                 Teleport(pPlayer, OrgrimmarCoord);
  448.             break;
  449.             case 43:
  450.                 Teleport(pPlayer, UndercityCoord);
  451.             break;
  452.             case 44:
  453.                 Teleport(pPlayer, ThunderBluffCoord);
  454.             break;
  455.             case 45:
  456.                 Teleport(pPlayer, SilvermoonCoord);
  457.             break;
  458.             case 46:
  459.                 pPlayer->GetSession()->SendListInventory(pCreature->GetGUID());
  460.             break;
  461.             case 47:
  462. #pragma region Random teleport (materialization)
  463.                 RandomTeleportDot = rand()%11 + 1;
  464.                 if (pPlayer->isGameMaster())
  465.                 {
  466.                     RandomTeleportDotGM = rand()%16 + 1;
  467.                     switch (RandomTeleportDotGM)
  468.                     {
  469.                         case 1:
  470.                             Teleport(pPlayer, StormwindCityCoord);
  471.                         break;
  472.                         case 2:
  473.                             Teleport(pPlayer, IronforgeCoord);
  474.                         break;
  475.                         case 3:
  476.                             Teleport(pPlayer, DarnassusCoord);
  477.                         break;
  478.                         case 4:
  479.                             Teleport(pPlayer, ExodarCoord);
  480.                         break;
  481.                         case 5:
  482.                             Teleport(pPlayer, OrgrimmarCoord);
  483.                         break;
  484.                         case 6:
  485.                             Teleport(pPlayer, UndercityCoord);
  486.                         break;
  487.                         case 7:
  488.                             Teleport(pPlayer, ThunderBluffCoord);
  489.                         break;
  490.                         case 8:
  491.                             Teleport(pPlayer, SilvermoonCoord);
  492.                         break;
  493.                         case 9:
  494.                             Teleport(pPlayer, HiddenNisinNorthlandCoord);
  495.                         break;
  496.                         case 10:
  497.                             Teleport(pPlayer, SiStormwindCoord);
  498.                         break;
  499.                         case 11:
  500.                             Teleport(pPlayer, ValleyOfHonorOrgrimmarCoord);
  501.                         break;
  502.                         case 12:
  503.                             Teleport(pPlayer, MireKalimdorCoord);
  504.                         break;
  505.                         case 13:
  506.                             Teleport(pPlayer, WestfallKingdomCoord);
  507.                         break;
  508.                         case 14:
  509.                             Teleport(pPlayer, DalaranCoord);
  510.                         break;
  511.                         case 15:
  512.                             Teleport(pPlayer, ArgentumTournamentCoord);
  513.                         break;
  514.                         case 16:
  515.                             Teleport(pPlayer, WyrmrestTempleNorthlandCoord);
  516.                         break;
  517.                     }
  518.                    
  519.                 }
  520.                 if (pPlayer->GetTeam() == ALLIANCE)
  521.                 {
  522.                     switch (RandomTeleportDot)
  523.                     {
  524.                     case 1:
  525.                         Teleport(pPlayer, StormwindCityCoord);
  526.                     break;
  527.                     case 2:
  528.                         Teleport(pPlayer, IronforgeCoord);
  529.                     break;
  530.                     case 3:
  531.                         Teleport(pPlayer, DarnassusCoord);
  532.                     break;
  533.                     case 4:
  534.                         Teleport(pPlayer, ExodarCoord);
  535.                     break;
  536.                     case 5:
  537.                         Teleport(pPlayer, DalaranCoord);
  538.                     break;
  539.                     case 6:
  540.                         Teleport(pPlayer, ArgentumTournamentCoord);
  541.                     break;
  542.                     case 7:
  543.                         Teleport(pPlayer, SiStormwindCoord);
  544.                     break;
  545.                     case 8:
  546.                         Teleport(pPlayer, WestfallKingdomCoord);
  547.                     break;
  548.                     case 9:
  549.                         Teleport(pPlayer, HiddenNisinNorthlandCoord);
  550.                     break;
  551.                     case 10:
  552.                         Teleport(pPlayer, WyrmrestTempleNorthlandCoord);
  553.                     break;
  554.                     case 11:
  555.                         Teleport(pPlayer, WestfallKingdomCoord);
  556.                     break;
  557.                     }
  558.                 }
  559.                 else
  560.                 {
  561.                     switch (RandomTeleportDot)
  562.                     {
  563.                     case 1:
  564.                         Teleport(pPlayer, OrgrimmarCoord);
  565.                     break;
  566.                     case 2:
  567.                         Teleport(pPlayer, UndercityCoord);
  568.                     break;
  569.                     case 3:
  570.                         Teleport(pPlayer, ThunderBluffCoord);
  571.                     break;
  572.                     case 4:
  573.                         Teleport(pPlayer, SilvermoonCoord);
  574.                     break;
  575.                     case 5:
  576.                         Teleport(pPlayer, ArgentumTournamentCoord);
  577.                     break;
  578.                     case 6:
  579.                         Teleport(pPlayer, DalaranCoord);
  580.                     break;
  581.                     case 7:
  582.                         Teleport(pPlayer, ValleyOfHonorOrgrimmarCoord);
  583.                     break;
  584.                     case 8:
  585.                         Teleport(pPlayer, MireKalimdorCoord);
  586.                     break;
  587.                     case 9:
  588.                         Teleport(pPlayer, HiddenNisinNorthlandCoord);
  589.                     break;
  590.                     case 10:
  591.                         Teleport(pPlayer, WyrmrestTempleNorthlandCoord);
  592.                     break;
  593.                     case 11:
  594.                         Teleport(pPlayer, WestfallKingdomCoord);
  595.                     break;
  596.                     }
  597.                 }
  598. #pragma endregion
  599.             break;
  600.             case 48:
  601.                 pPlayer->SetHealth(pPlayer->GetMaxHealth());
  602.                 pPlayer->CLOSE_GOSSIP_MENU();
  603.             break;
  604.             case 73:
  605.                 pCreature->MonsterWhisper("Written by Physicist, mail: Physicist4773@yandex.ru, MultyVendor v.1.0 Beta", pPlayer->GetGUID(), false);
  606.                 pPlayer->CLOSE_GOSSIP_MENU();
  607.             break;
  608.             default:
  609.                 pPlayer->CLOSE_GOSSIP_MENU();
  610.         }
  611.         return true;
  612.     }
  613. };
  614.  
  615. void AddSC_npc_multyvendor()
  616. {
  617.     new npc_multyvendor;
  618. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement