Advertisement
Guest User

Untitled

a guest
Jul 27th, 2017
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.42 KB | None | 0 0
  1. /*#############
  2. ## Faction Transfer
  3. #############*/
  4.  
  5. enum eFactionTransfer
  6. {
  7.     GOSSIP_MENU_FACTION_TRANS       = 500,
  8.     GOSSIP_MENU_FACTION_CONFIRM1    = 501,
  9.     GOSSIP_MENU_FACTION_CONFIRMBOX  = 502,
  10.     SAY_TRANSFER_COMPLETE           = -1999001
  11. };
  12.  
  13. #define GOSSIP_TEXT_START       "I want to use the Faction Transfer."
  14. #define GOSSIP_TEXT_CONFIRM1    "I am sure about doing this. Please continue."
  15. #define GOSSIP_TEXT_CONFIRM2    "Yes, I wish to continue."
  16. #define GOSSIP_BOX_CONFIRM      "Do you really want to continue? There is no return after this."
  17.  
  18. class npc_faction_transfer : public CreatureScript
  19. {
  20. public:
  21.     npc_faction_transfer() : CreatureScript("npc_faction_transfer") { }
  22.  
  23.     bool OnGossipHello(Player* player, Creature* creature)
  24.     {
  25.         if (sWorld->getIntConfig(CONFIG_FACTION_TRANSFER_FACTIONS_ENABLED) & player->GetTeamId() + 1)
  26.         {
  27.             QueryResult result = CharacterDatabase.PQuery("SELECT * FROM character_transfer WHERE guid = '%u'", player->GetGUIDLow());
  28.             if (!result)
  29.                 player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TEXT_START, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
  30.         }
  31.  
  32.         player->SEND_GOSSIP_MENU(GOSSIP_MENU_FACTION_TRANS, creature->GetGUID());
  33.         return true;
  34.     }
  35.  
  36.     bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
  37.     {
  38.         switch(action)
  39.         {
  40.             case GOSSIP_ACTION_INFO_DEF + 1:
  41.                 player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TEXT_CONFIRM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
  42.                 player->SEND_GOSSIP_MENU(GOSSIP_MENU_FACTION_CONFIRM1, creature->GetGUID());
  43.                 break;
  44.             case GOSSIP_ACTION_INFO_DEF + 2:
  45.                 player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_TEXT_CONFIRM2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3, GOSSIP_BOX_CONFIRM, 0, false);
  46.                 player->SEND_GOSSIP_MENU(GOSSIP_MENU_FACTION_CONFIRMBOX, creature->GetGUID());
  47.                 break;
  48.             case GOSSIP_ACTION_INFO_DEF + 3:
  49.                 player->SetAtLoginFlag(AT_LOGIN_CHANGE_FACTION);
  50.                 CharacterDatabase.PExecute("INSERT INTO character_transfer (guid) VALUES (%u)", player->GetGUIDLow());
  51.                 player->CLOSE_GOSSIP_MENU();
  52.                 DoScriptText(SAY_TRANSFER_COMPLETE, creature, player);
  53.                 break;
  54.         }
  55.         return true;
  56.     }
  57. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement