Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ScriptPCH.h"
- ///////////////////////////////////////////////////////////////////////
- /////////////////////// CONFIG /////////////////////////////
- /////////////////////////////////////////////////////////////////////
- float Version = 2.50f; //Don't touch this.
- bool PvPSystemEnabled = true; //Set to false if you want to disable the PvP System
- bool OnlyInBattlegrounds = false; //Set to true if you want to enable this only in battlegrounds.
- bool LooseTokenOnPvPDeath = false; //Set to true if you want the victim to loose tokens when the victim dies.
- int32 AmountOfItemsYouWantTheVictimToLoose = 1; //Amount of items you want the victim to loose when victim dies.
- bool AddTokenOnPvPKill = true; //Set to false if you don't want the killer to be rewarded.
- int32 ItemReward = 30000; //The ItemID of the reward.
- int32 KillStreaks[5] = { 10, 20, 30, 40, 50 }; //On how many kills the killstreaks should announce & Reward.
- int32 AmountOfRewardsOnKillStreak[5] = { 1, 3, 5, 7, 10 }; //With how many items you want to reward the killer when he slays the victim.
- int32 HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim = 3; //Name speaks for It self.
- ///////////////////////////////////////////////////////////////////
- /////////////////////// END ////////////////////////////
- /////////////////////////////////////////////////////////////////
- struct SystemInfo
- {
- uint32 KillStreak;
- uint32 LastGUIDKill;
- uint8 KillCount;
- };
- static std::map<uint32, SystemInfo> KillingStreak;
- class System_OnPvPKill : public PlayerScript
- {
- public:
- System_OnPvPKill() : PlayerScript("System_OnPvPKill") {}
- void OnPVPKill(Player *pKiller, Player *pVictim)
- {
- if(PvPSystemEnabled == false)
- {
- return;
- }
- elseif(PvPSystemEnabled == true)
- {
- uint32 kGUID;
- uint32 vGUID;
- char msg[500];
- kGUID = pKiller->GetGUID();
- vGUID = pVictim->GetGUID();
- if(kGUID == vGUID)
- {
- return;
- }
- if(KillingStreak[kGUID].LastGUIDKill == vGUID)
- {
- KillingStreak[kGUID].KillCount++;
- KillingStreak[vGUID].KillCount = 1;
- KillingStreak[kGUID].KillStreak++;
- KillingStreak[vGUID].Killstreak = 0;
- pKiller->AddItem(ItemReward, 1);
- if(LooseTokenOnPvPDeath == true)
- pVictim->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false);
- }
- if(KillingStreak[kGUID].LastGUIDKill != vGUID)
- {
- KillingStreak[kGUID].KillCount = 1;
- KillingStreak[vGUID].KillCount = 1;
- }
- if(KillingStreak[kGUID].KillCount == HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim)
- {
- return;
- }
- if(OnlyInBattlegrounds == true)
- {
- if(!pKiller->GetMap()->IsBattleground())
- return;
- }
- KillingStreak[kGUID].KillStreak++;
- KillingStreak[vGUID].KillStreak = 0;
- KillingStreak[kGUID].LastGUIDKill = vGUID;
- KillingStreak[vGUID].LastGUIDKill = 0;
- if(AddTokenOnPvPKill == true)
- pKiller->AddItem(ItemReward, 1);
- if(LooseTokenOnPvPDeath == true)
- pVictim->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false);
- switch(KillingStreak[kGUID].KillStreak)
- {
- case KillStreaks[1]:
- sprintf(msg, "[PvP System]: %s killed %s and is on a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[1]);
- sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
- pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
- break;
- case KillStreaks[2]:
- sprintf(msg, "[PvP System]: %s killed %s and is on a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[2]);
- sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
- pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[2]);
- break;
- case KillStreaks[3]:
- sprintf(msg, "[PvP System]: %s killed %s and is on a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[3]);
- sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
- pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[3]);
- break;
- case KillStreaks[4]:
- sprintf(msg, "[PvP System]: %s killed %s and is on a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[4]);
- sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
- pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[4]);
- break;
- case KillStreaks[5]:
- sprintf(msg, "[PvP System]: %s killed %s and is on a %u kill streak. ", pKiller->GetName(), pVictim->GetName(), KillStreaks[5]);
- sWorld.SendWorldText(LANG_SYSTEMMESSAGE, msg);
- pKiller->AddItem(ItemReward, AmountOfRewardsOnKillStreak[5]);
- KillingStreak[kGUID].KillStreak = 0;
- break;
- }
- }
- }
- };
- void AddSC_System()
- {
- new System_OnPvPKill;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement