-- This function returns the address where the item info is located. function GetItemAddress( id ) -- Gets the address for the item local function GetTmpAddress( _address, _id ) local address = memoryReadIntPtr(getProc(), _address + 0x10, 0x8) if address == 0 then -- Item data not substanciated yet. Do "GetCraftRequestItem", then the address will exist. RoMScript("GetCraftRequestItem(".._id..", -1)") address = memoryReadIntPtr(getProc(), _address + 0x10, 0x8) end return address end -- Get start address local tablePointer = memoryReadIntPtr( getProc(), addresses.tablesBase, addresses.tablesBaseOffset ) local startAddressOffsets = {0,addresses.tableStartPtrOffset, addresses.tableDataStartPtrOffset} local startAddress = memoryReadIntPtr( getProc(), tablePointer, startAddressOffsets) - 0x20 -- Find id pointer address local Line = 32; local dataPointer = startAddress while true do local offset0 = memoryReadInt( getProc(), dataPointer ); local offset8 = memoryReadInt( getProc(), dataPointer + 8); local currentID = memoryReadInt( getProc(), dataPointer + addresses.idOffset ); if currentID == nil then -- Id not found dataPointer = nil break end if id == currentID then -- Id found break end if currentID > id then if offset0 == offset8 then dataPointer = dataPointer + Line else dataPointer = offset0 end else if offset0 == offset8 then dataPointer = dataPointer - Line else dataPointer = offset8 end end end if dataPointer == nil then printf("Failed to find correct address in range for id %d.\n", id) return end -- Get item address local itemAddress = GetTmpAddress( dataPointer, id ) local itemId = memoryReadInt( getProc(), itemAddress ) if itemId == id then return itemAddress else printf("Failed to find correct item address for id %d.\n", id) end end -- Returns the name for a given id function GetIdName(itemId) if itemId ~= nil and itemId > 0 then local itemAddress = GetItemAddress(itemId) if itemAddress ~= nil and itemAddress > 0 then return memoryReadStringPtr(getProc(), itemAddress + addresses.nameOffset, 0) end end end -- This function decides whether to load the 'tables' data from file or from memory. function LoadTables() end