Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2011
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.76 KB | None | 0 0
  1. #include "precompiled.h"
  2. #include <cstring>
  3. #include "Database/DatabaseEnv.h"
  4.  
  5. DatabaseType CharacterDatabase;
  6.  
  7. #define BOUNTY_1 "I would like to place a 20g bounty."
  8. #define BOUNTY_2 "I would like to place a 40g bounty."
  9. #define BOUNTY_3 "I would like to place a 100g bounty."
  10. #define BOUNTY_4 "I would like to place a 200g bounty."
  11.  
  12. #define PLACE_BOUNTY "I would like to place a bounty."
  13. #define LIST_BOUNTY "List the current bounties."
  14. #define NVM "Nevermind"
  15. #define WIPE_BOUNTY "Wipe bounties"
  16.  
  17. enum BountyPrices
  18. {
  19. BOUNTY_PRICE_1 = 20,
  20. BOUNTY_PRICE_2 = 40,
  21. BOUNTY_PRICE_3 = 100,
  22. BOUNTY_PRICE_4 = 200,
  23. };
  24.  
  25. bool GossipSelect_npc_bountyhunter(Player *pPlayer, Creature* pCreature, uint32 sender, uint32 action)
  26. {
  27. pPlayer->PlayerTalkClass->ClearMenus();
  28. switch(action)
  29. {
  30. case GOSSIP_ACTION_INFO_DEF+1:
  31. {
  32. pPlayer->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_BATTLE, BOUNTY_1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5, "", 0, true);
  33. pPlayer->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_BATTLE, BOUNTY_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6, "", 0, true);
  34. pPlayer->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_BATTLE, BOUNTY_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+7, "", 0, true);
  35. pPlayer->ADD_GOSSIP_ITEM_EXTENDED(GOSSIP_ICON_BATTLE, BOUNTY_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+8, "", 0, true);
  36. pPlayer->PlayerTalkClass->SendGossipMenu(365, pCreature->GetObjectGuid());
  37. break;
  38. }
  39. case GOSSIP_ACTION_INFO_DEF+2:
  40. {
  41. QueryResult *Bounties = CharacterDatabase.PQuery("SELECT * FROM bounties");
  42.  
  43. if(!Bounties)
  44. {
  45. pPlayer->CLOSE_GOSSIP_MENU();
  46. return false;
  47. }
  48.  
  49.  
  50. if( Bounties->GetRowCount() > 0) // orginal ist 1
  51. {
  52. pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "Bounties: ", GOSSIP_SENDER_MAIN, 1);
  53. do
  54. {
  55. Field * fields = Bounties->Fetch();
  56. std::string option;
  57. QueryResult *name = CharacterDatabase.PQuery("SELECT name FROM characters WHERE guid='%u'", fields[0].GetUInt64());
  58. Field * names = name->Fetch();
  59. option = names[0].GetString();
  60. option +=" ";
  61. option += fields[1].GetString();
  62. option += "g";
  63. pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, option, GOSSIP_SENDER_MAIN, 1);
  64. }while(Bounties->NextRow());
  65. }
  66. else
  67. {
  68. pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, "Bounties: ", GOSSIP_SENDER_MAIN, 1);
  69. Field * fields = Bounties->Fetch();
  70. std::string option;
  71. QueryResult *name = CharacterDatabase.PQuery("SELECT name FROM characters WHERE guid='%u'", fields[0].GetUInt64());
  72. Field * names = name->Fetch();
  73. option = names[0].GetString();
  74. option +=" ";
  75. option += fields[1].GetString();
  76. option += "g";
  77. pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, option, GOSSIP_SENDER_MAIN, 1);
  78.  
  79. }
  80. pPlayer->PlayerTalkClass->SendGossipMenu(878, pCreature->GetObjectGuid());
  81. break;
  82. }
  83. case GOSSIP_ACTION_INFO_DEF+3:
  84. {
  85. pPlayer->CLOSE_GOSSIP_MENU();
  86. break;
  87. }
  88. case GOSSIP_ACTION_INFO_DEF+4:
  89. {
  90. pPlayer->DeleteBountys();
  91. pPlayer->CLOSE_GOSSIP_MENU();
  92. break;
  93. }
  94. }
  95. return true;
  96. }
  97.  
  98. bool GossipHello_npc_bountyhunter(Player *pPlayer, Creature* pCreature)
  99. {
  100. pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_BATTLE, PLACE_BOUNTY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
  101. pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, LIST_BOUNTY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
  102. pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, NVM, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
  103. if ( pPlayer->isGameMaster() )
  104. {
  105. pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_TALK, WIPE_BOUNTY, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
  106. }
  107.  
  108. pPlayer->PlayerTalkClass->SendGossipMenu(907, pCreature->GetObjectGuid());
  109. return true;
  110.  
  111. }
  112.  
  113. bool GossipSelectCode_npc_bountyhunter(Player* pPlayer,Creature* pCreature, uint32 uiSender, uint32 uiAction, const char * code)
  114. {
  115. pPlayer->PlayerTalkClass->ClearMenus();
  116. if ( uiSender == GOSSIP_SENDER_MAIN )
  117. {
  118. if(islower(code[0]))
  119. toupper(code[0]);
  120.  
  121. if(pPlayer->passChecks(pPlayer, code))
  122. {
  123. switch (uiAction)
  124. {
  125. case GOSSIP_ACTION_INFO_DEF+5:
  126. {
  127. if(pPlayer->hasGold(pPlayer, BOUNTY_PRICE_1))
  128. {
  129. pPlayer->alertServer(code, 1);
  130. pPlayer->flagPlayer(code,1);
  131. pPlayer->CLOSE_GOSSIP_MENU();
  132. }
  133. break;
  134. }
  135.  
  136. case GOSSIP_ACTION_INFO_DEF+6:
  137. {
  138. if(pPlayer->hasGold(pPlayer, BOUNTY_PRICE_2))
  139. {
  140. pPlayer->alertServer(code, 1);
  141. pPlayer->flagPlayer(code,2);
  142. pPlayer->CLOSE_GOSSIP_MENU();
  143. }
  144. break;
  145. }
  146. case GOSSIP_ACTION_INFO_DEF+7:
  147. {
  148. if(pPlayer->hasGold(pPlayer, BOUNTY_PRICE_3))
  149. {
  150. pPlayer->alertServer(code, 1);
  151. pPlayer->flagPlayer(code,3);
  152. pPlayer->CLOSE_GOSSIP_MENU();
  153. }
  154. break;
  155. }
  156. case GOSSIP_ACTION_INFO_DEF+8:
  157. {
  158. if(pPlayer->hasGold(pPlayer, BOUNTY_PRICE_4))
  159. {
  160. pPlayer->alertServer(code, 1);
  161. pPlayer->flagPlayer(code,4);
  162. pPlayer->CLOSE_GOSSIP_MENU();
  163. }
  164. break;
  165. }
  166.  
  167. }
  168. }
  169. else
  170. {
  171. pPlayer->CLOSE_GOSSIP_MENU();
  172. }
  173. }
  174. return true;
  175. };
  176.  
  177. void AddSC_npc_bountyhunter()
  178. {
  179. Script *newscript;
  180.  
  181. newscript = new Script;
  182. newscript->Name = "npc_bountyhunter";
  183. newscript->pGossipHello = &GossipHello_npc_bountyhunter;
  184. newscript->pGossipSelect = &GossipSelect_npc_bountyhunter;
  185. newscript->pGossipSelectWithCode = &GossipSelectCode_npc_bountyhunter;
  186. newscript->RegisterSelf();
  187. }
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement