• This is a read only backup of the old Emudevs forum. If you want to have anything removed, please message me on Discord: KittyKaev

[WotLK] [C++] Killsreak system - UPDATED

Wolord

Exalted Member
[WotLK] [C++] Killstreak system - UPDATED

Hi EmuDevs, Today i updated the killstreak system for latest TrinityCore.:congrats:
There is no need to edit language.h

Code:
#include "ScriptPCH.h"
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////// KILLSTREAK CONFIG ////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool PvPSystemEnabled = true;
bool OnlyInBattlegrounds = true;
bool LooseTokenOnPvPDeath = true;
int32 AmountOfItemsYouWantTheVictimToLoose = 1;
bool AddTokenOnPvPKill = true;
int32 ItemReward = 23247;
int32 AmountOfRewardsOnKillStreak[9] = { 4, 6, 8, 10, 12, 14, 16, 18, 20 };
int32 HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim = 2;
const int32 KillerStreak1 = 05;
const int32 KillerStreak2 = 10;
const int32 KillerStreak3 = 15;
const int32 KillerStreak4 = 20;
const int32 KillerStreak5 = 30;
const int32 KillerStreak6 = 40;
const int32 KillerStreak7 = 50;
const int32 KillerStreak8 = 60;
const int32 KillerStreak9 = 70;
int32 KillStreaks[9] = { KillerStreak1, KillerStreak2, KillerStreak3, KillerStreak4, KillerStreak5, KillerStreak6, KillerStreak7, KillerStreak8, KillerStreak9 };
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct SystemInfo
{
	uint32 KillStreak;
	uint32 LastGUIDKill;
	uint8 KillCount;
};

static std::map<uint32, SystemInfo> KillingStreak;

class killstreak_system : public PlayerScript
{
public:
	killstreak_system() : PlayerScript("killstreak_system") { }

	void OnPVPKill(Player* killer, Player* killed)
	{
		if (PvPSystemEnabled == false)
		{
			return;
		}
		else if (PvPSystemEnabled == true)
		{
			uint32 kGUID; 
			uint32 vGUID;
			char msg[500];
			kGUID = killer->GetGUID();
			vGUID = killed->GetGUID();

			if (kGUID == vGUID)
			{
				return;
			}

			if (KillingStreak[kGUID].LastGUIDKill == vGUID)
			{
				KillingStreak[kGUID].KillCount++;
				KillingStreak[vGUID].KillCount = 1;
				killer->AddItem(ItemReward, 1);
				if (LooseTokenOnPvPDeath == true)
				{
					killed->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 (!killer->GetMap()->IsBattleground() || killer->GetMapId() == 30)
				{
					return;
				}
			}

			KillingStreak[kGUID].KillStreak++;
			KillingStreak[vGUID].KillStreak = 0;
			KillingStreak[kGUID].LastGUIDKill = vGUID;
			KillingStreak[vGUID].LastGUIDKill = 0;

			if (AddTokenOnPvPKill == true)
			{
				killer->AddItem(29435, 1);
			}

			if (LooseTokenOnPvPDeath == true)
			{
				killed->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true);
			}

			switch(KillingStreak[kGUID].KillStreak)
			{
				case KillerStreak1:
					sprintf(msg, "|cffFF0000[KillStreak Announcer]: |cff00FF00%s|r killed |cff00FF00%s|r and is on |cff00FFFF5|r kill streak.", killer->GetName().c_str(), killed->GetName().c_str());
					sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
					killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[1]);
					killer->ModifyHonorPoints(500);
					killer->CastSpell(killer, 24378, true);
					break;

				case KillerStreak2:
					sprintf(msg, "|cffFF0000[KillStreak Announcer]: |cff00FF00%s|r killed |cff00FF00%s|r and is on |cff00FFFF10|r kill streak.", killer->GetName().c_str(), killed->GetName().c_str());
					sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
					killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[2]);
					killer->ModifyHonorPoints(1000);
					killer->CastSpell(killer, 24378, true);
					break;

				case KillerStreak3:
					sprintf(msg, "|cffFF0000[KillStreak Announcer]: |cff00FF00%s|r killed |cff00FF00%s|r and is on |cff00FFFF15|r kill streak.", killer->GetName().c_str(), killed->GetName().c_str());
					sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
					killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[3]);
					killer->ModifyHonorPoints(1500);
					killer->CastSpell(killer, 24378, true);
					break;

				case KillerStreak4:
					sprintf(msg, "|cffFF0000[KillStreak Announcer]: |cff00FF00%s|r killed |cff00FF00%s|r and is on |cff00FFFF20|r kill streak.", killer->GetName().c_str(), killed->GetName().c_str());
					sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
					killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[4]);
					killer->ModifyHonorPoints(2000);
					killer->CastSpell(killer, 24378, true);
					break;

				case KillerStreak5:
					sprintf(msg, "|cffFF0000[KillStreak Announcer]: |cff00FF00%s|r killed |cff00FF00%s|r and is on |cff00FFFF30|r kill streak.", killer->GetName().c_str(), killed->GetName().c_str());
					sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
					killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[5]);
					killer->ModifyHonorPoints(3000);
					killer->CastSpell(killer, 24378, true);
					break;

				case KillerStreak6:
					sprintf(msg, "|cffFF0000[KillStreak Announcer]: |cff00FF00%s|r killed |cff00FF00%s|r and is on |cff00FFFF40|r kill streak.", killer->GetName().c_str(), killed->GetName().c_str());
					sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
					killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[6]);
					killer->ModifyHonorPoints(4000);
					killer->CastSpell(killer, 24378, true);
					break;

				case KillerStreak7:
					sprintf(msg, "|cffFF0000[KillStreak Announcer]: |cff00FF00%s|r killed |cff00FF00%s|r and is on |cff00FFFF50|r kill streak.", killer->GetName().c_str(), killed->GetName().c_str());
					sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
					killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[7]);
					killer->ModifyHonorPoints(5000);
					killer->CastSpell(killer, 24378, true);
					break;

				case KillerStreak8:
					sprintf(msg, "|cffFF0000[KillStreak Announcer]: |cff00FF00%s|r killed |cff00FF00%s|r and is on |cff00FFFF60|r kill streak.", killer->GetName().c_str(), killed->GetName().c_str());
					sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
					killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[8]);
					killer->ModifyHonorPoints(6000);
					killer->CastSpell(killer, 24378, true);
					break;

				case KillerStreak9:
					sprintf(msg, "|cffFF0000[KillStreak Announcer]: |cff00FF00%s|r killed |cff00FF00%s|r and is on |cff00FFFF70|r kill streak.", killer->GetName().c_str(), killed->GetName().c_str());
					sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
					killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[9]);
					KillingStreak[kGUID].KillStreak = 0;
					killer->ModifyHonorPoints(7000);
					killer->CastSpell(killer, 24378, true);
					break;
			}
		}
	}
};

void AddSC_killstreak_system()
{
	new killstreak_system;
}

ALL REGARDS TO THE PERSON WHO HAD MADE IT.

Special Thanks To : Rochet2
 
Last edited:

newbieON

Respected Member
I try this one
#include "ScriptPCH.h"
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////// KILLSTREAK CONFIG ////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool PvPSystemEnabled = true;
bool OnlyInBattlegrounds = true;
bool LooseTokenOnPvPDeath = true;
int32 AmountOfItemsYouWantTheVictimToLoose = 1;
bool AddTokenOnPvPKill = true;
int32 ItemReward = 29434;
int32 AmountOfRewardsOnKillStreak[5] = { 10, 20, 30, 40, 50, };
int32 HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim = 2;
const int32 KillerStreak1 = 10;
const int32 KillerStreak2 = 20;
const int32 KillerStreak3 = 30;
const int32 KillerStreak4 = 40;
const int32 KillerStreak5 = 50;
const int32 KillerStreak6 = 40;
const int32 KillerStreak7 = 50;

int32 KillStreaks[9] = { KillerStreak1, KillerStreak2, KillerStreak3, KillerStreak4, KillerStreak5, KillerStreak6, KillerStreak7 };
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct SystemInfo
{
uint32 KillStreak;
uint32 LastGUIDKill;
uint8 KillCount;
};

static std::map<uint32, SystemInfo> KillingStreak;

class killstreak_system : public PlayerScript
{
public:
killstreak_system() : PlayerScript("killstreak_system") { }

void OnPVPKill(Player* killer, Player* killed)
{
if (PvPSystemEnabled == false)
{
return;
}
else if (PvPSystemEnabled == true)
{
uint32 kGUID;
uint32 vGUID;
char msg[500];
kGUID = killer->GetGUID();
vGUID = killed->GetGUID();

if (kGUID == vGUID)
{
return;
}

if (KillingStreak[kGUID].LastGUIDKill == vGUID)
{
KillingStreak[kGUID].KillCount++;
KillingStreak[vGUID].KillCount = 1;
killer->AddItem(ItemReward, 1);
if (LooseTokenOnPvPDeath == true)
{
killed->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 (!killer->GetMap()->IsBattleground() || killer->GetMapId() == 30)
{
return;
}
}

KillingStreak[kGUID].KillStreak++;
KillingStreak[vGUID].KillStreak = 0;
KillingStreak[kGUID].LastGUIDKill = vGUID;
KillingStreak[vGUID].LastGUIDKill = 0;

if (AddTokenOnPvPKill == true)
{
killer->AddItem(29435, 1);
}

if (LooseTokenOnPvPDeath == true)
{
killed->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true);
}

switch(KillingStreak[kGUID].KillStreak)
{
case KillerStreak1:
sprintf(msg, "[PvP System]: %s killed %s and is on a kill streak! ", killer->GetName(), killed->GetName());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[15]);
killer->ModifyHonorPoints(0);
killer->CastSpell(killer, 29434, true);
break;

case KillerStreak2:
sprintf(msg, "[PvP System]: %s killed %s and is on a Rampage! ", killer->GetName(), killed->GetName());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[25]);
killer->ModifyHonorPoints(0);
killer->CastSpell(killer, 29434, true);
break;

case KillerStreak3:
sprintf(msg, "[PvP System]: %s killed %s and is Unstopable! ", killer->GetName(), killed->GetName());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[35]);
killer->ModifyHonorPoints(0);
killer->CastSpell(killer, 29434, true);
break;

case KillerStreak4:
sprintf(msg, "[PvP System]: %s killed %s and is DOMINATING! ", killer->GetName(), killed->GetName());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[45]);
killer->ModifyHonorPoints(0);
killer->CastSpell(killer, 29434, true);
break;

case KillerStreak5:
sprintf(msg, "[PvP System]: %s killed %s and is Godlike! ", killer->GetName(), killed->GetName());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[55]);
killer->ModifyHonorPoints(0);
killer->CastSpell(killer, 29434, true);
break;

}
}
}
};

void AddSC_killstreak_system()
{
new killstreak_system;
}



But i get error like this
/TrinityCore/src/server/scripts/Custom/killstreak_system.cpp: In member fun ction 'virtual void killstreak_system::OnPVPKill(Player*, Player*)':
/TrinityCore/src/server/scripts/Custom/killstreak_system.cpp:105:111: error : cannot pass objects of non-trivially-copyable type 'const string {aka const cl ass std::basic_string<char>}' through '...'
compilation terminated due to -Wfatal-errors.
make[2]: *** [src/server/scripts/CMakeFiles/scripts.dir/Custom/killstreak_system .cpp.o] Error 1
make[1]: *** [src/server/scripts/CMakeFiles/scripts.dir/all] Error 2
make: *** [all] Error 2
 

Wolord

Exalted Member
This error is because of that you have amount of killstreaks are 5 but used:

case KillerStreak1:
sprintf(msg, "[PvP System]: %s killed %s and is on a kill streak! ", killer->GetName(), killed->GetName());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[15]);
killer->ModifyHonorPoints(0);
killer->CastSpell(killer, 29434, true);
break;

case KillerStreak2:
sprintf(msg, "[PvP System]: %s killed %s and is on a Rampage! ", killer->GetName(), killed->GetName());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[25]);
killer->ModifyHonorPoints(0);
killer->CastSpell(killer, 29434, true);
break;

case KillerStreak3:
sprintf(msg, "[PvP System]: %s killed %s and is Unstopable! ", killer->GetName(), killed->GetName());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[35]);
killer->ModifyHonorPoints(0);
killer->CastSpell(killer, 29434, true);
break;

case KillerStreak4:
sprintf(msg, "[PvP System]: %s killed %s and is DOMINATING! ", killer->GetName(), killed->GetName());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[45]);
killer->ModifyHonorPoints(0);
killer->CastSpell(killer, 29434, true);
break;

case KillerStreak5:
sprintf(msg, "[PvP System]: %s killed %s and is Godlike! ", killer->GetName(), killed->GetName());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[55]);
killer->ModifyHonorPoints(0);
killer->CastSpell(killer, 29434, true);
break;

about rewarding Badges on killstreak just change : ItemReward -> BadgeItemID
 

newbieON

Respected Member
at first thank you...
I became still a error...
I try it with your post i dont change something but have still this error here:

/TrinityCore/src/server/scripts/Custom/killstreak_system.cpp: In member function 'virtual void killstreak_system::OnPVPKill(Player*, Player*)':
TrinityCore/src/server/scripts/Custom/killstreak_system.cpp:106:166: error: cannot pass objects of non-trivially-copyable type 'const string {aka const class std::basic_string<char>}' through '...'
compilation terminated due to -Wfatal-errors.
make[2]: *** [src/server/scripts/CMakeFiles/scripts.dir/Custom/killstreak_system.cpp.o] Error 1
make[1]: *** [src/server/scripts/CMakeFiles/scripts.dir/all] Error 2
make: *** [all] Error 2
 

newbieON

Respected Member
Hi all i complie it now like that...


#include "ScriptPCH.h"
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////// KILLSTREAK CONFIG ////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool PvPSystemEnabled = true;
bool OnlyInBattlegrounds = true;
bool LooseTokenOnPvPDeath = true;
int32 AmountOfItemsYouWantTheVictimToLoose = 1;
bool AddTokenOnPvPKill = true;
int32 ItemReward = 23247;
int32 AmountOfRewardsOnKillStreak[5] = { 4, 6, 8, 10, 12, 14, 16, 18, 20 };
int32 HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim = 2;
const int32 KillerStreak1 = 10;
const int32 KillerStreak2 = 20;
const int32 KillerStreak3 = 30;
const int32 KillerStreak4 = 40;
const int32 KillerStreak5 = 50;
int32 KillStreaks[5] = { KillerStreak1, KillerStreak2, KillerStreak3, KillerStreak4, KillerStreak5 };
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
struct SystemInfo
{
uint32 KillStreak;
uint32 LastGUIDKill;
uint8 KillCount;
};

static std::map<uint32, SystemInfo> KillingStreak;

class killstreak_system : public PlayerScript
{
public:
killstreak_system() : PlayerScript("killstreak_system") { }

void OnPVPKill(Player* killer, Player* killed)
{
if (PvPSystemEnabled == false)
{
return;
}
else if (PvPSystemEnabled == true)
{
uint32 kGUID;
uint32 vGUID;
char msg[500];
kGUID = killer->GetGUID();
vGUID = killed->GetGUID();

if (kGUID == vGUID)
{
return;
}

if (KillingStreak[kGUID].LastGUIDKill == vGUID)
{
KillingStreak[kGUID].KillCount++;
KillingStreak[vGUID].KillCount = 1;
killer->AddItem(ItemReward, 1);
if (LooseTokenOnPvPDeath == true)
{
killed->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 (!killer->GetMap()->IsBattleground() || killer->GetMapId() == 30)
{
return;
}
}

KillingStreak[kGUID].KillStreak++;
KillingStreak[vGUID].KillStreak = 0;
KillingStreak[kGUID].LastGUIDKill = vGUID;
KillingStreak[vGUID].LastGUIDKill = 0;

if (AddTokenOnPvPKill == true)
{
killer->AddItem(29435, 1);
}

if (LooseTokenOnPvPDeath == true)
{
killed->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true);
}

switch(KillingStreak[kGUID].KillStreak)
{
case KillerStreak1:
sprintf(msg, "[PvP System]: %s killed %s and is on a kill streak! ", killer->GetName().c_str(), killed->GetName().c_str());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[15]);
killer->ModifyHonorPoints(0);
killer->CastSpell(killer, 24378, true);
break;

case KillerStreak2:
sprintf(msg, "[PvP System]: %s killed %s and is on a Rampage! ", killer->GetName().c_str(), killed->GetName().c_str());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[25]);
killer->ModifyHonorPoints(0);
killer->CastSpell(killer, 24378, true);
break;

case KillerStreak3:
sprintf(msg, "[PvP System]: %s killed %s and is Unstopable! ", killer->GetName().c_str(), killed->GetName().c_str());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[35]);
killer->ModifyHonorPoints(0);
killer->CastSpell(killer, 24378, true);
break;

case KillerStreak4:
sprintf(msg, "[PvP System]: %s killed %s and is DOMINATING! ", killer->GetName().c_str(), killed->GetName().c_str());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[45]);
killer->ModifyHonorPoints(0);
killer->CastSpell(killer, 24378, true);
break;

case KillerStreak5:
sprintf(msg, "[PvP System]: %s killed %s and is Godlike! ", killer->GetName().c_str(), killed->GetName().c_str());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
killer->AddItem(ItemReward, AmountOfRewardsOnKillStreak[55]);
killer->ModifyHonorPoints(0);
killer->CastSpell(killer, 24378, true);
break;


}
}
}
};

