Advertisement
Callmephil

Multi Leveling System NPC

Jan 27th, 2014
657
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.33 KB | None | 0 0
  1. /*
  2. Author : CallMephil / Philippovitch
  3. Multi Choice Leveling NPC
  4. Multi-Twink / Instant servers.
  5. Simple Script : Complete 100 %
  6.  
  7. ScriptName : Leveling_NPC
  8.  
  9. Note : please make sure to add coordinations of you're Custom Mall
  10. */
  11.  
  12. #include "ScriptPCH.h"
  13.  
  14. #define GOSSIP_TEXT_TEST        500000
  15. #define GOSSIP_XP_OFF_1           "I would like to be Twink 19."
  16. #define GOSSIP_XP_OFF_2           "I would like to be Twink 29."
  17. #define GOSSIP_XP_OFF_3           "I would like to be Twink 39."
  18. #define GOSSIP_XP_OFF_4           "I would like to be Twink 49."
  19. #define GOSSIP_XP_OFF_5           "I would like to be Twink 59."
  20. #define GOSSIP_XP_OFF_6           "I would like to be Twink 69."
  21. #define GOSSIP_XP_OFF_7           "I would like to be Twink 79."
  22. #define GOSSIP_XP_OFF_8           "I would like to be 80"
  23.  
  24. enum eIcons
  25. {
  26.     CHAT_ICON               = 0,
  27.     VENDOR_ICON             = 1,
  28.     FLIGHT_ICON             = 2,
  29.     TRAINER_ICON            = 3,
  30.     GEAR_ICON               = 4,
  31.     GEAR_ICON_2             = 5,
  32.     BANK_ICON               = 6,
  33.     CHAT_DOTS_ICON          = 7,
  34.     TABARD_ICON             = 8,
  35.     SWORDS_ICON             = 9,
  36.     GOLD_DOT_ICON           = 10
  37. };
  38.  
  39. // Setup Mall Coordinations Map,X,Y,Z,O Replace 0 by the correct value.
  40. enum Mall_MAP_ZONES
  41. {
  42.     // Twink 19
  43. Leveling_Map_1 = 0,
  44. Leveling_X_1 = 0,
  45. Leveling_Y_1 = 0,
  46. Leveling_Z_1 = 0,
  47. Leveling_O_1 = 0,
  48.     // Twink 29
  49. Leveling_Map_2 = 0,
  50. Leveling_X_2 = 0,
  51. Leveling_Y_2 = 0,
  52. Leveling_Z_2 = 0,
  53. Leveling_O_2 = 0,
  54.     // Twink 39
  55. Leveling_Map_3 = 0,
  56. Leveling_X_3 = 0,
  57. Leveling_Y_3 = 0,
  58. Leveling_Z_3 = 0,
  59. Leveling_O_3 = 0,
  60.     // Twink 49
  61. Leveling_Map_4 = 0,
  62. Leveling_X_4 = 0,
  63. Leveling_Y_4 = 0,
  64. Leveling_Z_4 = 0,
  65. Leveling_O_4 = 0,
  66.     // Twink 59
  67. Leveling_Map_5 = 0,
  68. Leveling_X_5 = 0,
  69. Leveling_Y_5 = 0,
  70. Leveling_Z_5 = 0,
  71. Leveling_O_5 = 0,
  72.     // Twink 69
  73. Leveling_Map_6 = 0,
  74. Leveling_X_6 = 0,
  75. Leveling_Y_6 = 0,
  76. Leveling_Z_6 = 0,
  77. Leveling_O_6 = 0,
  78.     // Twink 79
  79. Leveling_Map_7 = 0,
  80. Leveling_X_7 = 0,
  81. Leveling_Y_7 = 0,
  82. Leveling_Z_7 = 0,
  83. Leveling_O_7 = 0,
  84.     // Instant 80
  85. Leveling_Map_8 = 0,
  86. Leveling_X_8 = 0,
  87. Leveling_Y_8 = 0,
  88. Leveling_Z_8 = 0,
  89. Leveling_O_8 = 0,
  90. };
  91.  
  92. class Leveling_NPC : public CreatureScript
  93. {
  94. public:
  95.     Leveling_NPC() : CreatureScript("Leveling_NPC") { }
  96.  
  97.     bool OnGossipHello(Player* player, Creature* creature)
  98.     {
  99.         // Check if player is new player
  100.         if (player->getLevel() <= 18)
  101.         {
  102.             // 19 - 29 - 39 - 49 // ++DK 59 - 69 - 79 80
  103.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_XP_OFF_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
  104.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_XP_OFF_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
  105.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_XP_OFF_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
  106.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_XP_OFF_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
  107.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_XP_OFF_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
  108.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_XP_OFF_6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
  109.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_XP_OFF_7, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
  110.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_XP_OFF_8, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);
  111.             player->PlayerTalkClass->SendGossipMenu(GOSSIP_TEXT_TEST, creature->GetGUID());
  112.         }
  113.         // Because default DK >= 55
  114.         if(player->getClass() == CLASS_DEATH_KNIGHT)
  115.         {
  116.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_XP_OFF_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 5);
  117.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_XP_OFF_6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 6);
  118.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_XP_OFF_7, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 7);
  119.             player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_XP_OFF_8, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 8);
  120.             player->PlayerTalkClass->SendGossipMenu(GOSSIP_TEXT_TEST, creature->GetGUID());
  121.         }
  122.         return true;
  123.     }
  124.  
  125.     bool OnGossipSelect(Player* player, Creature* /*creature*/, uint32 /*sender*/, uint32 action)
  126.     {
  127.         player->PlayerTalkClass->ClearMenus();
  128.  
  129.         switch (action)
  130.         {
  131.             // Levelup 80
  132.         case GOSSIP_ACTION_INFO_DEF + 8:
  133.             {
  134.                 player->GiveLevel(80);
  135.                 player->TeleportTo(Leveling_Map_8, Leveling_X_8, Leveling_Y_8, Leveling_Z_8, Leveling_O_8);
  136.                 player->PlayerTalkClass->SendCloseGossip();
  137.             }
  138.             break;
  139.  
  140.             // Levelup Twink
  141.         case GOSSIP_ACTION_INFO_DEF + 1://xp off
  142.             player->GiveLevel(19);
  143.                 player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_NO_XP_GAIN);
  144.             player->TeleportTo(Leveling_Map_1, Leveling_X_1, Leveling_Y_1, Leveling_Z_1, Leveling_O_1);
  145.             break;
  146.             // Levelup Twink
  147.         case GOSSIP_ACTION_INFO_DEF + 2://xp off
  148.             player->GiveLevel(29);
  149.                 player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_NO_XP_GAIN);
  150.             player->TeleportTo(Leveling_Map_2, Leveling_X_2, Leveling_Y_2, Leveling_Z_2, Leveling_O_2);
  151.             break;
  152.             // Levelup Twink
  153.         case GOSSIP_ACTION_INFO_DEF + 3://xp off
  154.             player->GiveLevel(39);
  155.                 player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_NO_XP_GAIN);
  156.             player->TeleportTo(Leveling_Map_3, Leveling_X_3, Leveling_Y_3, Leveling_Z_3, Leveling_O_3);
  157.             break;
  158.             // Levelup Twink
  159.         case GOSSIP_ACTION_INFO_DEF + 4://xp off
  160.             player->GiveLevel(49);
  161.                 player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_NO_XP_GAIN);
  162.             player->TeleportTo(Leveling_Map_4, Leveling_X_4, Leveling_Y_4, Leveling_Z_4, Leveling_O_4);
  163.             break;
  164.             // Levelup Twink
  165.         case GOSSIP_ACTION_INFO_DEF + 5://xp off
  166.             player->GiveLevel(59);
  167.                 player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_NO_XP_GAIN);
  168.             player->TeleportTo(Leveling_Map_5, Leveling_X_5, Leveling_Y_5, Leveling_Z_5, Leveling_O_5);
  169.             break;
  170.             // Levelup Twink
  171.         case GOSSIP_ACTION_INFO_DEF + 6://xp off
  172.             player->GiveLevel(69);
  173.                 player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_NO_XP_GAIN);
  174.             player->TeleportTo(Leveling_Map_6, Leveling_X_6, Leveling_Y_6, Leveling_Z_6, Leveling_O_6);
  175.             break;
  176.             // Levelup Twink
  177.         case GOSSIP_ACTION_INFO_DEF + 7://xp off
  178.             player->GiveLevel(79);
  179.                 player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_NO_XP_GAIN);
  180.             player->TeleportTo(Leveling_Map_7, Leveling_X_7, Leveling_Y_7, Leveling_Z_7, Leveling_O_7);
  181.             break;
  182.  
  183.             player->PlayerTalkClass->SendCloseGossip();
  184.         }
  185.             return true;
  186.     }
  187. };
  188.  
  189. void AddSC_Leveling_NPC()
  190. {
  191.     new Leveling_NPC;
  192. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement