Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.96 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2.  
  3. ///////////////////////////////////////////////////////////////////////
  4. ///////////////////////      CONFIG      /////////////////////////////
  5. /////////////////////////////////////////////////////////////////////
  6.  
  7. float Version = 2.50f; //Don't touch this.
  8. bool PvPSystemEnabled = true; //Set to false if you want to disable the PvP System
  9. bool OnlyInBattlegrounds = false; //Set to true if you want to enable this only in battlegrounds.
  10. bool LooseTokenOnPvPDeath = false; //Set to true if you want the victim to loose tokens when the victim dies.
  11. int32 AmountOfItemsYouWantTheVictimToLoose = 1; //Amount of items you want the victim to loose when victim dies.
  12. bool AddTokenOnPvPKill = true; //Set to false if you don't want the killer to be rewarded.
  13. int32 ItemReward = 30000; //The ItemID of the reward.
  14. int32 KillStreaks[5] = { 10, 20, 30, 40, 50 }; //On how many kills the killstreaks should announce & Reward.
  15. int32 AmountOfRewardsOnKillStreak[5] = { 1, 3, 5, 7, 10 }; //With how many items you want to reward the killer when he slays the victim.
  16. int32 HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim = 3; //Name speaks for It self.
  17. ///////////////////////////////////////////////////////////////////
  18. ///////////////////////      END      ////////////////////////////
  19. /////////////////////////////////////////////////////////////////
  20.  
  21. struct SystemInfo
  22. {
  23.     uint32 KillStreak;
  24.     uint32 LastGUIDKill;
  25.     uint8 KillCount;
  26. };
  27.  
  28. static std::map<uint32, SystemInfo> KillingStreak;
  29.  
  30. class System_OnPvPKill : public PlayerScript
  31. {
  32.     public:
  33.         System_OnPvPKill() : PlayerScript("System_OnPvPKill") {}
  34.  
  35.    
  36. void OnPVPKill(Player *pKiller, Player *pVictim)
  37. {
  38.     if(PvPSystemEnabled == false)
  39.     {
  40.              return;
  41.     }
  42.     elseif(PvPSystemEnabled == true)
  43.     {
  44.         uint32 kGUID;
  45.         uint32 vGUID;
  46.         char msg[500];
  47.         kGUID = pKiller->GetGUID();
  48.         vGUID = pVictim->GetGUID();                
  49.         if(kGUID == vGUID)
  50.         {
  51.       return;
  52.         }
  53.                
  54.       if(KillingStreak[kGUID].LastGUIDKill == vGUID)
  55.         {
  56.         KillingStreak[kGUID].KillCount++;
  57.         KillingStreak[vGUID].KillCount = 1;
  58.       KillingStreak[kGUID].KillStreak++;
  59.         KillingStreak[vGUID].Killstreak = 0;
  60.       pKiller->AddItem(ItemReward, 1);
  61.         if(LooseTokenOnPvPDeath == true)
  62.           pVictim->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false);
  63.         }
  64.       if(KillingStreak[kGUID].LastGUIDKill != vGUID)
  65.       {
  66.         KillingStreak[kGUID].KillCount = 1;
  67.         KillingStreak[vGUID].KillCount = 1;
  68.       }
  69.  
  70.       if(KillingStreak[kGUID].KillCount == HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim)
  71.       {
  72.         return;
  73.       }
  74.  
  75.       if(OnlyInBattlegrounds == true)
  76.     {
  77.         if(!pKiller->GetMap()->IsBattleground())
  78.            return;
  79.       }
  80.  
  81.     KillingStreak[kGUID].KillStreak++;
  82.         KillingStreak[vGUID].KillStreak = 0;
  83.         KillingStreak[kGUID].LastGUIDKill = vGUID;
  84.         KillingStreak[vGUID].LastGUIDKill = 0;
  85.       if(AddTokenOnPvPKill == true)
  86.           pKiller->AddItem(ItemReward, 1);
  87.       if(LooseTokenOnPvPDeath == true)
  88.         pVictim->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false);
  89.                
  90.         switch(KillingStreak[kGUID].KillStreak)
  91.         {
  92.         case KillStreaks[1]:
  93.         sprintf(msg, "[PvP System]: %s killed %s and is on a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[1]);
  94.         sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
  95.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  96.         break;
  97.  
  98.         case KillStreaks[2]:
  99.         sprintf(msg, "[PvP System]: %s killed %s and is on a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[2]);
  100.         sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
  101.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[2]);
  102.         break;
  103.  
  104.         case KillStreaks[3]:
  105.         sprintf(msg, "[PvP System]: %s killed %s and is on a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[3]);
  106.         sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
  107.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[3]);
  108.         break;
  109.  
  110.         case KillStreaks[4]:
  111.         sprintf(msg, "[PvP System]: %s killed %s and is on a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[4]);
  112.         sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
  113.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[4]);
  114.         break;
  115.  
  116.         case KillStreaks[5]:
  117.         sprintf(msg, "[PvP System]: %s killed %s and is on a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  118.         sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
  119.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[5]);
  120.         KillingStreak[kGUID].KillStreak = 0;
  121.         break;
  122.      }
  123.     }
  124. }
  125. };
  126.  
  127. void AddSC_System()
  128. {
  129.     new System_OnPvPKill;
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement