Advertisement
Faded

TrinityCore C++ Teleporter

Jun 2nd, 2012
2,341
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 12.64 KB | None | 0 0
  1. /*******************************************************************************************
  2. *                        __                           __ _                                 *
  3. *                     /\ \ \___  _ __ ___  ___  ___  / _| |_                               *
  4. *                    /  \/ / _ \| '_ ` _ \/ __|/ _ \| |_| __|                              *
  5. *                   / /\  / (_) | | | | | \__ \ (_) |  _| |_                               *
  6. *                   \_\ \/ \___/|_| |_| |_|___/\___/|_|  \__|   - www.Nomsoftware.com -    *
  7. *                               The policy of Nomsoftware states: Releasing our software   *
  8. *                               or any other files are protected. You cannot re-release    *
  9. *                               anywhere unless you were given permission.                 *
  10. *                           (C) Nomsoftware 'Nomsoft' 2011-2012. All rights reserved.      *
  11. ********************************************************************************************/
  12. /*********************************************************
  13.   *                      Title:                        *
  14.    *             TrinityCore C++ Teleporter           *
  15.     *                                                *
  16.      *            Scripted by: Faded                *
  17.       *     (C)Nomsoftware 'Nomsoft' 2012          *
  18.        *-----------------------------------------*/
  19.  
  20. #include "ScriptPCH.h"
  21.  
  22. enum eMenus
  23. {
  24.     MY_CITIES_MENU          = 1,
  25.     NVM_EXIT                = 2,
  26.     PLAYER_MENU             = 3,
  27.     HEAL_MENU               = 4,
  28.     BUFF_MENU               = 5,
  29.     CUSTOM_AREAS_MENU       = 6,
  30.     REZ_MENU                = 7,
  31.     CUSTOM_LOCATION_PORT    = 8,
  32.     A_CITIES_MENU           = 9,
  33.     H_CITIES_MENU           = 10,
  34.     DARNASSUS_PORT          = 11,
  35.     THE_EXODAR_PORT         = 12,
  36.     STORMWIND_PORT          = 13,
  37.     IRONFORGE_PORT          = 14,
  38.     ORGRIMMAR_PORT          = 15,
  39.     THUNDER_BLUFF_PORT      = 16,
  40.     UNDERCITY_PORT          = 17,
  41.     SILVERMOON_CITY_PORT    = 18,
  42.     MY_LOCATIONS_MENU       = 19,
  43.     SERVICES_MENU           = 20,
  44.     DALARAN_PORT            = 21,
  45.     SHATTRATH_CITY_PORT     = 22
  46. };
  47.  
  48. enum eIcons
  49. {
  50.     CHAT_ICON           = 0,
  51.     VENDOR_ICON         = 1,
  52.     FLIGHT_ICON         = 2,
  53.     TRAINER_ICON        = 3,
  54.     GEAR_ICON           = 4,
  55.     GEAR_ICON_2         = 5,
  56.     BANK_ICON           = 6,
  57.     CHAT_DOTS_ICON      = 7,
  58.     TABARD_ICON         = 8,
  59.     SWORDS_ICON         = 9,
  60.     GOLD_DOT_ICON       = 10
  61. };
  62.  
  63. /* Gossip Colors */
  64. #define TEXT_CUSTOM_ORANGE          "|cff873600"
  65. #define TEXT_CUSTOM_RED             "|cffA40000"
  66. #define TEXT_CUSTOM_BLUE            "|cff00479E"
  67. #define TEXT_CUSTOM_GREEN           "|cff065600"
  68. #define TEXT_CUSTOM_PURPLE          "|cff5A005B"
  69. #define TEXT_CUSTOM_GREY            "|cff515151"
  70. #define TEXT_CUSTOM_CYAN            "|cff005853"
  71. #define TEXT_CUSTOM_BROWN           "|cff584200"
  72. /* Gossip Strings */
  73. #define IN_COMBAT                   " Leave combat first!"
  74. #define SERVICES_GOSSIP             " -> Services"
  75. #define MY_LOCATIONS_GOSSIP         " -> My Locations"
  76.  
  77. /* Add your own locations */
  78. #define CUSTOM_AREAS_GOSSIP         " -> Custom Areas" //Add your own custom title
  79. #define CUSTOM_LOCATION_GOSSIP      " -> Custom Location" //Add your own custom location
  80.  
  81. #define PLAYER_SERVICES             " -> Player Services"
  82. #define NVM_GOSSIP                  " Nevermind..."
  83. #define GO_BACK_GOSSIP              " ...Go Back"
  84. #define BUFF_ME_GOSSIP              " -> Buff Me!"
  85. #define HEAL_ME_GOSSIP              " -> Heal Me!"
  86. #define REMOVE_REZ_GOSSIP           " -> Remove Ressurection Debuff"
  87. #define CITIES_GOSSIP               " -> My Cities"
  88. /* Alliance Cities */
  89. #define DARNASSUS_GOSSIP            " -> Darnassus"
  90. #define IRONFORGE_GOSSIP            " -> Ironforge"
  91. #define STORMWIND_GOSSIP            " -> Stormwind"
  92. #define THE_EXODAR_GOSSIP           " -> The Exodar"
  93. /* Horde Cities */
  94. #define ORGRIMMAR_GOSSIP            " -> Orgrimmar"
  95. #define SILVERMOON_CITY_GOSSIP      " -> Silvermoon City"
  96. #define THUNDER_BLUFF_GOSSIP        " -> Thunder Bluff"
  97. #define UNDERCITY_GOSSIP            " -> Undercity"
  98. #define DALARAN_GOSSIP              " -> Dalaran"
  99. #define SHATTRATH_CITY_GOSSIP       " -> Shattrath"
  100.  
  101. class tc_teleporter : public CreatureScript
  102. {
  103.     public:
  104.         tc_teleporter()
  105.             : CreatureScript("tc_teleporter")
  106.             {}
  107.  
  108.             bool OnGossipHello(Player* player, Creature* creature)
  109.             {
  110.                 player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE SERVICES_GOSSIP, GOSSIP_SENDER_MAIN, SERVICES_MENU);
  111.                 player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
  112.                 player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
  113.                 return true;
  114.             }
  115.            
  116.             bool OnGossipSelect(Player* player, Creature* creature, uint32 Sender, uint32 Actions)
  117.             {
  118.                  player->PlayerTalkClass->ClearMenus();
  119.  
  120.                  if (player->IsInCombat())
  121.                  {
  122.                      creature->MonsterWhisper(IN_COMBAT, LANG_UNIVERSAL, NULL);
  123.                      return false;
  124.                  }
  125.                
  126.                  if(Sender == GOSSIP_SENDER_MAIN)
  127.                  {
  128.                     switch(Actions)
  129.                     {
  130.                         case SERVICES_MENU:
  131.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE MY_LOCATIONS_GOSSIP, GOSSIP_SENDER_MAIN, MY_LOCATIONS_MENU);
  132.                             player->ADD_GOSSIP_ITEM(SWORDS_ICON, TEXT_CUSTOM_ORANGE PLAYER_SERVICES, GOSSIP_SENDER_MAIN, PLAYER_MENU);
  133.                             player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
  134.                             player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
  135.                         break;
  136.                
  137.                         case MY_LOCATIONS_MENU:
  138.                             if(player->GetTeam() == ALLIANCE){
  139.                                 player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, GO_BACK_GOSSIP, GOSSIP_SENDER_MAIN, SERVICES_MENU);
  140.                                 player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_CYAN CITIES_GOSSIP, GOSSIP_SENDER_MAIN, A_CITIES_MENU);
  141.                                 player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_GREEN CUSTOM_AREAS_GOSSIP, GOSSIP_SENDER_MAIN, CUSTOM_AREAS_MENU);
  142.                                 player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
  143.                                 player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
  144.                             }else{
  145.                                 player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, GO_BACK_GOSSIP, GOSSIP_SENDER_MAIN, SERVICES_MENU);
  146.                                 player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_CYAN CITIES_GOSSIP, GOSSIP_SENDER_MAIN, H_CITIES_MENU);
  147.                                 player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_GREEN CUSTOM_AREAS_GOSSIP, GOSSIP_SENDER_MAIN, CUSTOM_AREAS_MENU);
  148.                                 player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
  149.                                 player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
  150.                         }break;
  151.                        
  152.                         case CUSTOM_AREAS_MENU:
  153.                             player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, GO_BACK_GOSSIP, GOSSIP_SENDER_MAIN, SERVICES_MENU);
  154.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE CUSTOM_LOCATION_GOSSIP, GOSSIP_SENDER_MAIN, CUSTOM_LOCATION_PORT);
  155.                             //Add more custom locations here
  156.                             player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
  157.                             player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
  158.                         break;
  159.                        
  160.                         case PLAYER_MENU:
  161.                             player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, GO_BACK_GOSSIP, GOSSIP_SENDER_MAIN, SERVICES_MENU);
  162.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BROWN BUFF_ME_GOSSIP, GOSSIP_SENDER_MAIN, BUFF_MENU);
  163.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_GREEN HEAL_ME_GOSSIP, GOSSIP_SENDER_MAIN, HEAL_MENU);
  164.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE REMOVE_REZ_GOSSIP, GOSSIP_SENDER_MAIN, REZ_MENU);
  165.                             player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
  166.                             player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
  167.                         break;
  168.                        
  169.                         case A_CITIES_MENU:
  170.                             player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, GO_BACK_GOSSIP, GOSSIP_SENDER_MAIN, SERVICES_MENU);
  171.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE DALARAN_GOSSIP, GOSSIP_SENDER_MAIN, DALARAN_PORT);
  172.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE DARNASSUS_GOSSIP, GOSSIP_SENDER_MAIN, DARNASSUS_PORT);
  173.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE IRONFORGE_GOSSIP, GOSSIP_SENDER_MAIN, IRONFORGE_PORT);
  174.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE SHATTRATH_CITY_GOSSIP, GOSSIP_SENDER_MAIN, SHATTRATH_CITY_PORT);
  175.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE STORMWIND_GOSSIP, GOSSIP_SENDER_MAIN, STORMWIND_PORT);
  176.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_BLUE THE_EXODAR_GOSSIP, GOSSIP_SENDER_MAIN, THE_EXODAR_PORT);
  177.                             player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
  178.                             player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
  179.                         break;
  180.  
  181.                         case H_CITIES_MENU:
  182.                             player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, GO_BACK_GOSSIP, GOSSIP_SENDER_MAIN, SERVICES_MENU);
  183.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_ORANGE DALARAN_GOSSIP, GOSSIP_SENDER_MAIN, DALARAN_PORT);
  184.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_ORANGE ORGRIMMAR_GOSSIP, GOSSIP_SENDER_MAIN, ORGRIMMAR_PORT);
  185.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_ORANGE SHATTRATH_CITY_GOSSIP, GOSSIP_SENDER_MAIN, SHATTRATH_CITY_PORT);
  186.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_ORANGE SILVERMOON_CITY_GOSSIP, GOSSIP_SENDER_MAIN, SILVERMOON_CITY_PORT);
  187.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_ORANGE THUNDER_BLUFF_GOSSIP, GOSSIP_SENDER_MAIN, THUNDER_BLUFF_PORT);
  188.                             player->ADD_GOSSIP_ITEM(FLIGHT_ICON, TEXT_CUSTOM_ORANGE UNDERCITY_GOSSIP, GOSSIP_SENDER_MAIN, UNDERCITY_PORT);
  189.                             player->ADD_GOSSIP_ITEM(CHAT_DOTS_ICON, TEXT_CUSTOM_RED NVM_GOSSIP, GOSSIP_SENDER_MAIN, NVM_EXIT);
  190.                             player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
  191.                         break;
  192.                        
  193.                         case NVM_EXIT:
  194.                             player->PlayerTalkClass->SendCloseGossip();
  195.                         break;
  196.                        
  197.                         case CUSTOM_LOCATION_PORT:
  198.                             player->TeleportTo(530, -1839.851807f, 5500.510254f, -10.390663f, 4.376981f);
  199.                             player->PlayerTalkClass->SendCloseGossip();
  200.                         break;
  201.                        
  202.                         case DALARAN_PORT:
  203.                             player->TeleportTo(571, 5804.149902f, 624.770996f,648.747009f, 1.640000f);
  204.                             player->PlayerTalkClass->SendCloseGossip();
  205.                         break;
  206.                        
  207.                         case SHATTRATH_CITY_PORT:
  208.                             player->TeleportTo(530, -1833.544312f, 5312.579590f, -9.536835f, 1.349267f);
  209.                             player->PlayerTalkClass->SendCloseGossip();
  210.                         break;
  211.                        
  212.                         case DARNASSUS_PORT:
  213.                             player->TeleportTo(1, 9949.559570f, 2284.20996f, 1342.969482f, 1.595870f);
  214.                             player->PlayerTalkClass->SendCloseGossip();
  215.                         break;
  216.                        
  217.                         case IRONFORGE_PORT:
  218.                             player->TeleportTo(0, -4918.879883f, -940.406006f, 504.854126f, 5.423470f);
  219.                             player->PlayerTalkClass->SendCloseGossip();
  220.                         break;
  221.                        
  222.                         case STORMWIND_PORT:
  223.                             player->TeleportTo(0, -8833.379883f, 628.627991f, 95.826599f, 1.065350f);
  224.                             player->PlayerTalkClass->SendCloseGossip();
  225.                         break;
  226.                        
  227.                         case THE_EXODAR_PORT:
  228.                             player->TeleportTo(530, -3965.699951f, -11653.599609f, -137.184998f, 0.852154f);
  229.                             player->PlayerTalkClass->SendCloseGossip();
  230.                         break;
  231.                        
  232.                         case ORGRIMMAR_PORT:
  233.                             player->TeleportTo(1, 1629.359985f, -4373.390137f, 33.097401f, 3.548390f);
  234.                             player->PlayerTalkClass->SendCloseGossip();
  235.                         break;
  236.                        
  237.                         case SILVERMOON_CITY_PORT:
  238.                             player->TeleportTo(530, 9482.883789f, -7278.637207f, 18.480778f, 6.040224f);
  239.                             player->PlayerTalkClass->SendCloseGossip();
  240.                         break;
  241.                        
  242.                         case THUNDER_BLUFF_PORT:
  243.                             player->TeleportTo(1, -1277.369995f, 124.804001f, 134.094009f, 5.222740f);
  244.                             player->PlayerTalkClass->SendCloseGossip();
  245.                         break;
  246.                        
  247.                         case UNDERCITY_PORT:
  248.                             player->TeleportTo(0, 1584.069946f, 241.987000f, -51.075413f, 1.296860f);
  249.                             player->PlayerTalkClass->SendCloseGossip();
  250.                         break;
  251.                        
  252.                         case HEAL_MENU:
  253.                         {
  254.                             uint32 currentHp = player->GetHealth();
  255.                             uint32 maximumHp = player->GetMaxHealth();
  256.                            
  257.                             if (currentHp == maximumHp)
  258.                                 creature->MonsterWhisper("Bah, you have full health. Dont waste my time!", player->GetGUID());
  259.                             else{
  260.                                 player->SetHealth(maximumHp);
  261.                                 player->SetPower(POWER_MANA, player->GetMaxPower(POWER_MANA));
  262.                                 creature->MonsterWhisper("You have been healed!", player->GetGUID());
  263.                                 }
  264.                             player->PlayerTalkClass->SendCloseGossip();
  265.                         }break;
  266.                        
  267.                         case BUFF_MENU:
  268.                         {
  269.                             creature->MonsterWhisper("Do you feel any more buff?", player->GetGUID());
  270.                             player->PlayerTalkClass->SendCloseGossip();
  271.                             player->CastSpell(player, 35874, true);
  272.                             player->CastSpell(player, 35912, true);
  273.                             player->CastSpell(player, 38734, true);
  274.                         }break;
  275.                        
  276.                         case REZ_MENU:
  277.                         {
  278.                             if (player->HasAura(15007))
  279.                             {
  280.                                 player->RemoveAura(15007);
  281.                                 creature->MonsterWhisper("You have been cured.", player->GetGUID());
  282.                             }else
  283.                                 creature->MonsterWhisper("You would have to be sick first...", player->GetGUID());
  284.                                 player->PlayerTalkClass->SendCloseGossip();
  285.                         }break;
  286.                     }
  287.                 }
  288.                 return true;
  289.             }
  290. };
  291.  
  292. void AddSC_tc_teleporter()
  293. {
  294.     new tc_teleporter();
  295. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement