function hasItems(position, rangex, rangey, ...)
local fromPosition = {x = position.x - rangex, y = position.y - rangey, z = position.z}
local toPosition = {x = position.x + rangex, y = position.y + rangey, z = position.z}
local items = {...}
local match = false
for x = fromPosition.x, toPosition.x do
for y = fromPosition.y, toPosition.y do
local p = {x = x, y = y, z = fromPosition.z}
for _, item in ipairs(items) do
local w = getTileItemById(p, item)
if w.uid > 0 then
match = true
end
end
end
end
return match
end
Acabou de sair do forno.
Utilização:
hasItems(getThingPosition(cid), 1, 1, 2112, 2160, 2152, 2148)
Irá procurar em uma área de 3X3 ao redor do jogador pelos quatro itens especificados na função, caso ache qualquer um dos quatro, irá retornar true.





info
Group: Marquês
Joined: 22/07/12
Posts: 1.1k
Reputation: +400
Gender: Masculino
Tibia Character: Luck Oake
Seguinte, tô fazendo uns scripts aqui pra liberar pra galera quando eu terminar, mas pra isso eu preciso de uma função que vê se existe tal item ao redor do player.
Fiz um modelo base, vejam:
function hasItems(cid) items = {1234, 2345, 3456, 4567} pos = getCreaturePos(cid) a = { {x = pos.x-2, y = pos.y, z = pos.z, stackpos = 0}, {x = pos.x+2, y = pos.y, z = pos.z, stackpos = 0}, {x = pos.x, y = pos.y-2, z = pos.z, stackpos = 0}, {x = pos.x, y = pos.y+2, z = pos.z, stackpos = 0}, } for b, c in pairs(a) do return isInArray(items, getThingFromPos(c).itemid) and true or false end endO problema é que ela tá retornando true apenas se tiver os items em todas as posições declaradas na tabela a, ou seja, se tiver em apenas três das quatros posições o script retorna false.
Eu precisava do seguinte: o script ver se em alguma das posições da tabela a existe o item da tabela items, não sendo necessário ter items em todas as posições.
Edited Dezembro 13 by LuckOake