MichaelCrow

Kill Streak [trinity]

May 26th, 2012
339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.15 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2.  
  3. class System_OnKill : public PlayerScript
  4. {
  5.     public:
  6.         System_OnKill() : PlayerScript("System_OnKill") {}
  7.  
  8.     void OnPVPKill(Player * Killer, Player * Victim)
  9.     {
  10.         uint64 KillerGUID = Killer->GetGUID();
  11.         uint64 VictimGUID = Victim->GetGUID();
  12.  
  13.         struct KillStreak_Info
  14.         {
  15.             uint32 killstreak;
  16.             uint64 lastkill;
  17.         };
  18.  
  19.         static std::map<uint64, KillStreak_Info> KillStreakData;
  20.  
  21.         if( KillerGUID == VictimGUID || KillStreakData[KillerGUID].lastkill == VictimGUID )
  22.             return;
  23.  
  24.         KillStreakData[KillerGUID].killstreak++;
  25.         KillStreakData[KillerGUID].lastkill = VictimGUID;
  26.         KillStreakData[VictimGUID].killstreak = 0;
  27.         KillStreakData[VictimGUID].lastkill = 0;
  28.    
  29.         switch( KillStreakData[KillerGUID].killstreak )
  30.         {
  31.             char msg[250];
  32.             case 1:
  33.             case 2:
  34.             case 3:
  35.             case 4:
  36.             case 5:
  37.             case 6:
  38.             case 7:
  39.             case 8:
  40.             case 9:
  41.                 Killer->Additem(47241, 1);
  42.                 break;
  43.            
  44.             case 10:
  45.                 snprintf(msg, 250, "|cFF0042FF[PvP System]:|CFF20C000[%u Kills]|cFFFF0303%s is on a hot streak!", KillStreakData[KillerGUID].killstreak, Killer->GetName());
  46.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  47.                 Killer->Additem(47241, 2);
  48.                 break;
  49.                
  50.             case 11:
  51.             case 12:
  52.             case 13:
  53.             case 14:
  54.             case 15:
  55.             case 16:
  56.             case 17:
  57.             case 18:
  58.             case 19:
  59.                 Killer->Additem(47241, 2);
  60.                 break;
  61.  
  62.             case 20:
  63.                 snprintf(msg, 250, "[PvP System]:|CFF20C000[%u Kills]|cFFFF0303%s is on a RAMPAGE!!", KillStreakData[KillerGUID].killstreak, Killer->GetName());
  64.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  65.                 Killer->Additem(47241, 4);
  66.                 break;
  67.            
  68.             case 21:
  69.             case 22:
  70.             case 23:
  71.             case 24:
  72.             case 25:
  73.             case 26:
  74.             case 27:
  75.             case 28:
  76.             case 29:
  77.                 Killer->Additem(47241, 3);
  78.                 break;
  79.            
  80.             case 30:
  81.                 snprintf(msg, 250, "[PvP System]:|CFF20C000[%u Kills]|cFFFF0303%s is UNSTOPABLE!", KillStreakData[KillerGUID].killstreak, Killer->GetName());
  82.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  83.                 Killer->Additem(47241, 6);
  84.                 break;
  85.  
  86.             case 31:
  87.             case 32:
  88.             case 33:
  89.             case 34:
  90.             case 35:
  91.             case 36:
  92.             case 37:
  93.             case 38:
  94.             case 39:
  95.                 Killer->Additem(47241, 4);
  96.                 break;
  97.            
  98.             case 40:
  99.                 snprintf(msg, 250, "[PvP System]: |CFF20C000[%u Kills]|cFFFF0303%s is Dominating!", KillStreakData[KillerGUID].killstreak, Killer->GetName());
  100.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  101.                 Killer->Additem(47241, 8);
  102.                 break;
  103.  
  104.             case 41:
  105.             case 42:
  106.             case 43:
  107.             case 44:
  108.             case 45:
  109.             case 46:
  110.             case 47:
  111.             case 48:
  112.             case 49:
  113.                 Killer->Additem(47241, 5);
  114.                 break;
  115.                
  116.             case 50:
  117.                 snprintf(msg, 250, "[PvP System]:|CFF20C000[%u Kills]|cFFFF0303%s is GODLIKE!", KillStreakData[KillerGUID].killstreak, Killer->GetName());
  118.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  119.                 Killer->Additem(47241, 10);
  120.                 break;
  121.                
  122.             case 51:
  123.                 KillStreakData[KillerGUID].killstreak = 1;
  124.                 Killer->Additem(47241, 1);
  125.                 break;
  126.                
  127.         }
  128.        
  129.         switch( KillStreakData[VictimGUID].killstreak )
  130.         {
  131.             char msg[250];
  132.             case 10:
  133.             case 11:
  134.             case 12:
  135.             case 13:
  136.             case 14:
  137.             case 15:
  138.             case 16:
  139.             case 17:
  140.             case 18:
  141.             case 19:
  142.                 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);
  143.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  144.                 Killer->Additem(47241, 2);
  145.                 break;
  146.  
  147.             case 20:
  148.             case 21:
  149.             case 22:
  150.             case 23:
  151.             case 24:
  152.             case 25:
  153.             case 26:
  154.             case 27:
  155.             case 28:
  156.             case 29:
  157.                 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);
  158.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  159.                 Killer->Additem(47241, 4);
  160.                 break;
  161.            
  162.             case 30:
  163.             case 31:
  164.             case 32:
  165.             case 33:
  166.             case 34:
  167.             case 35:
  168.             case 36:
  169.             case 37:
  170.             case 38:
  171.             case 39:
  172.                 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);
  173.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  174.                 Killer->Additem(47241, 6);
  175.                 break;
  176.            
  177.             case 40:
  178.             case 41:
  179.             case 42:
  180.             case 43:
  181.             case 44:
  182.             case 45:
  183.             case 46:
  184.             case 47:
  185.             case 48:
  186.             case 49:
  187.                 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);
  188.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  189.                 Killer->Additem(47241, 8);
  190.                 break;
  191.                
  192.             case 50:
  193.                 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);
  194.                 sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
  195.                 Killer->Additem(47241, 20);
  196.                 break;
  197.         }
  198.        
  199.     }
  200. };
  201.  
  202. void AddSC_PvP_System()
  203. {
  204.     new System_OnKill;
  205. }
Advertisement
Add Comment
Please, Sign In to add comment