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
Grupo: Marquês
Registrado: 22/07/12
Posts: 1.1k
Reputação: +400
Gênero: Masculino
Char no Tibia: 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.
Editado Dezembro 13 por LuckOake