diff options
| author | Nay <dnpd.dd@gmail.com> | 2012-08-22 14:26:17 -0700 |
|---|---|---|
| committer | Nay <dnpd.dd@gmail.com> | 2012-08-22 14:26:17 -0700 |
| commit | 7ab976034c4a72cd97bbfad5112e6af783c52936 (patch) | |
| tree | b2c4ef4e7942a5c44777897191db1a82ef31aac9 /src/server/game/Handlers/CharacterHandler.cpp | |
| parent | bb6f3023f0203ddcf7b5f1068e37e3e685b2111a (diff) | |
| parent | 7bd358f5a014c2c87c8892475d2829b1c85cdf01 (diff) | |
Merge pull request #7480 from Tuxity/charPosition434
[434] Fix CMSG_REORDER_CHARACTERS
Diffstat (limited to 'src/server/game/Handlers/CharacterHandler.cpp')
| -rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index 661da579c5e..f89b1b95bc1 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -2132,3 +2132,43 @@ void WorldSession::HandleRandomizeCharNameOpcode(WorldPacket& recvData) data.WriteString(*name); SendPacket(&data); } + +void WorldSession::HandleReorderCharacters(WorldPacket& recvData) +{ + uint32 charactersCount = recvData.ReadBits(10); + + ObjectGuid guids[charactersCount]; + uint8 positions[charactersCount]; + + for (uint8 i = 0; i < charactersCount; ++i) + { + guids[i][1] = recvData.ReadBit(); + guids[i][4] = recvData.ReadBit(); + guids[i][5] = recvData.ReadBit(); + guids[i][3] = recvData.ReadBit(); + guids[i][0] = recvData.ReadBit(); + guids[i][7] = recvData.ReadBit(); + guids[i][6] = recvData.ReadBit(); + guids[i][2] = recvData.ReadBit(); + } + + SQLTransaction trans = CharacterDatabase.BeginTransaction(); + for (uint8 i = 0; i < charactersCount; ++i) + { + recvData.ReadByteSeq(guids[i][6]); + recvData.ReadByteSeq(guids[i][5]); + recvData.ReadByteSeq(guids[i][1]); + recvData.ReadByteSeq(guids[i][4]); + recvData.ReadByteSeq(guids[i][0]); + recvData.ReadByteSeq(guids[i][3]); + + recvData >> positions[i]; + position[i] /= 10; + + recvData.ReadByteSeq(guids[i][2]); + recvData.ReadByteSeq(guids[i][7]); + + trans->PAppend("UPDATE characters SET slot = '%u' WHERE guid = '%u'", positions[i], uint64(guids[i])); + } + CharacterDatabase.CommitTransaction(trans); +} |
