Advertisement
Guest User

KillStreak Blizzlikecore

a guest
Jul 27th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.22 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2. #include <cstring>
  3.  
  4. //This function is called when the player kills another player
  5. void OnPVPKill(Player* killer, Player* killed)
  6. {
  7. // Send in Chat = SMSG_SERVER_MESSAGE
  8. // Send as Raid Warning = SMSG_NOTIFICATION
  9. WorldPacket data(SMSG_NOTIFICATION, 100);
  10. WorldPacket data2(SMSG_NOTIFICATION, 100);
  11. int32 ItemReward = 29434;
  12. int32 AmountOfRewardsOnKillStreak[4] = { 5, 10, 15, 30 };
  13. // Announce on X kills
  14. const int32 KillerStreak1 = 1;
  15. const int32 KillerStreak2 = 10;
  16. const int32 KillerStreak3 = 25;
  17. const int32 KillerStreak4 = 50;
  18. int32 KillStreaks[4] = { KillerStreak1, KillerStreak2, KillerStreak3, KillerStreak4 };
  19.  
  20. char msg[500];
  21. uint32 KillerGUID = killer->GetGUIDLow();
  22. uint32 VictimGUID = killed->GetGUIDLow();
  23. std::string killername = killer->GetName();
  24. std::string killedname = killed->GetName();
  25.  
  26. struct SystemInfo
  27. {
  28. uint32 KillStreak;
  29. uint32 LastGUIDKill;
  30. };
  31.  
  32. static std::map<uint32, SystemInfo> KillStreakData;
  33.  
  34. if (KillerGUID == VictimGUID || KillStreakData[KillerGUID].LastGUIDKill == VictimGUID)
  35. return;
  36.  
  37. if (KillStreakData[VictimGUID].KillStreak >= 5)
  38. {
  39. snprintf(msg, 500, "|cffFF0000[PVP SYSTEM]: |cff00FF00%s|r ended |cff00FF00%s|r's killing streak of |cff00FFFF%i|r!", killername.c_str(), killedname.c_str(), KillStreakData[VictimGUID].KillStreak);
  40. data << msg;
  41. sWorld.SendGlobalMessage(&data);
  42. }
  43.  
  44.  
  45. KillStreakData[KillerGUID].KillStreak++;
  46. KillStreakData[VictimGUID].KillStreak = 0;
  47. KillStreakData[KillerGUID].LastGUIDKill = VictimGUID;
  48. KillStreakData[VictimGUID].LastGUIDKill = 0;
  49.  
  50.  
  51. switch (KillStreakData[KillerGUID].KillStreak)
  52. {
  53. case KillerStreak1:
  54. snprintf(msg, 500, "|cffFF0000[PVP SYSTEM]: |cff00FF00%s|r has killed |cff00FF00%s|r and is on |cff00FFFF%i|r killing streak!", killername.c_str(), killedname.c_str(), KillerStreak1);
  55. data2 << msg;
  56. sWorld.SendGlobalMessage(&data2);
  57. killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  58. killer->ModifyHonorPoints(500);
  59. killer->CastSpell(killer, 24378, true);
  60. break;
  61.  
  62. case KillerStreak2:
  63. snprintf(msg, 500, "|cffFF0000[PVP SYSTEM]: |cff00FF00%s|r has killed |cff00FF00%s|r and is on |cff00FFFF%i|r killing streak!", killername.c_str(), killedname.c_str(), KillerStreak2);
  64. data2 << msg;
  65. sWorld.SendGlobalMessage(&data2);
  66. killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[2]);
  67. killer->ModifyHonorPoints(1000);
  68. killer->CastSpell(killer, 24378, true);
  69. break;
  70.  
  71. case KillerStreak3:
  72. snprintf(msg, 500, "|cffFF0000[PVP SYSTEM]: |cff00FF00%s|r has killed |cff00FF00%s|r and is on |cff00FFFF%i|r killing streak!", killername.c_str(), killedname.c_str(), KillerStreak3);
  73. data2 << msg;
  74. sWorld.SendGlobalMessage(&data2);
  75. killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[3]);
  76. killer->ModifyHonorPoints(1500);
  77. killer->CastSpell(killer, 24378, true);
  78. break;
  79.  
  80. case KillerStreak4:
  81. snprintf(msg, 500, "|cffFF0000[PVP SYSTEM]: |cff00FF00%s|r has killed |cff00FF00%s|r and is on |cff00FFFF%i|r killing streak!", killername.c_str(), killedname.c_str(), KillerStreak4);
  82. data2 << msg;
  83. sWorld.SendGlobalMessage(&data2);
  84. KillStreakData[KillerGUID].KillStreak = 0;
  85. killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[4]);
  86. killer->ModifyArenaPoints(100);
  87. killer->CastSpell(killer, 24378, true);
  88. break;
  89. }
  90. }
  91.  
  92. //This function is called when the player logs in (every login)
  93. void OnLogin(Player* /*pPlayer*/)
  94. {
  95.  
  96. }
  97.  
  98. //This function is called when the player logs out
  99. void OnLogout(Player* /*pPlayer*/)
  100. {
  101.  
  102. }
  103.  
  104. //This function is called when the player kills another player
  105. void OnPVPKill(Player* /*killer*/)
  106. {
  107.  
  108. }
  109.  
  110. void AddSC_onevents()
  111. {
  112. Script *newscript;
  113. newscript = new Script;
  114. newscript->Name = "scripted_on_events";
  115. newscript->pOnLogin = &OnLogin;
  116. newscript->pOnLogout = &OnLogout;
  117. newscript->pOnPVPKill = &OnPVPKill;
  118.  
  119. newscript->RegisterSelf();
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement