Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "precompiled.h"
- #include <cstring>
- #include "Database/DatabaseEnv.h"
- DatabaseType CharacterDatabase;
- #define BOUNTY_1 "I would like to place a 20g bounty."
- #define BOUNTY_2 "I would like to place a 40g bounty."
- #define BOUNTY_3 "I would like to place a 100g bounty."
- #define BOUNTY_4 "I would like to place a 200g bounty."
- #define PLACE_BOUNTY "I would like to place a bounty."
- #define LIST_BOUNTY "List the current bounties."
- #define NVM "Nevermind"
- #define WIPE_BOUNTY "Wipe bounties"
- enum BountyPrices
- {
- BOUNTY_PRICE_1 = 20,
- BOUNTY_PRICE_2 = 40,
- BOUNTY_PRICE_3 = 100,
- BOUNTY_PRICE_4 = 200,
- };
- bool GossipSelect_npc_bountyhunter(Player *pPlayer, Creature* pCreature, uint32 sender, uint32 action)
- {
- pPlayer->PlayerTalkClass->ClearMenus();
- switch(action)
- {
- case GOSSIP_ACTION_INFO_DEF+1:
- {
- pPlayer->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_BATTLE, BOUNTY_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5, "", 0, true);
- pPlayer->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_BATTLE, BOUNTY_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6, "", 0, true);
- pPlayer->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_BATTLE, BOUNTY_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+7, "", 0, true);
- pPlayer->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_BATTLE, BOUNTY_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+8, "", 0, true);
- pPlayer->PlayerTalkClass->SendGossipMenu(365, pCreature->GetObjectGuid());
- break;
- }
- case GOSSIP_ACTION_INFO_DEF+2:
- {
- QueryResult *Bounties = CharacterDatabase.PQuery("SELECT * FROM bounties");
- if(!Bounties)
- {
- pPlayer->CLOSE_GOSSIP_MENU();
- return false;
- }
- if( Bounties->GetRowCount() > 0) // orginal ist 1
- {
- pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "Bounties: ", GOSSIP_SENDER_MAIN, 1);
- do
- {
- Field * fields = Bounties->Fetch();
- std::string option;
- QueryResult *name = CharacterDatabase.PQuery("SELECT name FROM characters WHERE guid='%u'", fields[0].GetUInt64());
- Field * names = name->Fetch();
- option = names[0].GetString();
- option +=" ";
- option += fields[1].GetString();
- option += "g";
- pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, option, GOSSIP_SENDER_MAIN, 1);
- }while(Bounties->NextRow());
- }
- else
- {
- pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "Bounties: ", GOSSIP_SENDER_MAIN, 1);
- Field * fields = Bounties->Fetch();
- std::string option;
- QueryResult *name = CharacterDatabase.PQuery("SELECT name FROM characters WHERE guid='%u'", fields[0].GetUInt64());
- Field * names = name->Fetch();
- option = names[0].GetString();
- option +=" ";
- option += fields[1].GetString();
- option += "g";
- pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, option, GOSSIP_SENDER_MAIN, 1);
- }
- pPlayer->PlayerTalkClass->SendGossipMenu(878, pCreature->GetObjectGuid());
- break;
- }
- case GOSSIP_ACTION_INFO_DEF+3:
- {
- pPlayer->CLOSE_GOSSIP_MENU();
- break;
- }
- case GOSSIP_ACTION_INFO_DEF+4:
- {
- pPlayer->DeleteBountys();
- pPlayer->CLOSE_GOSSIP_MENU();
- break;
- }
- }
- return true;
- }
- bool GossipHello_npc_bountyhunter(Player *pPlayer, Creature* pCreature)
- {
- pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, PLACE_BOUNTY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
- pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, LIST_BOUNTY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
- pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, NVM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
- if ( pPlayer->isGameMaster() )
- {
- pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, WIPE_BOUNTY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
- }
- pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetObjectGuid());
- return true;
- }
- bool GossipSelectCode_npc_bountyhunter(Player* pPlayer,Creature* pCreature, uint32 uiSender, uint32 uiAction, const char * code)
- {
- pPlayer->PlayerTalkClass->ClearMenus();
- if ( uiSender == GOSSIP_SENDER_MAIN )
- {
- if(islower(code[0]))
- toupper(code[0]);
- if(pPlayer->passChecks(pPlayer, code))
- {
- switch (uiAction)
- {
- case GOSSIP_ACTION_INFO_DEF+5:
- {
- if(pPlayer->hasGold(pPlayer, BOUNTY_PRICE_1))
- {
- pPlayer->alertServer(code, 1);
- pPlayer->flagPlayer(code,1);
- pPlayer->CLOSE_GOSSIP_MENU();
- }
- break;
- }
- case GOSSIP_ACTION_INFO_DEF+6:
- {
- if(pPlayer->hasGold(pPlayer, BOUNTY_PRICE_2))
- {
- pPlayer->alertServer(code, 1);
- pPlayer->flagPlayer(code,2);
- pPlayer->CLOSE_GOSSIP_MENU();
- }
- break;
- }
- case GOSSIP_ACTION_INFO_DEF+7:
- {
- if(pPlayer->hasGold(pPlayer, BOUNTY_PRICE_3))
- {
- pPlayer->alertServer(code, 1);
- pPlayer->flagPlayer(code,3);
- pPlayer->CLOSE_GOSSIP_MENU();
- }
- break;
- }
- case GOSSIP_ACTION_INFO_DEF+8:
- {
- if(pPlayer->hasGold(pPlayer, BOUNTY_PRICE_4))
- {
- pPlayer->alertServer(code, 1);
- pPlayer->flagPlayer(code,4);
- pPlayer->CLOSE_GOSSIP_MENU();
- }
- break;
- }
- }
- }
- else
- {
- pPlayer->CLOSE_GOSSIP_MENU();
- }
- }
- return true;
- };
- void AddSC_npc_bountyhunter()
- {
- Script *newscript;
- newscript = new Script;
- newscript->Name = "npc_bountyhunter";
- newscript->pGossipHello = &GossipHello_npc_bountyhunter;
- newscript->pGossipSelect = &GossipSelect_npc_bountyhunter;
- newscript->pGossipSelectWithCode = &GossipSelectCode_npc_bountyhunter;
- newscript->RegisterSelf();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement