Advertisement
Guest User

Untitled

a guest
May 22nd, 2016
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.27 KB | None | 0 0
  1. //This function is called when the player kills another player
  2. void OnPVPKill(Player* killer, Player* killed)
  3. {
  4. // Send in Chat = SMSG_SERVER_MESSAGE
  5. // Send as Raid Warning = SMSG_NOTIFICATION
  6. WorldPacket data(SMSG_NOTIFICATION, 100);
  7. WorldPacket data2(SMSG_NOTIFICATION, 100);
  8. int32 ItemReward = 29434;
  9. int32 AmountOfRewardsOnKillStreak[4] = { 5, 10, 15, 30 };
  10. // Announce on X kills
  11. const int32 KillerStreak1 = 1;
  12. const int32 KillerStreak2 = 10;
  13. const int32 KillerStreak3 = 25;
  14. const int32 KillerStreak4 = 50;
  15. int32 KillStreaks[4] = { KillerStreak1, KillerStreak2, KillerStreak3, KillerStreak4 };
  16.  
  17. char msg[500];
  18. uint32 KillerGUID = killer->GetGUIDLow();
  19. uint32 VictimGUID = killed->GetGUIDLow();
  20. std::string killername = killer->GetName();
  21. std::string killedname = killed->GetName();
  22.  
  23. struct SystemInfo
  24. {
  25. uint32 KillStreak;
  26. uint32 LastGUIDKill;
  27. };
  28.  
  29. static std::map<uint32, SystemInfo> KillStreakData;
  30.  
  31. if (KillerGUID == VictimGUID || KillStreakData[KillerGUID].LastGUIDKill == VictimGUID)
  32. return;
  33.  
  34. if (KillStreakData[VictimGUID].KillStreak >= 5)
  35. {
  36. 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);
  37. data << msg;
  38. sWorld.SendGlobalMessage(&data);
  39. }
  40.  
  41.  
  42. KillStreakData[KillerGUID].KillStreak++;
  43. KillStreakData[VictimGUID].KillStreak = 0;
  44. KillStreakData[KillerGUID].LastGUIDKill = VictimGUID;
  45. KillStreakData[VictimGUID].LastGUIDKill = 0;
  46.  
  47.  
  48. switch (KillStreakData[KillerGUID].KillStreak)
  49. {
  50. case KillerStreak1:
  51. 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);
  52. data2 << msg;
  53. sWorld.SendGlobalMessage(&data2);
  54. killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  55. killer->ModifyHonorPoints(500);
  56. killer->CastSpell(killer, 24378, true);
  57. break;
  58.  
  59. case KillerStreak2:
  60. 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);
  61. data2 << msg;
  62. sWorld.SendGlobalMessage(&data2);
  63. killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[2]);
  64. killer->ModifyHonorPoints(1000);
  65. killer->CastSpell(killer, 24378, true);
  66. break;
  67.  
  68. case KillerStreak3:
  69. 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);
  70. data2 << msg;
  71. sWorld.SendGlobalMessage(&data2);
  72. killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[3]);
  73. killer->ModifyHonorPoints(1500);
  74. killer->CastSpell(killer, 24378, true);
  75. break;
  76.  
  77. case KillerStreak4:
  78. 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);
  79. data2 << msg;
  80. sWorld.SendGlobalMessage(&data2);
  81. KillStreakData[KillerGUID].KillStreak = 0;
  82. killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[4]);
  83. killer->ModifyArenaPoints(100);
  84. killer->CastSpell(killer, 24378, true);
  85. break;
  86. }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement