Ir para conteúdo
  • 0

como eu faço para mover item sem usar esse metodo?


tonynamoral

Pergunta

Fala ai galerinha *---* , eu estou com 1 duvida. ("AVÁ É MEMU ¬¬")

 

entao galera é o seguinte , eu quero fazer 1 item se mover sem ficar doCreateItem , doRemoveItem , e bla bla bla

 

então , se poderem me ajudar. *--*

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

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 '--'

Link para o comentário
Compartilhar em outros sites

  • 0

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 por brun123
Link para o comentário
Compartilhar em outros sites

  • 0

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 o.O

Editado por Slicer
Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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 por brun123
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...