Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Author: Ap Rose (Akamaran)
- * Contact: [email protected]
- *
- * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/>
- */
- #include "ScriptPCH.h"
- #include "Chat.h"
- class System_OnKill : public PlayerScript
- {
- public:
- System_OnKill() : PlayerScript("System_OnKill") {}
- void OnPVPKill(Player * Killer, Player * Victim)
- {
- if ((Killer->GetZoneId() != 3358
- && Killer->GetZoneId() != 3277
- && Killer->GetZoneId() != 3820
- && Killer->GetZoneId() != 2597
- && Killer->GetZoneId() != 4384
- && Killer->GetZoneId() != 4710
- ) || (Killer->getLevel() <= 70 && Victim->getLevel() <= 70))
- return;
- uint64 KillerGUID = Killer->GetGUID();
- uint64 VictimGUID = Victim->GetGUID();
- std::ostringstream ss;
- struct KillStreak_Info{uint32 killstreak; uint64 lastkill;};
- static std::map<uint64, KillStreak_Info> KillStreakData;
- //Double Kill Check
- if (KillerGUID == VictimGUID || KillStreakData[KillerGUID].lastkill == VictimGUID) return;
- //Revenge Check
- if (KillerGUID == KillStreakData[VictimGUID].lastkill)
- {
- //Send Message (Revenge Earned)
- ChatHandler(Killer->GetSession()).PSendSysMessage("[PvP System]:|cFF00FF00 You got revenge!");
- //Send Message (Revenged)
- ChatHandler(Victim->GetSession()).PSendSysMessage("[PvP System]:|cFFFF0000 Your enemy got revenge!");
- }
- //Killstreak End
- if (KillStreakData[VictimGUID].killstreak > 9)
- {
- //Server Broadcast
- ss << "[PvP System]:|cFF81CF42 " << Killer->GetName() << "|r has ended the streak of|cFF81CFCF " << Victim->GetName() << "|r";
- sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str());
- //Give Player Gold Reward (Bounty)
- Killer->SetMoney(Killer->GetMoney() + 50000);
- //Negative Check && 5 Gold Death Cost for Victim
- if ((Victim->GetMoney()) <50000){ Victim->SetMoney(0); }else{ Victim->SetMoney(Victim->GetMoney() - 50000); }
- //Send Notification
- Victim->GetSession()->SendAreaTriggerMessage("[PvP System]:|cFFFF0000 Your killstreak has ended!");
- //Send Message (Killing Streak Ended)
- ChatHandler(Victim->GetSession()).PSendSysMessage("[PvP System]:|cFFFF0000 Your killstreak has ended!");
- }
- //Update Information
- KillStreakData[KillerGUID].killstreak++; KillStreakData[KillerGUID].lastkill = VictimGUID;
- KillStreakData[VictimGUID].killstreak = 0; KillStreakData[VictimGUID].lastkill = 0;
- //Killstreak Check
- switch (KillStreakData[KillerGUID].killstreak)
- {
- case 5:
- //Killer->CastSpell(Killer, 24378, true);
- //Killer->AddItem(47241, 2);
- //Server Broadcast
- 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!";
- sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str());
- //Give Player Gold Reward
- Killer->SetMoney(Killer->GetMoney() + (KillStreakData[KillerGUID].killstreak));
- //Send Notification
- ss << "[PvP System]:|cFF00FF00 You are on a killing streak!";
- Killer->GetSession()->SendAreaTriggerMessage(ss.str().c_str());
- break;
- case 10:
- //Killer->AddItem(47241, 2);
- //Server Broadcast
- 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!";
- sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str());
- //Give Player Gold Reward
- Killer->SetMoney(Killer->GetMoney() + (KillStreakData[KillerGUID].killstreak));
- //Send Notification
- ss << "[PvP System]:|cFF00FF00 You are on a killing streak!";
- Killer->GetSession()->SendAreaTriggerMessage(ss.str().c_str());
- break;
- case 20:
- //Killer->AddItem(47241, 2);
- //Server Broadcast
- ss << "[PvP System]:|cFF81CF42" << Killer->GetName() << "|r has killed|cFF81CFCF" << Victim->GetName() << "|r at " << 20 << " man killstreak and is on a|cFFFF80C0 Unstoppable!";
- sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str());
- //Give Player Gold Reward
- Killer->SetMoney(Killer->GetMoney() + (KillStreakData[KillerGUID].killstreak));
- //Send Notification
- ss << "[PvP System]:|cFF00FF00 You are on a killing streak!";
- Killer->GetSession()->SendAreaTriggerMessage(ss.str().c_str());
- break;
- case 30:
- //Killer->AddItem(47241, 2);
- //Server Broadcast
- ss << "[PvP System]:|cFF81CF42" << Killer->GetName() << "|r has killed|cFF81CFCF" << Victim->GetName() << "|r at" << 30 << " man killstreak and is|cFF00FFFF Monster Kill!";
- sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str());
- //Give Player Gold Reward
- Killer->SetMoney(Killer->GetMoney() + (KillStreakData[KillerGUID].killstreak));
- //Send Notification
- ss << "[PvP System]:|cFF00FF00 You are on a killing streak!";
- Killer->GetSession()->SendAreaTriggerMessage(ss.str().c_str());
- break;
- case 50:
- //Killer->AddItem(47241, 2);
- //Server Broadcast
- ss << "[PvP System]:|cFF81CF42" << Killer->GetName() << "|r has killed|cFF81CFCF" << Victim->GetName() << "|r at" << 50 << " man killstreak and is|cFF540081 GODLIKE!";
- sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str());
- //Give Player Gold Reward
- Killer->SetMoney(Killer->GetMoney() + (KillStreakData[KillerGUID].killstreak));
- //Send Notification
- ss << "[PvP System]:|cFF00FF00 You are on a killing streak!";
- Killer->GetSession()->SendAreaTriggerMessage(ss.str().c_str());
- break;
- case 100:
- //Killer->AddItem(47241, 2);
- //Server Broadcast
- ss << "[PvP System]:|cFF81CF42" << Killer->GetName() << "|r has killed|cFF81CFCF" << Victim->GetName() << "|r at" << 100 << " man killstreak and is|cFFFE8A0E beyond GODLIKE!";
- sWorld->SendServerMessage(SERVER_MSG_STRING, ss.str().c_str());
- //Give Player Gold Reward
- Killer->SetMoney(Killer->GetMoney() + (KillStreakData[KillerGUID].killstreak));
- //Send Notification
- ss << "[PvP System]:|cFF00FF00 You are on a killing streak!";
- Killer->GetSession()->SendAreaTriggerMessage(ss.str().c_str());
- break;
- //Send Message (Killing Streak)
- ChatHandler(Killer->GetSession()).PSendSysMessage(ss.str().c_str());
- //Negative Check && 50 Silver Death Cost for Victim
- if ((Victim->GetMoney()) <5000){ Victim->SetMoney(0); }else{ Victim->SetMoney(Victim->GetMoney() - 5000); }
- //Send Notification
- //Victim->GetSession()->SendAreaTriggerMessage("[PvP System]:|cFFFF0000 You died, 50 silver taken for medical costs.");
- //Send Message
- //ChatHandler(Victim->GetSession()).PSendSysMessage("[PvP System]:|cFFFF0000 You died, 50 silver taken for medical costs.");
- break;
- /* TODO :: Killstreak Auras
- * Master Buff(Physical) - 35874
- * Master Buff(Magical) - 35912
- * Master Buff(Ranged) - 38734
- */
- default :
- //Give Player Gold Reward (Default Reward)
- Killer->SetMoney(Killer->GetMoney() + 10000);
- Killer->GetSession()->SendAreaTriggerMessage("[PvP System]:|cFF00FF00 You have killed enemy player!");
- //Send Message
- ChatHandler(Killer->GetSession()).PSendSysMessage("[PvP System]:|cFF00FF00 You have killed enemy player!");
- //Negative Check && 50 Silver Death Cost for Victim
- if ((Victim->GetMoney()) <5000){ Victim->SetMoney(0); }else{ Victim->SetMoney(Victim->GetMoney() - 5000); }
- //Send Notification
- //Victim->GetSession()->SendAreaTriggerMessage("[PvP System]:|cFFFF0000 You have been killed, 50 silver taken for medical costs.");
- //Send Message
- //ChatHandler(Victim->GetSession()).PSendSysMessage("[PvP System]:|cFFFF0000 You have been killed, 50 silver taken for medical costs.");
- break;
- }
- }
- };
- void AddSC_PvP_System()
- {
- new System_OnKill;
- }
Advertisement
Add Comment
Please, Sign In to add comment