I didn't find scan.dll in the client....Will Cheat Engineer be detected?Why is it removed? Does Blz develope a new way to detect this?
I didn't find scan.dll in the client....Will Cheat Engineer be detected?Why is it removed? Does Blz develope a new way to detect this?
CheatEngine is still detected on launch, and I do have a Scan.dll file in my directory (along with a 64 bit version which was updated a month ago.) I haven't bothered extracting AccountLogin.lua (where Blizzard calls ScanDLL Start/receives the events from ScanDLL) but it is most likely still the same as before.
Really? it's strange... I don't have scan.dll in my beta client....I don't dare to test it ....
Cheat Engine detection isn't anything to worry about. It isn't sent to Blizzard and even if it was, it is detected prior to login... what are they going to do, an IP ban? I would imagine they would get a lot of false positives with those kind of blanket bans.
<deleted> *
Last edited by fortiZ; 08-20-2012 at 12:16 AM. Reason: sry m8
someone has a backup of TOM_RUS "Unit Descriptors" paste2 upload?
would be great, thank you.
And here current descriptors from 16004:
Code:// Updatefields auto generated for version 5.0.4.16004 namespace Framework.Constants { public enum ObjectFields { Guid = 0x0, Data = 0x2, Type = 0x4, Entry = 0x5, Scale = 0x6, End = 0x7 }; public enum ItemFields { Owner = ObjectFields.End + 0x0, ContainedIn = ObjectFields.End + 0x2, Creator = ObjectFields.End + 0x4, GiftCreator = ObjectFields.End + 0x6, StackCount = ObjectFields.End + 0x8, Expiration = ObjectFields.End + 0x9, SpellCharges = ObjectFields.End + 0xA, DynamicFlags = ObjectFields.End + 0xF, Enchantment = ObjectFields.End + 0x10, PropertySeed = ObjectFields.End + 0x37, RandomPropertiesID = ObjectFields.End + 0x38, Durability = ObjectFields.End + 0x39, MaxDurability = ObjectFields.End + 0x3A, CreatePlayedTime = ObjectFields.End + 0x3B, ModifiersMask = ObjectFields.End + 0x3C, End = ObjectFields.End + 0x3D }; public enum ItemDynamicFields { Modifiers = ObjectFields.End + 0x0, End = ObjectFields.End + 0x4 } public enum ContainerFields { NumSlots = ItemFields.End + 0x0, Slots = ItemFields.End + 0x1, End = ItemFields.End + 0x49 }; public enum UnitFields { Charm = ObjectFields.End + 0x0, Summon = ObjectFields.End + 0x2, Critter = ObjectFields.End + 0x4, CharmedBy = ObjectFields.End + 0x6, SummonedBy = ObjectFields.End + 0x8, CreatedBy = ObjectFields.End + 0xA, Target = ObjectFields.End + 0xC, ChannelObject = ObjectFields.End + 0xE, SummonedByHomeRealm = ObjectFields.End + 0x10, ChannelSpell = ObjectFields.End + 0x11, DisplayPower = ObjectFields.End + 0x12, OverrideDisplayPowerID = ObjectFields.End + 0x13, Health = ObjectFields.End + 0x14, Power = ObjectFields.End + 0x15, MaxHealth = ObjectFields.End + 0x1A, MaxPower = ObjectFields.End + 0x1B, PowerRegenFlatModifier = ObjectFields.End + 0x20, PowerRegenInterruptedFlatModifier = ObjectFields.End + 0x25, Level = ObjectFields.End + 0x2A, FactionTemplate = ObjectFields.End + 0x2B, VirtualItemID = ObjectFields.End + 0x2C, Flags = ObjectFields.End + 0x2F, Flags2 = ObjectFields.End + 0x30, AuraState = ObjectFields.End + 0x31, AttackRoundBaseTime = ObjectFields.End + 0x32, RangedAttackRoundBaseTime = ObjectFields.End + 0x34, BoundingRadius = ObjectFields.End + 0x35, CombatReach = ObjectFields.End + 0x36, DisplayID = ObjectFields.End + 0x37, NativeDisplayID = ObjectFields.End + 0x38, MountDisplayID = ObjectFields.End + 0x39, MinDamage = ObjectFields.End + 0x3A, MaxDamage = ObjectFields.End + 0x3B, MinOffHandDamage = ObjectFields.End + 0x3C, MaxOffHandDamage = ObjectFields.End + 0x3D, AnimTier = ObjectFields.End + 0x3E, PetNumber = ObjectFields.End + 0x3F, PetNameTimestamp = ObjectFields.End + 0x40, PetExperience = ObjectFields.End + 0x41, PetNextLevelExperience = ObjectFields.End + 0x42, DynamicFlags = ObjectFields.End + 0x43, ModCastingSpeed = ObjectFields.End + 0x44, ModSpellHaste = ObjectFields.End + 0x45, ModHaste = ObjectFields.End + 0x46, ModHasteRegen = ObjectFields.End + 0x47, CreatedBySpell = ObjectFields.End + 0x48, NpcFlags = ObjectFields.End + 0x49, EmoteState = ObjectFields.End + 0x4B, Stats = ObjectFields.End + 0x4C, StatPosBuff = ObjectFields.End + 0x51, StatNegBuff = ObjectFields.End + 0x56, Resistances = ObjectFields.End + 0x5B, ResistanceBuffModsPositive = ObjectFields.End + 0x62, ResistanceBuffModsNegative = ObjectFields.End + 0x69, BaseMana = ObjectFields.End + 0x70, BaseHealth = ObjectFields.End + 0x71, ShapeshiftForm = ObjectFields.End + 0x72, AttackPower = ObjectFields.End + 0x73, AttackPowerModPos = ObjectFields.End + 0x74, AttackPowerModNeg = ObjectFields.End + 0x75, AttackPowerMultiplier = ObjectFields.End + 0x76, RangedAttackPower = ObjectFields.End + 0x77, RangedAttackPowerModPos = ObjectFields.End + 0x78, RangedAttackPowerModNeg = ObjectFields.End + 0x79, RangedAttackPowerMultiplier = ObjectFields.End + 0x7A, MinRangedDamage = ObjectFields.End + 0x7B, MaxRangedDamage = ObjectFields.End + 0x7C, PowerCostModifier = ObjectFields.End + 0x7D, PowerCostMultiplier = ObjectFields.End + 0x84, MaxHealthModifier = ObjectFields.End + 0x8B, HoverHeight = ObjectFields.End + 0x8C, MinItemLevel = ObjectFields.End + 0x8D, MaxItemLevel = ObjectFields.End + 0x8E, WildBattlePetLevel = ObjectFields.End + 0x8F, BattlePetCompanionID = ObjectFields.End + 0x90, BattlePetCompanionNameTimestamp = ObjectFields.End + 0x91, End = ObjectFields.End + 0x92 }; public enum UnitDynamicFields { PassiveSpells = ObjectFields.End + 0x0, End = ObjectFields.End + 0x101 } public enum PlayerFields { DuelArbiter = UnitFields.End + 0x0, PlayerFlags = UnitFields.End + 0x2, GuildRankID = UnitFields.End + 0x3, GuildDeleteDate = UnitFields.End + 0x4, GuildLevel = UnitFields.End + 0x5, HairColorID = UnitFields.End + 0x6, RestState = UnitFields.End + 0x7, ArenaFaction = UnitFields.End + 0x8, DuelTeam = UnitFields.End + 0x9, GuildTimeStamp = UnitFields.End + 0xA, QuestLog = UnitFields.End + 0xB, VisibleItems = UnitFields.End + 0x2F9, PlayerTitle = UnitFields.End + 0x31F, FakeInebriation = UnitFields.End + 0x320, HomePlayerRealm = UnitFields.End + 0x321, CurrentSpecID = UnitFields.End + 0x322, TaxiMountAnimKitID = UnitFields.End + 0x323, PartyType = UnitFields.End + 0x324, InvSlots = UnitFields.End + 0x325, FarsightObject = UnitFields.End + 0x3D1, KnownTitles = UnitFields.End + 0x3D3, XP = UnitFields.End + 0x3DB, NextLevelXP = UnitFields.End + 0x3DC, Skill = UnitFields.End + 0x3DD, CharacterPoints = UnitFields.End + 0x59D, MaxTalentTiers = UnitFields.End + 0x59E, TrackCreatureMask = UnitFields.End + 0x59F, TrackResourceMask = UnitFields.End + 0x5A0, Expertise = UnitFields.End + 0x5A1, OffhandExpertise = UnitFields.End + 0x5A2, RangedExpertise = UnitFields.End + 0x5A3, BlockPercentage = UnitFields.End + 0x5A4, DodgePercentage = UnitFields.End + 0x5A5, ParryPercentage = UnitFields.End + 0x5A6, CritPercentage = UnitFields.End + 0x5A7, RangedCritPercentage = UnitFields.End + 0x5A8, OffhandCritPercentage = UnitFields.End + 0x5A9, SpellCritPercentage = UnitFields.End + 0x5AA, ShieldBlock = UnitFields.End + 0x5B1, ShieldBlockCritPercentage = UnitFields.End + 0x5B2, Mastery = UnitFields.End + 0x5B3, PvpPower = UnitFields.End + 0x5B4, ExploredZones = UnitFields.End + 0x5B5, RestStateBonusPool = UnitFields.End + 0x67D, Coinage = UnitFields.End + 0x67E, ModDamageDonePos = UnitFields.End + 0x680, ModDamageDoneNeg = UnitFields.End + 0x687, ModDamageDonePercent = UnitFields.End + 0x68E, ModHealingDonePos = UnitFields.End + 0x695, ModHealingPercent = UnitFields.End + 0x696, ModHealingDonePercent = UnitFields.End + 0x697, ModPeriodicHealingDonePercent = UnitFields.End + 0x698, WeaponDmgMultipliers = UnitFields.End + 0x699, ModSpellPowerPercent = UnitFields.End + 0x69C, ModResiliencePercent = UnitFields.End + 0x69D, OverrideSpellPowerByAPPercent = UnitFields.End + 0x69E, OverrideAPBySpellPowerPercent = UnitFields.End + 0x69F, ModTargetResistance = UnitFields.End + 0x6A0, ModTargetPhysicalResistance = UnitFields.End + 0x6A1, LifetimeMaxRank = UnitFields.End + 0x6A2, SelfResSpell = UnitFields.End + 0x6A3, PvpMedals = UnitFields.End + 0x6A4, BuybackPrice = UnitFields.End + 0x6A5, BuybackTimestamp = UnitFields.End + 0x6B1, YesterdayHonorableKills = UnitFields.End + 0x6BD, LifetimeHonorableKills = UnitFields.End + 0x6BE, WatchedFactionIndex = UnitFields.End + 0x6BF, CombatRatings = UnitFields.End + 0x6C0, ArenaTeams = UnitFields.End + 0x6DB, BattlegroundRating = UnitFields.End + 0x6F0, MaxLevel = UnitFields.End + 0x6F1, RuneRegen = UnitFields.End + 0x6F2, NoReagentCostMask = UnitFields.End + 0x6F6, GlyphSlots = UnitFields.End + 0x6FA, Glyphs = UnitFields.End + 0x700, GlyphSlotsEnabled = UnitFields.End + 0x706, PetSpellPower = UnitFields.End + 0x707, Researching = UnitFields.End + 0x708, ProfessionSkillLine = UnitFields.End + 0x710, UiHitModifier = UnitFields.End + 0x712, UiSpellHitModifier = UnitFields.End + 0x713, HomeRealmTimeOffset = UnitFields.End + 0x714, ModRangedHaste = UnitFields.End + 0x715, ModPetHaste = UnitFields.End + 0x716, SummonedBattlePetID = UnitFields.End + 0x717, AuraVision = UnitFields.End + 0x718, OverrideSpellsID = UnitFields.End + 0x719, End = UnitFields.End + 0x71A }; public enum PlayerDynamicFields { ResearchSites = UnitFields.End + 0x0, DailyQuestsCompleted = UnitFields.End + 0x2, End = UnitFields.End + 0x4 } public enum GameObjectFields { CreatedBy = ObjectFields.End + 0x0, DisplayID = ObjectFields.End + 0x2, Flags = ObjectFields.End + 0x3, ParentRotation = ObjectFields.End + 0x4, AnimProgress = ObjectFields.End + 0x8, FactionTemplate = ObjectFields.End + 0x9, Level = ObjectFields.End + 0xA, PercentHealth = ObjectFields.End + 0xB, End = ObjectFields.End + 0xC }; public enum DynamicObjectFields { Caster = ObjectFields.End + 0x0, TypeAndVisualID = ObjectFields.End + 0x2, SpellId = ObjectFields.End + 0x3, Radius = ObjectFields.End + 0x4, CastTime = ObjectFields.End + 0x5, End = ObjectFields.End + 0x6 }; public enum CorpseFields { Owner = ObjectFields.End + 0x0, PartyGuid = ObjectFields.End + 0x2, DisplayId = ObjectFields.End + 0x4, Items = ObjectFields.End + 0x5, SkinId = ObjectFields.End + 0x18, FacialHairStyleId = ObjectFields.End + 0x19, Flags = ObjectFields.End + 0x1A, DynamicFlags = ObjectFields.End + 0x1B, End = ObjectFields.End + 0x1C }; public enum AreaTriggerFields { Caster = ObjectFields.End + 0x0, SpellId = ObjectFields.End + 0x2, SpellVisualId = ObjectFields.End + 0x3, Duration = ObjectFields.End + 0x4, End = ObjectFields.End + 0x5 }; public enum SceneObjectFields { ScriptPackageId = ObjectFields.End + 0x0, RndSeedVal = ObjectFields.End + 0x1, CreatedBy = ObjectFields.End + 0x2, End = ObjectFields.End + 0x4 }; }Code:namespace Framework.Constants { [Flags] public enum UpdateFieldFlags { All = 0x1, Self = 0x2, Owner = 0x4, Empath = 0x10, Party = 0x20, UnitAll = 0x40, ViewerDependet = 0x80, Urgent = 0x100, UrgentSelfOnly = 0x200 }; }
Last edited by doityourself; 08-20-2012 at 10:19 AM.
Here the current JamClientConnection & JamClient opcodes:
Code:namespace Framework.Constants { [Flags] public enum JAMCCMessage : uint { AuthChallenge = 0xEE8, SuspendComms = 0xAE8, ResumeComms = 0xAE2, DropNewConnection = 0xCEA, ConnectTo = 0x8EA, Pong = 0xAE0, ResetCompressionContext = 0xCE0, FloodDetected = 0xEE0, } [Flags] public enum JAMCMessage : uint { AuthResponse = 0xBBF, WaitQueueUpdate = 0xA72, WaitQueueFinish = 0xD37, AllAchievementData = 0xA98, AllAccountCriteria = 0xCF4, RespondInspectAchievements = 0x87C, AllGuildAchievements = 0xB3E, SetupCurrency = 0xC90, SetCurrency = 0xADD, ResetWeeklyCurrency = 0xD53, GuildSendGuildXP = 0xD57, GuildSendMaxDailyXP = 0xF7B, MessageBox = 0x81D, WardenData = 0xE3B, PhaseShiftChange = 0xA1C, InitialSetup = 0xE57, DailyQuestsReset = 0x93D, SetQuestCompletedBit = 0x9F7, ClearQuestCompletedBit = 0xC5E, ClearQuestCompletedBits = 0x9FD, AuraPointsDepleted = 0xE93, GuildSendRankChange = 0x83D, ReforgeResult = 0xE5F, TradeUpdated = 0xC59, TradeStatus = 0xB17, EnumCharactersResult = 0xA71, GenerateRandomCharacterNameResult = 0xA9B, GuildCommandResult = 0xB9E, GuildRoster = 0xA7B, GuildRosterUpdate = 0xBF4, CurrencyLootRemoved = 0xF5A, GuildMemberRecipes = 0xABC, GuildKnownRecipes = 0xBFF, GuildMembersWithRecipe = 0xD19, SetupResearchHistory = 0x8FF, ResearchComplete = 0xBD3, PetSlotUpdated = 0xBB4, DifferentInstanceFromParty = 0xCB3, UpdateServerPlayerPosition = 0xB5D, CategoryCooldown = 0xFB3, RoleChangedInform = 0xAFF, GuildRewardList = 0xF5B, RolePollInform = 0xEF1, SummonRaidMemberValidateFailed = 0xB97, BattlefieldStatus_NeedConfirmation = 0xD7E, BattlefieldStatus_Active = 0x91C, BattlefieldStatus_Queued = 0xFD2, BattlefieldStatus_None = 0xADA, BattlefieldStatus_Failed = 0xC5B, BattlefieldList = 0xAB6, BattlegroundPlayerPositions = 0x976, BattlegroundPlayerJoined = 0xA17, BattlegroundPlayerLeft = 0xEBA, BattlefieldPortDenied = 0xF55, BFMgrEntryInvite = 0x8D6, BFMgrEntering = 0xBB5, BFMgrQueueRequestResponse = 0xCBB, BFMgrEjectPending = 0xA3A, BFMgrEjected = 0xEB3, BFMgrQueueInvite = 0xED9, BFMgrExitRequest = 0x974, BFMgrStateChanged = 0xF7F, BattlegroundInfoThrottled = 0x99E, QuestCompletionNPCResponse = 0xED7, RequestCemeteryListResponse = 0xB76, SetForgeMaster = 0xAF9, CheckWargameEntry = 0xB33, ShowRatings = 0xF99, DBReply = 0x8F3, HotfixNotify = 0xE7E, HotfixNotifyBlob = 0xC3F, BattlefieldStatus_WaitForGroups = 0xE7F, GuildNews = 0xEB4, GuildNewsDeleted = 0x979, RatedBattlefieldInfo = 0xCDA, AverageItemLevelInform = 0xD75, GuildCriteriaUpdate = 0xA97, GuildAchievementEarned = 0xAD1, GuildAchievementDeleted = 0x8F9, GuildCriteriaDeleted = 0xE5B, GuildAchievementMembers = 0xA5C, ArenaTeamCommandResult = 0x87E, PetAdded = 0x93C, GuildRanks = 0xE3D, GuildXPEarned = 0x933, NewWorld = 0xA9A, AbortNewWorld = 0xAF2, GuildMemberUpdateNote = 0xD1F, GuildInvite = 0xCD1, NotifyMoney = 0xF59, QuestGiverQuestComplete = 0xB3F, ItemPurchaseRefundResult = 0xA7C, SetItemPurchaseData = 0xC1D, ItemExpirePurchaseRefund = 0xA76, InspectHonorStats = 0xD7C, GuildPartyState = 0xAF7, PVPLogData = 0xF74, RatedBGStats = 0xDDB, WargameRequestSuccessfullySentToOpponent = 0xF5C, DisplayGameError = 0xCD2, PVPOptionsEnabled = 0x87B, RatedBattlegroundRating = 0xDD8, SetMaxWeeklyQuantity = 0xA3B, GuildReputationWeeklyCap = 0xA94, GuildReputationReactionChanged = 0xC9E, PetitionAlreadySigned = 0xD33, RaidMarkersChanged = 0xED2, CommentatorPartyInfo = 0xBB7, StreamingMovies = 0xF38, TimeSyncRequest = 0xA1A, TimeAdjustment = 0xEFD, StartTimer = 0xF5D, DisenchantCredit = 0xDF1, SuspendToken = 0x996, ResumeToken = 0xCFE, CancelSpellVisual = 0x8F6, PlaySpellVisual = 0xAB1, CancelOrphanSpellVisual = 0xB9C, PlayOrphanSpellVisual = 0xC92, LFGuildPost = 0x99B, LFGuildBrowse = 0xFBC, LFGuildRecruits = 0xBDF, LFGuildCommandResult = 0x83A, LFGuildApplications = 0xF3E, CancelSpellVisualKit = 0x991, PlaySpellVisualKit = 0xA3E, AddItemPassive = 0xAB0, RemoveItemPassive = 0xFBD, SendItemPassives = 0xA70, WorldServerInfo = 0x811, WeeklySpellUsage = 0xE11, UpdateWeeklySpellUsage = 0xAB5, LastWeeklyReset = 0xED1, GuildChallengeUpdate = 0xC33, GuildChallengeCompleted = 0xC75, LFGuildApplicantListChanged = 0xFD4, LFGuildApplicationsListChanged = 0xF51, InspectRatedBGStats = 0xBF9, MoveSetActiveMover = 0xF35, RuneRegenDebug = 0xA51, MoveUpdateRunSpeed = 0xA91, MoveUpdateRunBackSpeed = 0xE59, MoveUpdateWalkSpeed = 0x937, MoveUpdateSwimSpeed = 0x93E, MoveUpdateSwimBackSpeed = 0xCF2, MoveUpdateFlightSpeed = 0x876, MoveUpdateFlightBackSpeed = 0xBDB, MoveUpdateTurnRate = 0xBD6, MoveUpdatePitchRate = 0x8F0, MoveUpdateCollisionHeight = 0xA74, MoveUpdate = 0xA5D, MoveUpdateTeleport = 0x852, MoveUpdateKnockBack = 0xD5B, MoveUpdateApplyMovementForce = 0xCBC, MoveUpdateRemoveMovementForce = 0xB7C, MoveSplineSetRunSpeed = 0x91F, MoveSplineSetRunBackSpeed = 0xD7F, MoveSplineSetSwimSpeed = 0xD9E, MoveSplineSetSwimBackSpeed = 0xF7A, MoveSplineSetFlightSpeed = 0xD55, MoveSplineSetFlightBackSpeed = 0xA3F, MoveSplineSetWalkBackSpeed = 0xC54, MoveSplineSetTurnRate = 0xE19, MoveSplineSetPitchRate = 0xB58, MoveSetRunSpeed = 0xD73, MoveSetRunBackSpeed = 0xD54, MoveSetSwimSpeed = 0xF1A, MoveSetSwimBackSpeed = 0xF9B, MoveSetFlightSpeed = 0xF54, MoveSetFlightBackSpeed = 0xE39, MoveSetWalkSpeed = 0x819, MoveSetTurnRate = 0x818, MoveSetPitchRate = 0x95D, MoveRoot = 0xA59, MoveUnroot = 0x9BB, MoveSetWaterWalk = 0xD30, MoveSetLandWalk = 0x950, MoveSetFeatherFall = 0xC99, MoveSetNormalFall = 0xD7D, MoveSetHovering = 0xBB1, MoveUnsetHovering = 0x9DC, MoveKnockBack = 0xEFF, MoveTeleport = 0x8DF, MoveSetCanFly = 0xB9F, MoveUnsetCanFly = 0x918, MoveSetCanTurnWhileFalling = 0xA1D, MoveUnsetCanTurnWhileFalling = 0xAFD, MoveEnableTransitionBetweenSwimAndFly = 0xC19, MoveDisableTransitionBetweenSwimAndFly = 0xA38, MoveDisableGravity = 0xE9E, MoveEnableGravity = 0xDFB, MoveDisableCollision = 0x938, MoveEnableCollision = 0x8D1, MoveSetCollisionHeight = 0xBB2, MoveSetVehicleRecID = 0x97E, MoveApplyMovementForce = 0x9BE, MoveRemoveMovementForce = 0xB5C, MoveSetCompoundState = 0xC3C, MoveSkipTime = 0x939, MoveSplineRoot = 0xCD4, MoveSplineUnroot = 0x832, MoveSplineDisableGravity = 0xE54, MoveSplineEnableGravity = 0xE13, MoveSplineDisableCollision = 0xC58, MoveSplineEnableCollision = 0xDD4, MoveSplineSetFeatherFall = 0xC1E, MoveSplineSetNormalFall = 0xDF2, MoveSplineSetHover = 0x9DF, MoveSplineUnsetHover = 0xEB7, MoveSplineSetWaterWalk = 0xCB4, MoveSplineSetLandWalk = 0x833, MoveSplineStartSwim = 0x830, MoveSplineStopSwim = 0xD16, MoveSplineSetRunMode = 0xD72, MoveSplineSetWalkMode = 0xAF0, MoveSplineSetFlying = 0xB92, MoveSplineUnsetFlying = 0x8BE, VendorInventory = 0x9D6, RestrictedAccountWarning = 0xC11, GuildReset = 0xD35, SetPlayHoverAnim = 0xDFD, GuildMoveStarting = 0xB51, GuildMoved = 0xCD8, ClearBossEmotes = 0xC36, LoadCUFProfiles = 0xD95, SuppressNPCGreetings = 0xDFE, PartyInvite = 0xFB6, DumpRideTicketsResponse = 0xA31, FeatureSystemStatus = 0xEF2, GuildNameChanged = 0xBF7, RequestPVPRewardsResponse = 0xD12, SpellInterruptLog = 0x9D8, GameObjectActivateAnimKit = 0x93A, MapObjEvents = 0xA90, MissileCancel = 0x955, VoidStorageFailed = 0xDD5, VoidStorageContents = 0x89A, VoidStorageTransferChanges = 0xC71, VoidTransferResult = 0xC91, VoidItemSwapResponse = 0xAF8, XPGainAborted = 0xF18, GuildFlaggedForRename = 0x95F, GuildChangeNameResult = 0xEF5, PrintNotification = 0xCBF, ClearCooldowns = 0xDF4, FailedPlayerCondition = 0xD11, CustomLoadScreen = 0xDB2, TransferPending = 0xF9E, GuildBankQueryResults = 0x978, GuildBankLogQueryResults = 0x9BC, GuildBankRemainingWithdrawMoney = 0xA32, GuildPermissionsQueryResults = 0xB37, GuildEventLogQueryResults = 0xC39, GuildBankTextQueryResult = 0xF5E, GuildMemberDailyReset = 0xCF6, GameEventDebugLog = 0xBBC, ServerPerf = 0xDF5, AreaTriggerMovementUpdate = 0xC79, AdjustSplineDuration = 0x89D, LearnTalentFailed = 0xF3F, LFGJoinResult = 0xB91, LFGQueueStatus = 0xE92, LFGRoleCheckUpdate = 0xEDB, LFGUpdateStatusNone = 0x97D, LFGUpdateStatus = 0x9B3, LFGProposalUpdate = 0xAF4, LFGSearchResults = 0xAF3, ServerInfoResponse = 0xF7C, LootContents = 0x891, ShowNeutralPlayerFactionSelectUI = 0xE56, NeutralPlayerFactionSelectResult = 0xF52, ChatIgnoredAccountMuted = 0xC1B, SORStartExperienceIncomplete = 0xEDE, AccountInfoResponse = 0xF5F, SetDFFastLaunchResult = 0xC98, SupercededSpells = 0xA33, LearnedSpells = 0xD9C, UnlearnedSpells = 0x8B0, PetLearnedSpells = 0xAD6, PetUnlearnedSpells = 0x8D7, UpdateActionButtons = 0x936, DontAutoPushSpellsToActionBar = 0xFB4, LFGSlotInvalid = 0x8B3, UpdateDungeonEncounterForLoot = 0xBF8, SceneObjectEvent = 0xC93, SendAllItemDurability = 0xB99, BattlePetUpdates = 0xCB7, BattlePetTrapLevel = 0x8F1, PetBattleSlotUpdates = 0xDFF, BattlePetJournalLockAcquired = 0xCBE, BattlePetJournalLockDenied = 0xF7D, BattlePetJournal = 0xB53, BattlePetDeleted = 0xC73, BattlePetsHealed = 0xA9D, BattlePetLicenseChanged = 0xBFC, PartyUpdate = 0xE9B, ReadyCheckStarted = 0xB1F, ReadyCheckResponse = 0xDF0, ReadyCheckCompleted = 0xA1B, PetBattleRequestFailed = 0xDB6, PetBattlePVPChallenge = 0xE71, PetBattleFinalizeLocation = 0xEF0, PetBattleFullUpdate = 0xCB5, PetBattleFirstRound = 0xAD2, PetBattleRoundResult = 0x8FB, PetBattleReplacementsMade = 0xF3B, PetBattleFinalRound = 0x893, PetBattleFinished = 0x8FA, PetBattleChatRestricted = 0xE97, PetBattleMaxGameLengthWarning = 0xE5E, StartElapsedTimer = 0x970, StopElapsedTimer = 0xBF2, StartElapsedTimers = 0x83E, ChallengeModeComplete = 0x990, ChallegeModeRewards = 0x87A, IncreaseCastTimeForSpell = 0x83B, ClearAllSpellCharges = 0xDDE, ChallengeModeAllMapStats = 0xA16, ChallengeModeMapStatsUpdate = 0xC9C, ChallengeModeRequestLeadersResult = 0x8D5, ChallengeModeNewPlayerRecord = 0xE3A, RespecWipeConfirm = 0x83C, IsQuestCompleteResponse = 0xAD5, GMCharacterRestoreResponse = 0xBD8, LootResponse = 0x875, LootRemoved = 0xF90, LootUpdated = 0xDF3, CoinRemoved = 0xE35, AELootTargets = 0xBD4, AELootTargetAck = 0xB5A, LootReleaseAll = 0xD90, LootRelease = 0xDFA, LootMoneyNotify = 0x91B, StartLootRoll = 0x973, LootRoll = 0xCB0, MasterLootCandidateList = 0xFD0, LootItemList = 0xE7D, LootRollsComplete = 0xB7F, LootAllPassed = 0xA11, LootRollWon = 0xC56, SetItemChallengeModeData = 0xBBB, ClearItemChallengeModeData = 0xC15, ItemPushResult = 0xE9D, DisplayToast = 0xE5A, AreaTriggerDebugSweep = 0xB77, AreaTriggerDebugPlayerInside = 0x9F0, ResetAreaTrigger = 0xFD1, SetPetSpecialization = 0xED8, BlackMar****penResult = 0x9D1, BlackMarketRequestItemsResult = 0xE9F, BlackMarketBidOnItemResult = 0xF1F, BlackMar****utbid = 0xB36, BlackMarketWon = 0xDB5, ScenarioState = 0xEFB, ScenarioProgressUpdate = 0x97B, GroupNewLeader = 0xC7D, SendRaidTargetUpdateAll = 0xDD9, SendRaidTargetUpdateSingle = 0xCD7, RandomRoll = 0xD96, InspectResult = 0x9BF, ScenarioPOIs = 0xB3A, InstanceInfo = 0xB56, ConsoleWrite = 0x8BB, AccountCriteriaUpdate = 0xE33, PlayScene = 0xBD9, CancelScene = 0xF72, BattlePetError = 0x9B9, PetBattleQueueProposeMatch = 0xEF8, PetBattleQueueStatus = 0x8F7, MailCommandResult = 0xF30, AddBattlenetFriendResponse = 0xC38, ItemUpgradeResult = 0xD51, MoveCharacterCheatSuccess = 0x85F, MoveCharacterCheatFailure = 0xB79, AchievementEarned = 0xC74, AreaShareInfoResponse = 0xB54, LFGTeleportDenied = 0x9B4, AreaShareMappingsResponse = 0xF56, BonusRollEmpty = 0xE74, UpdateExpansionLevel = 0xD99, ControlUpdate = 0xFD3, ArenaPrepOpponentSpecializations = 0x8D8, GMTicketGetTicketResponse = 0xB14, NukeAllObjectsDueToRealmBundlePort = 0xD79, GMNotifyAreaChange = 0xE3C, ForceObjectRelink = 0xCBA, DisplayPromotion = 0xEBE, ClearedPromotion = 0xA5B, ServerFirstAchievements = 0xA35, CorpseLocation = 0xA96, CanDuelResult = 0x835, ImmigrantHostSearchLog = 0xB3B, SendKnownSpells = 0xF16, SendSpellHistory = 0xDDA, SendSpellCharges = 0xBFA, SendUnlearnSpells = 0xF1C, RefreshComponent = 0xCF5, } }
Yay for changing the DBCs again.
The Spell DBC is now 0x64 long, with most of the old values moved into "SpellMisc.dbc".
What I've got so far;
Code:#pragma pack(push, 1)struct SpellRec { int SpellId; char *Name; char *RankDescription; int dwordC; int dword10; int SpellRuneCostId; int dword18; int dword1C; int dword20; int SpellScalingId; int SpellAuraOptionsId; int SpellAuraRestrictionsId; int SpellCastingRequirementsId; int SpellCategoriesId; int SpellClassOptionsId; int SpellCooldownsID; int SpellEquippedItemsId; int SpellInterruptsId; int SpellLevelId; int SpellReagentsId; int SpellShapeshiftId; int SpellTargetRestrictionsId; int SpellTotemsId; int dword5C; int SpellMiscId; }; #pragma pack(pop)They've also templated the "GetRow" func. The "Rows" ptr in WoWClientDB is no longer a void** (eg; being just an array of pointers). Its now an array of entries directly, so you do need to know the size to get the next entry.Code:#pragma pack(push, 1) struct SpellMiscRec { DWORD dword0; DWORD dword4; DWORD dword8; DWORD dwordC; DWORD dword10; DWORD dword14; DWORD dword18; DWORD dword1C_Flags; DWORD dword20; DWORD dword24; DWORD dword28; DWORD dword2C; DWORD dword30; DWORD dword34; DWORD dword38; DWORD SpellCastTimesId; DWORD SpellDurationId; DWORD SpellRangeId; float float48_TimeOrSpeedRelated; DWORD SpellVisualId; DWORD SpellVisualId_OverrideMaybe; DWORD SpellIconId; DWORD dword58; DWORD dword5C_Flags; }; #pragma pack(pop)
Also; it seems DBC entries can now be indexed by either 2, or 4 byte indices.
Where "FirstRow + 0x64" (the 0x64) being the size of the record in memory. There are different functions laid out exactly like this for almost all the DBCs.Code:SpellRec *__thiscall GetSpellRecord(WoWClientDB *this, int id) { unsigned int relId; // ecx@3 int v5; // edx@3 SpellRec *result; // eax@3 int v7; // ebx@4 int v8; // eax@4 int a2a; // [sp+10h] [bp+8h]@3 if ( id < this->minIndex || id > this->maxIndex ) { result = 0; } else { relId = id - this->minIndex; v5 = this->unk1[relId >> 5]; result = 0; a2a = relId & 0x1F; if ( (1 << (relId & 0x1F)) & v5 ) { v7 = CountBitsSet(v5 << (31 - a2a)); v8 = v7 + WoWClientDB::sub_6C89E0(this, this->unk3_RowsMaybe, (unsigned int)(id - this->minIndex) >> 5) - 1; if ( !this->unk2 ) v8 = WoWClientDB::sub_6C89E0(this, this->Rows, v8); result = (SpellRec *)(this->FirstRow + 0x64 * v8); } } return result; }
So yeah, reading from DBCs natively is going to require more work from here on it seems.
Last edited by Apoc; 08-27-2012 at 06:31 PM.
New Movement data offset is 0xE4 if anyone was wondering