Public feed #894199

Stuff

public text v1 · immutable
Raw Edit
·published 2008-02-06 19:34 UTC
rendered paste body
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;