Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.29 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2.  
  3. ///////////////////////////////////////////////////////////////////////
  4. ///////////////////////      CONFIG      /////////////////////////////
  5. /////////////////////////////////////////////////////////////////////
  6.  
  7. float Version = 2.00f; //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. ///////////////////////////////////////////////////////////////////
  17. ///////////////////////      END      ////////////////////////////
  18. /////////////////////////////////////////////////////////////////
  19.  
  20. struct SystemInfo
  21. {
  22.     uint64 KillStreak;
  23.     uint64 LastGUIDKill;
  24. };
  25.  
  26. static std::map<uint64, SystemInfo> KillingStreak;
  27.  
  28. class System_OnPvPKill : public PlayerScript
  29. {
  30.     public:
  31.         System_OnPvPKill() : PlayerScript("System_OnPvPKill") {}
  32.  
  33.        
  34. void OnPVPKill(Player *pKiller, Player *pVictim)
  35. {
  36.     if(PvPSystemEnabled == false)
  37.     {
  38.              return;
  39.     }
  40.     elseif(PvPSystemEnabled == true)
  41.     {
  42.         uint64 kGUID;
  43.         uint64 vGUID;
  44.         char msg[500];
  45.         kGUID = pKiller->GetGUID();
  46.         vGUID = pVictim->GetGUID();                
  47.         if(kGUID == vGUID)
  48.         {
  49.           return;
  50.         }
  51.                
  52.         if(KillingStreak[kGUID].LastGUIDKill == vGUID)
  53.         {
  54.         return;
  55.         }
  56.      
  57.       if(OnlyInBattlegrounds == true)
  58.         {
  59.         if(!pKiller->GetMap()->IsBattleground())
  60.            return;
  61.       }
  62.  
  63.         KillingStreak[kGUID].KillStreak++;
  64.         KillingStreak[vGUID].KillStreak = 0;
  65.         KillingStreak[kGUID].LastGUIDKill = vGUID;
  66.         KillingStreak[vGUID].LastGUIDKill = 0;
  67.       if(AddTokenOnPvPKill == true)
  68.           pKiller->AddItem(ItemReward, 1);
  69.       if(LooseTokenOnPvPDeath == true)
  70.         pVictim->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false);
  71.                
  72.         switch(KillingStreak[kGUID].KillStreak)
  73.         {
  74.         case KillStreaks[1]:
  75.         sprintf(msg, "[PvP System]: %s killed %s and is on a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[1]);
  76.         sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
  77.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
  78.         break;
  79.  
  80.         case KillStreaks[2]:
  81.         sprintf(msg, "[PvP System]: %s killed %s and is on a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[2]);
  82.         sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
  83.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[2]);
  84.         break;
  85.  
  86.         case KillStreaks[3]:
  87.         sprintf(msg, "[PvP System]: %s killed %s and is on a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[3]);
  88.         sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
  89.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[3]);
  90.         break;
  91.  
  92.         case KillStreaks[4]:
  93.         sprintf(msg, "[PvP System]: %s killed %s and is on a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[4]);
  94.         sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
  95.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[4]);
  96.         break;
  97.  
  98.         case KillStreaks[5]:
  99.         sprintf(msg, "[PvP System]: %s killed %s and is on a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
  100.         sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
  101.         pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[5]);
  102.         KillingStreak[kGUID].KillStreak = 0;
  103.         break;
  104.      }
  105.     }
  106. }
  107. };
  108.  
  109. void AddSC_System()
  110. {
  111.     new System_OnPvPKill;
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement