getThingPos() <-- skymagnum
como eu faço para mover item sem usar esse metodo?
Por tonynamoral, 03 de jan. de 2013 em Scripts
info
Grupo: Visconde
Registrado: 21/09/10
Posts: 319
Reputação: +27
Char no Tibia: lest sarif

info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

function doMoveItem(id, pos, dir)
local item = getTileItemById(pos, id)
if item.uid > 1 then
local newPos = getPosByDir(pos, dir)
if newPos then
doTeleportThing(item.uid, newPos)
return true
end
end
return false
end
local dirs = {0, 1, 2, 5}
local pos = {x = 100, y = 100, z = 7} --pos do item
local id = 2155 --id do item
for i = 1, #dirs do
addEvent(doMoveItem, i * 100, id, pos, dirs[i])
end
achu q assim fica melhor '--'
só que não ia funcionar, pois você executaria a doMoveItem com o parâmetro "pos" exatamente igual em todas as execuções, mas na verdade a posição do item vai variando
teria que ir atualizando a variável pos também
function doMoveItem(id, pos, dir)
local item = getTileItemById(pos, id)
if item.uid > 1 then
local newPos = getPosByDir(pos, dir)
if newPos then
doTeleportThing(item.uid, newPos)
return true
end
end
return false
end
local dirs = {0, 1, 2, 5}
local pos = {x = 100, y = 100, z = 7} --pos do item
local id = 2155 --id do item
for i = 1, #dirs do
addEvent(doMoveItem, i * 100, id, pos, dirs[i])
pos = getPosByDir(pos, dirs[i])
end
Editado Janeiro 3 por brun123
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

opa big mistake...
function doMoveItem(id, pos, dir)
if type(dir) ~= "table" or not next(dir) then return false end
local item = getTileItemById(pos, id)
local dirs = dir
if item.uid > 1 then
local newPos = getPosByDir(pos, dirs[1])
if newPos then
doTeleportThing(item.uid, newPos)
table.remove(dirs, 1)
addEvent(doMoveItem, 100, id, newPos, dirs)
return true
end
end
return false
end
--///--
local dirs = {0, 1, 2, 5}
local pos = {x = 100, y = 100, z = 7} --pos do item
local id = 2155 --id do item
doMoveItem(id, pos, dirs)
--///--
edit: brun eh um ninja ![]()
Editado Janeiro 3 por Slicer
info
Grupo: Marquês
Registrado: 02/08/12
Posts: 1k
Reputação: +234
Char no Tibia: Maurolkit

Então ficaria assim brun?
function doMoveItem(item, dir)
local uidPos = getThingPos(item.uid)
uidPos.stackpos = 253
local dirTab = {
[0] = {x = uidPos.x, y = uidPos.y - 1, z = uidPos.z},
[1] = {x = uidPos.x + 1, y = uidPos.y, z = uidPos.z},
[2] = {x = uidPos.x, y = uidPos.y + 1, z = uidPos.z},
[3] = {x = uidPos.x - 1, y = uidPos.y, z = uidPos.z}
}
return doRemoveItem(getThingFromPos(uidPos)) and doCreateItem(item.itemid, 1, dirTab[dir])
end
isso funciona com itens simples, mas itens que tem action id, unique id ou qualquer atributo, vai perder suas características, já que ele está sendo removido e criando outro com mesmo id em outro lugar, parecendo que ele teletransportou...
então na verdade o "certo" seria só:
doTeleportThing(item.uid, newPos)
isso pode mover um item de qualquer lugar pra uma determinada posição, pode estar dentro de um container, pode estar com algum player ou qualquer lugar, mas usando o teleport você se limita apenas a mover ele pra algum chão
Editado Janeiro 3 por brun123
info
Grupo: Visconde
Registrado: 21/09/10
Posts: 319
Reputação: +27
Char no Tibia: lest sarif

E os dirs , como eu configuro? '-'
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

colocando o numero da direçao q tu quer? ;x
NORTH = 0 EAST = 1 SOUTH = 2 WEST = 3 SOUTHWEST = 4 SOUTHEAST = 5 NORTHWEST = 6 NORTHEAST = 7
info
Grupo: Visconde
Registrado: 21/09/10
Posts: 319
Reputação: +27
Char no Tibia: lest sarif

ty *----*
info
Grupo: Príncipe
Registrado: 19/08/10
Posts: 4k
Reputação: +1.1k
Gênero: Masculino

funcionou? posso mover?





info
Grupo: Conde
Registrado: 24/09/06
Posts: 512
Reputação: +369
a função doTeleportThing funciona com qualquer coisa que tenha uid, pode ser item ou criatura (npcs, monstros e players), qualquer coisa que tenha unique id, só não funciona com grounds se não me engano.
a função getThingPosition faz a mesma coisa, retorna a posição de qualquer coisa que tenha uid