Advertisement
Guest User

Killstreak

a guest
Jan 2nd, 2013
606
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.91 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2.  
  3. enum Spells
  4. {
  5.     SPELL_RANK_ONE_FRENZY   = 69052,
  6.     SPELL_RANK_TWO_FRENZY   = 58841,
  7.     SPELL_RANK_THREE_FRENZY = 25164,
  8.     SPELL_RANK_FOUR_FRENZY  = 60300,
  9.     SPELL_RANK_FIVE_FRENZY  = 28131
  10. };
  11.  
  12. float Version = 2.50f; // Ehhez nem ny├║lunk
  13. bool PvPSystemEnabled = true; // Ez legyen False ha ki akarjuk kapcsolni a rendszert.
  14. bool OnlyInBattlegrounds = false;
  15. bool LooseTokenOnPvPDeath = false;
  16. int32 AmountOfItemsYouWantTheVictimToLoose = 1;
  17. bool AddTokenOnPvPKill = true;
  18. int32 ItemReward = 29434; //The ItemID of the reward.
  19. int32 AmountOfRewardsOnKillStreak[5] = { 5, 10, 15, 20, 25 }; //Mennyi jutalom itemet kapjon a killer.
  20. int32 HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim = 3; // Ezt vágjuk mi.
  21. const int32 KillerStreak1 = 5; // Mennyi legyen a minimum killstreak amin├ęl announcel.
  22. const int32 KillerStreak2 = 10;
  23. const int32 KillerStreak3 = 15;
  24. const int32 KillerStreak4 = 20;
  25. const int32 KillerStreak5 = 25;
  26. int32 KillStreaks[5] = { KillerStreak1, KillerStreak2, KillerStreak3, KillerStreak4, KillerStreak5 };
  27.  
  28. struct SystemInfo
  29. {
  30.     uint32 KillStreak;
  31.     uint32 LastGUIDKill;
  32.     uint8 KillCount;
  33. };
  34.  
  35. static std::map<uint32, SystemInfo> KillingStreak;
  36.  
  37. class System_OnPvPKill : public PlayerScript
  38. {
  39.     public:
  40.         System_OnPvPKill() : PlayerScript("System_OnPvPKill") {}
  41.  
  42.        
  43. void OnPVPKill(Player *pKiller, Player *pVictim)
  44. {
  45.     if(PvPSystemEnabled == false)
  46.     {
  47.              return;
  48.     }
  49.     else if(PvPSystemEnabled == true)
  50.     {
  51.         uint32 kGUID;
  52.         uint32 vGUID;
  53.         char msg[500];
  54.         kGUID = pKiller->GetGUID();
  55.         vGUID = pVictim->GetGUID();                
  56.         if(kGUID == vGUID)
  57.         {
  58.           return;
  59.         }
  60.                
  61.       if(KillingStreak[kGUID].LastGUIDKill == vGUID)
  62.         {
  63.         KillingStreak[kGUID].KillCount++;
  64.         KillingStreak[vGUID].KillCount = 1;
  65.           pKiller->AddItem(ItemReward, 1);
  66.         if(LooseTokenOnPvPDeath == true)
  67.           pVictim->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false);
  68.         }
  69.       if(KillingStreak[kGUID].LastGUIDKill != vGUID)
  70.       {
  71.         KillingStreak[kGUID].KillCount = 1;
  72.         KillingStreak[vGUID].KillCount = 1;
  73.       }
  74.  
  75.       if(KillingStreak[kGUID].KillCount == HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim)
  76.       {
  77.         return;
  78.       }
  79.  
  80.       if(OnlyInBattlegrounds == true)
  81.         {
  82.         if(!pKiller->GetMap()->IsBattleground())
  83.            return;
  84.       }
  85.  
  86.         KillingStreak[kGUID].KillStreak++;
  87.         KillingStreak[vGUID].KillStreak = 0;
  88.         KillingStreak[kGUID].LastGUIDKill = vGUID;
  89.         KillingStreak[vGUID].LastGUIDKill = 0;
  90.       if(AddTokenOnPvPKill == true)
  91.           pKiller->AddItem(ItemReward, 1);
  92.       if(LooseTokenOnPvPDeath == true)
  93.         pVictim->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false);
  94.                
  95.         switch(KillingStreak[kGUID].KillStreak)
  96.         {
  97.         case KillerStreak1:
  98.         sprintf(msg, "[PvP System]: %s killed %s! %s is DOMINATING with %u kill!", pKiller->GetName(), pVictim->GetName(), KillStreaks[1]);
  99.         sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  100.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  101.         pKiller->AddAura(SPELL_RANK_ONE_FRENZY, pKiller);
  102.         break;
  103.  
  104.         case KillerStreak2:
  105.         sprintf(msg, "[PvP System]: %s killed %s! %s is on RAMPAGE with %u kill!", pKiller->GetName(), pVictim->GetName(), KillStreaks[2]);
  106.         sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  107.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[2]);
  108.         pKiller->AddAura(SPELL_RANK_TWO_FRENZY, pKiller);
  109.         break;
  110.  
  111.         case KillerStreak3:
  112.         sprintf(msg, "[PvP System]: %s is on KILLING SPREE with %u kill!", pKiller->GetName(), pVictim->GetName(), KillStreaks[3]);
  113.         sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  114.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[3]);
  115.         pKiller->AddAura(SPELL_RANK_THREE_FRENZY, pKiller);
  116.         break;
  117.  
  118.         case KillerStreak4:
  119.         sprintf(msg, "[PvP System]: %s is UNSTOPPABLE with %u kill!", pKiller->GetName(), pVictim->GetName(), KillStreaks[4]);
  120.         sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  121.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[4]);
  122.         pKiller->AddAura(SPELL_RANK_FOUR_FRENZY, pKiller);
  123.         break;
  124.  
  125.         case KillerStreak5:
  126.         sprintf(msg, "[PvP System]: %s is WICKED SICK with %u kill!", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  127.         sWorld->SendWorldText(LANG_SYSTEMMESSAGE, msg);
  128.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[5]);
  129.         pKiller->AddAura(SPELL_RANK_FIVE_FRENZY, pKiller);
  130.         KillingStreak[kGUID].KillStreak = 0;
  131.         break;
  132.      }
  133.     }
  134. }
  135. };
  136.  
  137. void AddSC_System()
  138. {
  139.     new System_OnPvPKill;
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement