Public feed
#894199
Index: src/game/CharacterHandler.cpp
===================================================================
--- src/game/CharacterHandler.cpp (revision 5159)
+++ src/game/CharacterHandler.cpp (working copy)
@@ -734,6 +734,7 @@
void WorldSession::HandleChangePlayerNameOpcode(WorldPacket& recv_data)
{
+
uint64 guid;
std::string newname;
std::string oldname;
@@ -741,6 +742,31 @@
CHECK_PACKET_SIZE(recv_data, 8+1);
recv_data >> guid;
+
+ QueryResult *result = CharacterDatabase.PQuery("SELECT `at_login` FROM `character` WHERE `guid` ='%u'", GUID_LOPART(guid));
+ if (result)
+ {
+ uint32 at_loginFlags;
+ Field *fields = result->Fetch();
+ at_loginFlags = fields[0].GetUInt32();
+ delete result;
+
+ if (!(at_loginFlags & AT_LOGIN_RENAME))
+ {
+ WorldPacket data(SMSG_CHAR_RENAME, 1);
+ data << (uint8)CHAR_CREATE_ERROR;
+ SendPacket( &data );
+ return;
+ }
+ }
+ else
+ {
+ WorldPacket data(SMSG_CHAR_RENAME, 1);
+ data << (uint8)CHAR_CREATE_ERROR;
+ SendPacket( &data );
+ return;
+ }
+
recv_data >> newname;
if(!objmgr.GetPlayerNameByGUID(guid, oldname)) // character not exist, because we have no name for this guid
@@ -801,7 +827,7 @@
CharacterDatabase.PExecute("UPDATE `character` set `name` = '%s', `at_login` = `at_login` & ~ '%u' WHERE `guid` ='%u'", newname.c_str(), uint32(AT_LOGIN_RENAME),GUID_LOPART(guid));
std::string IP_str = _socket ? _socket->GetRemoteAddress().c_str() : "-";
- sLog.outChar("Account: %d (IP: %s) Character:[%s] (guid:%u) Changed name to: %p",GetAccountId(),IP_str.c_str(),oldname.c_str(),GUID_LOPART(guid),newname.c_str());
+ sLog.outChar("Account: %d (IP: %s) Character:[%s] (guid:%u) Changed name to: %s",GetAccountId(),IP_str.c_str(),oldname.c_str(),GUID_LOPART(guid),newname.c_str());
WorldPacket data(SMSG_CHAR_RENAME,1+8+(newname.size()+1));
data << (uint8)RESPONSE_SUCCESS;