From ea0cd9366289a3cecdc78ed4a69c08fecc55a2c0 Mon Sep 17 00:00:00 2001 From: ariel- Date: Fri, 6 Jan 2017 02:13:27 -0300 Subject: Core/Scripts: added command to move characters across accounts (cherry-picked from f7f865f81803effa17b19ef79762a72fe726b1ac) --- src/server/game/Accounts/RBAC.h | 2 +- src/server/game/Miscellaneous/Language.h | 3 ++- src/server/game/World/World.cpp | 9 +++++++++ src/server/game/World/World.h | 1 + 4 files changed, 13 insertions(+), 2 deletions(-) (limited to 'src/server/game') diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index 0c1cb84d270..018f4e0c73f 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -603,7 +603,7 @@ enum RBACPermissions RBAC_PERM_COMMAND_RELOAD_SPELL_LOOT_TEMPLATE = 695, RBAC_PERM_COMMAND_RELOAD_SPELL_LINKED_SPELL = 696, RBAC_PERM_COMMAND_RELOAD_SPELL_PET_AURAS = 697, - // 698 - reuse + RBAC_PERM_COMMAND_CHARACTER_CHANGEACCOUNT = 698, RBAC_PERM_COMMAND_RELOAD_SPELL_PROC = 699, RBAC_PERM_COMMAND_RELOAD_SPELL_SCRIPTS = 700, RBAC_PERM_COMMAND_RELOAD_SPELL_TARGET_POSITION = 701, diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 039c3b81604..820edc8adb9 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -927,7 +927,8 @@ enum TrinityStrings LANG_ACCOUNT_BNET_NOT_LINKED = 1189, LANG_DISALLOW_TICKETS_CONFIG = 1190, LANG_BAN_EXISTS = 1191, - // Room for more level 3 1192-1198 not used + LANG_CHANGEACCOUNT_SUCCESS = 1192, + // Room for more level 3 1193-1198 not used // Debug commands LANG_DEBUG_AREATRIGGER_LEFT = 1999, diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 23a62783c83..bafc5207656 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -3616,6 +3616,15 @@ void World::UpdateCharacterInfoLevel(ObjectGuid const& guid, uint8 level) itr->second.Level = level; } +void World::UpdateCharacterInfoAccount(ObjectGuid const& guid, uint32 accountId) +{ + auto itr = _characterInfoStore.find(guid); + if (itr == _characterInfoStore.end()) + return; + + itr->second.AccountId = accountId; +} + void World::UpdateCharacterInfoDeleted(ObjectGuid const& guid, bool deleted, std::string const* name /*= nullptr*/) { CharacterInfoContainer::iterator itr = _characterInfoStore.find(guid); diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index 16850da37ae..e7eb8c84d4c 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -794,6 +794,7 @@ class TC_GAME_API World bool HasCharacterInfo(ObjectGuid const& guid) { return _characterInfoStore.find(guid) != _characterInfoStore.end(); } void UpdateCharacterInfo(ObjectGuid const& guid, std::string const& name, uint8 gender = GENDER_NONE, uint8 race = RACE_NONE); void UpdateCharacterInfoLevel(ObjectGuid const& guid, uint8 level); + void UpdateCharacterInfoAccount(ObjectGuid const& guid, uint32 accountId); void UpdateCharacterInfoDeleted(ObjectGuid const& guid, bool deleted, std::string const* name = nullptr); uint32 GetCleaningFlags() const { return m_CleaningFlags; } -- cgit v1.2.3