Core/Players: Define all character flags used in SMSG_ENUM_CHARACTERS_RESULT
Port From (https://github.com/TrinityCore/TrinityCore/commit/171003639293b7c08d491849374ed5a88998a46b)
This commit is contained in:
@@ -385,41 +385,134 @@ namespace Framework.Constants
|
|||||||
UnlockedAoeLoot = 0x0200
|
UnlockedAoeLoot = 0x0200
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum CharacterFlags : uint
|
public enum CharacterFlags
|
||||||
{
|
{
|
||||||
None = 0x00000000,
|
None = 0x00000000,
|
||||||
Unk1 = 0x00000001,
|
InvisGod = 0x00000001, // Player Has God Invis Enabled
|
||||||
Resting = 0x00000002,
|
Resting = 0x00000002, // Player Is Currently Earning Rest Experience
|
||||||
CharacterLockedForTransfer = 0x00000004,
|
LockedForTransfer = 0x00000004, // Player Is Locked - For Paid Character Transfer
|
||||||
Unk4 = 0x00000008,
|
Silenced = 0x00000008, // Player's Chat Is Silenced (Can Talk To Gms)
|
||||||
Unk5 = 0x00000010,
|
UberinvisGod = 0x00000010, // Player Has God Uberinvis Enabled
|
||||||
Unk6 = 0x00000020,
|
Beastmaster = 0x00000020, // Beastmaster Is On
|
||||||
Unk7 = 0x00000040,
|
PvpEnabled = 0x00000040, // Pvp Enabled
|
||||||
Unk8 = 0x00000080,
|
PortAfterResurrect = 0x00000080, // World Port After Resurrect
|
||||||
Unk9 = 0x00000100,
|
ResetTalentsOnLogin = 0x00000100, // Clear Talents On Login
|
||||||
Unk10 = 0x00000200,
|
HasPvpRank = 0x00000200, // Player Has A Pvp Rank
|
||||||
HideHelm = 0x00000400,
|
HideHelm = 0x00000400, // Hide Helm
|
||||||
HideCloak = 0x00000800,
|
HideCloak = 0x00000800, // Hide Cloak
|
||||||
Unk13 = 0x00001000,
|
Skinnable = 0x00001000, // Player Is Skinnable
|
||||||
Ghost = 0x00002000,
|
Ghost = 0x00002000, // Player Is A Ghost
|
||||||
Rename = 0x00004000,
|
Rename = 0x00004000, // Set To Force A Rename
|
||||||
Unk16 = 0x00008000,
|
RenameNeedsGmReview = 0x00008000, // Flag Is Set After Rename For Gm Review
|
||||||
Unk17 = 0x00010000,
|
PvpDesired = 0x00010000, // Pvp Desired Flag
|
||||||
Unk18 = 0x00020000,
|
GmMode = 0x00020000, // Gm Mode Enabled
|
||||||
Unk19 = 0x00040000,
|
DeletedByTransfer = 0x00040000, // Deleted By A Character Transfer
|
||||||
Unk20 = 0x00080000,
|
OnUnsafeTransport = 0x00080000, // On Unsafe Transport (Port To Safe Loc On Log In)
|
||||||
Unk21 = 0x00100000,
|
RenameFailed = 0x00100000, // Player Unable To Rename Character
|
||||||
Unk22 = 0x00200000,
|
MountUpgraded = 0x00200000, // Mount Has Been Upgraded
|
||||||
Unk23 = 0x00400000,
|
FriendsListNeedsRepair = 0x00400000, // Friends List Requires A Repair
|
||||||
Unk24 = 0x00800000,
|
ExplorationDataFixed = 0x00800000, // Character Had Their Exploration Data Fixed
|
||||||
LockedByBilling = 0x01000000,
|
LockedByBilling = 0x01000000, // Locked Due To Billing
|
||||||
Declined = 0x02000000,
|
Declined = 0x02000000, // Player Has Russian Declined Name Forms
|
||||||
Unk27 = 0x04000000,
|
Commentator = 0x04000000, // Commentator Mode Enabled
|
||||||
Unk28 = 0x08000000,
|
UberCommentator = 0x08000000, // Uber Commentator Mode Enabled
|
||||||
Unk29 = 0x10000000,
|
XpFixed = 0x10000000, // Player's Xp Has Been Fixed (2.2.X->2.3.0)
|
||||||
Unk30 = 0x20000000,
|
LogPackets = 0x20000000, // Log Player Packets
|
||||||
Unk31 = 0x40000000,
|
CompensateForSpells = 0x40000000 // Compensate For Spells
|
||||||
Unk32 = 0x80000000
|
}
|
||||||
|
|
||||||
|
public enum CharacterFlags2
|
||||||
|
{
|
||||||
|
None = 0x00000000,
|
||||||
|
Customize = 0x00000001, // Player Has Paid For A Character Re-Customization
|
||||||
|
GmSupporterProxy = 0x00000002, // Gmsupportserver Proxy, Not For Gmtool Use
|
||||||
|
CanLoadOnNonShipTranport = 0x00000004, // Character Has Been Saved At Least Once Since Saving On Non-Ship Transports Was Added
|
||||||
|
BattleMasterMiscIsTaxiId = 0x00000008, // Battle Master Misc Field Is A Taxi Id
|
||||||
|
TempPetAutocastSpell1 = 0x00000010, // Temp Pet Autocast Spell 1
|
||||||
|
TempPetAutocastSpell2 = 0x00000020, // Temp Pet Autocast Spell 2
|
||||||
|
TempPetAutocastSpell3 = 0x00000040, // Temp Pet Autocast Spell 3
|
||||||
|
TempPetAutocastSpell4 = 0x00000080, // Temp Pet Autocast Spell 4
|
||||||
|
TempPetAggressive = 0x00000100, // Temp Pet Aggressive
|
||||||
|
TempPetPassive = 0x00000200, // Temp Pet Passive
|
||||||
|
CanInteractWithOtherRealmsInSite = 0x00000400, // Characters Can Interact With Other Realms In The Site
|
||||||
|
CanInteractWithOtherRealmsInRegion = 0x00000800, // Characters Can Interact With Other Realms In The Region
|
||||||
|
BattleMasterMiscIsAreaId = 0x00001000, // Battle Master Misc Field Is An Area Id
|
||||||
|
ReevaluateAccountItemLicenses = 0x00002000, // Account Item Licenses Must Be Reevaluated On Next Login
|
||||||
|
BattleMasterMiscIsTransport = 0x00004000, // Battle Master Misc Field Is A Transport
|
||||||
|
TalentsResetUsingTalentGroupData = 0x00008000, // Players Talents Have Been Reset Using Talent Group Data
|
||||||
|
FactionChange = 0x00010000, // This Character Is Eligible To Change His Faction
|
||||||
|
HasChangedRaceOrFaction = 0x00020000, // This Character Has Changed His Race/Faction And Now Requires The World Server To Repair Him
|
||||||
|
NoXpGain = 0x00040000, // This Character Has Chosen To Not Gain Xp By Any Means
|
||||||
|
RecastOnResummon = 0x00080000, // Recast On Resummon
|
||||||
|
RaceChange = 0x00100000, // This Character Is Eligible To Change His Race
|
||||||
|
ChangedTempPetAutocastSpell1 = 0x00200000, // Player Has Changed Temp Pet Autocast Spell 1
|
||||||
|
ChangedTempPetAutocastSpell2 = 0x00400000, // Player Has Changed Temp Pet Autocast Spell 2
|
||||||
|
ChangedTempPetAutocastSpell3 = 0x00800000, // Player Has Changed Temp Pet Autocast Spell 3
|
||||||
|
ChangedTempPetAutocastSpell4 = 0x01000000, // Player Has Changed Temp Pet Autocast Spell 4
|
||||||
|
ChangedGuildDuringCharacterTransfer = 0x02000000, // Player Has Transferred Guilds During A Pct
|
||||||
|
CanUseVoidStorageFeature = 0x04000000, // Player Is Allowed To Use The Void Storage Feature
|
||||||
|
BattlePetsConverted = 0x08000000, // Battle Pets Converted
|
||||||
|
QuestsFixed = 0x10000000, // Player Has Had His Quests Fixed
|
||||||
|
LowLevelRaidEnabled = 0x20000000, // The Player Can Join Raids Even If He's Below The Min Raid Level
|
||||||
|
AutoDeclineGuild = 0x40000000 // The Player Will Automatically Decline Guild Invites
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum CharacterFlags3
|
||||||
|
{
|
||||||
|
None = 0x00000000,
|
||||||
|
IsBattlePetTraier = 0x00000001, // Player Is A Battle Pet Trainer
|
||||||
|
HideAccountAchievements = 0x00000002, // Player Has Opted To Hide His Account And Merged Achievements
|
||||||
|
BattlePetsConvertedAndLocked = 0x00000004, // Battle Pet Conversion Complete But Pets Still Locked
|
||||||
|
TransferredBetweenBnetAccounts = 0x00000008, // Player Has Performed A Pct Between Two Bnet Accounts
|
||||||
|
UpgradeInProgress = 0x00000010, // Character Upgrade In Progress
|
||||||
|
BattleMasterMiscIsLfgDungeon = 0x00000020, // Battle Master Misc Field Is A Lfgdungeons Rec Id
|
||||||
|
NewPlayerGuide = 0x00000040, // New Player Guide
|
||||||
|
LockedByRevokedCharacterUpgrade = 0x00000080, // Character Locked Due To Revoked Upgrade
|
||||||
|
NeedsFirstTimeFixup = 0x00000100, // Character Needs First Time Fix Up
|
||||||
|
WasBoostedAndHasLimitedSpells = 0x00000200, // Character Was Upgraded And Has Limited Access To Spells
|
||||||
|
DidQuestItemCleanup = 0x00000400, // Did Quest Item Cleanup
|
||||||
|
ReagentBankUnlocked = 0x00000800, // Reagent Bank Unlocked
|
||||||
|
PetBeastmaster = 0x00001000, // Pet Beastmaster Is On
|
||||||
|
RechargeOnLogin = 0x00002000, // Recharge On Login
|
||||||
|
FixupWodFactionChangeBug = 0x00004000, // Fixup Wod Faction Change Bug
|
||||||
|
FixupWodXp = 0x00008000, // Fixup Wod Xp To Set To 0 For Level 90
|
||||||
|
CheckForRestorableData = 0x00010000, // Check For Restorable Data
|
||||||
|
HasBnetToken = 0x00020000, // Has A Battle.Net Token
|
||||||
|
BnetTokenTransactionInProgress = 0x00040000, // Battle.Net Token Transaction In Progress
|
||||||
|
LevelWasScaled = 0x00080000, // Player's Level Was Scaled At Last Save
|
||||||
|
LockedByRevokedVasTransaction = 0x00100000, // Character Locked Due To Revoked Vas Purchase
|
||||||
|
VasProductApplicationInProgress = 0x00200000, // Character Vas Product Application In Progress
|
||||||
|
WasRecentlyBoosted = 0x00400000, // Character Was Recently Boosted
|
||||||
|
CurrentlyProcessingVasPurchase = 0x00800000, // Character Is Currently Processing A Vas Purchase (Disables Web Purchases)
|
||||||
|
LegionSpecWeaponFixedUp = 0x01000000, // Legion Spec Weapon Fixed Up
|
||||||
|
SentAchievementHistoryToBi = 0x02000000, // Sent Achievement History To Bi
|
||||||
|
GrantedLevelsFromRaf = 0x04000000, // Character Has Been Granted At Least One Single Level Boost From Recruit A Friend System
|
||||||
|
WarModeDesired = 0x08000000, // Character Has Opted-In To Warmode
|
||||||
|
HonorConvertedToAccountWide = 0x10000000, // Honor Has Been Converted To Account Wide
|
||||||
|
KeystoneFixedUpForLegionRollover = 0x20000000, // Keystone Has Been Fixed-Up For Legion Rollover
|
||||||
|
MythicPlusSeason1AchievementFixedUp = 0x40000000, // Mythic+ Season 1 Achievement Has Been Fixed-Up
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum CharacterFlags4
|
||||||
|
{
|
||||||
|
None = 0x00000000,
|
||||||
|
UsedRpeReset = 0x00000001, // Character Has Used A Rpe Reset Recently
|
||||||
|
OnlyRpeResetOrTimerunningEndBoost = 0x00000002, // Character Has Only Ever Used An Rpe Reset Boost Or Timerunning-Season-End Boost
|
||||||
|
SelfFound = 0x00000004, // Character Is Self-Found, And Cannot Trade, Use The Auction House, Or Use Most Mail Functions
|
||||||
|
TimerunningConversionDone = 0x00000008, // Character Has Been Updated To Normal Characters From A Timerunning Season
|
||||||
|
LoggedInByCrawlerOverridingLocks = 0x00000010, // Character Is Being Logged In By Crawler Overriding Locks.
|
||||||
|
ProcessedForWarbands = 0x00000020, // Character Has Had Their Information Added To Account-Wide Warband Tracking
|
||||||
|
LoggedOutWhileLorewalking = 0x00000040, // Character Last Logged Out While Actively Lorewalking
|
||||||
|
NoNeighborhoodInvites = 0x00000080, // Character Does Not Accept Neighborhood Invites
|
||||||
|
CheckedFor2ndWaveAccountWideFactions = 0x00000100, // Character Has Been Checked For 2nd Wave Of Account Wide Factions
|
||||||
|
WillBeResurrectedInHardcore = 0x00000200, // Character Will Be Resurrected Overriding Hardcore Game Rule
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum CharacterRestrictionFlags
|
||||||
|
{
|
||||||
|
CharacterRestrictionFlagTrialBoost = 0x00000080,
|
||||||
|
CharacterRestrictionFlagTrialBoostLocked = 0x00040000,
|
||||||
|
CharacterRestrictionFlagExpansionTrial = 0x00080000,
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum PlayerLocalFlags
|
public enum PlayerLocalFlags
|
||||||
@@ -470,26 +563,6 @@ namespace Framework.Constants
|
|||||||
RAFLinked = 6
|
RAFLinked = 6
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum CharacterCustomizeFlags
|
|
||||||
{
|
|
||||||
None = 0x00,
|
|
||||||
Customize = 0x01, // Name, Gender, Etc...
|
|
||||||
Faction = 0x10000, // Name, Gender, Faction, Etc...
|
|
||||||
Race = 0x100000 // Name, Gender, Race, Etc...
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum CharacterFlags3 : uint
|
|
||||||
{
|
|
||||||
LockedByRevokedVasTransaction = 0x100000,
|
|
||||||
LockedByRevokedCharacterUpgrade = 0x80000000,
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum CharacterFlags4
|
|
||||||
{
|
|
||||||
TrialBoost = 0x80,
|
|
||||||
TrialBoostLocked = 0x40000,
|
|
||||||
}
|
|
||||||
|
|
||||||
public enum TextureSection // TODO: Find a better name. Used in CharSections.dbc
|
public enum TextureSection // TODO: Find a better name. Used in CharSections.dbc
|
||||||
{
|
{
|
||||||
BaseSkin = 0,
|
BaseSkin = 0,
|
||||||
|
|||||||
@@ -89,18 +89,18 @@ namespace Game
|
|||||||
|
|
||||||
charInfo.Customizations.Clear();
|
charInfo.Customizations.Clear();
|
||||||
|
|
||||||
if (!charInfo.Flags2.HasAnyFlag(CharacterCustomizeFlags.Customize | CharacterCustomizeFlags.Faction | CharacterCustomizeFlags.Race))
|
if (!charInfo.Flags2.HasAnyFlag(CharacterFlags2.Customize | CharacterFlags2.FactionChange | CharacterFlags2.RaceChange))
|
||||||
{
|
{
|
||||||
PreparedStatement stmt = CharacterDatabase.GetPreparedStatement(CharStatements.UPD_ADD_AT_LOGIN_FLAG);
|
PreparedStatement stmt = CharacterDatabase.GetPreparedStatement(CharStatements.UPD_ADD_AT_LOGIN_FLAG);
|
||||||
stmt.AddValue(0, (ushort)AtLoginFlags.Customize);
|
stmt.AddValue(0, (ushort)AtLoginFlags.Customize);
|
||||||
stmt.AddValue(1, charInfo.Guid.GetCounter());
|
stmt.AddValue(1, charInfo.Guid.GetCounter());
|
||||||
DB.Characters.Execute(stmt);
|
DB.Characters.Execute(stmt);
|
||||||
charInfo.Flags2 = CharacterCustomizeFlags.Customize;
|
charInfo.Flags2 = CharacterFlags2.Customize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do not allow locked characters to login
|
// Do not allow locked characters to login
|
||||||
if (!charInfo.Flags.HasAnyFlag(CharacterFlags.CharacterLockedForTransfer | CharacterFlags.LockedByBilling))
|
if (!charInfo.Flags.HasAnyFlag(CharacterFlags.LockedForTransfer | CharacterFlags.LockedByBilling))
|
||||||
_legitCharacters.Add(charInfo.Guid);
|
_legitCharacters.Add(charInfo.Guid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -106,9 +106,12 @@ namespace Game.Networking.Packets
|
|||||||
PlayerFlags playerFlags = (PlayerFlags)fields.Read<uint>(12);
|
PlayerFlags playerFlags = (PlayerFlags)fields.Read<uint>(12);
|
||||||
AtLoginFlags atLoginFlags = (AtLoginFlags)fields.Read<ushort>(13);
|
AtLoginFlags atLoginFlags = (AtLoginFlags)fields.Read<ushort>(13);
|
||||||
|
|
||||||
if (playerFlags.HasFlag(PlayerFlags.Resting))
|
if (playerFlags.HasAnyFlag(PlayerFlags.Resting))
|
||||||
Flags |= CharacterFlags.Resting;
|
Flags |= CharacterFlags.Resting;
|
||||||
|
|
||||||
|
if (atLoginFlags.HasAnyFlag(AtLoginFlags.ResetTalents))
|
||||||
|
Flags |= CharacterFlags.ResetTalentsOnLogin;
|
||||||
|
|
||||||
if (atLoginFlags.HasAnyFlag(AtLoginFlags.Resurrect))
|
if (atLoginFlags.HasAnyFlag(AtLoginFlags.Resurrect))
|
||||||
playerFlags &= ~PlayerFlags.Ghost;
|
playerFlags &= ~PlayerFlags.Ghost;
|
||||||
|
|
||||||
@@ -125,11 +128,26 @@ namespace Game.Networking.Packets
|
|||||||
Flags |= CharacterFlags.Declined;
|
Flags |= CharacterFlags.Declined;
|
||||||
|
|
||||||
if (atLoginFlags.HasAnyFlag(AtLoginFlags.Customize))
|
if (atLoginFlags.HasAnyFlag(AtLoginFlags.Customize))
|
||||||
Flags2 = CharacterCustomizeFlags.Customize;
|
Flags2 = CharacterFlags2.Customize;
|
||||||
else if (atLoginFlags.HasAnyFlag(AtLoginFlags.ChangeFaction))
|
else if (atLoginFlags.HasAnyFlag(AtLoginFlags.ChangeFaction))
|
||||||
Flags2 = CharacterCustomizeFlags.Faction;
|
Flags2 = CharacterFlags2.FactionChange;
|
||||||
else if (atLoginFlags.HasAnyFlag(AtLoginFlags.ChangeRace))
|
else if (atLoginFlags.HasAnyFlag(AtLoginFlags.ChangeRace))
|
||||||
Flags2 = CharacterCustomizeFlags.Race;
|
Flags2 = CharacterFlags2.RaceChange;
|
||||||
|
|
||||||
|
if (playerFlags.HasAnyFlag(PlayerFlags.NoXPGain))
|
||||||
|
Flags2 |= CharacterFlags2.NoXpGain;
|
||||||
|
|
||||||
|
if (playerFlags.HasAnyFlag(PlayerFlags.LowLevelRaidEnabled))
|
||||||
|
Flags2 |= CharacterFlags2.LowLevelRaidEnabled;
|
||||||
|
|
||||||
|
if (playerFlags.HasAnyFlag(PlayerFlags.AutoDeclineGuild))
|
||||||
|
Flags2 |= CharacterFlags2.AutoDeclineGuild;
|
||||||
|
|
||||||
|
if (playerFlags.HasAnyFlag(PlayerFlags.HidAccountAchievements))
|
||||||
|
Flags3 |= CharacterFlags3.HideAccountAchievements;
|
||||||
|
|
||||||
|
if (playerFlags.HasAnyFlag(PlayerFlags.WarModeDesired))
|
||||||
|
Flags3 |= CharacterFlags3.WarModeDesired;
|
||||||
|
|
||||||
FirstLogin = atLoginFlags.HasAnyFlag(AtLoginFlags.FirstLogin);
|
FirstLogin = atLoginFlags.HasAnyFlag(AtLoginFlags.FirstLogin);
|
||||||
|
|
||||||
@@ -196,8 +214,8 @@ namespace Game.Networking.Packets
|
|||||||
data.WritePackedGuid(GuildGuid);
|
data.WritePackedGuid(GuildGuid);
|
||||||
data.WriteUInt32((uint)Flags);
|
data.WriteUInt32((uint)Flags);
|
||||||
data.WriteUInt32((uint)Flags2);
|
data.WriteUInt32((uint)Flags2);
|
||||||
data.WriteUInt32(Flags3);
|
data.WriteUInt32((uint)Flags3);
|
||||||
data.WriteUInt32(Flags4);
|
data.WriteUInt32((uint)Flags4);
|
||||||
data.WriteUInt8(CantLoginReason);
|
data.WriteUInt8(CantLoginReason);
|
||||||
|
|
||||||
data.WriteUInt32(PetCreatureDisplayId);
|
data.WriteUInt32(PetCreatureDisplayId);
|
||||||
@@ -249,9 +267,9 @@ namespace Game.Networking.Packets
|
|||||||
public Vector3 PreloadPos;
|
public Vector3 PreloadPos;
|
||||||
public ObjectGuid GuildGuid;
|
public ObjectGuid GuildGuid;
|
||||||
public CharacterFlags Flags; // Character flag @see enum CharacterFlags
|
public CharacterFlags Flags; // Character flag @see enum CharacterFlags
|
||||||
public CharacterCustomizeFlags Flags2; // Character customization flags @see enum CharacterCustomizeFlags
|
public CharacterFlags2 Flags2; // Character flag2 @see enum CharacterFlags2
|
||||||
public uint Flags3; // Character flags 3 @todo research
|
public CharacterFlags3 Flags3; // Character flag3 @see enum CharacterFlags3
|
||||||
public uint Flags4; ///< Character flags 4 @todo research
|
public CharacterFlags4 Flags4; // Character flag4 @see enum CharacterFlags4
|
||||||
public bool FirstLogin;
|
public bool FirstLogin;
|
||||||
public byte CantLoginReason;
|
public byte CantLoginReason;
|
||||||
public long LastActiveTime;
|
public long LastActiveTime;
|
||||||
|
|||||||
Reference in New Issue
Block a user