From 5ba2c18ce6f832f71255e5e23bd0794f1a4347ae Mon Sep 17 00:00:00 2001 From: Axel Cocat Date: Wed, 9 Aug 2023 10:42:50 +0200 Subject: [PATCH] feat(Core/Conf): add CONFIG_ARENA_QUEUE_ANNOUNCER_DETAIL (#16850) * feat(Core/Conf): add CONFIG_ARENA_QUEUE_ANNOUNCER_DETAIL * fix: bad copy paste * add sql * fix bad copy paste above again * fix: move lang values * Update rev_1690640715748711400.sql * Update rev_1690640715748711400.sql * Rename rev_1690640715748711400.sql to fix.sql * reaching, maybe fix (?) c: * love me god damn it * update sql file --------- Co-authored-by: Skjalf <47818697+Nyeriah@users.noreply.github.com> Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> --- .../rev_1691552962372476000.sql | 13 +++++++ .../apps/worldserver/worldserver.conf.dist | 15 ++++++-- .../game/Battlegrounds/BattlegroundQueue.cpp | 34 +++++++++++++++++-- src/server/game/Miscellaneous/Language.h | 12 +++++-- src/server/game/World/IWorld.h | 1 + src/server/game/World/World.cpp | 1 + 6 files changed, 69 insertions(+), 7 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1691552962372476000.sql diff --git a/data/sql/updates/pending_db_world/rev_1691552962372476000.sql b/data/sql/updates/pending_db_world/rev_1691552962372476000.sql new file mode 100644 index 000000000..c2c9affce --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1691552962372476000.sql @@ -0,0 +1,13 @@ +-- +-- Add acore_strings for arena queue announcer with less detail about the teams +DELETE FROM `acore_string` WHERE `entry` IN (773, 774, 775, 776, 777, 778); +INSERT INTO `acore_string` (`entry`, `content_default`, `locale_frFR`, `locale_deDE`, `locale_zhCN`) VALUES +(773, '|cffff0000[Arena Queue Announcer]:|r %s -- Joined : %ux%u|r', '|cffff0000[Annonce File d''Attente Arène]:|r %s -- Rejoint : %ux%u|r', '|cffff0000[BG Ansager für Warteschlange]:|r %s -- beigetreten : %ux%u|r', '|cffff0000[竞技场列队公告]:|r %s -- 加入 : %ux%u|r'), +(774, '|cffff0000[Arena Queue Announcer]:|r %s -- Exited : %ux%u|r', '|cffff0000[Annonce File d''Attente Arène]:|r %s -- Quitté : %ux%u|r', '|cffff0000[BG Ansager für Warteschlange]:|r %s -- verlassen : %ux%u|r', '|cffff0000[竞技场列队公告]:|r %s -- 退出 : %ux%u|r'), +(775, '|cffff0000[Arena Queue Announcer]:|r Joined : %ux%u : %u|r', '|cffff0000[Annonce File d''Attente Arène]:|r Rejoint : %ux%u : %u|r', '|cffff0000[BG Ansager für Warteschlange]:|r beigetreten : %ux%u : %u|r', '|cffff0000[竞技场列队公告]:|r 加入 : %ux%u : %u|r'), +(776, '|cffff0000[Arena Queue Announcer]:|r Exited : %ux%u : %u|r', '|cffff0000[Annonce File d''Attente Arène]:|r Quitté : %ux%u : %u|r', '|cffff0000[BG Ansager für Warteschlange]:|r verlassen : %ux%u : %u|r', '|cffff0000[竞技场列队公告]:|r 退出 : %ux%u : %u|r'), +(777, '|cffff0000[Arena Queue Announcer]:|r Joined : %ux%u|r', '|cffff0000[Annonce File d''Attente Arène]:|r Rejoint : %ux%u|r', '|cffff0000[BG Ansager für Warteschlange]:|r beigetreten : %ux%u|r', '|cffff0000[竞技场列队公告]:|r 加入 : %ux%u|r'), +(778, '|cffff0000[Arena Queue Announcer]:|r Exited : %ux%u|r', '|cffff0000[Annonce File d''Attente Arène]:|r Quitté : %ux%u|r', '|cffff0000[BG Ansager für Warteschlange]:|r verlassen : %ux%u|r', '|cffff0000[竞技场列队公告]:|r 退出 : %ux%u|r'); + +UPDATE `acore_string` SET `locale_frFR` = '|cffff0000[Annonce File d''Attente Arène]:|r %s -- Rejoint : %ux%u : %u|r' WHERE `entry` = 718; +UPDATE `acore_string` SET `locale_frFR` = '|cffff0000[Annonce File d''Attente Arène]:|r %s -- Quitté : %ux%u : %u|r' WHERE `entry` = 719; diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist index 9d809be86..4d200a78e 100644 --- a/src/server/apps/worldserver/worldserver.conf.dist +++ b/src/server/apps/worldserver/worldserver.conf.dist @@ -3059,14 +3059,25 @@ Arena.GamesRequired = 10 Arena.QueueAnnouncer.Enable = 0 # -# Battleground.QueueAnnouncer.PlayerOnly -# Description: Battleground queue announcement type. +# Arena.QueueAnnouncer.PlayerOnly +# Description: Arena queue announcement type. # Default: 0 - (System message, Anyone can see it) # 1 - (Private, Only queued players can see it) # Arena.QueueAnnouncer.PlayerOnly = 0 +# +# Arena.QueueAnnouncer.Detail +# Description: The amount of detail to announce on teams queued for arenas. +# Default: 3 - (Announce the team's name and rating) +# 2 - (Announce only the team's name) +# 1 - (Announce only the team's rating) +# 0 - (Do not announce any information about the teams) +# + +Arena.QueueAnnouncer.Detail = 3 + # # Arena.ArenaSeason.ID # Description: Current arena season id shown in clients. diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.cpp b/src/server/game/Battlegrounds/BattlegroundQueue.cpp index dc326d784..f0d4fe2b5 100644 --- a/src/server/game/Battlegrounds/BattlegroundQueue.cpp +++ b/src/server/game/Battlegrounds/BattlegroundQueue.cpp @@ -1143,7 +1143,22 @@ void BattlegroundQueue::SendJoinMessageArenaQueue(Player* leader, GroupQueueInfo uint32 ArenaTeamRating = ginfo->ArenaTeamRating; std::string TeamName = team->GetName(); - sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, TeamName.c_str(), ArenaType, ArenaType, ArenaTeamRating); + uint32 announcementDetail = sWorld->getIntConfig(CONFIG_ARENA_QUEUE_ANNOUNCER_DETAIL); + switch (announcementDetail) + { + case 3: + sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN_NAME_RATING, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, TeamName.c_str(), ArenaType, ArenaType, ArenaTeamRating); + break; + case 2: + sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN_NAME, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, TeamName.c_str(), ArenaType, ArenaType); + break; + case 1: + sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN_RATING, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, ArenaType, ArenaType, ArenaTeamRating); + break; + default: + sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, ArenaType, ArenaType); + break; + } } } @@ -1168,7 +1183,22 @@ void BattlegroundQueue::SendExitMessageArenaQueue(GroupQueueInfo* ginfo) if (ArenaType && ginfo->Players.empty()) { - sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, TeamName.c_str(), ArenaType, ArenaType, ArenaTeamRating); + uint32 announcementDetail = sWorld->getIntConfig(CONFIG_ARENA_QUEUE_ANNOUNCER_DETAIL); + switch (announcementDetail) + { + case 3: + sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT_NAME_RATING, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, TeamName.c_str(), ArenaType, ArenaType, ArenaTeamRating); + break; + case 2: + sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT_NAME, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, TeamName.c_str(), ArenaType, ArenaType); + break; + case 1: + sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT_RATING, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, ArenaType, ArenaType, ArenaTeamRating); + break; + default: + sWorld->SendWorldTextOptional(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT, ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE, ArenaType, ArenaType); + break; + } } } diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 8f314fa38..0ac55cbf4 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -666,8 +666,8 @@ enum AcoreStrings LANG_YOUR_BG_LEVEL_REQ_ERROR = 715, // = 716, see LANG_PINFO_MAP_OFFLINE LANG_BG_STARTED_ANNOUNCE_WORLD = 717, - LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN = 718, - LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT = 719, + LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN_NAME_RATING = 718, + LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT_NAME_RATING = 719, LANG_BG_GROUP_TOO_LARGE = 720, // "Your group is too large for this battleground. Please regroup to join." LANG_ARENA_GROUP_TOO_LARGE = 721, // "Your group is too large for this arena. Please regroup to join." @@ -702,7 +702,13 @@ enum AcoreStrings LANG_BATTLEGROUND_PREMATURE_FINISH_WARNING_SECS = 751, // "Not enough players. This game will close in %u seconds." // = 752, see LANG_PINFO_ACC_IP - // Room for BG/ARENA = 773-784, 788-799 not used + // Room for BG/ARENA = 779-784, 788-799 not used + LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN_NAME = 773, + LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT_NAME = 774, + LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN_RATING = 775, + LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT_RATING = 776, + LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN = 777, + LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT = 778, LANG_ARENA_TESTING = 785, LANG_AUTO_ANN = 786, LANG_ANNOUNCE_COLOR = 787, diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index 49c43555e..f035470e1 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -329,6 +329,7 @@ enum WorldIntConfigs CONFIG_LEGACY_ARENA_POINTS_CALC, CONFIG_ARENA_START_PERSONAL_RATING, CONFIG_ARENA_START_MATCHMAKER_RATING, + CONFIG_ARENA_QUEUE_ANNOUNCER_DETAIL, CONFIG_HONOR_AFTER_DUEL, CONFIG_PVP_TOKEN_MAP_TYPE, CONFIG_PVP_TOKEN_ID, diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 9cb7fb937..9c7cd51eb 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1189,6 +1189,7 @@ void World::LoadConfigSettings(bool reload) _float_configs[CONFIG_ARENA_MATCHMAKER_RATING_MODIFIER] = sConfigMgr->GetOption("Arena.ArenaMatchmakerRatingModifier", 24.0f); _bool_configs[CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE] = sConfigMgr->GetOption("Arena.QueueAnnouncer.Enable", false); _bool_configs[CONFIG_ARENA_QUEUE_ANNOUNCER_PLAYERONLY] = sConfigMgr->GetOption("Arena.QueueAnnouncer.PlayerOnly", false); + _int_configs[CONFIG_ARENA_QUEUE_ANNOUNCER_DETAIL] = sConfigMgr->GetOption("Arena.QueueAnnouncer.Detail", 3); _bool_configs[CONFIG_OFFHAND_CHECK_AT_SPELL_UNLEARN] = sConfigMgr->GetOption("OffhandCheckAtSpellUnlearn", true); _int_configs[CONFIG_CREATURE_STOP_FOR_PLAYER] = sConfigMgr->GetOption("Creature.MovingStopTimeForPlayer", 3 * MINUTE * IN_MILLISECONDS);