Example #1
0
		bool OnGossipSelectCode(Player* pPlayer, Creature* pCreature, uint32 uiSender, uint32 uiAction, const char * code)
		{
			pPlayer->PlayerTalkClass->ClearMenus();
			if ( uiSender == GOSSIP_SENDER_MAIN )
			{
				if(islower(code[0]))
					toupper(code[0]);

				if(passChecks(pPlayer, code))
				{
					Player * pBounty = sObjectAccessor->FindPlayerByName(code);
					switch (uiAction)
					{
						case GOSSIP_ACTION_INFO_DEF+5:
						{
							if(hasCurrency(pPlayer, BOUNTY_PRICE_1, SET_CURRENCY))
							{
								#if SET_CURRENCY != 2
								CharacterDatabase.PExecute("INSERT INTO bounties VALUES('%u','20', '1')", pBounty->GetGUID());
								#else
								CharacterDatabase.PExecute("INSERT INTO bounties VALUES('%u','1', '1')", pBounty->GetGUID());
								#endif
								alertServer(code, 1);
								flagPlayer(code);
								pPlayer->PlayerTalkClass->CloseGossip();
							}
							break;
						}
							
						case GOSSIP_ACTION_INFO_DEF+6:
						{
							if(hasCurrency(pPlayer, BOUNTY_PRICE_2, SET_CURRENCY))
							{
								#if SET_CURRENCY != 2
								CharacterDatabase.PExecute("INSERT INTO bounties VALUES('%u', '40', '2')", pBounty->GetGUID());
								#else
								CharacterDatabase.PExecute("INSERT INTO bounties VALUES('%u', '3', '2')", pBounty->GetGUID());
								#endif
								alertServer(code, 1);
								flagPlayer(code);
								pPlayer->PlayerTalkClass->CloseGossip();
							}
							break;
						}
						case GOSSIP_ACTION_INFO_DEF+7:
						{
							if(hasCurrency(pPlayer, BOUNTY_PRICE_3, SET_CURRENCY))
							{
								#if SET_CURRENCY != 2
								CharacterDatabase.PExecute("INSERT INTO bounties VALUES('%u', '100', '3')", pBounty->GetGUID());
								#else
								CharacterDatabase.PExecute("INSERT INTO bounties VALUES('%u', '5', '3')", pBounty->GetGUID());
								#endif
								alertServer(code, 1);
								flagPlayer(code);
								pPlayer->PlayerTalkClass->CloseGossip();
							}
							break;
						}
						case GOSSIP_ACTION_INFO_DEF+8:
						{
							if(hasCurrency(pPlayer, BOUNTY_PRICE_4, SET_CURRENCY))
							{
								#if SET_CURRENCY != 2
								CharacterDatabase.PExecute("INSERT INTO bounties VALUES('%u', '200', '4')", pBounty->GetGUID());
								#else
								CharacterDatabase.PExecute("INSERT INTO bounties VALUES('%u', '10', '3')", pBounty->GetGUID());
								#endif
								alertServer(code, 1);
								flagPlayer(code);
								pPlayer->PlayerTalkClass->CloseGossip();
							}
							break;
						}

					}
				}
				else
				{
					pPlayer->PlayerTalkClass->CloseGossip();
				}
			}
			return true;
		}
