diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/ArenaTeam.cpp | 18 | ||||
-rw-r--r-- | src/game/ArenaTeam.h | 10 | ||||
-rw-r--r-- | src/game/ArenaTeamHandler.cpp | 52 | ||||
-rw-r--r-- | src/game/GuildHandler.cpp | 4 | ||||
-rw-r--r-- | src/game/Mail.cpp | 2 | ||||
-rw-r--r-- | src/game/Player.cpp | 17 | ||||
-rw-r--r-- | src/game/Player.h | 4 |
7 files changed, 62 insertions, 45 deletions
diff --git a/src/game/ArenaTeam.cpp b/src/game/ArenaTeam.cpp index 40b75c047c7..56c1c0e1746 100644 --- a/src/game/ArenaTeam.cpp +++ b/src/game/ArenaTeam.cpp @@ -137,7 +137,7 @@ bool ArenaTeam::AddMember(uint64 PlayerGuid) newmember.games_week = 0; newmember.wins_season = 0; newmember.wins_week = 0; - newmember.personal_rating = 1500; + //newmember.personal_rating = 1500; members.push_back(newmember); CharacterDatabase.PExecute("INSERT INTO arena_team_member (arenateamid,guid) VALUES ('%u', '%u')", Id, GUID_LOPART(newmember.guid)); @@ -150,6 +150,8 @@ bool ArenaTeam::AddMember(uint64 PlayerGuid) // hide promote/remove buttons if(CaptainGuid != PlayerGuid) pl->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + 1 + (GetSlot() * 6), 1); + // TODO: personal_rating + pl->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (GetSlot() * 6) + 5, 1500); } else { @@ -160,6 +162,8 @@ bool ArenaTeam::AddMember(uint64 PlayerGuid) // hide promote/remove buttons if(CaptainGuid != PlayerGuid) Player::SetUInt32ValueInArray(tokens,PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + 1 + (GetSlot() * 6), 1); + // TODO: personal_rating + Player::SetUInt32ValueInArray(tokens,PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (GetSlot() * 6) + 5, 1500); Player::SaveValuesArrayInDB(tokens,PlayerGuid); } @@ -394,7 +398,9 @@ void ArenaTeam::Roster(WorldSession *session) data << uint32(itr->wins_week); // wins this week data << uint32(itr->games_season); // played this season data << uint32(itr->wins_season); // wins this season - data << uint32(itr->personal_rating); // personal rating + //data << uint32(itr->personal_rating); // personal rating + //TODO + data << uint32(pl->GetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + GetSlot() * 6 + 5)); } else { @@ -408,7 +414,9 @@ void ArenaTeam::Roster(WorldSession *session) data << uint32(itr->wins_week); // wins this week data << uint32(itr->games_season); // played this season data << uint32(itr->wins_season); // wins this season - data << uint32(itr->personal_rating); // personal rating + //data << uint32(itr->personal_rating); // personal rating + //TODO + data << uint32(Player::GetUInt32ValueFromDB(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + GetSlot() * 6 + 5, itr->guid)); } } session->SendPacket(&data); @@ -469,7 +477,9 @@ void ArenaTeam::InspectStats(WorldSession *session, uint64 guid) data << uint32(stats.games_season); // season played data << uint32(stats.wins_season); // season wins data << member->games_season; // played (count of all games, that the inspected member participated...) - data << member->personal_rating; // personal rating + //data << member->personal_rating; // personal rating + //TODO + data << uint32(Player::GetUInt32ValueFromDB(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + GetSlot() * 6 + 5, guid)); session->SendPacket(&data); } diff --git a/src/game/ArenaTeam.h b/src/game/ArenaTeam.h index 2e6b3d5faee..2e9f32a97f7 100644 --- a/src/game/ArenaTeam.h +++ b/src/game/ArenaTeam.h @@ -94,7 +94,7 @@ struct ArenaTeamMember uint32 wins_week; uint32 games_season; uint32 wins_season; - uint32 personal_rating; + //uint32 personal_rating; }; struct ArenaTeamStats @@ -154,6 +154,14 @@ class ArenaTeam return NULL; } + ArenaTeamMember* GetMember(std::string& name) + { + for (MemberList::iterator itr = members.begin(); itr != members.end(); ++itr) + if(itr->name==name) + return &(*itr); + + return NULL; + } bool LoadArenaTeamFromDB(uint32 ArenaTeamId); void LoadMembersFromDB(uint32 ArenaTeamId); diff --git a/src/game/ArenaTeamHandler.cpp b/src/game/ArenaTeamHandler.cpp index b5f8e69c918..1ce844c4a26 100644 --- a/src/game/ArenaTeamHandler.cpp +++ b/src/game/ArenaTeamHandler.cpp @@ -291,39 +291,29 @@ void WorldSession::HandleArenaTeamRemoveFromTeamOpcode(WorldPacket & recv_data) recv_data >> name; ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId); - if(!at) - { - // arena team not found + if(!at) // arena team not found return; - } - uint64 guid = objmgr.GetPlayerGUIDByName(name); - if(!guid) + if(at->GetCaptain() != _player->GetGUID()) { - // player guid not found + SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", "", ERR_ARENA_TEAM_PERMISSIONS); return; } - if(at->GetCaptain() == guid) - { - // unsure - SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", "", ERR_ARENA_TEAM_PERMISSIONS); + if(!normalizePlayerName(name)) return; - } - if(at->GetCaptain() != _player->GetGUID()) - { - SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", "", ERR_ARENA_TEAM_PERMISSIONS); + ArenaTeamMember* member = at->GetMember(name); + if(!member) // member not found return; - } - if(at->GetCaptain() == guid) + if(at->GetCaptain() == member->guid) { SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", "", ERR_ARENA_TEAM_LEADER_LEAVE_S); return; } - at->DelMember(guid); + at->DelMember(member->guid); // event WorldPacket data; @@ -345,32 +335,26 @@ void WorldSession::HandleArenaTeamPromoteToCaptainOpcode(WorldPacket & recv_data recv_data >> name; ArenaTeam *at = objmgr.GetArenaTeamById(ArenaTeamId); - if(!at) - { - // arena team not found + if(!at) // arena team not found return; - } - uint64 guid = objmgr.GetPlayerGUIDByName(name); - if(!guid) + if(at->GetCaptain() != _player->GetGUID()) { - // player guid not found + SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", "", ERR_ARENA_TEAM_PERMISSIONS); return; } - if(at->GetCaptain() == guid) - { - // target player already captain + if(!normalizePlayerName(name)) return; - } - if(at->GetCaptain() != _player->GetGUID()) - { - SendArenaTeamCommandResult(ERR_ARENA_TEAM_CREATE_S, "", "", ERR_ARENA_TEAM_PERMISSIONS); + ArenaTeamMember* member = at->GetMember(name); + if(!member) // member not found + return; + + if(at->GetCaptain() == member->guid) // target player already captain return; - } - at->SetCaptain(guid); + at->SetCaptain(member->guid); // event WorldPacket data; diff --git a/src/game/GuildHandler.cpp b/src/game/GuildHandler.cpp index 066c6e60b84..f29a07b89f7 100644 --- a/src/game/GuildHandler.cpp +++ b/src/game/GuildHandler.cpp @@ -977,7 +977,7 @@ void WorldSession::HandleGuildBankDeposit( WorldPacket & recv_data ) pGuild->SetBankMoney(pGuild->GetGuildBankMoney()+money); GetPlayer()->ModifyMoney(-int(money)); - GetPlayer()->SaveGoldToDB(); + GetPlayer()->SaveDataFieldToDB(); //contains money CharacterDatabase.CommitTransaction(); @@ -1033,7 +1033,7 @@ void WorldSession::HandleGuildBankWithdraw( WorldPacket & recv_data ) } GetPlayer()->ModifyMoney(money); - GetPlayer()->SaveGoldToDB(); + GetPlayer()->SaveDataFieldToDB(); // contains money CharacterDatabase.CommitTransaction(); diff --git a/src/game/Mail.cpp b/src/game/Mail.cpp index b01a906dbdf..57d90178869 100644 --- a/src/game/Mail.cpp +++ b/src/game/Mail.cpp @@ -519,7 +519,7 @@ void WorldSession::HandleTakeMoney(WorldPacket & recv_data ) // save money and mail to prevent cheating CharacterDatabase.BeginTransaction(); - pl->SetUInt32ValueInDB(PLAYER_FIELD_COINAGE,pl->GetMoney(),pl->GetGUID()); + pl->SaveDataFieldToDB(); // contains money pl->_SaveMail(); CharacterDatabase.CommitTransaction(); } diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 783172a89d4..b00273b65c4 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -15395,7 +15395,8 @@ void Player::SaveToDB() void Player::SaveInventoryAndGoldToDB() { _SaveInventory(); - SetUInt32ValueInDB(PLAYER_FIELD_COINAGE,GetMoney(),GetGUID()); + //money is in data field + SaveDataFieldToDB(); } void Player::_SaveActions() @@ -15787,6 +15788,20 @@ void Player::SavePositionInDB(uint32 mapid, float x,float y,float z,float o,uint CharacterDatabase.Execute(ss.str().c_str()); } +void Player::SaveDataFieldToDB() +{ + std::ostringstream ss; + ss<<"UPDATE characters SET data='"; + + for(uint16 i = 0; i < m_valuesCount; i++ ) + { + ss << GetUInt32Value(i) << " "; + } + ss<<"' WHERE guid='"<< GUID_LOPART(GetGUIDLow()) <<"'"; + + CharacterDatabase.Execute(ss.str().c_str()); +} + bool Player::SaveValuesArrayInDB(Tokens const& tokens, uint64 guid) { std::ostringstream ss2; diff --git a/src/game/Player.h b/src/game/Player.h index 6aa91c6dfb9..df3edc91f4f 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -1278,7 +1278,7 @@ class TRINITY_DLL_SPEC Player : public Unit void SaveToDB(); void SaveInventoryAndGoldToDB(); // fast save function for item/money cheating preventing - void SaveGoldToDB() { SetUInt32ValueInDB(PLAYER_FIELD_COINAGE,GetMoney(),GetGUID()); } + void SaveDataFieldToDB(); static bool SaveValuesArrayInDB(Tokens const& data,uint64 guid); static void SetUInt32ValueInArray(Tokens& data,uint16 index, uint32 value); static void SetFloatValueInArray(Tokens& data,uint16 index, float value); @@ -1531,7 +1531,7 @@ class TRINITY_DLL_SPEC Player : public Unit void SetInArenaTeam(uint32 ArenaTeamId, uint8 slot) { SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (slot * 6), ArenaTeamId); - SetUInt32ValueInDB(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (slot * 6), ArenaTeamId, GetGUID()); + SaveDataFieldToDB(); // needed? } uint32 GetArenaTeamId(uint8 slot) { return GetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + (slot * 6)); } static uint32 GetArenaTeamIdFromDB(uint64 guid, uint8 slot); |