aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarbenium <carbenium@outlook.com>2016-02-02 23:19:37 +0100
committerCarbenium <carbenium@outlook.com>2016-02-02 23:19:37 +0100
commit3ea1cfc4d0eeec14a4801de5cc97211a3ad754f1 (patch)
tree50b50a3584513929d74236ff3099ddb0e94a68ce /src
parentaa5c9475555a8febb130d98f392546a00e1ebbb2 (diff)
Core/PacketIO: Updated and enabled CMSG_SET_PLAYER_DECLINED_NAMES
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp46
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.cpp13
-rw-r--r--src/server/game/Server/Packets/CharacterPackets.h11
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
-rw-r--r--src/server/game/Server/WorldSession.h3
5 files changed, 42 insertions, 33 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index 8c89f19357f..e34b2320c10 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -1350,80 +1350,64 @@ void WorldSession::HandleCharRenameCallBack(PreparedQueryResult result, WorldPac
sWorld->UpdateCharacterInfo(renameInfo->Guid, renameInfo->NewName);
}
-void WorldSession::HandleSetPlayerDeclinedNames(WorldPacket& recvData)
+void WorldSession::HandleSetPlayerDeclinedNames(WorldPackets::Character::SetPlayerDeclinedNames& packet)
{
- ObjectGuid guid;
-
- recvData >> guid;
-
// not accept declined names for unsupported languages
std::string name;
- if (!ObjectMgr::GetPlayerNameByGUID(guid, name))
+ if (!ObjectMgr::GetPlayerNameByGUID(packet.Player, name))
{
- SendSetPlayerDeclinedNamesResult(DECLINED_NAMES_RESULT_ERROR, guid);
+ SendSetPlayerDeclinedNamesResult(DECLINED_NAMES_RESULT_ERROR, packet.Player);
return;
}
std::wstring wname;
if (!Utf8toWStr(name, wname))
{
- SendSetPlayerDeclinedNamesResult(DECLINED_NAMES_RESULT_ERROR, guid);
+ SendSetPlayerDeclinedNamesResult(DECLINED_NAMES_RESULT_ERROR, packet.Player);
return;
}
if (!isCyrillicCharacter(wname[0])) // name already stored as only single alphabet using
{
- SendSetPlayerDeclinedNamesResult(DECLINED_NAMES_RESULT_ERROR, guid);
- return;
- }
-
- std::string name2;
- DeclinedName declinedname;
-
- recvData >> name2;
-
- if (name2 != name) // character have different name
- {
- SendSetPlayerDeclinedNamesResult(DECLINED_NAMES_RESULT_ERROR, guid);
+ SendSetPlayerDeclinedNamesResult(DECLINED_NAMES_RESULT_ERROR, packet.Player);
return;
}
for (int i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
{
- recvData >> declinedname.name[i];
- if (!normalizePlayerName(declinedname.name[i]))
+ if (!normalizePlayerName(packet.DeclinedNames.name[i]))
{
- SendSetPlayerDeclinedNamesResult(DECLINED_NAMES_RESULT_ERROR, guid);
+ SendSetPlayerDeclinedNamesResult(DECLINED_NAMES_RESULT_ERROR, packet.Player);
return;
}
}
- if (!ObjectMgr::CheckDeclinedNames(wname, declinedname))
+ if (!ObjectMgr::CheckDeclinedNames(wname, packet.DeclinedNames))
{
- SendSetPlayerDeclinedNamesResult(DECLINED_NAMES_RESULT_ERROR, guid);
+ SendSetPlayerDeclinedNamesResult(DECLINED_NAMES_RESULT_ERROR, packet.Player);
return;
}
for (int i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
- CharacterDatabase.EscapeString(declinedname.name[i]);
+ CharacterDatabase.EscapeString(packet.DeclinedNames.name[i]);
SQLTransaction trans = CharacterDatabase.BeginTransaction();
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CHAR_DECLINED_NAME);
- stmt->setUInt64(0, guid.GetCounter());
+ stmt->setUInt64(0, packet.Player.GetCounter());
trans->Append(stmt);
stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_CHAR_DECLINED_NAME);
- stmt->setUInt64(0, guid.GetCounter());
+ stmt->setUInt64(0, packet.Player.GetCounter());
- for (uint8 i = 0; i < 5; i++)
- stmt->setString(i+1, declinedname.name[i]);
+ for (uint8 i = 0; i < MAX_DECLINED_NAME_CASES; i++)
+ stmt->setString(i + 1, packet.DeclinedNames.name[i]);
trans->Append(stmt);
CharacterDatabase.CommitTransaction(trans);
- SendSetPlayerDeclinedNamesResult(DECLINED_NAMES_RESULT_SUCCESS, guid);
+ SendSetPlayerDeclinedNamesResult(DECLINED_NAMES_RESULT_SUCCESS, packet.Player);
}
void WorldSession::HandleAlterAppearance(WorldPackets::Character::AlterApperance& packet)
diff --git a/src/server/game/Server/Packets/CharacterPackets.cpp b/src/server/game/Server/Packets/CharacterPackets.cpp
index ef41d16c2b2..ed47b32cbcb 100644
--- a/src/server/game/Server/Packets/CharacterPackets.cpp
+++ b/src/server/game/Server/Packets/CharacterPackets.cpp
@@ -545,3 +545,16 @@ WorldPacket const* WorldPackets::Character::CharCustomizeFailed::Write()
return &_worldPacket;
}
+
+void WorldPackets::Character::SetPlayerDeclinedNames::Read()
+{
+ _worldPacket >> Player;
+
+ uint8 stringLengths[MAX_DECLINED_NAME_CASES];
+
+ for (uint8 i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
+ stringLengths[i] = _worldPacket.ReadBits(7);
+
+ for (uint8 i = 0; i < MAX_DECLINED_NAME_CASES; ++i)
+ DeclinedNames.name[i] = _worldPacket.ReadString(stringLengths[i]);
+}
diff --git a/src/server/game/Server/Packets/CharacterPackets.h b/src/server/game/Server/Packets/CharacterPackets.h
index cbf4f55906c..732e543d3fc 100644
--- a/src/server/game/Server/Packets/CharacterPackets.h
+++ b/src/server/game/Server/Packets/CharacterPackets.h
@@ -716,6 +716,17 @@ namespace WorldPackets
uint8 Result = 0;
ObjectGuid CharGUID;
};
+
+ class SetPlayerDeclinedNames final : public ClientPacket
+ {
+ public:
+ SetPlayerDeclinedNames(WorldPacket&& packet) : ClientPacket(CMSG_SET_PLAYER_DECLINED_NAMES, std::move(packet)) { }
+
+ void Read() override;
+
+ ObjectGuid Player;
+ DeclinedName DeclinedNames;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 5a25ee63a70..c3ebe64810e 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -694,7 +694,7 @@ void OpcodeTable::Initialize()
DEFINE_HANDLER(CMSG_SET_PARTY_ASSIGNMENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Party::SetPartyAssignment, &WorldSession::HandleSetPartyAssignment);
DEFINE_HANDLER(CMSG_SET_PARTY_LEADER, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::SetPartyLeader, &WorldSession::HandleSetPartyLeaderOpcode);
DEFINE_HANDLER(CMSG_SET_PET_SLOT, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
- DEFINE_OPCODE_HANDLER_OLD(CMSG_SET_PLAYER_DECLINED_NAMES, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleSetPlayerDeclinedNames );
+ DEFINE_HANDLER(CMSG_SET_PLAYER_DECLINED_NAMES, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Character::SetPlayerDeclinedNames, &WorldSession::HandleSetPlayerDeclinedNames);
DEFINE_HANDLER(CMSG_SET_PREFERRED_CEMETERY, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
DEFINE_HANDLER(CMSG_SET_PVP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::SetPvP, &WorldSession::HandleSetPvP);
DEFINE_HANDLER(CMSG_SET_RAID_DIFFICULTY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::SetRaidDifficulty, &WorldSession::HandleSetRaidDifficultyOpcode);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 7d6d2f310db..7b14b6ca926 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -197,6 +197,7 @@ namespace WorldPackets
class SetFactionNotAtWar;
class SetFactionInactive;
class SetWatchedFaction;
+ class SetPlayerDeclinedNames;
enum class LoginFailureReason : uint8;
}
@@ -1071,7 +1072,7 @@ class WorldSession
void HandlePlayerLogin(LoginQueryHolder * holder);
void HandleCharRenameOpcode(WorldPackets::Character::CharacterRenameRequest& request);
void HandleCharRenameCallBack(PreparedQueryResult result, WorldPackets::Character::CharacterRenameInfo* renameInfo);
- void HandleSetPlayerDeclinedNames(WorldPacket& recvData);
+ void HandleSetPlayerDeclinedNames(WorldPackets::Character::SetPlayerDeclinedNames& packet);
void HandleAlterAppearance(WorldPackets::Character::AlterApperance& packet);
void HandleCharCustomizeOpcode(WorldPackets::Character::CharCustomize& packet);
void HandleCharCustomizeCallback(PreparedQueryResult result, WorldPackets::Character::CharCustomizeInfo* customizeInfo);