Example #2
0
		void OnPVPKill(Player * Killer, Player * Bounty)
		{
			if(Killer->GetGUID() == Bounty->GetGUID())
				return;

			QueryResult result = CharacterDatabase.PQuery("SELECT * FROM bounties WHERE guid='%u'", Bounty->GetGUID());
			if(!result)
				return;

			Field * fields = result->Fetch();
#if SET_CURRENCY == 0
			switch(fields[2].GetUInt64())
			{
			case 1:
				Killer->SetMoney(Killer->GetMoney() + (BOUNTY_PRICE_1 * 10000));
				break;
			case 2:
				Killer->SetMoney(Killer->GetMoney() + (BOUNTY_PRICE_2 * 10000));
				break;
			case 3:
				Killer->SetMoney(Killer->GetMoney() + (BOUNTY_PRICE_3 * 10000));
				break;
			case 4:
				Killer->SetMoney(Killer->GetMoney() + (BOUNTY_PRICE_4 * 10000));
				break;
			}
#endif
// TODO
/* #if SET_CURRENCY == 1
			switch(fields[2].GetUInt64())
			{
			case 1:
				Killer->ModifyHonorPoints(Killer->GetHonorPoints() + (BOUNTY_PRICE_1));
				break;
			case 2:
				Killer->ModifyHonorPoints(Killer->GetHonorPoints() + (BOUNTY_PRICE_2));
				break;
			case 3:
				Killer->ModifyHonorPoints(Killer->GetHonorPoints() + (BOUNTY_PRICE_3));
				break;
			case 4:
				Killer->ModifyHonorPoints(Killer->GetHonorPoints()) + (BOUNTY_PRICE_4));
				break;
			}
#endif */
#if SET_CURRENCY == 2
			switch(fields[2].GetUInt64())
			{
			case 1:
				Killer->AddItem(TOKEN_ID, BOUNTY_PRICE_1);
				break;
			case 2:
				Killer->AddItem(TOKEN_ID, BOUNTY_PRICE_2);
				break;
			case 3:
				Killer->AddItem(TOKEN_ID, BOUNTY_PRICE_3);
				break;
			case 4:
				Killer->AddItem(TOKEN_ID, BOUNTY_PRICE_4);
				break;
			}
#endif
			CharacterDatabase.PExecute("DELETE FROM bounties WHERE guid='%u'", Bounty->GetGUID());
			alertServer(Bounty->GetName(), 2);

		}
	void OnPVPKill(Player * killer, Player * victim)
	{
		if (killer->GetGUID() == victim->GetGUID())
			return;
		if (isInArena(killer) || isInArena(victim))
			return;
		
		int32 kKillstreak = GetKillstreak(killer);
		int32 vKillstreak = GetKillstreak(victim);

		if (vKillstreak >= 25)
			killer->SetArenaPoints(killer->GetArenaPoints() + 50);

		if (kKillstreak == -1)
			CharacterDatabase.PExecute("REPLACE INTO killstreak(guid, ks) VALUES ('%u', 1)", killer->GetGUID());
		else
		{
			CharacterDatabase.PExecute("UPDATE killstreak SET ks = (ks+1) WHERE guid = '%u'", killer->GetGUID());
			QueryResult ks = CharacterDatabase.PQuery("SELECT * FROM killstreak WHERE guid = '%u'", killer->GetGUID());
			Field * high_ks = ks->Fetch();
			if (kKillstreak > high_ks[2].GetInt32())
				CharacterDatabase.PExecute("UPDATE killstreak SET high_ks = ks WHERE guid = '%u'", killer->GetGUID());

		}

		if (vKillstreak > 0)
		{
			CharacterDatabase.PExecute("UPDATE killstreak SET ks = 0 WHERE guid = '%u'", victim->GetGUID());
			// Only send a server message if their streak is 5 or more
			if (vKillstreak >= 5)
				alertServer(killer, victim, vKillstreak, 0);
		}

		switch(kKillstreak)
		{
			case 5:
				alertServer(killer, victim, kKillstreak, 1);
				killer->AddItem(6657, 5);
				break;
			case 10:
				alertServer(killer, victim, kKillstreak, 1);
				killer->AddItem(20558, 1);
				break;
			case 15:
				alertServer(killer, victim, kKillstreak, 1);
				killer->AddItem(8529, 15);
				break;
			case 20:
				alertServer(killer, victim, kKillstreak, 1);
				killer->AddItem(20558, 2);
				break;
			case 25:
				alertServer(killer, victim, kKillstreak, 2);
				break;
			case 30:
				alertServer(killer, victim, kKillstreak, 2);
				killer->AddItem(20558, 3);
				break;
			case 35:
				alertServer(killer, victim, kKillstreak, 2);
				break;
			case 40:
				alertServer(killer, victim, kKillstreak, 2);
				killer->AddItem(20558, 4);
				break;
			case 45:
				alertServer(killer, victim, kKillstreak, 2);
				break;
			case 50:
				alertServer(killer, victim, kKillstreak, 2);
				killer->AddItem(20558, 5);
				break;
			case 55:
				alertServer(killer, victim, kKillstreak, 2);
				break;
			case 60:
				alertServer(killer, victim, kKillstreak, 2);
				killer->AddItem(20558, 6);
				break;
			case 65:
				alertServer(killer, victim, kKillstreak, 2);
				break;
			case 70:
				alertServer(killer, victim, kKillstreak, 2);
				killer->AddItem(20558, 7);
				break;
			case 75:
				alertServer(killer, victim, kKillstreak, 2);
				break;
			case 80:
				alertServer(killer, victim, kKillstreak, 2);
				killer->AddItem(20558, 8);
				break;
			case 85:
				alertServer(killer, victim, kKillstreak, 2);
				break;
			case 90:
				alertServer(killer, victim, kKillstreak, 2);
				killer->AddItem(20558, 9);
				break;
			case 95:
				alertServer(killer, victim, kKillstreak, 2);
				break;
			case 100:
				alertServer(killer, victim, kKillstreak, 2);
				killer->AddItem(20558, 10);
				break;
		}
	}