summaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
authorKitzunu <24550914+Kitzunu@users.noreply.github.com>2025-07-27 09:59:13 +0200
committerGitHub <noreply@github.com>2025-07-27 09:59:13 +0200
commit60643ce5e735dee636b01acfa4e6eb141119a41a (patch)
tree2122560bb52204c7f0767ea027f229b9a789457b /src/server/scripts
parente66f763a9ca71c93b6dea885187d2d742ad792b3 (diff)
feat(Script/Command): Add AccountFlag pinfo output (#22548)
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Commands/cs_misc.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp
index 5e83822c37..5ea7ce7060 100644
--- a/src/server/scripts/Commands/cs_misc.cpp
+++ b/src/server/scripts/Commands/cs_misc.cpp
@@ -22,6 +22,7 @@
#include "CharacterCache.h"
#include "Chat.h"
#include "CommandScript.h"
+#include "Common.h"
#include "GameGraveyard.h"
#include "GameTime.h"
#include "GridNotifiers.h"
@@ -57,6 +58,49 @@
constexpr auto SPELL_STUCK = 7355;
constexpr auto SPELL_FREEZE = 9454;
+struct AccountFlagText
+{
+ AccountFlag flag;
+ std::string text;
+};
+
+AccountFlagText const accountFlagText[MAX_ACCOUNT_FLAG] =
+{
+ { ACCOUNT_FLAG_GM, "ACCOUNT_FLAG_GM" },
+ { ACCOUNT_FLAG_NOKICK, "ACCOUNT_FLAG_NOKICK" },
+ { ACCOUNT_FLAG_COLLECTOR, "ACCOUNT_FLAG_COLLECTOR" },
+ { ACCOUNT_FLAG_TRIAL, "ACCOUNT_FLAG_TRIAL" },
+ { ACCOUNT_FLAG_CANCELLED, "ACCOUNT_FLAG_CANCELLED" },
+ { ACCOUNT_FLAG_IGR, "ACCOUNT_FLAG_IGR" },
+ { ACCOUNT_FLAG_WHOLESALER, "ACCOUNT_FLAG_WHOLESALER" },
+ { ACCOUNT_FLAG_PRIVILEGED, "ACCOUNT_FLAG_PRIVILEGED" },
+ { ACCOUNT_FLAG_EU_FORBID_ELV, "ACCOUNT_FLAG_EU_FORBID_ELV" },
+ { ACCOUNT_FLAG_EU_FORBID_BILLING, "ACCOUNT_FLAG_EU_FORBID_BILLING" },
+ { ACCOUNT_FLAG_RESTRICTED, "ACCOUNT_FLAG_RESTRICTED" },
+ { ACCOUNT_FLAG_REFERRAL, "ACCOUNT_FLAG_REFERRAL" },
+ { ACCOUNT_FLAG_BLIZZARD, "ACCOUNT_FLAG_BLIZZARD" },
+ { ACCOUNT_FLAG_RECURRING_BILLING, "ACCOUNT_FLAG_RECURRING_BILLING" },
+ { ACCOUNT_FLAG_NOELECTUP, "ACCOUNT_FLAG_NOELECTUP" },
+ { ACCOUNT_FLAG_KR_CERTIFICATE, "ACCOUNT_FLAG_KR_CERTIFICATE" },
+ { ACCOUNT_FLAG_EXPANSION_COLLECTOR, "ACCOUNT_FLAG_EXPANSION_COLLECTOR" },
+ { ACCOUNT_FLAG_DISABLE_VOICE, "ACCOUNT_FLAG_DISABLE_VOICE" },
+ { ACCOUNT_FLAG_DISABLE_VOICE_SPEAK, "ACCOUNT_FLAG_DISABLE_VOICE_SPEAK" },
+ { ACCOUNT_FLAG_REFERRAL_RESURRECT, "ACCOUNT_FLAG_REFERRAL_RESURRECT" },
+ { ACCOUNT_FLAG_EU_FORBID_CC, "ACCOUNT_FLAG_EU_FORBID_CC" },
+ { ACCOUNT_FLAG_OPENBETA_DELL, "ACCOUNT_FLAG_OPENBETA_DELL" },
+ { ACCOUNT_FLAG_PROPASS, "ACCOUNT_FLAG_PROPASS" },
+ { ACCOUNT_FLAG_PROPASS_LOCK, "ACCOUNT_FLAG_PROPASS_LOCK" },
+ { ACCOUNT_FLAG_PENDING_UPGRADE, "ACCOUNT_FLAG_PENDING_UPGRADE" },
+ { ACCOUNT_FLAG_RETAIL_FROM_TRIAL, "ACCOUNT_FLAG_RETAIL_FROM_TRIAL" },
+ { ACCOUNT_FLAG_EXPANSION2_COLLECTOR, "ACCOUNT_FLAG_EXPANSION2_COLLECTOR" },
+ { ACCOUNT_FLAG_OVERMIND_LINKED, "ACCOUNT_FLAG_OVERMIND_LINKED" },
+ { ACCOUNT_FLAG_DEMOS, "ACCOUNT_FLAG_DEMOS" },
+ { ACCOUNT_FLAG_DEATH_KNIGHT_OK, "ACCOUNT_FLAG_DEATH_KNIGHT_OK" },
+ { ACCOUNT_FLAG_S2_REQUIRE_IGR, "ACCOUNT_FLAG_S2_REQUIRE_IGR" },
+ { ACCOUNT_FLAG_S2_TRIAL, "ACCOUNT_FLAG_S2_TRIAL" },
+ // { ACCOUNT_FLAG_S2_RESTRICTED, "ACCOUNT_FLAG_S2_RESTRICTED" }
+};
+
std::string const GetLocalizeCreatureName(Creature* creature, LocaleConstant locale)
{
auto creatureTemplate = sObjectMgr->GetCreatureTemplate(creature->GetEntry());
@@ -2193,6 +2237,15 @@ public:
// Output V. LANG_PINFO_ACC_ACCOUNT
handler->PSendSysMessage(LANG_PINFO_ACC_ACCOUNT, userName, accId, security);
+ if (playerTarget)
+ {
+ uint32 accountFlags = playerTarget->GetSession()->GetAccountFlags();
+ handler->PSendSysMessage(LANG_ACCOUNT_FLAGS_PINFO);
+ for (uint8 i = 0; i < MAX_ACCOUNT_FLAG; i++)
+ if (accountFlags & static_cast<uint32>(accountFlagText[i].flag))
+ handler->PSendSysMessage(LANG_SUBCMDS_LIST_ENTRY, accountFlagText[i].text);
+ }
+
// Output VI. LANG_PINFO_ACC_LASTLOGIN
handler->PSendSysMessage(LANG_PINFO_ACC_LASTLOGIN, lastLogin, failedLogins);