From 1b09aab42b6e1005daeb87738e770ac6b811b623 Mon Sep 17 00:00:00 2001 From: VladimirMangos Date: Tue, 21 Apr 2009 18:33:00 +0400 Subject: [PATCH] [7693] Allow use .revive command in console, support revive offline players. --- src/game/Chat.cpp | 2 +- src/game/Level3.cpp | 27 +++++++++++++++++++-------- src/shared/revision_nr.h | 2 +- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp index 22f95529f..07eba85fa 100644 --- a/src/game/Chat.cpp +++ b/src/game/Chat.cpp @@ -570,7 +570,7 @@ ChatCommand * ChatHandler::getCommandTable() { "commands", SEC_PLAYER, true, &ChatHandler::HandleCommandsCommand, "", NULL }, { "demorph", SEC_GAMEMASTER, false, &ChatHandler::HandleDeMorphCommand, "", NULL }, { "die", SEC_ADMINISTRATOR, false, &ChatHandler::HandleDieCommand, "", NULL }, - { "revive", SEC_ADMINISTRATOR, false, &ChatHandler::HandleReviveCommand, "", NULL }, + { "revive", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReviveCommand, "", NULL }, { "dismount", SEC_PLAYER, false, &ChatHandler::HandleDismountCommand, "", NULL }, { "gps", SEC_MODERATOR, false, &ChatHandler::HandleGPSCommand, "", NULL }, { "guid", SEC_GAMEMASTER, false, &ChatHandler::HandleGUIDCommand, "", NULL }, diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp index 95a26dde5..72dbeafc1 100644 --- a/src/game/Level3.cpp +++ b/src/game/Level3.cpp @@ -3439,33 +3439,44 @@ bool ChatHandler::HandleModifyArenaCommand(const char * args) bool ChatHandler::HandleReviveCommand(const char* args) { - Player* SelectedPlayer = NULL; + Player* player = NULL; + uint32 player_guid = 0; if (*args) { std::string name = extractPlayerNameFromLink((char*)args); - if(name.empty()) + if (name.empty()) { SendSysMessage(LANG_PLAYER_NOT_FOUND); SetSentErrorMessage(true); return false; } - SelectedPlayer = objmgr.GetPlayer(name.c_str()); + player = objmgr.GetPlayer(name.c_str()); + if (!player) + player_guid = objmgr.GetPlayerGUIDByName(name); } else - SelectedPlayer = getSelectedPlayer(); + player = getSelectedPlayer(); - if(!SelectedPlayer) + if (player) + { + player->ResurrectPlayer(0.5f); + player->SpawnCorpseBones(); + player->SaveToDB(); + } + else if (player_guid) + { + // will resurrected at login without corpse + ObjectAccessor::Instance().ConvertCorpseForPlayer(player_guid); + } + else { SendSysMessage(LANG_NO_CHAR_SELECTED); SetSentErrorMessage(true); return false; } - SelectedPlayer->ResurrectPlayer(0.5f); - SelectedPlayer->SpawnCorpseBones(); - SelectedPlayer->SaveToDB(); return true; } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 85c93fa98..09c01df9d 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7692" + #define REVISION_NR "7693" #endif // __REVISION_NR_H__