midoking

C++ Trinity change name, faction, race or customize

Jan 12th, 2013
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.86 KB | None | 0 0
  1. /*
  2. _____ ____
  3. | ___| __ ___ _______ _ __ / ___|___ _ __ ___
  4. | |_ | '__/ _ \_ / _ \ '_ \| | / _ \| '__/ _ \
  5. | _|| | | (_) / / __/ | | | |__| (_) | | | __/
  6. |_| |_| \___/___\___|_| |_|\____\___/|_| \___|
  7. Lightning speed and strength
  8. conjured directly from the depths of logic!
  9. Infusion-WoW 2011 - 2012 (C)
  10. <--------------------------------------------------------------------------->
  11. - Developer(s): Mathex
  12. - Complete: 100 %
  13. - ScriptName: 'multi_changer'
  14. - Comment: This NPC will change your faction/race/name/let you customize
  15. your characters with a easily customizeable gossip menu.
  16. <--------------------------------------------------------------------------->
  17. */
  18.  
  19. #include "ScriptPCH.h"
  20.  
  21. enum Costs
  22. {
  23. // Customize this part for your liking
  24. TokenID = 49927,
  25. TokenAmountNameChange = 5,
  26. TokenAmountRaceChange = 10,
  27. TokenAmountFactionChange = 15,
  28. TokenAmountCustomize = 7,
  29. };
  30.  
  31. // Please don't touch any of this if you don't know what you're doing.
  32.  
  33. class multi_changer : public CreatureScript
  34. {
  35. public:
  36. multi_changer() : CreatureScript("multi_changer") { }
  37.  
  38. bool OnGossipHello(Player * player, Creature * creature)
  39. {
  40. // Customize theese sayings.
  41. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, "Change my name for 5 tokens", GOSSIP_SENDER_MAIN, 1);
  42. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, "Change my race for 10 tokens", GOSSIP_SENDER_MAIN, 2);
  43. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, "Change my faction for 15 tokens", GOSSIP_SENDER_MAIN, 3);
  44. player->ADD_GOSSIP_ITEM(GOSSIP_ICON_DOT, "Let me customize my character for 7 tokens", GOSSIP_SENDER_MAIN, 4);
  45. player->PlayerTalkClass->SendGossipMenu(1, creature->GetGUID());
  46. return true;
  47. }
  48.  
  49. bool OnGossipSelect(Player* player, Creature* creature, uint32 uiSender, uint32 uiAction)
  50. {
  51. player->PlayerTalkClass->ClearMenus();
  52.  
  53. switch(uiAction)
  54. {
  55. case 1:
  56. if (player->HasItemCount(TokenID, TokenAmountNameChange))
  57. {
  58. player->DestroyItemCount(TokenID, TokenAmountNameChange, true);
  59. player->SetAtLoginFlag(AT_LOGIN_RENAME);
  60. player->GetSession()->SendAreaTriggerMessage("Relog to get a namechange.");
  61. creature->MonsterWhisper("Relog to get a namechange.", player->GetGUID());
  62. player->PlayerTalkClass->SendCloseGossip();
  63. }
  64. else
  65. {
  66. player->GetSession()->SendAreaTriggerMessage("You don't have enough tokens.");
  67. creature->MonsterWhisper("You don't have enough tokens", player->GetGUID());
  68. player->PlayerTalkClass->SendCloseGossip();
  69. }
  70. break;
  71.  
  72. case 2:
  73. if (player->HasItemCount(TokenID, TokenAmountRaceChange))
  74. {
  75. player->DestroyItemCount(TokenID, TokenAmountRaceChange, true);
  76. player->SetAtLoginFlag(AT_LOGIN_CHANGE_RACE);
  77. player->GetSession()->SendAreaTriggerMessage("Relog to change your race.");
  78. creature->MonsterWhisper("Relog to change your race.", player->GetGUID());
  79. player->PlayerTalkClass->SendCloseGossip();
  80. }
  81. else
  82. {
  83. player->GetSession()->SendAreaTriggerMessage("You don't have enough tokens.");
  84. creature->MonsterWhisper("You don't have enough tokens.", player -> GetGUID());
  85. player->PlayerTalkClass->SendCloseGossip();
  86. }
  87. break;
  88.  
  89. case 3:
  90. if (player->HasItemCount(TokenID, TokenAmountFactionChange))
  91. {
  92. player->DestroyItemCount(TokenID, TokenAmountFactionChange, true);
  93. player->SetAtLoginFlag(AT_LOGIN_CHANGE_FACTION);
  94. player->GetSession()->SendAreaTriggerMessage("Relog to change your faction.");
  95. creature->MonsterWhisper("Relog to change your faction.", player->GetGUID());
  96. player->PlayerTalkClass->SendCloseGossip();
  97. }
  98. else
  99. {
  100. player->GetSession()->SendAreaTriggerMessage("You don't have enough tokens.");
  101. creature->MonsterWhisper("You don't have enough tokens", player->GetGUID());
  102. player->PlayerTalkClass->SendCloseGossip();
  103. }
  104. break;
  105.  
  106. case 4:
  107. if (player->HasItemCount(TokenID, TokenAmountCustomize))
  108. {
  109. player->DestroyItemCount(TokenID, TokenAmountFactionChange, true);
  110. player->SetAtLoginFlag(AT_LOGIN_CUSTOMIZE);
  111. player->GetSession()->SendAreaTriggerMessage("Relog to customize your character.");
  112. creature->MonsterWhisper("Relog to customize your character.", player->GetGUID());
  113. player->PlayerTalkClass->SendCloseGossip();
  114. }
  115. else
  116. {
  117. player->GetSession()->SendAreaTriggerMessage("You don't have enough tokens.");
  118. creature->MonsterWhisper("You don't have enough tokens", player->GetGUID());
  119. player->PlayerTalkClass->SendCloseGossip();
  120. }
  121. break;
  122. }
  123. return true;
  124. }
  125. };
  126.  
  127. void AddSC_multi_changer()
  128. {
  129. new multi_changer;
  130. }
Advertisement
Add Comment
Please, Sign In to add comment