diff options
author | Kitzunu <24550914+Kitzunu@users.noreply.github.com> | 2025-07-27 09:59:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-07-27 09:59:13 +0200 |
commit | 60643ce5e735dee636b01acfa4e6eb141119a41a (patch) | |
tree | 2122560bb52204c7f0767ea027f229b9a789457b | |
parent | e66f763a9ca71c93b6dea885187d2d742ad792b3 (diff) |
feat(Script/Command): Add AccountFlag pinfo output (#22548)
-rw-r--r-- | data/sql/updates/pending_db_world/rev_1753369405792232900.sql | 4 | ||||
-rw-r--r-- | src/common/Common.h | 3 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/Language.h | 6 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_misc.cpp | 53 |
4 files changed, 64 insertions, 2 deletions
diff --git a/data/sql/updates/pending_db_world/rev_1753369405792232900.sql b/data/sql/updates/pending_db_world/rev_1753369405792232900.sql new file mode 100644 index 0000000000..9426855942 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1753369405792232900.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `acore_string` WHERE `entry` = 179; +INSERT INTO `acore_string` (`entry`, `content_default`) VALUES +(179, '| AccountFlags:'); diff --git a/src/common/Common.h b/src/common/Common.h index 98f343a45e..8a28414c01 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -61,6 +61,7 @@ enum AccountTypes SEC_CONSOLE = 4 // must be always last in list, accounts must have less security level always also }; +#define MAX_ACCOUNT_FLAG 32 enum AccountFlag { ACCOUNT_FLAG_GM = 0x1, // Account is GM @@ -96,7 +97,7 @@ enum AccountFlag // Below might be StarCraft II related ACCOUNT_FLAG_S2_REQUIRE_IGR = 0x40000000, // NYI UNK ACCOUNT_FLAG_S2_TRIAL = 0x80000000, // NYI UNK - ACCOUNT_FLAG_S2_RESTRICTED = 0xFFFFFFFF // NYI UNK + // ACCOUNT_FLAG_S2_RESTRICTED = 0xFFFFFFFF, // NYI UNK }; enum LocaleConstant diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 3565a6cce9..5658e4147d 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -217,7 +217,11 @@ enum AcoreStrings LANG_INVALID_GAMEOBJECT_TYPE = 176, LANG_GAMEOBJECT_DAMAGED = 177, LANG_GRID_POSITION = 178, - // 179-185 used in other client versions + + LANG_ACCOUNT_FLAGS_PINFO = 179, + + // Free 180-185 + LANG_TRANSPORT_POSITION = 186, LANG_PROFANITY_NAME = 187, LANG_2FA_SECRET_TOO_LONG = 188, 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); |