diff options
-rw-r--r-- | sql/updates/world/2016_03_21_00_world_2015_11_27_00.sql | 3 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 12 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/Language.h | 4 |
3 files changed, 12 insertions, 7 deletions
diff --git a/sql/updates/world/2016_03_21_00_world_2015_11_27_00.sql b/sql/updates/world/2016_03_21_00_world_2015_11_27_00.sql new file mode 100644 index 00000000000..15be2ab73ed --- /dev/null +++ b/sql/updates/world/2016_03_21_00_world_2015_11_27_00.sql @@ -0,0 +1,3 @@ +DELETE FROM `trinity_string` WHERE `entry` = 11010; +INSERT INTO `trinity_string` (`entry`,`content_default`) VALUES +(11010, 'You didn\'t get kicked out of the instance even if Player::CheckInstanceLoginValid() returned false and without .gm on flag'); diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 59078cb8ef6..a9b7aa12b6b 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -2273,7 +2273,7 @@ void Player::SetGameMaster(bool on) bool Player::CanBeGameMaster() const { - return m_session && m_session->HasPermission(rbac::RBAC_PERM_COMMAND_GM); + return GetSession()->HasPermission(rbac::RBAC_PERM_COMMAND_GM); } void Player::SetGMVisible(bool on) @@ -18389,31 +18389,31 @@ bool Player::Satisfy(AccessRequirement const* ar, uint32 target_map, bool report bool Player::CheckInstanceLoginValid(Map* map) { - if (!map->IsDungeon() || IsGameMaster()) + if (!map->IsDungeon() || IsInstanceLoginGameMasterException()) return true; if (map->IsRaid()) { // cannot be in raid instance without a group if (!GetGroup()) - return IsInstanceLoginGameMasterException(); + return false; } else { // cannot be in normal instance without a group and more players than 1 in instance if (!GetGroup() && map->GetPlayersCountExceptGMs() > 1) - return IsInstanceLoginGameMasterException(); + return false; } // do checks for satisfy accessreqs, instance full, encounter in progress (raid), perm bind group != perm bind player - return sMapMgr->CanPlayerEnter(map->GetId(), this, true) || IsInstanceLoginGameMasterException(); + return sMapMgr->CanPlayerEnter(map->GetId(), this, true); } bool Player::IsInstanceLoginGameMasterException() const { if (CanBeGameMaster()) { - ChatHandler(GetSession()).PSendSysMessage("You didn't get kicked out of the instance even if Player::CheckInstanceLoginValid() returned false and without .gm on flag"); + ChatHandler(GetSession()).SendSysMessage(LANG_INSTANCE_LOGIN_GAMEMASTER_EXCEPTION); return true; } else diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index de0e4b77791..76d7a1380bf 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -1211,7 +1211,9 @@ enum TrinityStrings LANG_BAN_ACCOUNT_YOUPERMBANNEDMESSAGE_WORLD = 11007, LANG_NPCINFO_INHABIT_TYPE = 11008, - LANG_NPCINFO_FLAGS_EXTRA = 11009 + LANG_NPCINFO_FLAGS_EXTRA = 11009, + + LANG_INSTANCE_LOGIN_GAMEMASTER_EXCEPTION = 11010 }; #endif |