Advertisement
Rochet2

Untitled

Sep 24th, 2014
399
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //---------------------------------//
  2. //Teleporter Gossip Script by MilboW//
  3. //---------------------------------//
  4. //---------------------------------//
  5. //---------------------------------//
  6. //---------------------------------//
  7. //---------------------------------//
  8. //---------------------------------//
  9. //---------------------------------//
  10.  
  11. #include "ScriptPCH.h"
  12.  
  13. static uint32 const auras[] = { 48074, 47440, 53307, 132, 48170, 23737, 48470, 43002, 26393, 48162, 24705 };
  14.  
  15. class GossipNpc : public CreatureScript
  16. {
  17. public:
  18.     GossipNpc() : CreatureScript("GossipNpc") { }
  19.  
  20.     bool OnGossipHello(Player* plr, Creature* npc)
  21.     {
  22.         if (plr->IsInCombat())
  23.         {
  24.             plr->GetSession()->SendNotification("You're in combat!");
  25.             //npc->MonsterWhisper("You're in combat!", LANG_UNIVERSAL, NULL);
  26.             return true;
  27.         }
  28.  
  29.         plr->ADD_GOSSIP_ITEM(2, "Teleport Service", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
  30.         plr->ADD_GOSSIP_ITEM(3, "|cffFFC125Buff me!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
  31.         plr->ADD_GOSSIP_ITEM(3, "|cffDA70D6Heal me!", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 23);
  32.         plr->ADD_GOSSIP_ITEM(4, "Repair Items (1g)", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 24);
  33.         plr->ADD_GOSSIP_ITEM(2, "Gurubashi Arena", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 25);
  34.         plr->ADD_GOSSIP_ITEM(9, "|cffFF0000Nevermind..", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 99);
  35.         plr->SEND_GOSSIP_MENU(1, npc->GetGUID());
  36.         return true;
  37.     }
  38.     bool OnGossipSelect(Player* plr, Creature* npc, uint32 sender, uint32 uiAction)
  39.     {
  40.         plr->PlayerTalkClass->ClearMenus();
  41.  
  42.         switch (uiAction)
  43.         {
  44.             case GOSSIP_ACTION_INFO_DEF + 1:
  45.                 if (plr->GetSession()->GetSecurity() <= SEC_GAMEMASTER)
  46.                 {
  47.                     plr->ADD_GOSSIP_ITEM(2, "|cff00C78CMall & Events", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
  48.                     plr->ADD_GOSSIP_ITEM(2, "Cities", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
  49.                     plr->ADD_GOSSIP_ITEM(2, "Eastern Kingdoms", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
  50.                     plr->ADD_GOSSIP_ITEM(2, "Kalimdor", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
  51.                     plr->ADD_GOSSIP_ITEM(2, "Outland", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
  52.                     plr->ADD_GOSSIP_ITEM(2, "|cff00C78CNorthrend", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);
  53.                     plr->ADD_GOSSIP_ITEM(2, "Dungeons", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);
  54.                     plr->ADD_GOSSIP_ITEM(3, "|cffFF6EB4Custom Instances", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10);
  55.                     plr->ADD_GOSSIP_ITEM(3, "|cffffffffTBC & LK Raids", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 35);
  56.                     plr->ADD_GOSSIP_ITEM(9, "|cffFF0000<- Back", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9999);
  57.                 }
  58.                 else
  59.                 {
  60.                     plr->ADD_GOSSIP_ITEM(2, "|cff00C78CMall & Events", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
  61.                     plr->ADD_GOSSIP_ITEM(2, "Cities", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
  62.                     plr->ADD_GOSSIP_ITEM(2, "|cff4747FFEastern Kingdoms", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
  63.                     plr->ADD_GOSSIP_ITEM(2, "|cffCC6600Kalimdor", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
  64.                     plr->ADD_GOSSIP_ITEM(2, "|cff00CC00Outland", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
  65.                     plr->ADD_GOSSIP_ITEM(2, "|cff148AFFNorthrend", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);
  66.                     plr->ADD_GOSSIP_ITEM(2, "Dungeons", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9);
  67.                     plr->ADD_GOSSIP_ITEM(3, "|cffFF6EB4Custom Instances", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 10);
  68.                     plr->ADD_GOSSIP_ITEM(3, "|cffffffffTBC & LK Raids", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 36);
  69.                     plr->ADD_GOSSIP_ITEM(3, "|cff00ff00GM Island", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 98);
  70.                     plr->ADD_GOSSIP_ITEM(9, "|cffFF0000<- Back", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9999);
  71.                 }
  72.                 plr->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, npc->GetGUID());
  73.                 return true;
  74.             case GOSSIP_ACTION_INFO_DEF + 3:
  75.                 plr->ADD_GOSSIP_ITEM(2, "|cff00C78CMall", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 11);
  76.                 plr->ADD_GOSSIP_ITEM(2, "Event 1 (Rabbit)", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 12);
  77.                 plr->ADD_GOSSIP_ITEM(5, "Event 2 (StairCase 1)", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 13);
  78.                 plr->ADD_GOSSIP_ITEM(9, "|cffFF0000<- Back", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
  79.                 plr->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, npc->GetGUID());
  80.                 return true;
  81.             case GOSSIP_ACTION_INFO_DEF + 4:
  82.                 if (plr->GetTeam() == ALLIANCE)
  83.                 {
  84.                     plr->ADD_GOSSIP_ITEM(2, "Stormwind // costs 1 gold", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 26);
  85.                     plr->ADD_GOSSIP_ITEM(2, "Ironforge // costs 1 gold", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 27);
  86.                     plr->ADD_GOSSIP_ITEM(2, "Darnassus // costs 1 gold", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 28);
  87.                     plr->ADD_GOSSIP_ITEM(2, "The Exodar // costs 1 gold", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 29);
  88.                     plr->ADD_GOSSIP_ITEM(9, "|cffFF1414Attack Orgrimmar // costs 1 gold", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 35);
  89.                     plr->ADD_GOSSIP_ITEM(1, "|cffFF0000<- Back", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
  90.                 }
  91.                 else
  92.                 {
  93.                     plr->ADD_GOSSIP_ITEM(2, "Orgrimmar // costs 1 gold", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 30);
  94.                     plr->ADD_GOSSIP_ITEM(2, "Undercity // costs 1 gold", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 31);
  95.                     plr->ADD_GOSSIP_ITEM(2, "Thunder Bluff // costs 1 gold", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 32);
  96.                     plr->ADD_GOSSIP_ITEM(2, "Silvermoon// costs 1 gold", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 33);
  97.                     plr->ADD_GOSSIP_ITEM(9, "|cffFF1414Attack Stormwind // costs 1 gold", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 34);
  98.                     plr->ADD_GOSSIP_ITEM(1, "|cffFF0000<- Back", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
  99.                 }
  100.  
  101.                 plr->SEND_GOSSIP_MENU(1, npc->GetGUID());
  102.                 return true;
  103.             case GOSSIP_ACTION_INFO_DEF + 98: // GM Island Teleport
  104.                 plr->TeleportTo(1, 16222.500000f, 16257.566406f, 13.127848f, 1.548749f);
  105.                 plr->AddItem(12064, 1);
  106.                 plr->AddItem(2586, 1);
  107.                 plr->AddItem(11508, 1);
  108.                 break;
  109.             case GOSSIP_ACTION_INFO_DEF + 26: // Stormwind teleport
  110.                 plr->TeleportTo(0, -8828.601563f, 627.279053f, 94.030663f, 3.924985f);
  111.                 plr->ModifyMoney(-10000);
  112.                 break;
  113.             case GOSSIP_ACTION_INFO_DEF + 29: // The Exodar Teleport
  114.                 plr->TeleportTo(530, -3965.699951f, -11653.599609f, -137.184998f, 0.852154f);
  115.                 plr->ModifyMoney(-10000);
  116.                 break;
  117.             case GOSSIP_ACTION_INFO_DEF + 27: // Ironforge teleport
  118.                 plr->TeleportTo(0, -4918.879883f, -940.406006f, 504.854126f, 5.423470f);
  119.                 plr->ModifyMoney(-10000);
  120.                 break;
  121.             case GOSSIP_ACTION_INFO_DEF + 28: // Darnassus Teleport
  122.                 plr->TeleportTo(1, 9949.559570f, 2284.20996f, 1342.969482f, 1.595870f);
  123.                 plr->ModifyMoney(-10000);
  124.                 break;
  125.             case GOSSIP_ACTION_INFO_DEF + 30: // Orgrimmar Teleport
  126.                 plr->TeleportTo(1, 1561.713257f, -4438.890137f, 7.368488f, 0.410725f);
  127.                 plr->ModifyMoney(-10000);
  128.                 break;
  129.             case GOSSIP_ACTION_INFO_DEF + 31: // Undercity Teleport
  130.                 plr->TeleportTo(0, 1573.561279f, 240.414459f, -62.077351f, 0.033143f);
  131.                 plr->ModifyMoney(-10000);
  132.                 break;
  133.             case GOSSIP_ACTION_INFO_DEF + 32: // Thunder Bluff Teleport
  134.                 plr->TeleportTo(1, -1297.956421f, 208.591827f, 68.681366f, 5.084499f);
  135.                 plr->ModifyMoney(-10000);
  136.                 break;
  137.             case GOSSIP_ACTION_INFO_DEF + 33: // Silvermoon Teleport
  138.                 plr->TeleportTo(530, 9397.452148f, -7279.064941f, 14.216600f, 0.009944f);
  139.                 plr->ModifyMoney(-10000);
  140.                 break;
  141.             case GOSSIP_ACTION_INFO_DEF + 34: // Attack Stormwind
  142.                 plr->TeleportTo(0, -9165.100586f, 465.795807f, 104.171112f, 5.289221f);
  143.                 plr->ModifyMoney(-10000);
  144.                 break;
  145.             case GOSSIP_ACTION_INFO_DEF + 35: // Attack Orgrimmar
  146.                 plr->TeleportTo(1, 1025.285156f, -4439.764160f, 12.237539f, 0.178984f);
  147.                 plr->ModifyMoney(-10000);
  148.                 break;
  149.             case GOSSIP_ACTION_INFO_DEF + 5:
  150.                 break;
  151.             case GOSSIP_ACTION_INFO_DEF + 6:
  152.                 break;
  153.             case GOSSIP_ACTION_INFO_DEF + 12: // Rabbit Event Teleport
  154.                 plr->TeleportTo(0, -10240.200195f, 928.818970f, 44.496384f, 5.323780f);
  155.                 plr->ModifyMoney(-50000);
  156.                 break;
  157.             case GOSSIP_ACTION_INFO_DEF + 13: // Staircase 1 Teleport
  158.                 plr->TeleportTo(0, -4067.917480f, -3381.699707f, 372.380859f, 2.860715f);
  159.                 plr->ModifyMoney(-50000);
  160.                 break;
  161.             case GOSSIP_ACTION_INFO_DEF + 11: //Mall Teleport
  162.                 plr->TeleportTo(530, -1859.869995f, 5420.069824f, -10.380500f, 2.146750f);
  163.                 plr->ModifyMoney(-50000);
  164.                 break;
  165.             case GOSSIP_ACTION_INFO_DEF + 9: //Dungeons SubMenu
  166.                 plr->ADD_GOSSIP_ITEM(2, "Classic Dungeons", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 23);
  167.                 plr->ADD_GOSSIP_ITEM(2, "BC Dungeons", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 24);
  168.                 plr->ADD_GOSSIP_ITEM(2, "Wrath Dungeons", GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 25);
  169.                 plr->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, npc->GetGUID());
  170.                 return true;
  171.             case GOSSIP_ACTION_INFO_DEF + 2: //Buff me
  172.                 for (uint32 i = 0; i < sizeof(auras)/sizeof(*auras); ++i)
  173.                     plr->AddAura(auras[i], plr);
  174.                 plr->CastSpell(plr, 24705, 1);
  175.                 plr->GetSession()->SendNotification("|cff0000ffYou have been buffed!");
  176.                 plr->ModifyMoney(-100000);  // 10 gold
  177.                 break;
  178.             case GOSSIP_ACTION_INFO_DEF + 24: // Repair
  179.                 plr->DurabilityRepairAll(false, 0, false);
  180.                 plr->GetSession()->SendNotification("Your items got repaired!");
  181.                 plr->ModifyMoney(-10000);
  182.                 break;
  183.             case GOSSIP_ACTION_INFO_DEF + 23: // Heal me
  184.                 plr->SetPower(plr->getPowerType(), plr->GetMaxPower(plr->getPowerType()));
  185.                 plr->SetHealth(plr->GetMaxHealth());
  186.                 // plr->SendTalentsInfoData(false); // The fuck was this? Its used with talent resetting, not needed here
  187.                 plr->GetSession()->SendNotification("|cffFFC125Your Health And Mana, Is being refilled.");
  188.                 plr->ModifyMoney(-10000); //  1 gold
  189.                 break;
  190.             case GOSSIP_ACTION_INFO_DEF + 25:// Gurubashi Arena Teleport
  191.                 plr->TeleportTo(0, -13288.905273f, 109.301590f, 23.305859f, 1.078724f);
  192.                 plr->ModifyMoney(-500000);
  193.                 break;
  194.             case GOSSIP_ACTION_INFO_DEF + 99: // Close Function
  195.                 plr->CLOSE_GOSSIP_MENU();
  196.                 return true;
  197.             default:
  198.                 break;
  199.         }
  200.  
  201.         // Show main menu
  202.         OnGossipHello(plr, npc);
  203.         return true;
  204.     }
  205. };
  206. void AddSC_GossipNpc()
  207. {
  208.     new GossipNpc();
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement