Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ScriptPCH.h"
- #include <cstring>
- //This function is called when the player kills another player
- void OnPVPKill(Player* killer, Player* killed)
- {
- // Send in Chat = SMSG_SERVER_MESSAGE
- // Send as Raid Warning = SMSG_NOTIFICATION
- WorldPacket data(SMSG_NOTIFICATION, 100);
- WorldPacket data2(SMSG_NOTIFICATION, 100);
- int32 ItemReward = 29434;
- int32 AmountOfRewardsOnKillStreak[4] = { 5, 10, 15, 30 };
- // Announce on X kills
- const int32 KillerStreak1 = 1;
- const int32 KillerStreak2 = 10;
- const int32 KillerStreak3 = 25;
- const int32 KillerStreak4 = 50;
- int32 KillStreaks[4] = { KillerStreak1, KillerStreak2, KillerStreak3, KillerStreak4 };
- char msg[500];
- uint32 KillerGUID = killer->GetGUIDLow();
- uint32 VictimGUID = killed->GetGUIDLow();
- std::string killername = killer->GetName();
- std::string killedname = killed->GetName();
- struct SystemInfo
- {
- uint32 KillStreak;
- uint32 LastGUIDKill;
- };
- static std::map<uint32, SystemInfo> KillStreakData;
- if (KillerGUID == VictimGUID || KillStreakData[KillerGUID].LastGUIDKill == VictimGUID)
- return;
- if (KillStreakData[VictimGUID].KillStreak >= 5)
- {
- snprintf(msg, 500, "|cffFF0000[PVP SYSTEM]: |cff00FF00%s|r ended |cff00FF00%s|r's killing streak of |cff00FFFF%i|r!", killername.c_str(), killedname.c_str(), KillStreakData[VictimGUID].KillStreak);
- data << msg;
- sWorld.SendGlobalMessage(&data);
- }
- KillStreakData[KillerGUID].KillStreak++;
- KillStreakData[VictimGUID].KillStreak = 0;
- KillStreakData[KillerGUID].LastGUIDKill = VictimGUID;
- KillStreakData[VictimGUID].LastGUIDKill = 0;
- switch (KillStreakData[KillerGUID].KillStreak)
- {
- case KillerStreak1:
- snprintf(msg, 500, "|cffFF0000[PVP SYSTEM]: |cff00FF00%s|r has killed |cff00FF00%s|r and is on |cff00FFFF%i|r killing streak!", killername.c_str(), killedname.c_str(), KillerStreak1);
- data2 << msg;
- sWorld.SendGlobalMessage(&data2);
- killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
- killer->ModifyHonorPoints(500);
- killer->CastSpell(killer, 24378, true);
- break;
- case KillerStreak2:
- snprintf(msg, 500, "|cffFF0000[PVP SYSTEM]: |cff00FF00%s|r has killed |cff00FF00%s|r and is on |cff00FFFF%i|r killing streak!", killername.c_str(), killedname.c_str(), KillerStreak2);
- data2 << msg;
- sWorld.SendGlobalMessage(&data2);
- killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[2]);
- killer->ModifyHonorPoints(1000);
- killer->CastSpell(killer, 24378, true);
- break;
- case KillerStreak3:
- snprintf(msg, 500, "|cffFF0000[PVP SYSTEM]: |cff00FF00%s|r has killed |cff00FF00%s|r and is on |cff00FFFF%i|r killing streak!", killername.c_str(), killedname.c_str(), KillerStreak3);
- data2 << msg;
- sWorld.SendGlobalMessage(&data2);
- killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[3]);
- killer->ModifyHonorPoints(1500);
- killer->CastSpell(killer, 24378, true);
- break;
- case KillerStreak4:
- snprintf(msg, 500, "|cffFF0000[PVP SYSTEM]: |cff00FF00%s|r has killed |cff00FF00%s|r and is on |cff00FFFF%i|r killing streak!", killername.c_str(), killedname.c_str(), KillerStreak4);
- data2 << msg;
- sWorld.SendGlobalMessage(&data2);
- KillStreakData[KillerGUID].KillStreak = 0;
- killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[4]);
- killer->ModifyArenaPoints(100);
- killer->CastSpell(killer, 24378, true);
- break;
- }
- }
- //This function is called when the player logs in (every login)
- void OnLogin(Player* /*pPlayer*/)
- {
- }
- //This function is called when the player logs out
- void OnLogout(Player* /*pPlayer*/)
- {
- }
- //This function is called when the player kills another player
- void OnPVPKill(Player* /*killer*/)
- {
- }
- void AddSC_onevents()
- {
- Script *newscript;
- newscript = new Script;
- newscript->Name = "scripted_on_events";
- newscript->pOnLogin = &OnLogin;
- newscript->pOnLogout = &OnLogout;
- newscript->pOnPVPKill = &OnPVPKill;
- newscript->RegisterSelf();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement