Jump to content

Iniciante - Erro ao utilizar For com Ipairs


Recommended Posts

 Fala galera! eu aqui novamente ....

 

Como alguns já sabem mas outros não, sou iniciante aqui na programação.

 

Estou tentando usar um loop para criar peds com ipairs. Lembrando que uma variável é criada em um arquivo separado chamado "editar.Lua"

 

Declaração da variável no arquivo "editar.Lua" (Não vejo problema aqui, me corrijam se eu estiver errado)

PedLoja = {0, 1398.5822753906, -1630.8250732422, 14.102245330811, 88} -- declaração da variável com a posição x,y,z e rotação z

Código para criação de loop com ped

for i, v in ipairs(PedLoja) do
	ped = createPed(v[1], v[2], v[3], v[4], v[5])
	setElementFrozen(PedLoja, true)
    setElementData(PedLoja, "TS:Blindado", true)
    local BlipLoja = createBlipAttachedTo(PedLoja, 17)
    local BlipLojaAssalta = createBlipAttachedTo(PedLoja, 18)
    setElementVisibleTo(BlipLojaAssalta, root, false)
end

Erro que me retorna ao executar o script: 

tentativa de indexar 'v' local (um valor numérico)

 

Estava estudando Lua e sinceramente não sei ou porque cometeu um erro. Deve ser sobre algum valor incorreto que "V" não entra? Como posso otimizar para que funcione?

 

Obs: Nunca usei 

  para i , v em ipairs () do

 

Edited by MatheusNs
Bug, ao editar um texto de código os outros somem.
Link to post
PedLoja = {
  {0, 1398.5822753906, -1630.8250732422, 14.102245330811, 88}, -- i = 1
  {0, 1398.5822753906, -1630.8250732422, 14.102245330811, 88}, -- i = 2
 }

essa forma que voce fez voce ler apenas a linha 1, logo nao é necessario for, pode acessar a informação direta.

PedLoja[2] = 1398.5822753906

isso voce fez , -> https://forum.mtasa.com/topic/36659-navegando-pelos-elementos-de-uma-tabela/

Edited by Gw8
Link to post

O problema está na table. Você fez uma table para funcionar com somente 1 ped, dessa forma não precisaria de loop nenhum.

PedLoja = {0, 1398.5822753906, -1630.8250732422, 14.102245330811, 88} -- id, x, y, z, rotZ (não aceita outros Peds, pois precisaria de uma sub-table.

PedLoja = {
    {0, 1398.5822753906, -1630.8250732422, 14.102245330811, 88}, -- Agora sim, cada ped separado em uma sub-table.
    {0, 1398.5822753906, -1630.8250732422, 14.102245330811, 88}
}
-- Se usar a primeira tabela, o loop vai rodar 5 vezes. Na primeira vez, v = 0, na segunda vez, v = 1398.5822... e assim por diante.
for i, v in ipairs(PedLoja) do
	ped = createPed(v[1], v[2], v[3], v[4], v[5]) -- erro, não é possível indexar o número 0[1].
end

-- Se usar a segunda tabela, o loop vai rodar duas vezes, pois no exemplo a tabela tem 2 itens. Sendo cada item uma sub-table.
for i, v in ipairs(PedLoja) do -- Na primeira vez, v = {0, 1398.5822753906, -1630.82507324422, 14.102245330811, 88}
	ped = createPed(v[1], v[2], v[3], v[4], v[5]) -- Agora sim, v[1] = 0. Pois é o primeiro item da sub-table v, v[2] = 1398.5822753906, e assim por diante.
end

 

  • Thanks 1
Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...