stoneharry

Untitled

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