void AddSC_killstreak_system()
{
new killstreak_system;

Is it right that it give now on
10 kills 15 Badges
20 kills 25 Badges
30 kills 35 Badges
40 kills 45 Badges
50 kills 55 Badges

Thank you all
 
S

Seez

Guest
Tried using this but it compiles and everything fine without errors just doesnt do anything ingame
 

Tommy

Founder
Killing different players?

Killing different players will work. The script is made like so: Kill a player, if you kill the same player more than how many times it is allowed you won't receive a reward.

It appears you can increase same victim killings by increasing the value of:

Code:
int32 HowManyTimesYouWantTheKillerToGetAwardedForKillingTheSameVictim = 2;
 
S

Seez

Guest
Okay, I got this working, Anyone know how I can update it to announce when someone ends the persons killstreak? Would be appreciated :)
 

Tommy

Founder
You can add that in the if statement where the killer becomes the victim:

Code:
if (KillingStreak[kGUID].LastGUIDKill == vGUID)

Example:

Code:
    if (KillingStreak[kGUID].LastGUIDKill == vGUID)
    {
        KillingStreak[kGUID].KillCount++;
        [COLOR="green"]std::ostringstream ss;
        ss << killer->GetName() << " has ended " << killed->GetName() << "'s kill streak of " << KillingStreak[vGUID].KillCount << "!";
        sWorld->SendGlobalText(ss.str().c_str(), NULL);
        KillingStreak[vGUID].KillCount = 1;[/COLOR]
        killer->AddItem(ItemReward, 1);
        if (LooseTokenOnPvPDeath == true)
            killed->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false);
    }
 
S

Seez

Guest
Thank you very much tommy Appreciate it :)!
 
Last edited:
S

Seez

Guest
How would I change the text to match the rest of the scripts announcements?

I tried changing your text to

sprintf(msg, "|cffFF0000[Psychosis PvP]: |cff00FF00%s|r has ended |cff00FF00%s|r's kill streak of|cff00FFFF%s|r", killer->GetName().c_str(), killed->GetName().c_str(), KillingStreak[vGUID].KillCount.c_str());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
but doenst work XD


EDIT
------------------

http://puu.sh/jydyS/7e3861168d.jpg
Tried testing again..Killed a player, get your token as you should, kill thje player again. it announces the message of ended killstreak, and wont
http://puu.sh/jydG2/9091763475.jpg
 
Last edited:

Tommy

Founder
How would I change the text to match the rest of the scripts announcements?

I tried changing your text to

sprintf(msg, "|cffFF0000[Psychosis PvP]: |cff00FF00%s|r has ended |cff00FF00%s|r's kill streak of|cff00FFFF%s|r", killer->GetName().c_str(), killed->GetName().c_str(), KillingStreak[vGUID].KillCount.c_str());
sWorld->SendServerMessage(SERVER_MSG_STRING, msg);
but doenst work XD


EDIT
------------------

http://puu.sh/jydyS/7e3861168d.jpg
Tried testing again..Killed a player, get your token as you should, kill thje player again. it announces the message of ended killstreak, and wont
http://puu.sh/jydG2/9091763475.jpg

First off, the reason why it shows a weird symbol is because you have c_str() at the end of "KillingStreak[vGUID].KillCount". Not suppose to add those next to integers. :p

Editing the end of kill streak is very simple. I prefer to use ostringstream and sWorld->SendGlobalText, honestly.

Code:
ss << "|cffFF0000[Psychosis PvP]:|r |cff00FF00"
   << killer->GetName() 
   << "|r has ended |cff00FF00" 
   << killed->GetName() 
   << "'s|r kill streak of |cff00FFFF" 
   << KillingStreak[vGUID].KillCount 
   << "|r!";

That should do it. Output:

Code:
    if (KillingStreak[kGUID].LastGUIDKill == vGUID)
    {
        KillingStreak[kGUID].KillCount++;
[COLOR="#008000"]        std::ostringstream ss;
        ss << "|cffFF0000[Psychosis PvP]:|r |cff00FF00"
          << killer->GetName() 
          << "|r has ended |cff00FF00" 
          << killed->GetName() 
          << "'s|r kill streak of |cff00FFFF" 
          << KillingStreak[vGUID].KillCount 
          << "|r!";
        sWorld->SendGlobalText(ss.str().c_str(), NULL);[/COLOR]
        KillingStreak[vGUID].KillCount = 1;
        killer->AddItem(ItemReward, 1);
        if (LooseTokenOnPvPDeath == true)
            killed->DestroyItemCount(ItemReward, AmountOfItemsYouWantTheVictimToLoose, true, false);
    }
 
Top