aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/ArenaTeam.cpp18
-rw-r--r--src/game/ArenaTeam.h10
-rw-r--r--src/game/ArenaTeamHandler.cpp52
-rw-r--r--src/game/GuildHandler.cpp4
-rw-r--r--src/game/Mail.cpp2
-rw-r--r--src/game/Player.cpp17
-rw-r--r--src/game/Player.h4
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);