Advertisement
Rochet2

PvP rewards

Apr 10th, 2012
263
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /************************************************************************
  2. *   *----------------*  |   *----------------*  |   *---------------*   *
  3. *   |   Originally  |*  |   *|  Edited      |*  |   *|  Edited      |   *
  4. *   |   By          |*  |   *|  By          |*  |   *|  By          |   *
  5. *   |   Kjanko      |*  |   *|  Tommy       |*  |   *|  Rochet2     |   *
  6. *   |------------------|*|---------------------|*|------------------|   *
  7. ************************************************************************/
  8.  
  9. #include "ScriptPCH.h"
  10.  
  11. class System_OnKill : public PlayerScript
  12. {
  13.     public:
  14.         System_OnKill() : PlayerScript("System_OnKill") {}
  15.  
  16.     void OnPVPKill(Player * Killer, Player * Victim)
  17.     {
  18.         uint64 KillerGUID = Killer->GetGUID();
  19.         uint64 VictimGUID = Victim->GetGUID();
  20.  
  21.         struct KillStreak_Info
  22.         {
  23.             uint32 killstreak;
  24.             uint64 lastkill;
  25.         };
  26.  
  27.         static std::map<uint64, KillStreak_Info> KillStreakData;
  28.  
  29.         if( KillerGUID == VictimGUID || KillStreakData[KillerGUID].lastkill == VictimGUID )
  30.             return;
  31.  
  32.         KillStreakData[KillerGUID].killstreak++;
  33.         KillStreakData[KillerGUID].lastkill = VictimGUID;
  34.         KillStreakData[VictimGUID].killstreak = 0;
  35.         KillStreakData[VictimGUID].lastkill = 0;
  36.  
  37.         if( KillStreakData[KillerGUID].killstreak % 5 == 0 ) // send killstreak message every 10 kills
  38.         {
  39.             char msg[250];
  40.             snprintf(msg, 250, "[PvP System]: %s is on a killstreak of %u!", Killer->GetName(), KillStreakData[KillerGUID].killstreak);
  41.             sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  42.         }
  43.        
  44.         if( KillStreakData[KillerGUID].killstreak == 5 || KillStreakData[KillerGUID].killstreak % 10 == 0 )
  45.             Killer->AddItem(25, KillStreakData[KillerGUID].killstreak); // 25 = badge item entry
  46.        
  47.         if( KillStreakData[KillerGUID].killstreak >= 15 && KillStreakData[KillerGUID].killstreak % 10 == 5 )
  48.             Killer->AddItem(26, (KillStreakData[KillerGUID].killstreak-5)/10); // 26 = special badge item entry
  49.     }
  50. };
  51.  
  52. void AddSC_PvP_System()
  53. {
  54.     new System_OnKill;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement