/ cheatengine / cgplayer.lua
cgplayer.lua
  1  -- #include "cgunit.lua"
  2  
  3  local QuestLog = Struct("QuestLog")
  4      :field("QuestId", "int32")
  5      :field("ObjectiveDone", "int32")
  6      :field("ObjectiveCounterFlag", "int32")
  7      :field("UnkField4", "int32")
  8      :field("UnkField5", "int32")
  9  
 10  local PlayerSkill = Struct("PlayerSkill")
 11      :field("ID", "uint16")
 12      :field("Unk", "uint16")
 13      :field("Skill", "uint16")
 14      :field("SkillMax", "uint16")
 15      :field("UnkPad", "int32")
 16  
 17  local WoWGUID = Struct("WOWGUID")
 18      :hex("guid", "uint64")
 19  
 20  local ExploredZones = Struct("ExploredZonesBitflied")
 21      :hex("flag", "uint64")
 22  
 23  local ArenaTeam = Struct("ArenaTeam")
 24      :field("ID", "int32")
 25      :field("TypeID", "int32")
 26      :field("MemberID", "int32")
 27      :field("GamesWeekID", "int32")
 28      :field("GamesSeasonID", "int32")
 29      :field("WinsSeasonID", "int32")
 30      :field("PersonalRateID", "int32")
 31  
 32  local DailyQuest = Struct("DailyQuest")
 33      :field("id", "uint32")
 34  
 35  local PlayerFields = Struct("PlayerFields")
 36      :field("DuelArbiter", "int32") -- 0x1BB0
 37      :field("GuildID", "int32") -- 0x1BB4
 38      :field("GuildRank", "int32") -- 0x1BB8
 39      :field("bytes1", "int32") -- 0x1BBC
 40      :field("bytes2", "int32") -- 0x1BC0
 41      :field("bytes3", "int32") -- 0x1BC4
 42      :field("DueldTeam", "int32") -- 0x1BC8
 43      :field("GuildTimestamp", "int32") -- 0x1BCC
 44  
 45      :structArray("QuestLog", QuestLog, 25)
 46  
 47      :field("HeadItemId", "int32") -- 0x1DC4
 48      :field("HeadEnchantment", "int32") -- 0x1DC8
 49      :field("NeckItemId", "int32") -- 0x1DCC
 50      :field("NeckEnchantment", "int32") -- 0x1DD0
 51      :field("ShoulderItemId", "int32") -- 0x1DD4
 52      :field("ShoulderEnchantment", "int32") -- 0x1DD8
 53      :field("ShirtItemId", "int32") -- 0x1DDC
 54      :field("ShirtEnchantment", "int32") -- 0x1DE0
 55      :field("ChestItemId", "int32") -- 0x1DE4
 56      :field("ChestEnchantment", "int32") -- 0x1DE8
 57      :field("BeltItemId", "int32") -- 0x1DEC
 58      :field("BeltEnchantment", "int32") -- 0x1DF0
 59      :field("LegsItemId", "int32") -- 0x1DF4
 60      :field("LegsEnchantment", "int32") -- 0x1DF8
 61      :field("FootItemId", "int32") -- 0x1DFC
 62      :field("FootEnchantment", "int32") -- 0x1E00
 63      :field("WristItemId", "int32") -- 0x1E04
 64      :field("WristEnchantment", "int32") -- 0x1E08
 65      :field("HandsItemId", "int32") -- 0x1E0C
 66      :field("HandsEnchantment", "int32") -- 0x1E10
 67      :field("Finger1ItemId", "int32") -- 0x1E14
 68      :field("Finger1Enchantment", "int32") -- 0x1E18
 69      :field("Finger2ItemId", "int32") -- 0x1E1C
 70      :field("Finger2Enchantment", "int32") -- 0x1E20
 71      :field("Trinket1ItemId", "int32") -- 0x1E24
 72      :field("Trinket1Enchantment", "int32") -- 0x1E28
 73      :field("Trinket2ItemId", "int32") -- 0x1E2C
 74      :field("Trinket2Enchantment", "int32") -- 0x1E30
 75      :field("CloackItemId", "int32") -- 0x1E34
 76      :field("CloackEnchantment", "int32") -- 0x1E38
 77      :field("MainHandItemId", "int32") -- 0x1E3C
 78      :field("MainHandEnchantment", "int32") -- 0x1E40
 79      :field("OffHandItemId", "int32") -- 0x1E44
 80      :field("OffHandEnchantment", "int32") -- 0x1E48
 81      :field("RangedItemId", "int32") -- 0x1E4C
 82      :field("RangedEnchantment", "int32") -- 0x1E50
 83      :field("TabardItemId", "int32") -- 0x1E54
 84      :field("TabardEnchantment", "int32") -- 0x1E58
 85      :field("ChosenTitle", "int32") -- 0x1E5C
 86      :field("FakeInebriation", "int32") -- 0x1E60
 87      :field("UnkPad", "int32") -- 0x1E64
 88  
 89      :hex("HeadItemSlot", "uint64") -- 0x1E68
 90      :hex("NeckItemSlot", "uint64") -- 0x1E70
 91      :hex("ShoulderItemSlot", "uint64") -- 0x1E78
 92      :hex("ShirtItemSlot", "uint64") -- 0x1E80
 93      :hex("ChestItemSlot", "uint64") -- 0x1E88
 94      :hex("BeltItemSlot", "uint64") -- 0x1E90
 95      :hex("LegsItemSlot", "uint64") -- 0x1E98
 96      :hex("FootItemSlot", "uint64") -- 0x1EA0
 97      :hex("WristItemSlot", "uint64") -- 0x1EA8
 98      :hex("HandsItemSlot", "uint64") -- 0x1EB0
 99      :hex("Firnger1ItemSlot", "uint64") -- 0x1EB8
100      :hex("Finger2ItemSlot", "uint64") -- 0x1EC0
101      :hex("Trinket1ItemSlot", "uint64") -- 0x1EC8
102      :hex("Trinket2ItemSlot", "uint64") -- 0x1ED0
103      :hex("BackItemSlot", "uint64") -- 0x1ED8
104      :hex("MainHandItemSlot", "uint64") -- 0x1EE0
105      :hex("OffHandItemSlot", "uint64") -- 0x1EE8
106      :hex("RangedItemSlot", "uint64") -- 0x1EF0
107      :hex("TabardItemSlot", "uint64") -- 0x1EF8
108  
109      :structArray("ContainerSlot", WoWGUID, 4)
110      :structArray("BagSlot", WoWGUID, 16)
111      :structArray("BankSlot", WoWGUID, 28)
112      :structArray("ContainerBankSlot", WoWGUID, 7)
113      :structArray("VendorBuyBackItem", WoWGUID, 12)
114      :structArray("KeyRing", WoWGUID, 32)
115      :structArray("Currency", WoWGUID, 32)
116  
117      :hex("FarsightGUID", "uint64") -- 0x2318
118      :hex("KnownTitles1", "uint64") -- 0x2320
119      :hex("KnownTitles2", "uint64") -- 0x2328
120      :hex("KnownTitles3", "uint64") -- 0x2330
121      :hex("KnownCurrencies", "uint64") -- 0x2338
122      :field("XP", "int32") -- 0x2340
123      :field("NextLevelXP", "int32") -- 0x2344
124  
125      :structArray("Skill", PlayerSkill, 128)
126  
127      :field("FreeTalentPoints", "int32") -- 0x2948
128      :field("MainProfessionFreeSlot", "int32") -- 0x294C
129      :field("TrackCreaturesFlag", "int32") -- 0x2950
130      :field("ResourcesTrackFlags", "int32") -- 0x2954
131      :field("BlockPrecentage", "float") -- 0x2958
132      :field("DodgePercentage", "float") -- 0x295C
133      :field("ParryPercentage", "float") -- 0x2960
134      :field("ExpertiseMainHand", "int32") -- 0x2964
135      :field("ExpertiseOffHand", "int32") -- 0x2968
136      :field("CritPercentageMelee", "float") -- 0x296C
137      :field("CritPercentageRaged", "float") -- 0x2970
138      :field("CritPercentageOffhand", "float") -- 0x2974
139      :field("SpellCritPercentage1", "float") -- 0x2978
140      :field("CritPercentageSpellHoly", "float") -- 0x297C
141      :field("CritPercentageSpellFire", "float") -- 0x2980
142      :field("CritPercentageSpellnature", "float") -- 0x2984
143      :field("CritPercentageSpellFrost", "float") -- 0x2988
144      :field("CritPercentageSpellShadow", "float") -- 0x298C
145      :field("CritPercentageSpellArcane", "float") -- 0x2990
146      :field("BlockDamageValue", "int32") -- 0x2994
147      :field("BlockCritPercentage", "float") -- 0x2998
148  
149      :structArray("ExploredZones", ExploredZones, 64)
150  
151      :field("RestXP", "int32") -- 0x2B9C
152      :field("Money", "int32") -- 0x2BA0
153      :field("UnkField", "int32") -- 0x2BA4
154      :field("SpellPowerHoly", "int32") -- 0x2BA8
155      :field("SpellPowerFire", "int32") -- 0x2BAC
156      :field("SpellPowerNature", "int32") -- 0x2BB0
157      :field("SpellPowerFrost", "int32") -- 0x2BB4
158      :field("SpellPowerShadow", "int32") -- 0x2BB8
159      :field("SpellPowerArcane", "int32") -- 0x2BBC
160      :array("SpellPowerNegative", "int32", 7) -- 0x2BC0
161      :array("UnkDamagePercent", "float", 7) -- 0x2BDC
162      :field("ModHealingDonePos", "int32") -- 0x2BF8
163      :field("HealingPercent", "float") -- 0x2BFC
164      :field("HealingDonePercent", "float") -- 0x2C00
165      :field("TargetResistance", "int32") -- 0x2C04
166      :field("TargetPhysResistance", "int32") -- 0x2C08
167      :field("UnkPad", "int32") -- 0x2C0C
168      :field("AmmotSlotItemId", "int32") -- 0x2C10
169      :field("SelfResSpell", "int32") -- 0x2C14
170      :field("PVPMedals", "int32") -- 0x2C18
171      :array("BuyBackPrice", "int32", 12) -- 0x2C1C
172      :array("BuyBackTimeStamp", "int32", 12) -- 0x2C4C
173      :field("HonorKills", "int32") -- 0x2C7C
174      :field("TodayHonorContribution", "int32") -- 0x2C80
175      :field("YesterdayHonorContribution", "int32") -- 0x2C84
176      :field("LifetimeHonorableKills", "int32") -- 0x2C88
177      :field("bytes2field", "int32") -- 0x2C8C
178      :field("WatchedFactionIndex", "int32") -- 0x2C90
179      :field("UnkCombatRating", "int32") -- 0x2C94
180      :field("DefenceRate", "int32") -- 0x2C98
181      :field("DodgeRate", "int32") -- 0x2C9C
182      :field("ParryRate", "int32") -- 0x2CA0
183      :field("BlockRate", "int32") -- 0x2CA4
184      :field("HitRateMelee", "int32") -- 0x2CA8
185      :field("HitRateRanged", "int32") -- 0x2CAC
186      :field("HitRateSpell", "int32") -- 0x2CB0
187      :field("CritRateMelee", "int32") -- 0x2CB4
188      :field("CritRateRanged", "int32") -- 0x2CB8
189      :field("CritRateSpell", "int32") -- 0x2CBC
190      :field("UnkCombatRating", "int32") -- 0x2CC0
191      :field("UnkCombatRating", "int32") -- 0x2CC4
192      :field("UnkCombatRating", "int32") -- 0x2CC8
193      :field("ResilienceRate_1", "int32") -- 0x2CCC
194      :field("ResilienceRate_2", "int32") -- 0x2CD0
195      :field("ResilienceRate_3", "int32") -- 0x2CD4
196      :field("AttackSpeed_1", "int32") -- 0x2CD8
197      :field("HasteRate_1", "int32") -- 0x2CDC
198      :field("AttackSpeed_2", "int32") -- 0x2CE0
199      :field("HasteRate_2", "int32") -- 0x2CE4
200      :field("AttackSpeed_3", "int32") -- 0x2CE8
201      :field("HasteRate_3", "int32") -- 0x2CEC
202      :field("ExpertiseRate", "int32") -- 0x2CF0
203      :field("ArmorPenetrationRate", "int32") -- 0x2CF4
204  
205      :structArray("ArenaTeam", ArenaTeam, 3)
206  
207      :field("CurrencyHonor", "int32") -- 0x2D4C
208      :field("CurrencyArenaPoint", "int32") -- 0x2D50
209      :field("MaxLevel", "int32") -- 0x2D54
210  
211      :structArray("DailyQuest", DailyQuest, 25)
212  
213      :array("RuneRegen", "float", 4) -- 0x2DBC
214      :array("NoReagenCost", "int32", 3) -- 0x2DCC
215      :array("GlyphSlot", "int32", 6) -- 0x2DD8
216      :array("Glyph", "int32", 6) -- 0x2DF0
217      :field("GlyphsEnabletBitField", "int32") -- 0x2E08
218      :field("PetSpellPower", "int32") -- 0x2E0C
219      :field("UnkFlags", "int32") -- 0x2E10
220      :field("PetSpellBonusDamage", "float") -- 0x2E14
221  
222  local PlayerCritterArray = Struct("CritterArray")
223      :field("memoryCapacity", "uint32")
224      :field("count", "uint32")
225      :hex("memoryPtr", "uint32")
226  
227  local CGPlayer = Struct("CGPlayer", CGUnit)
228      :paddingTo(0x1850)
229      :field("unk_1850", "int32") -- 0x1850
230      :field("unk_1854", "int32") -- 0x1854
231      :field("farSightFlag", "int32") -- 0x1858
232      :ptr("unkTradeSkillObjVtbl") -- 0x185C
233      :field("unk_1860", "int32") -- 0x1860
234      :field("unk_1864", "int32") -- 0x1864
235      :field("unk_1868", "int32") -- 0x1868
236      :field("unk_186C", "int32") -- 0x186C
237      :field("unk_1870", "int32") -- 0x1870
238      :field("unk_1874", "int32") -- 0x1874
239      :field("unk_1878", "int32") -- 0x1878
240      :field("unk_187C", "int32") -- 0x187C
241      :field("unk_1880", "int32") -- 0x1880
242      :ptr("unkTradeSkillObjVptr") -- 0x1884
243      :field("unk_1888", "int32") -- 0x1888
244      :field("unk_188C", "int32") -- 0x188C
245      :field("unk_1890", "int32") -- 0x1890
246      :field("unk_1894", "int32") -- 0x1894
247      :field("unk_1898", "int32") -- 0x1898
248      :field("unk_189C", "int32") -- 0x189C
249      :ptr("unk_18A0") -- 0x18A0
250      :field("unk_18A4", "int32") -- 0x18A4
251      :field("unk_18A8", "int32") -- 0x18A8
252      :field("unk_18AC", "int32") -- 0x18AC
253      :field("unk_18B0", "int32") -- 0x18B0
254      :field("unk_18B4", "int32") -- 0x18B4
255      :field("unk_18B8", "int32") -- 0x18B8
256      :field("unk_18BC", "int32") -- 0x18BC
257      :field("unk_18C0", "int32") -- 0x18C0
258      :field("unk_18C4", "int32") -- 0x18C4
259      :field("unk_18C8", "int32") -- 0x18C8
260  
261      :embed("m_critters", PlayerCritterArray)
262  
263      :field("unk_18D8", "int32") -- 0x18D8
264      :field("unk_18DC", "int32") -- 0x18DC
265      :hex("LootTargetGUID", "uint64") -- 0x18E0
266      :hex("unkAutoLootFlags", "int32") -- 0x18E8
267      :field("unk_18EC", "int32") -- 0x18EC
268      :field("unk_18F0", "int32") -- 0x18F0
269      :ptr("playerInventoryPtr") -- 0x18F4
270      :field("playerGUID", "int32") -- 0x18F8
271      :field("unk_18FC", "int32") -- 0x18FC
272      :hex("unk_1900", "int32") -- 0x1900
273      :hex("unk_1904", "int32") -- 0x1904
274      :hex("MainHandVisibleItemClassID", "int32") -- 0x1908
275      :hex("MainHandVisibleItemSubtypeID", "int32") -- 0x190C
276      :hex("OffHandVisibleItemClassID", "int32") -- 0x1910
277      :hex("unkOffHandInventoryType", "int32") -- 0x1914
278      :hex("RangedVisibleItemClassID", "int32") -- 0x1918
279      :hex("unkRangedVisibleItemInventoryType", "int32") -- 0x191C
280      :field("standValue", "int32") -- 0x1920
281      :field("MetaSocketCount", "int32") -- 0x1924
282      :field("RedSocketCount", "int32") -- 0x1928
283      :field("YellowSocketCount", "int32") -- 0x192C
284      :field("BlueSocketCount", "int32") -- 0x1930
285      :field("combatModeLastUnitMS", "int32") -- 0x1934
286      :hex("combatModeLastUnitGUID", "uint64") -- 0x1938
287      :field("turnOffPVPModeMS", "int32") -- 0x1940
288      :field("unkDanceStudioField1", "int32") -- 0x1944
289      :field("unkDanceStudioField2", "int32") -- 0x1948
290      :field("totalPlayedTimeSeconds", "int32") -- 0x194C
291      :field("lastPlayedCmdTimestamp", "int32") -- 0x1950
292      :field("unk_1954", "int32") -- 0x1954
293  
294      :embed("objectFields", ObjectFields)
295  
296      :embed("unitFields", UnitFields)
297  
298      :field("UnkBeginPlayerStructureField", "uint32")
299      :field("unkField", "uint32")
300  
301      :embed("playerFields", PlayerFields)
302  
303  -- #include "load_player.lua"