My "bruteforcing" method in Cheat Engine's Lua scripter to get all containers
Code:
function findContainer(table, container) --Substitute for C# Linq
for _, c in pairs(table) do
if container.index == c.index then
return true
end
end
return false
end
function getContainers()
local containerPointer = 0x5E72C0 + getAddress("Tibia.exe")
local containerList = {} --List<Container> containerList = new List<Container>();
local tries = 0
local ptr = readInteger(containerPointer)
local amount = readInteger(ptr + 0xC)
ptr = readInteger(readInteger(ptr + 0x8))
if amount > 0 then
local adder = 0x8
while #containerList ~= amount do
local container = {
index = readInteger(readInteger(ptr + 0x10)),
name = readString(readInteger(ptr + 0x10) + 0x20, 30),
id = readInteger(readInteger(ptr + 0x10) + 0xC),
volume = readInteger(readInteger(ptr + 0x10) + 0x40)
}
if container.name and not findContainer(containerList, container) then
tries = 0
table.insert(containerList, container)
else
tries = tries + 1
end
if tries < 5 then
adder = adder == 0x8 and 0 or adder + 0x4
else
adder = 0x8
end
ptr = readInteger(ptr + adder)
end
end
return containerList
end
for k,v in pairs(getContainers()) do
print("Name: " .. v.name)
print("Index: " .. v.index)
print("Id: " .. v.id)
print("Volume: " .. v.volume)
print("-----------")
end