id error
Posted: Thu Dec 01, 2011 8:00 am
i get this id error.. maybe someone want to know
/run DEFAULT_CHAT_FRAME:AddMessage(TEXT("Sys533025_name"))rock5 wrote:How are we to see if the client displays the name if we don't know what the ids are?
Well that can not be because there are no ranges anymore, there is only one large id range.rock5 wrote:I suspect it's a new range and the way memorytables is set up it misses that range.
Code: Select all
--Reads into the table to get a 'IdTableHeader' address
for i=0,10 do
local offset0 = memoryReadInt( getProc(), dataPointer - lineSize * i )
local offset8 = memoryReadInt( getProc(), (dataPointer - lineSize * i ) + 0x8)
if offset0 == offset8 then
IdTableHeader = offset0
break
end
end
Code: Select all
--Get informations from the 'IdTableHeader'
local smallestIdAddress = memoryReadInt( getProc(), IdTableHeader )
local middleIdAddress = memoryReadInt( getProc(), IdTableHeader + 0x4 )
local largestIdAdress = memoryReadInt( getProc(), IdTableHeader + 0x8 )
local smallestId = memoryReadInt( getProc(), smallestIdAddress + addresses.idOffset )
local largestId = memoryReadInt( getProc(), largestIdAdress + addresses.idOffset )
Code: Select all
-- Use the middleIdAddress from IdAddressTables to start search
local dataPointer = middleIdAddress
I didn't think of that. Of course the ids might not have names. Not all ids do. Although I'm not sure of the normal behaviour for that command is, when using valid ids with no name.SpiralV wrote:/run DEFAULT_CHAT_FRAME:AddMessage(TEXT("Sys533025_name"))
There are still ranges in memory. That's what I meant. It still has to jump from one memory region to another and needs to find the beginning of the next region. But I seem to remember we took away all limitations on how it finds the next region so it should always find the start address of the next region. Or was that before you completely changed the way it searched?SpiralV wrote:Well that can not be because there are no ranges anymore, there is only one large id range.
Not that I'm aware of.SpiralV wrote:Are there performance problems at the moment?
Hm well then there is no other possibility unless you look in the memory.rock5 wrote:I didn't think of that. Of course the ids might not have names. Not all ids do. Although I'm not sure of the normal behaviour for that command is, when using valid ids with no name.SpiralV wrote:/run DEFAULT_CHAT_FRAME:AddMessage(TEXT("Sys533025_name"))
After a few days I realized that the search will work only if started from the middle address, because these addresse is frequently read by the client, so it was obvious, since it is not necessary to connect the memory regions.rock5 wrote:Or was that before you completely changed the way it searched?
Currently does GetIdAddressLine (id) read the memory each time, to get the local variables, and then if the id is known, it takes the address from the own table.SpiralV wrote:Are there performance problems at the moment?rock5 wrote:Not that I'm aware of.
Code: Select all
print(GetIdName(210000))
Code: Select all
/run DEFAULT_CHAT_FRAME:AddMessage(TEXT("Sys210000_name"))