diff options
| author | Brian <runningnak3d@gmail.com> | 2010-07-21 12:13:23 -0600 |
|---|---|---|
| committer | Brian <runningnak3d@gmail.com> | 2010-07-21 12:13:23 -0600 |
| commit | 4320b1090166f05ee888400a6975b7288a86cba8 (patch) | |
| tree | 698bf6ebfbb905043e6f2d0c253d5899e28ee7ea /src/server/game/Chat | |
| parent | 5995a8ec1d356cba24a62661616c04a058c251a2 (diff) | |
* Implement the ability to delete characters without them being removed from
* the DB, so they can be unerased
* Original patch by DasBlub
* Ported to Trinty by Az@zel
--HG--
branch : trunk
Diffstat (limited to 'src/server/game/Chat')
| -rw-r--r-- | src/server/game/Chat/Chat.cpp | 14 | ||||
| -rw-r--r-- | src/server/game/Chat/Chat.h | 22 | ||||
| -rw-r--r-- | src/server/game/Chat/Commands/Level3.cpp | 2 |
3 files changed, 34 insertions, 4 deletions
diff --git a/src/server/game/Chat/Chat.cpp b/src/server/game/Chat/Chat.cpp index 42363124518..5efd4b4ef6a 100644 --- a/src/server/game/Chat/Chat.cpp +++ b/src/server/game/Chat/Chat.cpp @@ -119,10 +119,20 @@ ChatCommand * ChatHandler::getCommandTable() { NULL, 0, false, NULL, "", NULL } }; + static ChatCommand characterDeletedCommandTable[] = + { + { "delete", SEC_CONSOLE, true, &ChatHandler::HandleCharacterDeletedDeleteCommand, "", NULL }, + { "list", SEC_ADMINISTRATOR, true, &ChatHandler::HandleCharacterDeletedListCommand, "", NULL }, + { "restore", SEC_ADMINISTRATOR, true, &ChatHandler::HandleCharacterDeletedRestoreCommand, "", NULL }, + { "old", SEC_CONSOLE, true, &ChatHandler::HandleCharacterDeletedOldCommand, "", NULL }, + { NULL, 0, false, NULL, "", NULL } + }; + static ChatCommand characterCommandTable[] = { { "customize", SEC_GAMEMASTER, true, &ChatHandler::HandleCharacterCustomizeCommand, "", NULL }, - { "delete", SEC_CONSOLE, true, &ChatHandler::HandleCharacterDeleteCommand, "", NULL }, + { "deleted", SEC_GAMEMASTER, true, NULL, "", characterDeletedCommandTable}, + { "erase", SEC_CONSOLE, true, &ChatHandler::HandleCharacterEraseCommand, "", NULL }, { "level", SEC_ADMINISTRATOR, true, &ChatHandler::HandleCharacterLevelCommand, "", NULL }, { "rename", SEC_GAMEMASTER, true, &ChatHandler::HandleCharacterRenameCommand, "", NULL }, { "reputation", SEC_GAMEMASTER, true, &ChatHandler::HandleCharacterReputationCommand, "", NULL }, @@ -667,7 +677,7 @@ ChatCommand * ChatHandler::getCommandTable() { "modify", SEC_MODERATOR, false, NULL, "", modifyCommandTable }, { "debug", SEC_MODERATOR, true, NULL, "", debugCommandTable }, { "tele", SEC_MODERATOR, true, NULL, "", teleCommandTable }, - { "character", SEC_GAMEMASTER, false, NULL, "", characterCommandTable}, + { "character", SEC_GAMEMASTER, true, NULL, "", characterCommandTable}, { "event", SEC_GAMEMASTER, false, NULL, "", eventCommandTable }, { "gobject", SEC_GAMEMASTER, false, NULL, "", gobjectCommandTable }, { "honor", SEC_GAMEMASTER, false, NULL, "", honorCommandTable }, diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h index 2a653983aa0..1a649c687d1 100644 --- a/src/server/game/Chat/Chat.h +++ b/src/server/game/Chat/Chat.h @@ -133,7 +133,11 @@ class ChatHandler bool HandleCastTargetCommand(const char *args); bool HandleCharacterCustomizeCommand(const char * args); - bool HandleCharacterDeleteCommand(const char* args); + bool HandleCharacterDeletedDeleteCommand(const char* args); + bool HandleCharacterDeletedListCommand(const char* args); + bool HandleCharacterDeletedRestoreCommand(const char* args); + bool HandleCharacterDeletedOldCommand(const char* args); + bool HandleCharacterEraseCommand(const char* args); bool HandleCharacterLevelCommand(const char* args); bool HandleCharacterRenameCommand(const char * args); bool HandleCharacterReputationCommand(const char* args); @@ -620,6 +624,22 @@ class ChatHandler void HandleCharacterLevel(Player* player, uint64 player_guid, uint32 oldlevel, uint32 newlevel); void HandleLearnSkillRecipesHelper(Player* player,uint32 skill_id); + // Stores informations about a deleted character + struct DeletedInfo + { + uint32 lowguid; ///< the low GUID from the character + std::string name; ///< the character name + uint32 accountId; ///< the account id + std::string accountName; ///< the account name + time_t deleteDate; ///< the date at which the character has been deleted + }; + + typedef std::list<DeletedInfo> DeletedInfoList; + bool GetDeletedCharacterInfoList(DeletedInfoList& foundList, std::string searchString = ""); + std::string GenerateDeletedCharacterGUIDsWhereStr(DeletedInfoList::const_iterator& itr, DeletedInfoList::const_iterator const& itr_end); + void HandleCharacterDeletedListHelper(DeletedInfoList const& foundList); + void HandleCharacterDeletedRestoreHelper(DeletedInfo const& delInfo); + void SetSentErrorMessage(bool val){ sentErrorMessage = val;}; private: WorldSession * m_session; // != NULL for chat command call and NULL for CLI command diff --git a/src/server/game/Chat/Commands/Level3.cpp b/src/server/game/Chat/Commands/Level3.cpp index 40c3aae5705..049df5a342f 100644 --- a/src/server/game/Chat/Commands/Level3.cpp +++ b/src/server/game/Chat/Commands/Level3.cpp @@ -6522,7 +6522,7 @@ bool ChatHandler::HandlePDumpWriteCommand(const char *args) uint32 guid; // character name can't start from number - if (isNumeric(p2[0])) + if (isNumeric(p2)) guid = atoi(p2); else { |
