diff options
-rw-r--r-- | src/game/Chat.cpp | 2 | ||||
-rw-r--r-- | src/game/Level3.cpp | 27 |
2 files changed, 20 insertions, 9 deletions
diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp index d5a9dd59533..886d60efafd 100644 --- a/src/game/Chat.cpp +++ b/src/game/Chat.cpp @@ -640,7 +640,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 844bf9b5f68..8931418433a 100644 --- a/src/game/Level3.cpp +++ b/src/game/Level3.cpp @@ -4024,33 +4024,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; } |