TO
pedido

Porque o meu for nao está lendo o restante?

Por Tony Araujo, 25 de mar. de 2013 em Scripts

resolvido
script
8
882
Tony AraujoT
25 de março de 2013 às 19:06

Olá galera, eu criei um script para blokiar items, e tipo... o for nao está lendo todos os valores dentro da tabela N.

 

Ele só está lendo o primeiro valor

alguem pode concertar isso pra min?

 

function onMoveItem(cid, item, formPosition, toPosition, fromItem, toItem, fromGround, toGround, status)
local n = {1988, 2400, 2404, 2403, 2402, 2401, 2405, 1996}

for _, i in ipairs(n) do
if item.itemid == i then
doPlayerSendCancel(cid, "This item is blocked! you cannot move it!")
return false
else return true
end
end
end

SlicerS
25 de março de 2013 às 19:27

usar for pra isso? LOL LOL LOL LOL

function onMoveItem(cid, item, formPosition, toPosition, fromItem, toItem, fromGround, toGround, status)
local n = {1988, 2400, 2404, 2403, 2402, 2401, 2405, 1996}

if isInArray(n, item.itemid) then
  doPlayerSendCancel(cid, "This item is blocked! you cannot move it!")
  return false
end
return true
end

Tony AraujoT
25 de março de 2013 às 19:28

PORRA ! Eu esqueço do Array ¬.¬

 

Obrigado ai Slicer. REP+

 

Mais poderia me dizer, porq o for nao estava lendo? o.0

Editado Março 25 por OrochiElf

SlicerS
25 de março de 2013 às 19:30

alias, essa funçao ae funciona direito? ;x bloqueia ms o movimento? -testa com item stackable pra ter certeza...-

Tony AraujoT
25 de março de 2013 às 19:30

Sim, funciona direitinho.

LuckOakeL
25 de março de 2013 às 19:41

Não lia por causa do Return false. Se no primeiro não confirmasse, retornava false e parava o loop. Se confirmar, retorna true e também para o loop.

Editado Março 25 por LuckOake

SlicerS
25 de março de 2013 às 19:44

soh pra complementar.. o problema tava no else return true... ^^ o return false estava correto.. soh o return true q tinha q ir pra baixo...

function onMoveItem(cid, item, formPosition, toPosition, fromItem, toItem, fromGround, toGround, status)
local n = {1988, 2400, 2404, 2403, 2402, 2401, 2405, 1996}

for _, i in ipairs(n) do
  if item.itemid == i then
  doPlayerSendCancel(cid, "This item is blocked! you cannot move it!")
  return false
  end
end
return true
end

RoksasR
25 de março de 2013 às 19:45

Tópico movido para a seção de dúvidas e pedidos resolvidos.