All pastes #489804 Raw Edit

Miscellany

public cpp v1 · immutable
·published 2007-05-15 18:30 UTC
rendered paste body
Index: src/game/CharacterHandler.cpp===================================================================--- src/game/CharacterHandler.cpp	(revision 3636)+++ src/game/CharacterHandler.cpp	(working copy)@@ -35,6 +35,9 @@ #include "Transports.h" #include "Group.h" +// check used symbols in playwer name at creating and rename+static std::string const notAllowedChars = "\t\v\b\f\a\n\r\\\0\"\'\? <>[](){}_=+-|/!@#$%^&*~`.,0123456789";+ void WorldSession::HandleCharEnumOpcode( WorldPacket & recv_data ) {     // keys can be non cleared if player open realm list and close it by 'cancel'@@ -105,9 +108,6 @@      normalizePlayerName(name); -    // check used symbols-    static std::string const notAllowedChars = "\t\v\b\f\a\n\r\\\0\"\'\? <>[](){}_=+-|/!@#$%^&*~`.,0123456789";-     if(name.find_first_of(notAllowedChars)!=name.npos)     {         data.Initialize( SMSG_CHAR_CREATE, 1 );@@ -686,3 +686,40 @@     else         _player->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_HIDE_CLOAK); }++void WorldSession::HandleChangePlayerNameOpcode(WorldPacket& recv_data)+{+    uint64 guid;+    std::string newname;+      +    recv_data >> guid;+    recv_data >> newname;++    // prevent character rename to invalid name+    if(newname.size() == 0)/**************/+    {+        WorldPacket data( SMSG_CHAR_RENAME, 1 );+        data << (uint8)CHAR_NAME_INVALID_CHARACTER;+        SendPacket( &data );+        return;+    }++    normalizePlayerName(newname);++    if(newname.find_first_of(notAllowedChars)!=newname.npos)+    {+        WorldPacket data( SMSG_CHAR_RENAME, 1 );+        data << (uint8)CHAR_NAME_INVALID_CHARACTER;;+        SendPacket( &data );+        return;+    }++    sDatabase.escape_string(newname);      +    sDatabase.PQuery("UPDATE `character` set  `name` = '%s' WHERE `guid` ='%u'", newname.c_str(), GUID_LOPART(guid));      ++    WorldPacket data(SMSG_CHAR_RENAME,1+8+(newname.size()+1));+    data << uint8(0);+    data << guid;+    data << newname;+    SendPacket(&data);+}Index: src/game/Chat.cpp===================================================================--- src/game/Chat.cpp	(revision 3636)+++ src/game/Chat.cpp	(working copy)@@ -283,6 +283,7 @@         { "ps",          3, &ChatHandler::HandlePlaySound2Command,       "",   NULL },         { "scn",         3, &ChatHandler::HandleSendChannelNotifyCommand,"",   NULL },         { "scm",         3, &ChatHandler::HandleSendChatMsgCommand,      "",   NULL },+        { "rename",      2, &ChatHandler::HandleRenameCommand,           "",   NULL },          //! Development Commands         { "setvalue",    3, &ChatHandler::HandleSetValue,                "",   NULL },Index: src/game/Chat.h===================================================================--- src/game/Chat.h	(revision 3636)+++ src/game/Chat.h	(working copy)@@ -299,6 +299,7 @@         bool HandleRemoveQuest(const char * args);         bool HandleSaveAllCommand(const char* args);         bool HandleGetItemState(const char * args);+        bool HandleRenameCommand(const char * args);          Player*   getSelectedPlayer();         Creature* getSelectedCreature();Index: src/game/Level2.cpp===================================================================--- src/game/Level2.cpp	(revision 3636)+++ src/game/Level2.cpp	(working copy)@@ -2608,3 +2608,48 @@      return true; }                                                           // HandleWpShowCommand++bool ChatHandler::HandleRenameCommand(const char* args)+{           +    Player* target = NULL;+    uint64 targetGUID = 0;++    char* px = strtok((char*)args, " ");++    if (px)+    {+        std::string oldname = px;+        normalizePlayerName(oldname);+        target = objmgr.GetPlayer(oldname.c_str());++        if (!target)+            targetGUID = objmgr.GetPlayerGUIDByName(oldname.c_str());+    }++    if(!target && !targetGUID)+    {+        target = getSelectedPlayer();+    }++    if(!target && !targetGUID)+    {+        SendSysMessage(LANG_PLAYER_NOT_FOUND);+        return true;+    }++    if(target)+    {+        target->SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_NEED_RENAME);+    }+    else+    {+        std::vector<std::string> values;+        Player::LoadValuesArrayFromDB(values, targetGUID);+        uint32 flags = Player::GetUInt32ValueFromArray(values, PLAYER_FLAGS);++        Player::SetUInt32ValueInArray(values,PLAYER_FLAGS, flags | PLAYER_FLAGS_NEED_RENAME);+        Player::SaveValuesArrayInDB(values,targetGUID);+    }++    return true;+}Index: src/game/MiscHandler.cpp===================================================================--- src/game/MiscHandler.cpp	(revision 3636)+++ src/game/MiscHandler.cpp	(working copy)@@ -1090,12 +1090,6 @@     GetPlayer()->SetUInt32Value( PLAYER_FIELD_BYTES, temp); } -void WorldSession::HandleChangePlayerNameOpcode(WorldPacket& recv_data)-{-    // TODO-    // need to be written-}- void WorldSession::HandleWardenDataOpcode(WorldPacket& recv_data) {     CHECK_PACKET_SIZE(recv_data,1);Index: src/game/Player.h===================================================================--- src/game/Player.h	(revision 3636)+++ src/game/Player.h	(working copy)@@ -289,6 +289,7 @@     PLAYER_FLAGS_GM             = 0x00000008,     PLAYER_FLAGS_GHOST          = 0x00000010,     PLAYER_FLAGS_RESTING        = 0x00000020,+    PLAYER_FLAGS_NEED_RENAME    = 0x00000040,                   // if (flag) then need rename character on next login     PLAYER_FLAGS_FFA_PVP        = 0x00000080,     PLAYER_FLAGS_UNK            = 0x00000100,                   // show PvP in tooltip     PLAYER_FLAGS_IN_PVP         = 0x00000200,