aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Chat
diff options
context:
space:
mode:
authorBrian <runningnak3d@gmail.com>2010-07-21 12:13:23 -0600
committerBrian <runningnak3d@gmail.com>2010-07-21 12:13:23 -0600
commit4320b1090166f05ee888400a6975b7288a86cba8 (patch)
tree698bf6ebfbb905043e6f2d0c253d5899e28ee7ea /src/server/game/Chat
parent5995a8ec1d356cba24a62661616c04a058c251a2 (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.cpp14
-rw-r--r--src/server/game/Chat/Chat.h22
-rw-r--r--src/server/game/Chat/Commands/Level3.cpp2
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
{