Fateswhisper

System_OnKill

May 28th, 2014
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.95 KB | None | 0 0
  1. /*
  2. * Author: Ap Rose (Akamaran)
  3. *
  4. * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
  5. */
  6.  
  7. #include "ScriptPCH.h"
  8. #include "Chat.h"
  9.  
  10. class System_OnKill : public PlayerScript
  11. {
  12.     public:
  13.         System_OnKill() : PlayerScript("System_OnKill") {}
  14.  
  15.         void OnPVPKill(Player * Killer, Player * Victim)
  16.         {
  17.             if ((Killer->GetZoneId() != 3358
  18.                 && Killer->GetZoneId() != 3277
  19.                 && Killer->GetZoneId() != 3820
  20.                 && Killer->GetZoneId() != 2597
  21.                 && Killer->GetZoneId() != 4384
  22.                 && Killer->GetZoneId() != 4710
  23.                ) || (Killer->getLevel() <= 70 && Victim->getLevel() <= 70))
  24.             return;
  25.             uint64 KillerGUID = Killer->GetGUID();
  26.             uint64 VictimGUID = Victim->GetGUID();
  27.             std::ostringstream ss;
  28.             struct KillStreak_Info{uint32 killstreak; uint64 lastkill;};
  29.             static std::map<uint64, KillStreak_Info> KillStreakData;
  30.             //Double Kill Check
  31.             if (KillerGUID == VictimGUID || KillStreakData[KillerGUID].lastkill == VictimGUID) return;
  32.             //Revenge Check
  33.             if (KillerGUID == KillStreakData[VictimGUID].lastkill)
  34.             {
  35.                 //Send Message (Revenge Earned)
  36.                 ChatHandler(Killer->GetSession()).PSendSysMessage("[PvP System]:|cFF00FF00 You got revenge!");
  37.                 //Send Message (Revenged)
  38.                 ChatHandler(Victim->GetSession()).PSendSysMessage("[PvP System]:|cFFFF0000 Your enemy got revenge!");
  39.             }
  40.             //Killstreak End
  41.             if (KillStreakData[VictimGUID].killstreak > 9)
  42.             {
  43.                 //Server Broadcast
  44.                 ss << "[PvP System]:|cFF81CF42 " << Killer->GetName() << "|r has ended the streak of|cFF81CFCF " << Victim->GetName() << "|r";
  45.                 sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str());
  46.                 //Give Player Gold Reward (Bounty)
  47.                 Killer->SetMoney(Killer->GetMoney() + 50000);
  48.                 //Negative Check && 5 Gold Death Cost for Victim
  49.                 if ((Victim->GetMoney()) <50000){ Victim->SetMoney(0); }else{ Victim->SetMoney(Victim->GetMoney() - 50000); }
  50.                 //Send Notification
  51.                 Victim->GetSession()->SendAreaTriggerMessage("[PvP System]:|cFFFF0000 Your killstreak has ended!");
  52.                 //Send Message (Killing Streak Ended)
  53.                 ChatHandler(Victim->GetSession()).PSendSysMessage("[PvP System]:|cFFFF0000 Your killstreak has ended!");
  54.  
  55.             }
  56.             //Update Information
  57.             KillStreakData[KillerGUID].killstreak++; KillStreakData[KillerGUID].lastkill = VictimGUID;
  58.             KillStreakData[VictimGUID].killstreak = 0; KillStreakData[VictimGUID].lastkill = 0;
  59.             //Killstreak Check
  60.             switch (KillStreakData[KillerGUID].killstreak)
  61.             {
  62.                         case 5:
  63.                         //Killer->CastSpell(Killer, 24378, true);
  64.                         //Killer->AddItem(47241, 2);
  65.                         //Server Broadcast
  66.                         ss << "[PvP System]:|cFF81CF42" << Killer->GetName() << "|r has killed|cFF81CFCF" << Victim->GetName() << "|r and is at a " << 5 << " man killstreak and is on a|cFFFF0303 Killing Spree!";
  67.                         sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str());
  68.                         //Give Player Gold Reward
  69.                         Killer->SetMoney(Killer->GetMoney() + (KillStreakData[KillerGUID].killstreak));
  70.                         //Send Notification
  71.                         ss << "[PvP System]:|cFF00FF00 You are on a killing streak!";
  72.                         Killer->GetSession()->SendAreaTriggerMessage(ss.str().c_str());
  73.                         break;
  74.  
  75.                         case 10:
  76.                         //Killer->AddItem(47241, 2);
  77.                         //Server Broadcast
  78.                         ss << "[PvP System]:|cFF81CF42" << Killer->GetName() << "|r has killed|cFF81CFCF" << Victim->GetName() << "|r and is at a " << 10 << " man killstreak and is on a|cFF20C000 Dominating!";
  79.                         sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str());
  80.                         //Give Player Gold Reward
  81.                         Killer->SetMoney(Killer->GetMoney() + (KillStreakData[KillerGUID].killstreak));
  82.                         //Send Notification
  83.                         ss << "[PvP System]:|cFF00FF00 You are on a killing streak!";
  84.                         Killer->GetSession()->SendAreaTriggerMessage(ss.str().c_str());
  85.                         break;
  86.  
  87.                         case 20:
  88.                         //Killer->AddItem(47241, 2);
  89.                         //Server Broadcast
  90.                         ss << "[PvP System]:|cFF81CF42" << Killer->GetName() << "|r has killed|cFF81CFCF" << Victim->GetName() << "|r at " << 20 << " man killstreak and is on a|cFFFF80C0 Unstoppable!";
  91.                         sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str());
  92.                         //Give Player Gold Reward
  93.                         Killer->SetMoney(Killer->GetMoney() + (KillStreakData[KillerGUID].killstreak));
  94.                         //Send Notification
  95.                         ss << "[PvP System]:|cFF00FF00 You are on a killing streak!";
  96.                         Killer->GetSession()->SendAreaTriggerMessage(ss.str().c_str());
  97.                         break;
  98.  
  99.                         case 30:
  100.                         //Killer->AddItem(47241, 2);
  101.                         //Server Broadcast
  102.                         ss << "[PvP System]:|cFF81CF42" << Killer->GetName() << "|r has killed|cFF81CFCF" << Victim->GetName() << "|r at" << 30 << " man killstreak and is|cFF00FFFF Monster Kill!";
  103.                         sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str());
  104.                         //Give Player Gold Reward
  105.                         Killer->SetMoney(Killer->GetMoney() + (KillStreakData[KillerGUID].killstreak));
  106.                         //Send Notification
  107.                         ss << "[PvP System]:|cFF00FF00 You are on a killing streak!";
  108.                         Killer->GetSession()->SendAreaTriggerMessage(ss.str().c_str());
  109.                         break;
  110.  
  111.                         case 50:
  112.                         //Killer->AddItem(47241, 2);
  113.                         //Server Broadcast
  114.                         ss << "[PvP System]:|cFF81CF42" << Killer->GetName() << "|r has killed|cFF81CFCF" << Victim->GetName() << "|r at" << 50 << " man killstreak and is|cFF540081 GODLIKE!";
  115.                         sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str());
  116.                         //Give Player Gold Reward
  117.                         Killer->SetMoney(Killer->GetMoney() + (KillStreakData[KillerGUID].killstreak));
  118.                         //Send Notification
  119.                         ss << "[PvP System]:|cFF00FF00 You are on a killing streak!";
  120.                         Killer->GetSession()->SendAreaTriggerMessage(ss.str().c_str());
  121.                         break;
  122.  
  123.                         case 100:
  124.                         //Killer->AddItem(47241, 2);
  125.                         //Server Broadcast
  126.                         ss << "[PvP System]:|cFF81CF42" << Killer->GetName() << "|r has killed|cFF81CFCF" << Victim->GetName() << "|r at" << 100 << " man killstreak and is|cFFFE8A0E beyond GODLIKE!";
  127.                         sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str());
  128.                         //Give Player Gold Reward
  129.                         Killer->SetMoney(Killer->GetMoney() + (KillStreakData[KillerGUID].killstreak));
  130.                         //Send Notification
  131.                         ss << "[PvP System]:|cFF00FF00 You are on a killing streak!";
  132.                         Killer->GetSession()->SendAreaTriggerMessage(ss.str().c_str());
  133.                         break;
  134.  
  135.                         //Send Message (Killing Streak)
  136.                         ChatHandler(Killer->GetSession()).PSendSysMessage(ss.str().c_str());
  137.                         //Negative Check && 50 Silver Death Cost for Victim
  138.                         if ((Victim->GetMoney()) <5000){ Victim->SetMoney(0); }else{ Victim->SetMoney(Victim->GetMoney() - 5000); }
  139.                         //Send Notification
  140.                         //Victim->GetSession()->SendAreaTriggerMessage("[PvP System]:|cFFFF0000 You died, 50 silver taken for medical costs.");
  141.                         //Send Message
  142.                         //ChatHandler(Victim->GetSession()).PSendSysMessage("[PvP System]:|cFFFF0000 You died, 50 silver taken for medical costs.");
  143.                 break;
  144.                     /* TODO :: Killstreak Auras
  145.                      * Master Buff(Physical) - 35874
  146.                      * Master Buff(Magical) - 35912
  147.                      * Master Buff(Ranged) - 38734
  148.                      */
  149.                 default :
  150.                         //Give Player Gold Reward (Default Reward)
  151.                         Killer->SetMoney(Killer->GetMoney() + 10000);
  152.                         Killer->GetSession()->SendAreaTriggerMessage("[PvP System]:|cFF00FF00 You have killed enemy player!");
  153.                         //Send Message
  154.                         ChatHandler(Killer->GetSession()).PSendSysMessage("[PvP System]:|cFF00FF00 You have killed enemy player!");
  155.                         //Negative Check && 50 Silver Death Cost for Victim
  156.                         if ((Victim->GetMoney()) <5000){ Victim->SetMoney(0); }else{ Victim->SetMoney(Victim->GetMoney() - 5000); }
  157.                         //Send Notification
  158.                         //Victim->GetSession()->SendAreaTriggerMessage("[PvP System]:|cFFFF0000 You have been killed, 50 silver taken for medical costs.");
  159.                         //Send Message
  160.                         //ChatHandler(Victim->GetSession()).PSendSysMessage("[PvP System]:|cFFFF0000 You have been killed, 50 silver taken for medical costs.");
  161.                 break;
  162.             }
  163.         }
  164. };
  165.  
  166. void AddSC_PvP_System()
  167. {
  168.     new System_OnKill;
  169. }
Advertisement
Add Comment
Please, Sign In to add comment