Advertisement
MichaelCrow

[trinity] Killstreak System Updated

May 27th, 2012
1,250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.66 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2. //Change the token id and Kill streak or End of Streak rewards here.
  3. #define TokenID 47241
  4.  
  5.     enum KillRewards
  6.     {
  7.         Streak0 = 1
  8.         Streak1 = 2
  9.         Streak2 = 3
  10.         Streak3 = 4
  11.         Streak4 = 5
  12.     };
  13.    
  14.     enum TenthKill
  15.     {
  16.         Ten = 2
  17.         Twenty = 4
  18.         Thirty = 6
  19.         Fourty = 8
  20.         Fifty = 10
  21.     };
  22.    
  23.     enum Streak_End_Rewards
  24.     {
  25.         End1 = 2
  26.         End2 = 4
  27.         End3 = 6
  28.         End4 = 8
  29.         EndofEnd = 20
  30.     };
  31.  
  32. class Killstreak_System : public PlayerScript
  33. {
  34.     public:
  35.         Killstreak_System() : PlayerScript("Killstreak_System") {}
  36.  
  37.     void OnPVPKill(Player * Killer, Player * Victim)
  38.     {
  39.         uint64 KillerGUID = Killer->GetGUID();
  40.         uint64 VictimGUID = Victim->GetGUID();
  41.  
  42.         struct KillStreak_Info
  43.         {
  44.             uint32 killstreak;
  45.             uint64 lastkill;
  46.         };
  47.  
  48.         static std::map<uint64, KillStreak_Info> KillStreakData;
  49.  
  50.         if( KillerGUID == VictimGUID || KillStreakData[KillerGUID].lastkill == VictimGUID )
  51.             return;
  52.  
  53.         KillStreakData[KillerGUID].killstreak++;
  54.         KillStreakData[KillerGUID].lastkill = VictimGUID;
  55.         KillStreakData[VictimGUID].killstreak = 0;
  56.         KillStreakData[VictimGUID].lastkill = 0;
  57.    
  58.         switch( KillStreakData[KillerGUID].killstreak )
  59.         {
  60.             char msg[250];
  61.             case 1:
  62.             case 2:
  63.             case 3:
  64.             case 4:
  65.             case 5:
  66.             case 6:
  67.             case 7:
  68.             case 8:
  69.             case 9:
  70.                 Killer->Additem(TokenID, Streak0);
  71.                 break;
  72.            
  73.             case 10:
  74.                 snprintf(msg, 250, "|cFF0042FF[PvP System]:|CFF20C000[%u Kills]|cFFFF0303%s is on a hot streak!", KillStreakData[KillerGUID].killstreak, Killer->GetName());
  75.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  76.                 Killer->Additem(TokenID, Ten);
  77.                 break;
  78.                
  79.             case 11:
  80.             case 12:
  81.             case 13:
  82.             case 14:
  83.             case 15:
  84.             case 16:
  85.             case 17:
  86.             case 18:
  87.             case 19:
  88.                 Killer->Additem(TokenID, Streak1);
  89.                 break;
  90.  
  91.             case 20:
  92.                 snprintf(msg, 250, "[PvP System]:|CFF20C000[%u Kills]|cFFFF0303%s is on a RAMPAGE!!", KillStreakData[KillerGUID].killstreak, Killer->GetName());
  93.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  94.                 Killer->Additem(TokenID, Twenty);
  95.                 break;
  96.            
  97.             case 21:
  98.             case 22:
  99.             case 23:
  100.             case 24:
  101.             case 25:
  102.             case 26:
  103.             case 27:
  104.             case 28:
  105.             case 29:
  106.                 Killer->Additem(TokenID, Streak2);
  107.                 break;
  108.            
  109.             case 30:
  110.                 snprintf(msg, 250, "[PvP System]:|CFF20C000[%u Kills]|cFFFF0303%s is UNSTOPABLE!", KillStreakData[KillerGUID].killstreak, Killer->GetName());
  111.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  112.                 Killer->Additem(TokenID, Thirty);
  113.                 break;
  114.  
  115.             case 31:
  116.             case 32:
  117.             case 33:
  118.             case 34:
  119.             case 35:
  120.             case 36:
  121.             case 37:
  122.             case 38:
  123.             case 39:
  124.                 Killer->Additem(TokenID, Streak3);
  125.                 break;
  126.            
  127.             case 40:
  128.                 snprintf(msg, 250, "[PvP System]: |CFF20C000[%u Kills]|cFFFF0303%s is Dominating!", KillStreakData[KillerGUID].killstreak, Killer->GetName());
  129.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  130.                 Killer->Additem(TokenID, Fourty);
  131.                 break;
  132.  
  133.             case 41:
  134.             case 42:
  135.             case 43:
  136.             case 44:
  137.             case 45:
  138.             case 46:
  139.             case 47:
  140.             case 48:
  141.             case 49:
  142.                 Killer->Additem(TokenID, Streak4);
  143.                 break;
  144.                
  145.             case 50:
  146.                 snprintf(msg, 250, "[PvP System]:|CFF20C000[%u Kills]|cFFFF0303%s is GODLIKE!", KillStreakData[KillerGUID].killstreak, Killer->GetName());
  147.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  148.                 Killer->Additem(TokenID, Fifty);
  149.                 break;
  150.                
  151.             case 51:
  152.                 KillStreakData[KillerGUID].killstreak = 1;
  153.                 Killer->Additem(TokenID, 1);
  154.                 break;
  155.                
  156.         }
  157.        
  158.         switch( KillStreakData[VictimGUID].killstreak )
  159.         {
  160.             char msg[250];
  161.             case 10:
  162.             case 11:
  163.             case 12:
  164.             case 13:
  165.             case 14:
  166.             case 15:
  167.             case 16:
  168.             case 17:
  169.             case 18:
  170.             case 19:
  171.                 snprintf(msg, 250, "|cFF0042FF[PvP System]:|cFFFF0303%s has ended %s's streak of %u, earning 2 extra badges!", Killer->GetName(), Victim->GetName(), KillStreakData[VictimGUID].killstreak);
  172.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  173.                 Killer->Additem(TokenID, End1);
  174.                 break;
  175.  
  176.             case 20:
  177.             case 21:
  178.             case 22:
  179.             case 23:
  180.             case 24:
  181.             case 25:
  182.             case 26:
  183.             case 27:
  184.             case 28:
  185.             case 29:
  186.                 snprintf(msg, 250, "|cFF0042FF[PvP System]:|cFFFF0303%s has ended %s's rampage of %u, earning 4 extra badges!", Killer->GetName(), Victim->GetName(), KillStreakData[VictimGUID].killstreak);
  187.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  188.                 Killer->Additem(TokenID, End2);
  189.                 break;
  190.            
  191.             case 30:
  192.             case 31:
  193.             case 32:
  194.             case 33:
  195.             case 34:
  196.             case 35:
  197.             case 36:
  198.             case 37:
  199.             case 38:
  200.             case 39:
  201.                 snprintf(msg, 250, "|cFF0042FF[PvP System]:|cFFFF0303%s has stopped %s's unstopable....ness of %u, earning 6 extra badges!", Killer->GetName(), Victim->GetName(), KillStreakData[VictimGUID].killstreak);
  202.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  203.                 Killer->Additem(TokenID, End3);
  204.                 break;
  205.            
  206.             case 40:
  207.             case 41:
  208.             case 42:
  209.             case 43:
  210.             case 44:
  211.             case 45:
  212.             case 46:
  213.             case 47:
  214.             case 48:
  215.             case 49:
  216.                 snprintf(msg, 250, "|cFF0042FF[PvP System]:|cFFFF0303%s has dominated %s's domination of %u kills, earning 8 extra badges!", Killer->GetName(), Victim->GetName(), KillStreakData[VictimGUID].killstreak);
  217.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  218.                 Killer->Additem(TokenID, End4);
  219.                 break;
  220.                
  221.             case 50:
  222.                 snprintf(msg, 250, "|cFF0042FF[PvP System]:|cFFFF0303%s has slaim %s and is a GOD-SLAYER, earning 20 extra badges!", Killer->GetName(), Victim->GetName(), KillStreakData[VictimGUID].killstreak);
  223.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  224.                 Killer->Additem(TokenID, EndofEnd);
  225.                 break;
  226.         }
  227.        
  228.     }
  229. };
  230.  
  231. void AddSC_Killstreak_System()
  232. {
  233.     new Killstreak_System;
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement