1. //########################
  2. // Made by ##
  3. // BisQ the Insane ##
  4. // ##
  5. // ##
  6. //########################
  7. #include "ScriptPCH.h"
  8. #include <cstring>
  9. // on_events.cpp
  10. //This function is called when the player logs in (every login)
  11. void OnLogin(Player *pPlayer)
  12. {
  13. }
  14. //This function is called when the player logs out
  15. void OnLogout(Player *pPlayer)
  16. {
  17. }
  18. float Version = 1.00f; //Don't touch this.
  19. bool LooseTokenOnPvPDeath = true; //Set to true if you want the victim to loose tokens when the victim dies.
  20. int32 AmountOfItemsYouWantTheVictimToLoose = 1; //Amount of items you want the victim to loose when victim dies.
  21. bool AddTokenOnPvPKill = true; //Set to false if you don't want the killer to be rewarded.
  22. int32 ItemReward = 44115; //The ItemID of the reward.
  23. int32 AmountOfRewardsOnKillStreak[28] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; //With how many items you want to reward the killer when he slays the victim.
  24. int32 HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim = 1; //Name speaks for It self.
  25. const int32 KillerStreak1 = 3;
  26. const int32 KillerStreak2 = 5;
  27. const int32 KillerStreak3 = 10;
  28. const int32 KillerStreak4 = 15;
  29. const int32 KillerStreak5 = 20;
  30. const int32 KillerStreak6 = 30;
  31. const int32 KillerStreak7 = 40;
  32. const int32 KillerStreak8 = 50;
  33. const int32 KillerStreak9 = 60;
  34. const int32 KillerStreak10 = 70;
  35. const int32 KillerStreak11 = 80;
  36. const int32 KillerStreak12 = 100;
  37. const int32 KillerStreak13 = 120;
  38. const int32 KillerStreak14 = 140;
  39. const int32 KillerStreak15 = 160;
  40. const int32 KillerStreak16 = 180;
  41. const int32 KillerStreak17 = 200;
  42. const int32 KillerStreak18 = 250;
  43. const int32 KillerStreak19 = 300;
  44. const int32 KillerStreak20 = 350;
  45. const int32 KillerStreak21 = 400;
  46. const int32 KillerStreak22 = 450;
  47. const int32 KillerStreak23 = 500;
  48. const int32 KillerStreak24 = 600;
  49. const int32 KillerStreak25 = 700;
  50. const int32 KillerStreak26 = 800;
  51. const int32 KillerStreak27 = 900;
  52. const int32 KillerStreak28 = 1000;
  53. int32 KillStreaks[28] = { KillerStreak1, KillerStreak2, KillerStreak3, KillerStreak4, KillerStreak5, KillerStreak6, KillerStreak7, KillerStreak8, KillerStreak9, KillerStreak10, KillerStreak11, KillerStreak12, KillerStreak13, KillerStreak14, KillerStreak15, KillerStreak16, KillerStreak17, KillerStreak18, KillerStreak19, KillerStreak20, KillerStreak21, KillerStreak22, KillerStreak23, KillerStreak24, KillerStreak25, KillerStreak26, KillerStreak27, KillerStreak28 };//On how many kills the killstreaks should announce & Reward.
  54. struct SystemInfo
  55. {
  56. uint32 KillStreak;
  57. uint64 LastGUIDKill;
  58. uint8 KillCount;
  59. };
  60. //This function is called when the player kills another player
  61. void OnPVPKill(Player *pKiller, Player *pVictim)
  62. {
  63. uint64 kGUID;
  64. uint64 vGUID;
  65. char msg[500];
  66. kGUID = pKiller->GetGUID();
  67. vGUID = pVictim->GetGUID();
  68. if(kGUID == vGUID)
  69. {
  70. return;
  71. }
  72. if(KillingStreak[kGUID].LastGUIDKill == vGUID)
  73. {
  74. KillingStreak[kGUID].KillCount++;
  75. KillingStreak[vGUID].KillCount = 1;
  76. //pKiller->AddItem(ItemReward, 1);
  77. if(LooseTokenOnPvPDeath == true)
  78. pVictim->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false);
  79. }
  80. if(KillingStreak[kGUID].LastGUIDKill != vGUID)
  81. {
  82. KillingStreak[kGUID].KillCount = 1;
  83. KillingStreak[vGUID].KillCount = 1;
  84. }
  85. if(KillingStreak[kGUID].KillCount == HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim)
  86. {
  87. return;
  88. }
  89. ItemPosCountVec dest;
  90. Item* item = pKiller->StoreNewItem(dest, ItemReward, true, Item::GenerateItemRandomPropertyId(ItemReward));
  91. KillingStreak[kGUID].KillStreak++;
  92. KillingStreak[vGUID].KillStreak = 0;
  93. KillingStreak[kGUID].LastGUIDKill = vGUID;
  94. KillingStreak[vGUID].LastGUIDKill = 0;
  95. if(AddTokenOnPvPKill == true)
  96. pKiller->SendNewItem(item, 1, true, false);
  97. if(LooseTokenOnPvPDeath == true)
  98. pVictim->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false);
  99. switch(KillingStreak[kGUID].KillStreak)
  100. {
  101. case KillerStreak1:
  102. sprintf(msg, "[PvP Announcer]: %s has a killstreak of %u! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[1]);
  103. //sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  104. pKiller->SendNewItem(item, AmountOfRewardsOnKillStreak[1], true, false);
  105. break;
  106. case KillerStreak2:
  107. sprintf(msg, "[PvP Announcer]: %s has a killstreak of %u! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[2]);
  108. //sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  109. pKiller->SendNewItem(item, AmountOfRewardsOnKillStreak[2], true, false);
  110. break;
  111. case KillerStreak3:
  112. sprintf(msg, "[PvP Announcer]: %s has a killstreak of %u! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[3]);
  113. //sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  114. pKiller->SendNewItem(item, AmountOfRewardsOnKillStreak[3], true, false);
  115. break;
  116. case KillerStreak4:
  117. sprintf(msg, "[PvP Announcer]: %s has a killstreak of %u! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[4]);
  118. //sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  119. pKiller->SendNewItem(item, AmountOfRewardsOnKillStreak[4], true, false);
  120. break;
  121. case KillerStreak5:
  122. sprintf(msg, "[PvP Announcer]: %s has a killstreak of %u! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  123. //sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  124. pKiller->SendNewItem(item, AmountOfRewardsOnKillStreak[5], true, false);
  125. break;
  126. case KillerStreak6:
  127. sprintf(msg, "[PvP Announcer]: %s has a killstreak of %u! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  128. //sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  129. pKiller->SendNewItem(item, AmountOfRewardsOnKillStreak[6], true, false);
  130. break;
  131. case KillerStreak7:
  132. sprintf(msg, "[PvP Announcer]: %s has a killstreak of %u! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  133. //sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  134. pKiller->SendNewItem(item, AmountOfRewardsOnKillStreak[7], true, false);
  135. break;
  136. case KillerStreak8:
  137. sprintf(msg, "[PvP Announcer]: %s has a killstreak of %u! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  138. //sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  139. pKiller->SendNewItem(item, AmountOfRewardsOnKillStreak[8], true, false);
  140. break;
  141. case KillerStreak9:
  142. sprintf(msg, "[PvP Announcer]: %s has a killstreak of %u! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  143. //sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  144. pKiller->SendNewItem(item, AmountOfRewardsOnKillStreak[9], true, false);
  145. break;
  146. case KillerStreak10:
  147. sprintf(msg, "[PvP Announcer]: %s has a killstreak of %u! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  148. //sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  149. pKiller->SendNewItem(item, AmountOfRewardsOnKillStreak[10], true, false);
  150. break;
  151. case KillerStreak11:
  152. sprintf(msg, "[PvP Announcer]: %s has a killstreak of %u! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  153. //sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  154. pKiller->SendNewItem(item, AmountOfRewardsOnKillStreak[11], true, false);
  155. break;
  156. case KillerStreak12:
  157. sprintf(msg, "[PvP Announcer]: %s has a killstreak of %u! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  158. //sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  159. pKiller->SendNewItem(item, AmountOfRewardsOnKillStreak[12], true, false);
  160. break;
  161. case KillerStreak13:
  162. sprintf(msg, "[PvP Announcer]: %s has a killstreak of %u! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  163. //sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  164. pKiller->SendNewItem(item, AmountOfRewardsOnKillStreak[13], true, false);
  165. break;
  166. case KillerStreak14:
  167. sprintf(msg, "[PvP Announcer]: %s has a killstreak of %u! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  168. //sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  169. pKiller->SendNewItem(item, AmountOfRewardsOnKillStreak[14], true, false);
  170. break;
  171. case KillerStreak15:
  172. sprintf(msg, "[PvP Announcer]: %s has a killstreak of %u! ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  173. //sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  174. pKiller->SendNewItem(item, AmountOfRewardsOnKillStreak[15], true, false);
  175. break;
  176. }