Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*#############
- ## Faction Transfer
- #############*/
- enum eFactionTransfer
- {
- GOSSIP_MENU_FACTION_TRANS = 500,
- GOSSIP_MENU_FACTION_CONFIRM1 = 501,
- GOSSIP_MENU_FACTION_CONFIRMBOX = 502,
- SAY_TRANSFER_COMPLETE = -1999001
- };
- #define GOSSIP_TEXT_START "I want to use the Faction Transfer."
- #define GOSSIP_TEXT_CONFIRM1 "I am sure about doing this. Please continue."
- #define GOSSIP_TEXT_CONFIRM2 "Yes, I wish to continue."
- #define GOSSIP_BOX_CONFIRM "Do you really want to continue? There is no return after this."
- class npc_faction_transfer : public CreatureScript
- {
- public:
- npc_faction_transfer() : CreatureScript("npc_faction_transfer") { }
- bool OnGossipHello(Player* player, Creature* creature)
- {
- if (sWorld->getIntConfig(CONFIG_FACTION_TRANSFER_FACTIONS_ENABLED) & player->GetTeamId() + 1)
- {
- QueryResult result = CharacterDatabase.PQuery("SELECT * FROM character_transfer WHERE guid = '%u'", player->GetGUIDLow());
- if (!result)
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TEXT_START, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
- }
- player->SEND_GOSSIP_MENU(GOSSIP_MENU_FACTION_TRANS, creature->GetGUID());
- return true;
- }
- bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action)
- {
- switch(action)
- {
- case GOSSIP_ACTION_INFO_DEF + 1:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_TEXT_CONFIRM1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
- player->SEND_GOSSIP_MENU(GOSSIP_MENU_FACTION_CONFIRM1, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 2:
- player->ADD_GOSSIP_ITEM_EXTENDED(0, GOSSIP_TEXT_CONFIRM2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3, GOSSIP_BOX_CONFIRM, 0, false);
- player->SEND_GOSSIP_MENU(GOSSIP_MENU_FACTION_CONFIRMBOX, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF + 3:
- player->SetAtLoginFlag(AT_LOGIN_CHANGE_FACTION);
- CharacterDatabase.PExecute("INSERT INTO character_transfer (guid) VALUES (%u)", player->GetGUIDLow());
- player->CLOSE_GOSSIP_MENU();
- DoScriptText(SAY_TRANSFER_COMPLETE, creature, player);
- break;
- }
- return true;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement