mirror of
https://github.com/liyunfan1223/azerothcore-wotlk.git
synced 2026-08-09 08:17:56 +00:00
feat(Core/Battlegrounds): Add PvP announce opt-out flags (#25957)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -675,7 +675,7 @@ inline void Battleground::_ProcessJoin(uint32 diff)
|
|||||||
|
|
||||||
// Announce BG starting
|
// Announce BG starting
|
||||||
if (sWorld->getBoolConfig(CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE))
|
if (sWorld->getBoolConfig(CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE))
|
||||||
ChatHandler(nullptr).SendWorldText(LANG_BG_STARTED_ANNOUNCE_WORLD, GetName(), std::min(GetMinLevel(), (uint32)80), std::min(GetMaxLevel(), (uint32)80));
|
ChatHandler(nullptr).SendWorldTextOptional(LANG_BG_STARTED_ANNOUNCE_WORLD, ANNOUNCER_FLAG_DISABLE_PVP_START, GetName(), std::min(GetMinLevel(), (uint32)80), std::min(GetMaxLevel(), (uint32)80));
|
||||||
|
|
||||||
sScriptMgr->OnBattlegroundStart(this);
|
sScriptMgr->OnBattlegroundStart(this);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,11 @@ enum AnnouncerFlags : uint8
|
|||||||
{
|
{
|
||||||
ANNOUNCER_FLAG_DISABLE_BG_QUEUE = 1,
|
ANNOUNCER_FLAG_DISABLE_BG_QUEUE = 1,
|
||||||
ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE = 2,
|
ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE = 2,
|
||||||
ANNOUNCER_FLAG_DISABLE_AUTOBROADCAST = 4
|
ANNOUNCER_FLAG_DISABLE_AUTOBROADCAST = 4,
|
||||||
|
ANNOUNCER_FLAG_DISABLE_PVP_START = 8,
|
||||||
|
ANNOUNCER_FLAG_DISABLE_PVP_ALL = ANNOUNCER_FLAG_DISABLE_BG_QUEUE
|
||||||
|
| ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE
|
||||||
|
| ANNOUNCER_FLAG_DISABLE_PVP_START
|
||||||
};
|
};
|
||||||
|
|
||||||
struct PlayerSetting
|
struct PlayerSetting
|
||||||
|
|||||||
@@ -48,15 +48,31 @@ public:
|
|||||||
PlayerSetting setting;
|
PlayerSetting setting;
|
||||||
setting = player->GetPlayerSetting(AzerothcorePSSource, SETTING_ANNOUNCER_FLAGS);
|
setting = player->GetPlayerSetting(AzerothcorePSSource, SETTING_ANNOUNCER_FLAGS);
|
||||||
|
|
||||||
|
char const* label = nullptr;
|
||||||
|
|
||||||
if (type == "bg")
|
if (type == "bg")
|
||||||
{
|
{
|
||||||
on ? setting.RemoveFlag(ANNOUNCER_FLAG_DISABLE_BG_QUEUE) : setting.AddFlag(ANNOUNCER_FLAG_DISABLE_BG_QUEUE);
|
on ? setting.RemoveFlag(ANNOUNCER_FLAG_DISABLE_BG_QUEUE) : setting.AddFlag(ANNOUNCER_FLAG_DISABLE_BG_QUEUE);
|
||||||
player->UpdatePlayerSetting(AzerothcorePSSource, SETTING_ANNOUNCER_FLAGS, setting.value);
|
player->UpdatePlayerSetting(AzerothcorePSSource, SETTING_ANNOUNCER_FLAGS, setting.value);
|
||||||
|
label = "battleground queue";
|
||||||
}
|
}
|
||||||
else if (type == "arena")
|
else if (type == "arena")
|
||||||
{
|
{
|
||||||
on ? setting.RemoveFlag(ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE) : setting.AddFlag(ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE);
|
on ? setting.RemoveFlag(ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE) : setting.AddFlag(ANNOUNCER_FLAG_DISABLE_ARENA_QUEUE);
|
||||||
player->UpdatePlayerSetting(AzerothcorePSSource, SETTING_ANNOUNCER_FLAGS, setting.value);
|
player->UpdatePlayerSetting(AzerothcorePSSource, SETTING_ANNOUNCER_FLAGS, setting.value);
|
||||||
|
label = "arena queue";
|
||||||
|
}
|
||||||
|
else if (type == "pvpstart")
|
||||||
|
{
|
||||||
|
on ? setting.RemoveFlag(ANNOUNCER_FLAG_DISABLE_PVP_START) : setting.AddFlag(ANNOUNCER_FLAG_DISABLE_PVP_START);
|
||||||
|
player->UpdatePlayerSetting(AzerothcorePSSource, SETTING_ANNOUNCER_FLAGS, setting.value);
|
||||||
|
label = "PvP start";
|
||||||
|
}
|
||||||
|
else if (type == "pvpall")
|
||||||
|
{
|
||||||
|
on ? setting.RemoveFlag(ANNOUNCER_FLAG_DISABLE_PVP_ALL) : setting.AddFlag(ANNOUNCER_FLAG_DISABLE_PVP_ALL);
|
||||||
|
player->UpdatePlayerSetting(AzerothcorePSSource, SETTING_ANNOUNCER_FLAGS, setting.value);
|
||||||
|
label = "PvP";
|
||||||
}
|
}
|
||||||
else if (type == "autobroadcast")
|
else if (type == "autobroadcast")
|
||||||
{
|
{
|
||||||
@@ -68,10 +84,11 @@ public:
|
|||||||
|
|
||||||
on ? setting.RemoveFlag(ANNOUNCER_FLAG_DISABLE_AUTOBROADCAST) : setting.AddFlag(ANNOUNCER_FLAG_DISABLE_AUTOBROADCAST);
|
on ? setting.RemoveFlag(ANNOUNCER_FLAG_DISABLE_AUTOBROADCAST) : setting.AddFlag(ANNOUNCER_FLAG_DISABLE_AUTOBROADCAST);
|
||||||
player->UpdatePlayerSetting(AzerothcorePSSource, SETTING_ANNOUNCER_FLAGS, setting.value);
|
player->UpdatePlayerSetting(AzerothcorePSSource, SETTING_ANNOUNCER_FLAGS, setting.value);
|
||||||
|
label = "autobroadcast";
|
||||||
}
|
}
|
||||||
|
|
||||||
handler->SetSentErrorMessage(false);
|
handler->SetSentErrorMessage(false);
|
||||||
handler->PSendSysMessage(on ? LANG_CMD_SETTINGS_ANNOUNCER_ON : LANG_CMD_SETTINGS_ANNOUNCER_OFF, type);
|
handler->PSendSysMessage(on ? LANG_CMD_SETTINGS_ANNOUNCER_ON : LANG_CMD_SETTINGS_ANNOUNCER_OFF, label ? label : type.c_str());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user