Code:
; -------------------------
;- GetObjectsData:
; -------------------------
GetObjectsData:
Gosub GetPlayerData
TotalMobs=0
TotalGameObjects=0
a=ReadProcessMemory_(app,,buffer,4,Null)
MobAddress=PeekL(buffer)
breakiftoomany = 0
Repeat
a=MobAddress + $3c
a=ReadProcessMemory_(app,a,buffer,4,Null)
b1=PeekL(buffer)
;Debug Hex(b1)
a=MobAddress +$28
a=ReadProcessMemory_(app,a,buffer,4,Null)
b2=PeekL(buffer)
;Debug Hex(b2)
MobAddress = b1
;Debug MobAddress
a=MobAddress +$14
a=ReadProcessMemory_(app,a,buffer,4,Null)
ObjectType=PeekL(buffer)
;Debug ObjectType
If (ObjectType >2 And ObjectType <5) Or objecttype =7
TotalMobs=TotalMobs+1
;Debug TotalMobs
;Debug ObjectType
Mobs(TotalMobs)type=ObjectType
YAddress=MobAddress+
XAddress=MobAddress+
ZAddress=MobAddress+
result = ReadProcessMemory_(app,XAddress,buffer,4,Null)
Mobs(TotalMobs)x=PeekF(buffer)
result = ReadProcessMemory_(app,YAddress,buffer,4,Null)
Mobs(TotalMobs)y=PeekF(buffer)
result = ReadProcessMemory_(app,ZAddress,buffer,4,Null)
Mobs(TotalMobs)z=PeekF(buffer)
;Debug StrF(Mobs(TotalMobs)x)
a=MobAddress +$8
a=ReadProcessMemory_(app,a,buffer,4,Null)
Level=PeekL(buffer)+$70+$18
Lootable=PeekL(buffer)+$278+$18
Faction=PeekL(buffer)+$74+$18
Skinnable=PeekL(buffer)++$18
Health=PeekL(buffer)+$40+$18
Friendly=PeekL(buffer)+
QuestGiver=PeekL(buffer)+$288+$18
nameaddress1=MobAddress+
result = ReadProcessMemory_(app,nameaddress1,buffer,4,Null)
nameaddress2=PeekL(buffer)+$40
result = ReadProcessMemory_(app,nameaddress2,buffer,4,Null)
nameaddress3=PeekL(buffer)
result = ReadProcessMemory_(app,nameaddress3,buffer,40,Null)
Mobs(TotalMobs)name=PeekS(buffer)
;Debug testinfo$
; test for minions?
result = ReadProcessMemory_(app,MobAddress+$8,buffer,4,Null)
address.l=PeekL(buffer)
result = ReadProcessMemory_(app,address,buffer,8,Null)
Mobs(TotalMobs)MobGUID.q=PeekQ(buffer)
;Debug "GUID-" + Hex(Mobs(TotalMobs)MobGUID)
result = ReadProcessMemory_(app,address+64,buffer,8,Null)
Mobs(TotalMobs)MobTarget=PeekQ(buffer)
;Debug Hex(Mobs(TotalMobs)MobTarget)
Mobs(TotalMobs)AttackingPlayer=0
If Mobs(TotalMobs)MobTarget = PlayerGUID
Mobs(TotalMobs)AttackingPlayer=1
EndIf
a=ReadProcessMemory_(app,Level,buffer,4,Null)
Mobs(TotalMobs)level=PeekL(buffer)
;Debug Mobs(TotalMobs)level
a=ReadProcessMemory_(app,Lootable,buffer,4,Null)
Mobs(TotalMobs)lootable=PeekL(buffer)
;Debug Mobs(TotalMobs)lootable
a=ReadProcessMemory_(app,Faction,buffer,4,Null)
Mobs(TotalMobs)faction=PeekL(buffer)
;Debug Mobs(TotalMobs)faction
a=ReadProcessMemory_(app,Skinnable,buffer,4,Null)
Mobs(TotalMobs)skinnable=PeekL(buffer)
;Debug Hex(Mobs(TotalMobs)skinnable)
a=ReadProcessMemory_(app,Health,buffer,4,Null)
Mobs(TotalMobs)health=PeekL(buffer)
;Debug Hex(Mobs(TotalMobs)skinnable)
a=ReadProcessMemory_(app,testinfo,buffer,4,Null)
Mobs(TotalMobs)testinfo=PeekL(buffer)
;Debug Hex(testinfo)
a=ReadProcessMemory_(app,Friendly,buffer,4,Null)
Mobs(TotalMobs)friendly=PeekL(buffer)
;Debug Hex(testinfo)
a=ReadProcessMemory_(app,QuestGiver,buffer,4,Null)
Mobs(TotalMobs)QuestGiver=PeekL(buffer)
;Debug Hex(testinfo)
Mobs(TotalMobs)distance=Sqr((Pow((PlayerXpos-Mobs(TotalMobs)x),2))+(Pow((PlayerYpos-Mobs(TotalMobs)y),2)))
EndIf
If ObjectType = 5
TotalGameObjects=TotalGameObjects+1
a=MobAddress +$8
a=ReadProcessMemory_(app,a,buffer,4,Null)
YAddress=PeekL(buffer)+$24+$18
XAddress=PeekL(buffer)+$28+$18
ZAddress=PeekL(buffer)+$2c+$18
MineralAddress=PeekL(buffer)+$8+$18
result = ReadProcessMemory_(app,XAddress,buffer,4,Null)
GameObjects(TotalGameObjects)x=PeekF(buffer)
result = ReadProcessMemory_(app,YAddress,buffer,4,Null)
GameObjects(TotalGameObjects)y=PeekF(buffer)
result = ReadProcessMemory_(app,ZAddress,buffer,4,Null)
GameObjects(TotalGameObjects)z=PeekF(buffer)
result = ReadProcessMemory_(app,MineralAddress,buffer,4,Null)
GameObjects(TotalGameObjects)type=PeekL(buffer)
;Debug GameObjects(TotalGameObjects)type
GameObjects(TotalGameObjects)distance=Sqr((Pow((PlayerXpos-GameObjects(TotalGameObjects)x),2))+(Pow((PlayerYpos-GameObjects(TotalGameObjects)y),2)))
nameaddress1=MobAddress+
result = ReadProcessMemory_(app,nameaddress1,buffer,4,Null)
nameaddress2=PeekL(buffer)+$40
result = ReadProcessMemory_(app,nameaddress2,buffer,4,Null)
nameaddress3=PeekL(buffer)
result = ReadProcessMemory_(app,nameaddress3,buffer,40,Null)
GameObjects(TotalGameObjects)name=PeekS(buffer)
;Debug GameObjects(TotalGameObjects)name
result = ReadProcessMemory_(app,MobAddress+$8,buffer,4,Null)
address.l=PeekL(buffer)
result = ReadProcessMemory_(app,address,buffer,8,Null)
GameObjects(TotalGameObjects)ObjectGUID.q=PeekQ(buffer)
EndIf
If b1 <> b2 Or breakiftoomany > 1000
;Debug TotalMobs
;Debug TotalGameObjects
breakiftoomany = 0
Return
EndIf
breakiftoomany=breakiftoomany+1
ForEver