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; }
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; } }