Advertisement
Deathsoul

Killstreak

Mar 6th, 2013
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.65 KB | None | 0 0
  1. //Edited by Regrowrth aka aaddss
  2.  
  3. #include "ScriptPCH.h"
  4.  
  5. ///////////////////////////////////////////////////////////////////////
  6. /////////////////////// CONFIG /////////////////////////////
  7. /////////////////////////////////////////////////////////////////////
  8.  
  9. float Version = 2.50f; //Don't touch this.
  10. bool PvPSystemEnabled = true; //Set to false if you want to disable the PvP System
  11. bool OnlyInBattlegrounds = false; //Set to true if you want to enable this only in battlegrounds.
  12. bool LooseTokenOnPvPDeath = false; //Set to true if you want the victim to loose tokens when the victim dies.
  13. int32 AmountOfItemsYouWantTheVictimToLoose = 0; //Amount of items you want the victim to loose when victim dies.
  14. bool AddTokenOnPvPKill = false; //Set to false if you don't want the killer to be rewarded.
  15. int32 ItemReward = 0; //The ItemID of the reward.
  16. int32 AmountOfRewardsOnKillStreak[12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; //With how many items you want to reward the killer when he slays the victim.
  17. int32 HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim = 25; //Name speaks for It self.
  18. const int32 KillerStreak15 = 5;
  19. const int32 KillerStreak20 = 10;
  20. const int32 KillerStreak30 = 15;
  21. const int32 KillerStreak40 = 20;
  22. const int32 KillerStreak50 = 25;
  23. const int32 KillerStreak60 = 30;
  24. const int32 KillerStreak70 = 35;
  25. const int32 KillerStreak80 = 40;
  26. const int32 KillerStreak90 = 45;
  27. const int32 KillerStreak100 = 50;
  28. const int32 KillerStreak110 = 55;
  29. const int32 KillerStreak120 = 60;
  30. const int32 KillerStreak130 = 65;
  31. const int32 KillerStreak140 = 70;
  32. const int32 KillerStreak150 = 75;
  33. uint32 KillStreaks[16] = { KillerStreak15, KillerStreak20, KillerStreak30, KillerStreak40, KillerStreak50, KillerStreak60, KillerStreak70, KillerStreak80, KillerStreak90, KillerStreak100, KillerStreak110, KillerStreak120, KillerStreak130, KillerStreak140, KillerStreak150 };
  34. ///////////////////////////////////////////////////////////////////
  35. /////////////////////// END ////////////////////////////
  36. /////////////////////////////////////////////////////////////////
  37.  
  38.  
  39. struct SystemInfo
  40. {
  41.     uint32 KillStreak;
  42.     uint32 LastGUIDKill;
  43.     uint8 KillCount;
  44. };
  45.  
  46. static std::map<uint32, SystemInfo> KillingStreak;
  47.  
  48. class System_OnPVPKill : public PlayerScript
  49. {
  50.         public:
  51.                 System_OnPVPKill() : PlayerScript("System_OnPVPKill") {}
  52.  
  53.        
  54. void OnPVPKill(Player *pKiller, Player *pVictim)
  55. {
  56.     if(PvPSystemEnabled == false)
  57.     {
  58.              return;
  59.     }
  60.     else if(PvPSystemEnabled == true)
  61.     {
  62.         uint32 kGUID;
  63.         uint32 vGUID;
  64.         char msg[500];
  65.         kGUID = pKiller->GetGUID();
  66.         vGUID = pVictim->GetGUID();
  67.         if(kGUID == vGUID)
  68.         {
  69.           return;
  70.         }
  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.  
  86.       if(KillingStreak[kGUID].KillCount == HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim)
  87.       {
  88.         return;
  89.       }
  90.  
  91.       if(OnlyInBattlegrounds == true)
  92.         {
  93.         if(!pKiller->GetMap()->IsBattleground())
  94.            return;
  95.       }
  96.  
  97.         KillingStreak[kGUID].KillStreak++;
  98.         KillingStreak[vGUID].KillStreak = 0;
  99.         KillingStreak[kGUID].LastGUIDKill = vGUID;
  100.         KillingStreak[vGUID].LastGUIDKill = 0;
  101.       if(AddTokenOnPvPKill == true)
  102.           pKiller->AddItem(ItemReward, 1);
  103.       if(LooseTokenOnPvPDeath == true)
  104.         pVictim->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false);
  105.                
  106.         switch(KillingStreak[kGUID].KillStreak)
  107.         {
  108.  
  109.  
  110.  
  111.         case KillerStreak15:
  112.         sprintf(msg, "|cFFff8400[Kill Streak]:|r -RANK-(1) - Beware of |cFFa2cc0f%s|r the Criminal who destroyed |cFFff0000%s|r and is warming up with a 2 person killing spree. Rising to the top!", pKiller->GetName(), pVictim->GetName(), KillStreaks[1]);
  113.         sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  114.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  115.         pKiller->CastSpell(pKiller,11010,true);
  116.         break;
  117.  
  118.         case KillerStreak20:
  119.         sprintf(msg, "|cFFff8400[Kill Streak]:|r -RANK-(2) - Avoid |cFFa2cc0f%s|r the Insane who dismembered |cFFff0000%s|r and is on fire with a 3 person killing spree. Inspired by death..", pKiller->GetName(), pVictim->GetName(), KillStreaks[2]);
  120.         sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  121.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  122.        // pKiller->CastSpell(pKiller,65858,true);
  123.         break;
  124.  
  125.         case KillerStreak30:
  126.         sprintf(msg, "|cFFff8400[Kill Streak]:|r -RANK-(3) - Watch out! |cFFa2cc0f%s|r the Maniac has slain |cFFff0000%s|r and is on a crazed 4 person killing spree. Full of comtempt!", pKiller->GetName(), pVictim->GetName(), KillStreaks[3]);
  127.         sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  128.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  129.         //pKiller->CastSpell(pKiller,67260,true);
  130.         break;
  131.        
  132.         case KillerStreak40:
  133.         sprintf(msg, "|cFFff8400[Kill Streak]:|r -RANK-(4) - Caution! |cFFa2cc0f%s|r the Serial Killer has massacred |cFFff0000%s|r and is on a 5 person killing spree. Focused on the path.", pKiller->GetName(), pVictim->GetName(), KillStreaks[4]);
  134.         sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  135.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  136.         //pKiller->CastSpell(pKiller,67257,true);
  137.         break;
  138.  
  139.         case KillerStreak50:
  140.         sprintf(msg, "|cFFff8400[Kill Streak]:|r -RANK-(5) - Fate steps aside as |cFFa2cc0f%s|r the Unmerciful has relinquished |cFFff0000%s|r to the heavens and is on a 6 person killing spree. Demonic intentions", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  141.         sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  142.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  143.         pKiller->CastSpell(pKiller,67259,true);
  144.         break;
  145.        
  146.         case KillerStreak60:
  147.         sprintf(msg, "|cFFff8400[Kill Streak]:|r -RANK-(6) - Attention! |cFFa2cc0f%s|r the Ender has absolved |cFFff0000%s|r and is on a 7 person killing spree. Halfway to the highest of Ken", pKiller->GetName(), pVictim->GetName(), KillStreaks[6]);
  148.         sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  149.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  150.         //pKiller->CastSpell(pKiller,67256,true);
  151.         break;
  152.        
  153.         case KillerStreak70:
  154.         sprintf(msg, "|cFFff8400[Kill Streak]:|r -RANK-(7) - Be wary! |cFFa2cc0f%s|r the Gravedigger has buried |cFFff0000%s|r and is raging with a 8 person killing spree. Working the late night shift!", pKiller->GetName(), pVictim->GetName(), KillStreaks[7]);
  155.         sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  156.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  157.         //pKiller->CastSpell(pKiller,67261,true);
  158.         break;
  159.  
  160.         case KillerStreak80:
  161.         sprintf(msg, "|cFFff8400[Kill Streak]:|r -RANK-(8) - Like clockwork, |cFFa2cc0f%s|r the Mastermind has tactfully removed |cFFff0000%s|r from battle and is on fire with a 9 person killing spree. Motivated by the one.", pKiller->GetName(), pVictim->GetName(), KillStreaks[8]);
  162.         sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  163.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  164.         //pKiller->CastSpell(pKiller,67258,true);
  165.         break;
  166.  
  167.         case KillerStreak90:
  168.         sprintf(msg, "|cFFff8400[Kill Streak]:|r -RANK-(9) - Concealed in the Shadows, |cFFa2cc0f%s|r the Assassin has slain |cFFff0000%s|r and is on a 10 person killing spree. Seeking revenge for the past.", pKiller->GetName(), pVictim->GetName(), KillStreaks[9]);
  169.         sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  170.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  171.         pKiller->CastSpell(pKiller,80747,true);
  172.         break;
  173.  
  174.         case KillerStreak100:
  175.         sprintf(msg, "|cFFff8400[Kill Streak]:|r -RANK-(10) - Tossing the carcass aside, |cFFa2cc0f%s|r the Bloodletter has devoured |cFFff0000%s|r and is on a 11 person killing spree. Hell walks among the living.", pKiller->GetName(), pVictim->GetName(), KillStreaks[10]);
  176.         sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  177.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  178.         pKiller->CastSpell(pKiller,95537,true);
  179.         break;
  180.  
  181.         case KillerStreak110:
  182.         sprintf(msg, "|cFFff8400[Kill Streak]:|r -RANK-(11) - Cower before |cFFa2cc0f%s|r the Unstoppable who has slain |cFFff0000%s|r and is on a rampaging 12 person killing spree. Second in command to only one!", pKiller->GetName(), pVictim->GetName(), KillStreaks[11]);
  183.         sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  184.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  185.         //pKiller->CastSpell(pKiller,24378,true);
  186.         break;
  187.        
  188.         case KillerStreak120:
  189.         sprintf(msg, "|cFFff8400[Kill Streak]:|r -RANK-(12) - Fear |cFFa2cc0f%s|r the Conqueror; who has annihilated yet another victim, |cFFff0000%s|r, and is on a 13 person killing spree. UnMatched by all, can no one stop them?", pKiller->GetName(), pVictim->GetName(), KillStreaks[12]);
  190.         sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  191.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  192.         //pKiller->CastSpell(pKiller,24378,true);
  193.         break;
  194.        
  195.         case KillerStreak130:
  196.         sprintf(msg, "|cFFff8400[Kill Streak]:|r -RANK-(13) - Fear |cFFa2cc0f%s|r the Conqueror; who has annihilated yet another victim, |cFFff0000%s|r, and is on a 14 person killing spree. UnMatched by all, can no one stop them?", pKiller->GetName(), pVictim->GetName(), KillStreaks[12]);
  197.         sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  198.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  199.         //pKiller->CastSpell(pKiller,24378,true);
  200.         break;
  201.        
  202.         case KillerStreak140:
  203.         sprintf(msg, "|cFFff8400[Kill Streak]:|r -RANK-(14) - Fear |cFFa2cc0f%s|r the Conqueror; who has annihilated yet another victim, |cFFff0000%s|r, and is on a 15 person killing spree. UnMatched by all, can no one stop them?", pKiller->GetName(), pVictim->GetName(), KillStreaks[12]);
  204.         sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  205.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[2]);
  206.         //pKiller->CastSpell(pKiller,24378,true);
  207.         break;
  208.  
  209.         case KillerStreak150:
  210.         sprintf(msg, "|cFFff8400[Kill Streak]:|r -RANK-(15) - The Reaper |cFFa2cc0f%s|r ; Has claimed another soul for the harvest, |cFFff0000%s|r, and is on a 20 person killing spree. Who will be their next victim?!", pKiller->GetName(), pVictim->GetName(), KillStreaks[12]);
  211.         sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  212.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[2]);
  213.         pKiller->CastSpell(pKiller,24378,true);
  214.         break;
  215.                                                                                                          
  216.                                                        }
  217.      }
  218.  
  219.                
  220.         }
  221. };
  222.  
  223. void AddSC_System_OnPVPKill()
  224. {
  225.     new System_OnPVPKill();
  226. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement