Ajuda com String e Loop

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
41 messages Options
123
Reply | Threaded
Open this post in threaded view
|

Ajuda com String e Loop

Crow Craw
Olá, sou iniciante, e estou tentando fazer um código para rodar em programa que tem um ambiente 3d.
O código está assim:

function getThing(o, color)
  local name = getNotes()
  local saveObjects = self.getObjects()
  local params = {}
  params.position = {0, 0, 0}
  params.rotation = {0, 180, 0}
  for i, object in ipairs(saveObjects) do
    if object.name == name then
      params.index = object.index
      local foundObject = self.takeObject(params)
    else
    end
  end
end

O que acontece: quando a função é executada ele irá pegar um objeto de dentro do contêiner (bag). Para ele saber qual objeto pegar, ele procura pela string Notes.
Ou seja, eu escrevo por exemplo "nome" no espaço notes do ambiente e ele pega um objeto que tenha o nome "nome" de dentro do contêiner e coloca no locar certo. Até aí funciona tudo certinho. O problema é: Se eu escrever nesse local "nome1, nome2, nome3, ..." ele vai procurar apenas um objeto com essa string inteira como nome. Eu queria que ele, ao chegar na primeira " , " executasse, e depois fizesse um loop e continuaria a partir de onde tinha parado. Pegando o objeto com nomes "nome1" "nome2" etc... e não apenas um objeto com o nome da string inteira. Só que como eu disse lá em cima, sou iniciante e não sei como fazer para partir essa string e fazer ele reconhecer apenas os pedaços e depois seguir executando até terminar tudo. Alguém sabe como me ajudar?

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Diogo Mildenberger
Uma sugestão é dividir a string em pedaços (split), usando "," como separador, veja http://lua-users.org/wiki/SplitJoin, ou "lua split" no Google

Em 4 de jan de 2017 22:47, "Crow Craw" <[hidden email]> escreveu:
Olá, sou iniciante, e estou tentando fazer um código para rodar em programa que tem um ambiente 3d.
O código está assim:

function getThing(o, color)
  local name = getNotes()
  local saveObjects = self.getObjects()
  local params = {}
  params.position = {0, 0, 0}
  params.rotation = {0, 180, 0}
  for i, object in ipairs(saveObjects) do
    if object.name == name then
      params.index = object.index
      local foundObject = self.takeObject(params)
    else
    end
  end
end

O que acontece: quando a função é executada ele irá pegar um objeto de dentro do contêiner (bag). Para ele saber qual objeto pegar, ele procura pela string Notes.
Ou seja, eu escrevo por exemplo "nome" no espaço notes do ambiente e ele pega um objeto que tenha o nome "nome" de dentro do contêiner e coloca no locar certo. Até aí funciona tudo certinho. O problema é: Se eu escrever nesse local "nome1, nome2, nome3, ..." ele vai procurar apenas um objeto com essa string inteira como nome. Eu queria que ele, ao chegar na primeira " , " executasse, e depois fizesse um loop e continuaria a partir de onde tinha parado. Pegando o objeto com nomes "nome1" "nome2" etc... e não apenas um objeto com o nome da string inteira. Só que como eu disse lá em cima, sou iniciante e não sei como fazer para partir essa string e fazer ele reconhecer apenas os pedaços e depois seguir executando até terminar tudo. Alguém sabe como me ajudar?

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Tomas Guisasola Gorham
Se o objetivo for apenas identificar os termos (sem a necessidade de
guardá-los separadamente), pode-se usar string.gmatch():

s = "palavra, mais de uma palavra, outro termo"
for termo in string.gmatch (s, "[^,]+") do
    print (termo)
end

Atenção com os espaços!  Talvez seja melhor usar "%s*([^,]+)%s*" para
ignorar os espaços em torno dos termos...

Abraços,
Tomás

On 2017-01-05 06:53, Diogo Mildenberger wrote:

> Uma sugestão é dividir a string em pedaços (split), usando "," como
> separador, veja http://lua-users.org/wiki/SplitJoin [4], ou "lua
> split" no Google
>
> Em 4 de jan de 2017 22:47, "Crow Craw" <[hidden email]> escreveu:
>
>> Olá, sou iniciante, e estou tentando fazer um código para rodar em
>> programa que tem um ambiente 3d.
>> O código está assim:
>>
>> function getThing(o, color)
>> local name = getNotes()
>> local saveObjects = self.getObjects()
>> local params = {}
>> params.position = {0, 0, 0}
>> params.rotation = {0, 180, 0}
>> for i, object in ipairs(saveObjects) do
>> if object.name [1] == name then
>> params.index = object.index
>> local foundObject = self.takeObject(params)
>> else
>> end
>> end
>> end
>>
>> O que acontece: quando a função é executada ele irá pegar um
>> objeto de dentro do contêiner (bag). Para ele saber qual objeto
>> pegar, ele procura pela string Notes.
>> Ou seja, eu escrevo por exemplo "nome" no espaço notes do ambiente
>> e ele pega um objeto que tenha o nome "nome" de dentro do contêiner
>> e coloca no locar certo. Até aí funciona tudo certinho. O problema
>> é: Se eu escrever nesse local "nome1, nome2, nome3, ..." ele vai
>> procurar apenas um objeto com essa string inteira como nome. Eu
>> queria que ele, ao chegar na primeira " , " executasse, e depois
>> fizesse um loop e continuaria a partir de onde tinha parado. Pegando
>> o objeto com nomes "nome1" "nome2" etc... e não apenas um objeto
>> com o nome da string inteira. Só que como eu disse lá em cima, sou
>> iniciante e não sei como fazer para partir essa string e fazer ele
>> reconhecer apenas os pedaços e depois seguir executando até
>> terminar tudo. Alguém sabe como me ajudar?
>>
>> --
>> Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
>> dos Grupos do Google.
>> Para cancelar inscrição nesse grupo e parar de receber e-mails
>> dele, envie um e-mail para [hidden email].
>> Acesse esse grupo em https://groups.google.com/group/lua-br [2].
>> Para mais opções, acesse https://groups.google.com/d/optout [3].
>
>  --
>  Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
> dos Grupos do Google.
>  Para cancelar inscrição nesse grupo e parar de receber e-mails
> dele, envie um e-mail para [hidden email].
>  Acesse esse grupo em https://groups.google.com/group/lua-br [2].
>  Para mais opções, acesse https://groups.google.com/d/optout [3].
>
>
> Links:
> ------
> [1] http://object.name/
> [2] https://groups.google.com/group/lua-br
> [3] https://groups.google.com/d/optout
> [4] http://lua-users.org/wiki/SplitJoin

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Visite este grupo em https://groups.google.com/group/lua-br.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Diego Nascimento
In reply to this post by Diogo Mildenberger
pode transformar em lista e iterar.

local s = "nome1,nome2, nome3,     nome4"
local lista_nomes = {}
for termo in string.gmatch (s, "[^, ]+") do
   table.insert(lista_nomes, termo) 
end


cria uma lista assim:
{
  "nome1",
  "nome2",
  "nome3",
  "nome4"
}


Em 5 de janeiro de 2017 06:53, Diogo Mildenberger <[hidden email]> escreveu:
Uma sugestão é dividir a string em pedaços (split), usando "," como separador, veja http://lua-users.org/wiki/SplitJoin, ou "lua split" no Google

Em 4 de jan de 2017 22:47, "Crow Craw" <[hidden email]> escreveu:
Olá, sou iniciante, e estou tentando fazer um código para rodar em programa que tem um ambiente 3d.
O código está assim:

function getThing(o, color)
  local name = getNotes()
  local saveObjects = self.getObjects()
  local params = {}
  params.position = {0, 0, 0}
  params.rotation = {0, 180, 0}
  for i, object in ipairs(saveObjects) do
    if object.name == name then
      params.index = object.index
      local foundObject = self.takeObject(params)
    else
    end
  end
end

O que acontece: quando a função é executada ele irá pegar um objeto de dentro do contêiner (bag). Para ele saber qual objeto pegar, ele procura pela string Notes.
Ou seja, eu escrevo por exemplo "nome" no espaço notes do ambiente e ele pega um objeto que tenha o nome "nome" de dentro do contêiner e coloca no locar certo. Até aí funciona tudo certinho. O problema é: Se eu escrever nesse local "nome1, nome2, nome3, ..." ele vai procurar apenas um objeto com essa string inteira como nome. Eu queria que ele, ao chegar na primeira " , " executasse, e depois fizesse um loop e continuaria a partir de onde tinha parado. Pegando o objeto com nomes "nome1" "nome2" etc... e não apenas um objeto com o nome da string inteira. Só que como eu disse lá em cima, sou iniciante e não sei como fazer para partir essa string e fazer ele reconhecer apenas os pedaços e depois seguir executando até terminar tudo. Alguém sabe como me ajudar?

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Crow Craw
In reply to this post by Tomas Guisasola Gorham
Ele de fato separa os códigos no print, porém ele não executa o comando que eu quero (takeObject), que é pegar objeto de dentro contêiner 

Em quinta-feira, 5 de janeiro de 2017 07:21:00 UTC-2, tomas escreveu:
Se o objetivo for apenas identificar os termos (sem a necessidade de
guardá-los separadamente), pode-se usar string.gmatch():

s = "palavra, mais de uma palavra, outro termo"
for termo in string.gmatch (s, "[^,]+") do
    print (termo)
end

Atenção com os espaços!  Talvez seja melhor usar "%s*([^,]+)%s*" para
ignorar os espaços em torno dos termos...

Abraços,
Tomás

On 2017-01-05 06:53, Diogo Mildenberger wrote:

> Uma sugestão é dividir a string em pedaços (split), usando "," como
> separador, veja <a href="http://lua-users.org/wiki/SplitJoin" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;">http://lua-users.org/wiki/SplitJoin [4], ou "lua
> split" no Google
>
> Em 4 de jan de 2017 22:47, "Crow Craw" <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="ZK5Urg0HFAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">cr0w...@...> escreveu:
>
>> Olá, sou iniciante, e estou tentando fazer um código para rodar em
>> programa que tem um ambiente 3d.
>> O código está assim:
>>
>> function getThing(o, color)
>> local name = getNotes()
>> local saveObjects = self.getObjects()
>> local params = {}
>> params.position = {0, 0, 0}
>> params.rotation = {0, 180, 0}
>> for i, object in ipairs(saveObjects) do
>> if <a href="http://object.name" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;">object.name [1] == name then
>> params.index = object.index
>> local foundObject = self.takeObject(params)
>> else
>> end
>> end
>> end
>>
>> O que acontece: quando a função é executada ele irá pegar um
>> objeto de dentro do contêiner (bag). Para ele saber qual objeto
>> pegar, ele procura pela string Notes.
>> Ou seja, eu escrevo por exemplo "nome" no espaço notes do ambiente
>> e ele pega um objeto que tenha o nome "nome" de dentro do contêiner
>> e coloca no locar certo. Até aí funciona tudo certinho. O problema
>> é: Se eu escrever nesse local "nome1, nome2, nome3, ..." ele vai
>> procurar apenas um objeto com essa string inteira como nome. Eu
>> queria que ele, ao chegar na primeira " , " executasse, e depois
>> fizesse um loop e continuaria a partir de onde tinha parado. Pegando
>> o objeto com nomes "nome1" "nome2" etc... e não apenas um objeto
>> com o nome da string inteira. Só que como eu disse lá em cima, sou
>> iniciante e não sei como fazer para partir essa string e fazer ele
>> reconhecer apenas os pedaços e depois seguir executando até
>> terminar tudo. Alguém sabe como me ajudar?
>>
>> --
>> Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
>> dos Grupos do Google.
>> Para cancelar inscrição nesse grupo e parar de receber e-mails
>> dele, envie um e-mail para <a href="javascript:" target="_blank" gdf-obfuscated-mailto="ZK5Urg0HFAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">lua-br+un...@googlegroups.com.
>> Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br [2].
>> Para mais opções, acesse <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout [3].
>
>  --
>  Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
> dos Grupos do Google.
>  Para cancelar inscrição nesse grupo e parar de receber e-mails
> dele, envie um e-mail para <a href="javascript:" target="_blank" gdf-obfuscated-mailto="ZK5Urg0HFAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">lua-br+un...@googlegroups.com.
>  Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br [2].
>  Para mais opções, acesse <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout [3].
>
>
> Links:
> ------
> [1] <a href="http://object.name/" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHD2YmZTQa5cquilBnGv13BT_B93g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHD2YmZTQa5cquilBnGv13BT_B93g&#39;;return true;">http://object.name/
> [2] <a href="https://groups.google.com/group/lua-br" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br
> [3] <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout
> [4] <a href="http://lua-users.org/wiki/SplitJoin" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;">http://lua-users.org/wiki/SplitJoin

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Diego Nascimento
ele está executando para 1 argumento?? executa corretamente?/

você deveria iterar a lista de objetos para cada uma dos nomes.. mas se tua função estiver funcionando bem, vc pode criar uma nova e ela chamar essa aih para cada nome de variável, assim, mais ou menos:


-- funcao que recebe a lista de nomes e retorna uma tabela com esses nomes
function getListaNomes(str_names)
    local lista_nomes = {}
    for nome in string.gmatch(str_names, "[^, ]+") do
        table.insert(lista_nomes, nome)
    end
    return lista_nomes
end


function getThing(o, color)
  local name = getNotes()
  local saveObjects = self.getObjects()
  local params = {}
  params.position = {0, 0, 0}
  params.rotation = {0, 180, 0}
  for i, object in ipairs(saveObjects) do
    if object.name == name then
      params.index = object.index
      local foundObject = self.takeObject(params)
    else
    end
  end
end

-- aqui, itera sobre list_color, com a função que vc já tem, a getThing
-- aih usa o parametro 'o' e a lista de nomes ao invés de um só nome
function getAllThing(o, list_color)
    for _, color in ipairs(getListaNomes(list_color)) do
        getThing(o, color)
    end
end



Em 5 de janeiro de 2017 21:31, Crow Craw <[hidden email]> escreveu:
Ele de fato separa os códigos no print, porém ele não executa o comando que eu quero (takeObject), que é pegar objeto de dentro contêiner 

Em quinta-feira, 5 de janeiro de 2017 07:21:00 UTC-2, tomas escreveu:
Se o objetivo for apenas identificar os termos (sem a necessidade de
guardá-los separadamente), pode-se usar string.gmatch():

s = "palavra, mais de uma palavra, outro termo"
for termo in string.gmatch (s, "[^,]+") do
    print (termo)
end

Atenção com os espaços!  Talvez seja melhor usar "%s*([^,]+)%s*" para
ignorar os espaços em torno dos termos...

Abraços,
Tomás

On 2017-01-05 06:53, Diogo Mildenberger wrote:
> Uma sugestão é dividir a string em pedaços (split), usando "," como
> separador, veja http://lua-users.org/wiki/SplitJoin [4], ou "lua
> split" no Google
>
> Em 4 de jan de 2017 22:47, "Crow Craw" <[hidden email]> escreveu:

>
>> Olá, sou iniciante, e estou tentando fazer um código para rodar em
>> programa que tem um ambiente 3d.
>> O código está assim:
>>
>> function getThing(o, color)
>> local name = getNotes()
>> local saveObjects = self.getObjects()
>> local params = {}
>> params.position = {0, 0, 0}
>> params.rotation = {0, 180, 0}
>> for i, object in ipairs(saveObjects) do
>> if object.name [1] == name then
>> params.index = object.index
>> local foundObject = self.takeObject(params)
>> else
>> end
>> end
>> end
>>
>> O que acontece: quando a função é executada ele irá pegar um
>> objeto de dentro do contêiner (bag). Para ele saber qual objeto
>> pegar, ele procura pela string Notes.
>> Ou seja, eu escrevo por exemplo "nome" no espaço notes do ambiente
>> e ele pega um objeto que tenha o nome "nome" de dentro do contêiner
>> e coloca no locar certo. Até aí funciona tudo certinho. O problema
>> é: Se eu escrever nesse local "nome1, nome2, nome3, ..." ele vai
>> procurar apenas um objeto com essa string inteira como nome. Eu
>> queria que ele, ao chegar na primeira " , " executasse, e depois
>> fizesse um loop e continuaria a partir de onde tinha parado. Pegando
>> o objeto com nomes "nome1" "nome2" etc... e não apenas um objeto
>> com o nome da string inteira. Só que como eu disse lá em cima, sou
>> iniciante e não sei como fazer para partir essa string e fazer ele
>> reconhecer apenas os pedaços e depois seguir executando até
>> terminar tudo. Alguém sabe como me ajudar?
>>
>> --
>> Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
>> dos Grupos do Google.
>> Para cancelar inscrição nesse grupo e parar de receber e-mails
>> dele, envie um e-mail para [hidden email].
>> Acesse esse grupo em https://groups.google.com/group/lua-br [2].
>> Para mais opções, acesse https://groups.google.com/d/optout [3].
>
>  --
>  Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
> dos Grupos do Google.
>  Para cancelar inscrição nesse grupo e parar de receber e-mails
> dele, envie um e-mail para [hidden email].
>  Acesse esse grupo em https://groups.google.com/group/lua-br [2].
>  Para mais opções, acesse https://groups.google.com/d/optout [3].
>
>
> Links:
> ------
> [1] http://object.name/
> [2] https://groups.google.com/group/lua-br
> [3] https://groups.google.com/d/optout
> [4] http://lua-users.org/wiki/SplitJoin

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Crow Craw
Usei seu código e mesmo assim continuou na mesma. Eu gravei um vídeo mostrando como está acontecendo, espero que ajude. (no video mostro que consigo pegar os objetos pelo nome individualmente, mas com mais de um nome na string, ela interpreta como se fosse apenas um grande nome)  https://youtu.be/WOnEAt-5GaA

Em sexta-feira, 6 de janeiro de 2017 03:52:25 UTC-2, Diego Nascimento escreveu:
ele está executando para 1 argumento?? executa corretamente?/

você deveria iterar a lista de objetos para cada uma dos nomes.. mas se tua função estiver funcionando bem, vc pode criar uma nova e ela chamar essa aih para cada nome de variável, assim, mais ou menos:


-- funcao que recebe a lista de nomes e retorna uma tabela com esses nomes
function getListaNomes(str_names)
    local lista_nomes = {}
    for nome in string.gmatch(str_names, "[^, ]+") do
        table.insert(lista_nomes, nome)
    end
    return lista_nomes
end


function getThing(o, color)
  local name = getNotes()
  local saveObjects = self.getObjects()
  local params = {}
  params.position = {0, 0, 0}
  params.rotation = {0, 180, 0}
  for i, object in ipairs(saveObjects) do
    if <a href="http://object.name" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;">object.name == name then
      params.index = object.index
      local foundObject = self.takeObject(params)
    else
    end
  end
end

-- aqui, itera sobre list_color, com a função que vc já tem, a getThing
-- aih usa o parametro 'o' e a lista de nomes ao invés de um só nome
function getAllThing(o, list_color)
    for _, color in ipairs(getListaNomes(list_color)) do
        getThing(o, color)
    end
end



Em 5 de janeiro de 2017 21:31, Crow Craw <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="MhwhgUBKFAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">cr0w...@...> escreveu:
Ele de fato separa os códigos no print, porém ele não executa o comando que eu quero (takeObject), que é pegar objeto de dentro contêiner 

Em quinta-feira, 5 de janeiro de 2017 07:21:00 UTC-2, tomas escreveu:
Se o objetivo for apenas identificar os termos (sem a necessidade de
guardá-los separadamente), pode-se usar string.gmatch():

s = "palavra, mais de uma palavra, outro termo"
for termo in string.gmatch (s, "[^,]+") do
    print (termo)
end

Atenção com os espaços!  Talvez seja melhor usar "%s*([^,]+)%s*" para
ignorar os espaços em torno dos termos...

Abraços,
Tomás

On 2017-01-05 06:53, Diogo Mildenberger wrote:
> Uma sugestão é dividir a string em pedaços (split), usando "," como
> separador, veja <a href="http://lua-users.org/wiki/SplitJoin" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;">http://lua-users.org/wiki/SplitJoin [4], ou "lua
> split" no Google
>
> Em 4 de jan de 2017 22:47, "Crow Craw" <[hidden email]> escreveu:

>
>> Olá, sou iniciante, e estou tentando fazer um código para rodar em
>> programa que tem um ambiente 3d.
>> O código está assim:
>>
>> function getThing(o, color)
>> local name = getNotes()
>> local saveObjects = self.getObjects()
>> local params = {}
>> params.position = {0, 0, 0}
>> params.rotation = {0, 180, 0}
>> for i, object in ipairs(saveObjects) do
>> if <a href="http://object.name" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;">object.name [1] == name then
>> params.index = object.index
>> local foundObject = self.takeObject(params)
>> else
>> end
>> end
>> end
>>
>> O que acontece: quando a função é executada ele irá pegar um
>> objeto de dentro do contêiner (bag). Para ele saber qual objeto
>> pegar, ele procura pela string Notes.
>> Ou seja, eu escrevo por exemplo "nome" no espaço notes do ambiente
>> e ele pega um objeto que tenha o nome "nome" de dentro do contêiner
>> e coloca no locar certo. Até aí funciona tudo certinho. O problema
>> é: Se eu escrever nesse local "nome1, nome2, nome3, ..." ele vai
>> procurar apenas um objeto com essa string inteira como nome. Eu
>> queria que ele, ao chegar na primeira " , " executasse, e depois
>> fizesse um loop e continuaria a partir de onde tinha parado. Pegando
>> o objeto com nomes "nome1" "nome2" etc... e não apenas um objeto
>> com o nome da string inteira. Só que como eu disse lá em cima, sou
>> iniciante e não sei como fazer para partir essa string e fazer ele
>> reconhecer apenas os pedaços e depois seguir executando até
>> terminar tudo. Alguém sabe como me ajudar?
>>
>> --
>> Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
>> dos Grupos do Google.
>> Para cancelar inscrição nesse grupo e parar de receber e-mails
>> dele, envie um e-mail para [hidden email].
>> Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br [2].
>> Para mais opções, acesse <a href="https://groups.google.com/d/optout" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout [3].
>
>  --
>  Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
> dos Grupos do Google.
>  Para cancelar inscrição nesse grupo e parar de receber e-mails
> dele, envie um e-mail para [hidden email].
>  Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br [2].
>  Para mais opções, acesse <a href="https://groups.google.com/d/optout" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout [3].
>
>
> Links:
> ------
> [1] <a href="http://object.name/" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHD2YmZTQa5cquilBnGv13BT_B93g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHD2YmZTQa5cquilBnGv13BT_B93g&#39;;return true;">http://object.name/
> [2] <a href="https://groups.google.com/group/lua-br" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br
> [3] <a href="https://groups.google.com/d/optout" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout
> [4] <a href="http://lua-users.org/wiki/SplitJoin" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;">http://lua-users.org/wiki/SplitJoin

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para <a href="javascript:" target="_blank" gdf-obfuscated-mailto="MhwhgUBKFAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">lua-br+un...@googlegroups.com.
Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br.
Para mais opções, acesse <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Tomas Guisasola Gorham
Olá

É difícil entender exatamente como te ajudar porque o teu exemplo tem um
monte de detalhes particulares da sua aplicação, como essas funções
"getObjects" ou "takeObject".  Eu não sei o que elas fazem, então posso
dizer uma grande besteira daqui para a frente.  Mas vou tentar te ajudar
de forma mais direta.

Eu não sei o que é que você quer dizer com "pegar um objeto".  Olhando o
pequeno trecho de código que você mandou, não dá para ter certeza o que
é "pegar um objeto", mas parece que é chamar a função self.takeObject
passando uma tabela como { index = X }, onde este X é o index do objeto
que você quer pegar.

Se a minha suposição estiver correta, não tem como pegar mais de um
objeto, pois só dá para indicar um valor na chave index da tabela
params.  Se houver uma forma de fazer isso, você vai ter que adaptar.

Como você disse que queria fazer um loop "pegando os objetos com cada um
dos nomes", estou supondo (de novo) que o corpo do "if" mais interno é
que vai se repetir neste loop, como em:

function getThing(o, color)
   local names = getNotes()
   local saveObjects = self.getObjects()
   local params = {
     position = {0, 0, 0},
     rotation = {0, 180, 0},
   }
   for i, object in ipairs(saveObjects) do
     for name in names:gmatch"%s*([^,]+)%s*" do
       if object.name[1][1] == name then
         params.index = object.index
         self.takeObject(params)
       end
     end
   end
end

Abraço,
Tomás

On 2017-01-06 15:04, Crow Craw wrote:

> Usei seu código e mesmo assim continuou na mesma. Eu gravei um vídeo
> mostrando como está acontecendo, espero que ajude. (no video mostro
> que consigo pegar os objetos pelo nome individualmente, mas com mais
> de um nome na string, ela interpreta como se fosse apenas um grande
> nome)  https://youtu.be/WOnEAt-5GaA
>
> Em sexta-feira, 6 de janeiro de 2017 03:52:25 UTC-2, Diego Nascimento
> escreveu:
>
>> ele está executando para 1 argumento?? executa corretamente?/
>>
>> você deveria iterar a lista de objetos para cada uma dos nomes..
>> mas se tua função estiver funcionando bem, vc pode criar uma nova
>> e ela chamar essa aih para cada nome de variável, assim, mais ou
>> menos:
>>
>> -- funcao que recebe a lista de nomes e retorna uma tabela com esses
>> nomes
>> function getListaNomes(str_names)
>> local lista_nomes = {}
>> for nome in string.gmatch(str_names, "[^, ]+") do
>> table.insert(lista_nomes, nome)
>> end
>> return lista_nomes
>> end
>>
>> function getThing(o, color)
>> local name = getNotes()
>> local saveObjects = self.getObjects()
>> local params = {}
>> params.position = {0, 0, 0}
>> params.rotation = {0, 180, 0}
>> for i, object in ipairs(saveObjects) do
>> if object.name [1] == name then
>> params.index = object.index
>> local foundObject = self.takeObject(params)
>> else
>> end
>> end
>> end
>>
>> -- aqui, itera sobre list_color, com a função que vc já tem, a
>> getThing
>> -- aih usa o parametro 'o' e a lista de nomes ao invés de um só
>> nome
>> function getAllThing(o, list_color)
>> for _, color in ipairs(getListaNomes(list_color)) do
>> getThing(o, color)
>> end
>> end
>>
>> Em 5 de janeiro de 2017 21:31, Crow Craw <[hidden email]>
>> escreveu:
>>
>> Ele de fato separa os códigos no print, porém ele não executa o
>> comando que eu quero (takeObject), que é pegar objeto de dentro
>> contêiner
>>
>> Em quinta-feira, 5 de janeiro de 2017 07:21:00 UTC-2, tomas
>> escreveu:Se o objetivo for apenas identificar os termos (sem a
>> necessidade de
>> guardá-los separadamente), pode-se usar string.gmatch():
>>
>> s = "palavra, mais de uma palavra, outro termo"
>> for termo in string.gmatch (s, "[^,]+") do
>> print (termo)
>> end
>>
>> Atenção com os espaços! Talvez seja melhor usar "%s*([^,]+)%s*"
>> para
>> ignorar os espaços em torno dos termos...
>>
>> Abraços,
>> Tomás
>>
>> On 2017-01-05 06:53, Diogo Mildenberger wrote:
>>> Uma sugestão é dividir a string em pedaços (split), usando ","
>> como
>>> separador, veja http://lua-users.org/wiki/SplitJoin [2] [4], ou
>> "lua
>>> split" no Google
>>>
>>
>>> Em 4 de jan de 2017 22:47, "Crow Craw" <[hidden email]>
>> escreveu:
>>>
>>>> Olá, sou iniciante, e estou tentando fazer um código para rodar
>> em
>>>> programa que tem um ambiente 3d.
>>>> O código está assim:
>>>>
>>>> function getThing(o, color)
>>>> local name = getNotes()
>>>> local saveObjects = self.getObjects()
>>>> local params = {}
>>>> params.position = {0, 0, 0}
>>>> params.rotation = {0, 180, 0}
>>>> for i, object in ipairs(saveObjects) do
>>>> if object.name [1] [1] == name then
>>>> params.index = object.index
>>>> local foundObject = self.takeObject(params)
>>>> else
>>>> end
>>>> end
>>>> end
>>>>
>>>> O que acontece: quando a função é executada ele irá pegar um
>>>> objeto de dentro do contêiner (bag). Para ele saber qual objeto
>>>> pegar, ele procura pela string Notes.
>>>> Ou seja, eu escrevo por exemplo "nome" no espaço notes do
>> ambiente
>>>> e ele pega um objeto que tenha o nome "nome" de dentro do
>> contêiner
>>>> e coloca no locar certo. Até aí funciona tudo certinho. O
>> problema
>>>> é: Se eu escrever nesse local "nome1, nome2, nome3, ..." ele vai
>>
>>>> procurar apenas um objeto com essa string inteira como nome. Eu
>>>> queria que ele, ao chegar na primeira " , " executasse, e depois
>>>> fizesse um loop e continuaria a partir de onde tinha parado.
>> Pegando
>>>> o objeto com nomes "nome1" "nome2" etc... e não apenas um objeto
>>
>>>> com o nome da string inteira. Só que como eu disse lá em cima,
>> sou
>>>> iniciante e não sei como fazer para partir essa string e fazer
>> ele
>>>> reconhecer apenas os pedaços e depois seguir executando até
>>>> terminar tudo. Alguém sabe como me ajudar?
>>>>
>>>> --
>>>> Você recebeu essa mensagem porque está inscrito no grupo "Lua
>> BR"
>>>> dos Grupos do Google.
>>>> Para cancelar inscrição nesse grupo e parar de receber e-mails
>>>> dele, envie um e-mail para [hidden email].
>>>> Acesse esse grupo em https://groups.google.com/group/lua-br [3]
>> [2].
>>>> Para mais opções, acesse https://groups.google.com/d/optout [4]
>> [3].
>>>
>>> --
>>> Você recebeu essa mensagem porque está inscrito no grupo "Lua
>> BR"
>>> dos Grupos do Google.
>>> Para cancelar inscrição nesse grupo e parar de receber e-mails
>>> dele, envie um e-mail para [hidden email].
>>> Acesse esse grupo em https://groups.google.com/group/lua-br [3]
>> [2].
>>> Para mais opções, acesse https://groups.google.com/d/optout [4]
>> [3].
>>>
>>>
>>> Links:
>>> ------
>>> [1] http://object.name/ [5]
>>> [2] https://groups.google.com/group/lua-br [3]
>>> [3] https://groups.google.com/d/optout [4]
>>> [4] http://lua-users.org/wiki/SplitJoin [2]
>>
>> --
>> Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
>> dos Grupos do Google.
>> Para cancelar inscrição nesse grupo e parar de receber e-mails
>> dele, envie um e-mail para [hidden email].
>> Acesse esse grupo em https://groups.google.com/group/lua-br [3].
>> Para mais opções, acesse https://groups.google.com/d/optout [4].
>
>  --
>  Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
> dos Grupos do Google.
>  Para cancelar inscrição nesse grupo e parar de receber e-mails
> dele, envie um e-mail para [hidden email].
>  Acesse esse grupo em https://groups.google.com/group/lua-br [3].
>  Para mais opções, acesse https://groups.google.com/d/optout [4].
>
>
> Links:
> ------
> [1] http://object.name
> [2] http://lua-users.org/wiki/SplitJoin
> [3] https://groups.google.com/group/lua-br
> [4] https://groups.google.com/d/optout
> [5] http://object.name/

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Visite este grupo em https://groups.google.com/group/lua-br.
Para obter mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Diego Nascimento
que ambiente é esse? é game maker? qual o nome?

Em 6 de janeiro de 2017 16:39, tomas <[hidden email]> escreveu:
Olá

É difícil entender exatamente como te ajudar porque o teu exemplo tem um monte de detalhes particulares da sua aplicação, como essas funções "getObjects" ou "takeObject".  Eu não sei o que elas fazem, então posso dizer uma grande besteira daqui para a frente.  Mas vou tentar te ajudar de forma mais direta.

Eu não sei o que é que você quer dizer com "pegar um objeto".  Olhando o pequeno trecho de código que você mandou, não dá para ter certeza o que é "pegar um objeto", mas parece que é chamar a função self.takeObject passando uma tabela como { index = X }, onde este X é o index do objeto que você quer pegar.

Se a minha suposição estiver correta, não tem como pegar mais de um objeto, pois só dá para indicar um valor na chave index da tabela params.  Se houver uma forma de fazer isso, você vai ter que adaptar.

Como você disse que queria fazer um loop "pegando os objetos com cada um dos nomes", estou supondo (de novo) que o corpo do "if" mais interno é que vai se repetir neste loop, como em:

function getThing(o, color)
  local names = getNotes()
  local saveObjects = self.getObjects()
  local params = {
    position = {0, 0, 0},
    rotation = {0, 180, 0},
  }
  for i, object in ipairs(saveObjects) do
    for name in names:gmatch"%s*([^,]+)%s*" do
      if object.name[1][1] == name then
        params.index = object.index
        self.takeObject(params)
      end
    end
  end
end

Abraço,
Tomás


On 2017-01-06 15:04, Crow Craw wrote:
Usei seu código e mesmo assim continuou na mesma. Eu gravei um vídeo
mostrando como está acontecendo, espero que ajude. (no video mostro
que consigo pegar os objetos pelo nome individualmente, mas com mais
de um nome na string, ela interpreta como se fosse apenas um grande
nome)  https://youtu.be/WOnEAt-5GaA

Em sexta-feira, 6 de janeiro de 2017 03:52:25 UTC-2, Diego Nascimento
escreveu:

ele está executando para 1 argumento?? executa corretamente?/

você deveria iterar a lista de objetos para cada uma dos nomes..
mas se tua função estiver funcionando bem, vc pode criar uma nova
e ela chamar essa aih para cada nome de variável, assim, mais ou
menos:

-- funcao que recebe a lista de nomes e retorna uma tabela com esses
nomes
function getListaNomes(str_names)
local lista_nomes = {}
for nome in string.gmatch(str_names, "[^, ]+") do
table.insert(lista_nomes, nome)
end
return lista_nomes
end

function getThing(o, color)
local name = getNotes()
local saveObjects = self.getObjects()
local params = {}
params.position = {0, 0, 0}
params.rotation = {0, 180, 0}
for i, object in ipairs(saveObjects) do
if object.name [1] == name then
params.index = object.index
local foundObject = self.takeObject(params)
else
end
end
end

-- aqui, itera sobre list_color, com a função que vc já tem, a
getThing
-- aih usa o parametro 'o' e a lista de nomes ao invés de um só
nome
function getAllThing(o, list_color)
for _, color in ipairs(getListaNomes(list_color)) do
getThing(o, color)
end
end

Em 5 de janeiro de 2017 21:31, Crow Craw <[hidden email]>
escreveu:

Ele de fato separa os códigos no print, porém ele não executa o
comando que eu quero (takeObject), que é pegar objeto de dentro
contêiner

Em quinta-feira, 5 de janeiro de 2017 07:21:00 UTC-2, tomas
escreveu:Se o objetivo for apenas identificar os termos (sem a
necessidade de
guardá-los separadamente), pode-se usar string.gmatch():

s = "palavra, mais de uma palavra, outro termo"
for termo in string.gmatch (s, "[^,]+") do
print (termo)
end

Atenção com os espaços! Talvez seja melhor usar "%s*([^,]+)%s*"
para
ignorar os espaços em torno dos termos...

Abraços,
Tomás

On 2017-01-05 06:53, Diogo Mildenberger wrote:
Uma sugestão é dividir a string em pedaços (split), usando ","
como
separador, veja http://lua-users.org/wiki/SplitJoin [2] [4], ou
"lua
split" no Google


Em 4 de jan de 2017 22:47, "Crow Craw" <[hidden email]>
escreveu:

Olá, sou iniciante, e estou tentando fazer um código para rodar
em
programa que tem um ambiente 3d.
O código está assim:

function getThing(o, color)
local name = getNotes()
local saveObjects = self.getObjects()
local params = {}
params.position = {0, 0, 0}
params.rotation = {0, 180, 0}
for i, object in ipairs(saveObjects) do
if object.name [1] [1] == name then

params.index = object.index
local foundObject = self.takeObject(params)
else
end
end
end

O que acontece: quando a função é executada ele irá pegar um
objeto de dentro do contêiner (bag). Para ele saber qual objeto
pegar, ele procura pela string Notes.
Ou seja, eu escrevo por exemplo "nome" no espaço notes do
ambiente
e ele pega um objeto que tenha o nome "nome" de dentro do
contêiner
e coloca no locar certo. Até aí funciona tudo certinho. O
problema
é: Se eu escrever nesse local "nome1, nome2, nome3, ..." ele vai

procurar apenas um objeto com essa string inteira como nome. Eu
queria que ele, ao chegar na primeira " , " executasse, e depois
fizesse um loop e continuaria a partir de onde tinha parado.
Pegando
o objeto com nomes "nome1" "nome2" etc... e não apenas um objeto

com o nome da string inteira. Só que como eu disse lá em cima,
sou
iniciante e não sei como fazer para partir essa string e fazer
ele
reconhecer apenas os pedaços e depois seguir executando até
terminar tudo. Alguém sabe como me ajudar?

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua
BR"
dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails
dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br [3]
[2].
Para mais opções, acesse https://groups.google.com/d/optout [4]
[3].

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua
BR"
dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails
dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br [3]
[2].
Para mais opções, acesse https://groups.google.com/d/optout [4]
[3].


Links:
------
[1] http://object.name/ [5]
[2] https://groups.google.com/group/lua-br [3]
[3] https://groups.google.com/d/optout [4]
[4] http://lua-users.org/wiki/SplitJoin [2]

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails
dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br [3].
Para mais opções, acesse https://groups.google.com/d/optout [4].

 --
 Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
dos Grupos do Google.
 Para cancelar inscrição nesse grupo e parar de receber e-mails
dele, envie um e-mail para [hidden email].
 Acesse esse grupo em https://groups.google.com/group/lua-br [3].
 Para mais opções, acesse https://groups.google.com/d/optout [4].


Links:
------
[1] http://object.name
[2] http://lua-users.org/wiki/SplitJoin
[3] https://groups.google.com/group/lua-br
[4] https://groups.google.com/d/optout
[5] http://object.name/

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Visite este grupo em https://groups.google.com/group/lua-br.
Para obter mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Crow Craw
In reply to this post by Tomas Guisasola Gorham
Obrigado, irei testar e depois retorno para dizer o que aconteceu!

Em sexta-feira, 6 de janeiro de 2017 16:39:46 UTC-2, tomas escreveu:
Olá

É difícil entender exatamente como te ajudar porque o teu exemplo tem um
monte de detalhes particulares da sua aplicação, como essas funções
"getObjects" ou "takeObject".  Eu não sei o que elas fazem, então posso
dizer uma grande besteira daqui para a frente.  Mas vou tentar te ajudar
de forma mais direta.

Eu não sei o que é que você quer dizer com "pegar um objeto".  Olhando o
pequeno trecho de código que você mandou, não dá para ter certeza o que
é "pegar um objeto", mas parece que é chamar a função self.takeObject
passando uma tabela como { index = X }, onde este X é o index do objeto
que você quer pegar.

Se a minha suposição estiver correta, não tem como pegar mais de um
objeto, pois só dá para indicar um valor na chave index da tabela
params.  Se houver uma forma de fazer isso, você vai ter que adaptar.

Como você disse que queria fazer um loop "pegando os objetos com cada um
dos nomes", estou supondo (de novo) que o corpo do "if" mais interno é
que vai se repetir neste loop, como em:

function getThing(o, color)
   local names = getNotes()
   local saveObjects = self.getObjects()
   local params = {
     position = {0, 0, 0},
     rotation = {0, 180, 0},
   }
   for i, object in ipairs(saveObjects) do
     for name in names:gmatch"%s*([^,]+)%s*" do
       if <a href="http://object.name" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;">object.name[1][1] == name then
         params.index = object.index
         self.takeObject(params)
       end
     end
   end
end

Abraço,
Tomás

On 2017-01-06 15:04, Crow Craw wrote:

> Usei seu código e mesmo assim continuou na mesma. Eu gravei um vídeo
> mostrando como está acontecendo, espero que ajude. (no video mostro
> que consigo pegar os objetos pelo nome individualmente, mas com mais
> de um nome na string, ela interpreta como se fosse apenas um grande
> nome)  <a href="https://youtu.be/WOnEAt-5GaA" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://youtu.be/WOnEAt-5GaA&#39;;return true;" onclick="this.href=&#39;https://youtu.be/WOnEAt-5GaA&#39;;return true;">https://youtu.be/WOnEAt-5GaA
>
> Em sexta-feira, 6 de janeiro de 2017 03:52:25 UTC-2, Diego Nascimento
> escreveu:
>
>> ele está executando para 1 argumento?? executa corretamente?/
>>
>> você deveria iterar a lista de objetos para cada uma dos nomes..
>> mas se tua função estiver funcionando bem, vc pode criar uma nova
>> e ela chamar essa aih para cada nome de variável, assim, mais ou
>> menos:
>>
>> -- funcao que recebe a lista de nomes e retorna uma tabela com esses
>> nomes
>> function getListaNomes(str_names)
>> local lista_nomes = {}
>> for nome in string.gmatch(str_names, "[^, ]+") do
>> table.insert(lista_nomes, nome)
>> end
>> return lista_nomes
>> end
>>
>> function getThing(o, color)
>> local name = getNotes()
>> local saveObjects = self.getObjects()
>> local params = {}
>> params.position = {0, 0, 0}
>> params.rotation = {0, 180, 0}
>> for i, object in ipairs(saveObjects) do
>> if <a href="http://object.name" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;">object.name [1] == name then
>> params.index = object.index
>> local foundObject = self.takeObject(params)
>> else
>> end
>> end
>> end
>>
>> -- aqui, itera sobre list_color, com a função que vc já tem, a
>> getThing
>> -- aih usa o parametro 'o' e a lista de nomes ao invés de um só
>> nome
>> function getAllThing(o, list_color)
>> for _, color in ipairs(getListaNomes(list_color)) do
>> getThing(o, color)
>> end
>> end
>>
>> Em 5 de janeiro de 2017 21:31, Crow Craw <[hidden email]>
>> escreveu:
>>
>> Ele de fato separa os códigos no print, porém ele não executa o
>> comando que eu quero (takeObject), que é pegar objeto de dentro
>> contêiner
>>
>> Em quinta-feira, 5 de janeiro de 2017 07:21:00 UTC-2, tomas
>> escreveu:Se o objetivo for apenas identificar os termos (sem a
>> necessidade de
>> guardá-los separadamente), pode-se usar string.gmatch():
>>
>> s = "palavra, mais de uma palavra, outro termo"
>> for termo in string.gmatch (s, "[^,]+") do
>> print (termo)
>> end
>>
>> Atenção com os espaços! Talvez seja melhor usar "%s*([^,]+)%s*"
>> para
>> ignorar os espaços em torno dos termos...
>>
>> Abraços,
>> Tomás
>>
>> On 2017-01-05 06:53, Diogo Mildenberger wrote:
>>> Uma sugestão é dividir a string em pedaços (split), usando ","
>> como
>>> separador, veja <a href="http://lua-users.org/wiki/SplitJoin" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;">http://lua-users.org/wiki/SplitJoin [2] [4], ou
>> "lua
>>> split" no Google
>>>
>>
>>> Em 4 de jan de 2017 22:47, "Crow Craw" <[hidden email]>
>> escreveu:
>>>
>>>> Olá, sou iniciante, e estou tentando fazer um código para rodar
>> em
>>>> programa que tem um ambiente 3d.
>>>> O código está assim:
>>>>
>>>> function getThing(o, color)
>>>> local name = getNotes()
>>>> local saveObjects = self.getObjects()
>>>> local params = {}
>>>> params.position = {0, 0, 0}
>>>> params.rotation = {0, 180, 0}
>>>> for i, object in ipairs(saveObjects) do
>>>> if <a href="http://object.name" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;">object.name [1] [1] == name then
>>>> params.index = object.index
>>>> local foundObject = self.takeObject(params)
>>>> else
>>>> end
>>>> end
>>>> end
>>>>
>>>> O que acontece: quando a função é executada ele irá pegar um
>>>> objeto de dentro do contêiner (bag). Para ele saber qual objeto
>>>> pegar, ele procura pela string Notes.
>>>> Ou seja, eu escrevo por exemplo "nome" no espaço notes do
>> ambiente
>>>> e ele pega um objeto que tenha o nome "nome" de dentro do
>> contêiner
>>>> e coloca no locar certo. Até aí funciona tudo certinho. O
>> problema
>>>> é: Se eu escrever nesse local "nome1, nome2, nome3, ..." ele vai
>>
>>>> procurar apenas um objeto com essa string inteira como nome. Eu
>>>> queria que ele, ao chegar na primeira " , " executasse, e depois
>>>> fizesse um loop e continuaria a partir de onde tinha parado.
>> Pegando
>>>> o objeto com nomes "nome1" "nome2" etc... e não apenas um objeto
>>
>>>> com o nome da string inteira. Só que como eu disse lá em cima,
>> sou
>>>> iniciante e não sei como fazer para partir essa string e fazer
>> ele
>>>> reconhecer apenas os pedaços e depois seguir executando até
>>>> terminar tudo. Alguém sabe como me ajudar?
>>>>
>>>> --
>>>> Você recebeu essa mensagem porque está inscrito no grupo "Lua
>> BR"
>>>> dos Grupos do Google.
>>>> Para cancelar inscrição nesse grupo e parar de receber e-mails
>>>> dele, envie um e-mail para [hidden email].
>>>> Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br [3]
>> [2].
>>>> Para mais opções, acesse <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout [4]
>> [3].
>>>
>>> --
>>> Você recebeu essa mensagem porque está inscrito no grupo "Lua
>> BR"
>>> dos Grupos do Google.
>>> Para cancelar inscrição nesse grupo e parar de receber e-mails
>>> dele, envie um e-mail para [hidden email].
>>> Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br [3]
>> [2].
>>> Para mais opções, acesse <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout [4]
>> [3].
>>>
>>>
>>> Links:
>>> ------
>>> [1] <a href="http://object.name/" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHD2YmZTQa5cquilBnGv13BT_B93g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHD2YmZTQa5cquilBnGv13BT_B93g&#39;;return true;">http://object.name/ [5]
>>> [2] <a href="https://groups.google.com/group/lua-br" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br [3]
>>> [3] <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout [4]
>>> [4] <a href="http://lua-users.org/wiki/SplitJoin" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;">http://lua-users.org/wiki/SplitJoin [2]
>>
>> --
>> Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
>> dos Grupos do Google.
>> Para cancelar inscrição nesse grupo e parar de receber e-mails
>> dele, envie um e-mail para [hidden email].
>> Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br [3].
>> Para mais opções, acesse <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout [4].
>
>  --
>  Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
> dos Grupos do Google.
>  Para cancelar inscrição nesse grupo e parar de receber e-mails
> dele, envie um e-mail para <a href="javascript:" target="_blank" gdf-obfuscated-mailto="uRn-DSB0FAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">lua-br+un...@googlegroups.com.
>  Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br [3].
>  Para mais opções, acesse <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout [4].
>
>
> Links:
> ------
> [1] <a href="http://object.name" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;">http://object.name
> [2] <a href="http://lua-users.org/wiki/SplitJoin" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;">http://lua-users.org/wiki/SplitJoin
> [3] <a href="https://groups.google.com/group/lua-br" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br
> [4] <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout
> [5] <a href="http://object.name/" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHD2YmZTQa5cquilBnGv13BT_B93g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHD2YmZTQa5cquilBnGv13BT_B93g&#39;;return true;">http://object.name/

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Crow Craw
In reply to this post by Diego Nascimento
Tabletop Simulator


Em sexta-feira, 6 de janeiro de 2017 16:50:52 UTC-2, Diego Nascimento escreveu:
que ambiente é esse? é game maker? qual o nome?

Em 6 de janeiro de 2017 16:39, tomas <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="UVafPrt0FAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">to...@...> escreveu:
Olá

É difícil entender exatamente como te ajudar porque o teu exemplo tem um monte de detalhes particulares da sua aplicação, como essas funções "getObjects" ou "takeObject".  Eu não sei o que elas fazem, então posso dizer uma grande besteira daqui para a frente.  Mas vou tentar te ajudar de forma mais direta.

Eu não sei o que é que você quer dizer com "pegar um objeto".  Olhando o pequeno trecho de código que você mandou, não dá para ter certeza o que é "pegar um objeto", mas parece que é chamar a função self.takeObject passando uma tabela como { index = X }, onde este X é o index do objeto que você quer pegar.

Se a minha suposição estiver correta, não tem como pegar mais de um objeto, pois só dá para indicar um valor na chave index da tabela params.  Se houver uma forma de fazer isso, você vai ter que adaptar.

Como você disse que queria fazer um loop "pegando os objetos com cada um dos nomes", estou supondo (de novo) que o corpo do "if" mais interno é que vai se repetir neste loop, como em:

function getThing(o, color)
  local names = getNotes()
  local saveObjects = self.getObjects()
  local params = {
    position = {0, 0, 0},
    rotation = {0, 180, 0},
  }
  for i, object in ipairs(saveObjects) do
    for name in names:gmatch"%s*([^,]+)%s*" do
      if <a href="http://object.name" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;">object.name[1][1] == name then
        params.index = object.index
        self.takeObject(params)
      end
    end
  end
end

Abraço,
Tomás


On 2017-01-06 15:04, Crow Craw wrote:
Usei seu código e mesmo assim continuou na mesma. Eu gravei um vídeo
mostrando como está acontecendo, espero que ajude. (no video mostro
que consigo pegar os objetos pelo nome individualmente, mas com mais
de um nome na string, ela interpreta como se fosse apenas um grande
nome)  <a href="https://youtu.be/WOnEAt-5GaA" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://youtu.be/WOnEAt-5GaA&#39;;return true;" onclick="this.href=&#39;https://youtu.be/WOnEAt-5GaA&#39;;return true;">https://youtu.be/WOnEAt-5GaA

Em sexta-feira, 6 de janeiro de 2017 03:52:25 UTC-2, Diego Nascimento
escreveu:

ele está executando para 1 argumento?? executa corretamente?/

você deveria iterar a lista de objetos para cada uma dos nomes..
mas se tua função estiver funcionando bem, vc pode criar uma nova
e ela chamar essa aih para cada nome de variável, assim, mais ou
menos:

-- funcao que recebe a lista de nomes e retorna uma tabela com esses
nomes
function getListaNomes(str_names)
local lista_nomes = {}
for nome in string.gmatch(str_names, "[^, ]+") do
table.insert(lista_nomes, nome)
end
return lista_nomes
end

function getThing(o, color)
local name = getNotes()
local saveObjects = self.getObjects()
local params = {}
params.position = {0, 0, 0}
params.rotation = {0, 180, 0}
for i, object in ipairs(saveObjects) do
if <a href="http://object.name" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;">object.name [1] == name then
params.index = object.index
local foundObject = self.takeObject(params)
else
end
end
end

-- aqui, itera sobre list_color, com a função que vc já tem, a
getThing
-- aih usa o parametro 'o' e a lista de nomes ao invés de um só
nome
function getAllThing(o, list_color)
for _, color in ipairs(getListaNomes(list_color)) do
getThing(o, color)
end
end

Em 5 de janeiro de 2017 21:31, Crow Craw <[hidden email]>
escreveu:

Ele de fato separa os códigos no print, porém ele não executa o
comando que eu quero (takeObject), que é pegar objeto de dentro
contêiner

Em quinta-feira, 5 de janeiro de 2017 07:21:00 UTC-2, tomas
escreveu:Se o objetivo for apenas identificar os termos (sem a
necessidade de
guardá-los separadamente), pode-se usar string.gmatch():

s = "palavra, mais de uma palavra, outro termo"
for termo in string.gmatch (s, "[^,]+") do
print (termo)
end

Atenção com os espaços! Talvez seja melhor usar "%s*([^,]+)%s*"
para
ignorar os espaços em torno dos termos...

Abraços,
Tomás

On 2017-01-05 06:53, Diogo Mildenberger wrote:
Uma sugestão é dividir a string em pedaços (split), usando ","
como
separador, veja <a href="http://lua-users.org/wiki/SplitJoin" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;">http://lua-users.org/wiki/SplitJoin [2] [4], ou
"lua
split" no Google


Em 4 de jan de 2017 22:47, "Crow Craw" <[hidden email]>
escreveu:

Olá, sou iniciante, e estou tentando fazer um código para rodar
em
programa que tem um ambiente 3d.
O código está assim:

function getThing(o, color)
local name = getNotes()
local saveObjects = self.getObjects()
local params = {}
params.position = {0, 0, 0}
params.rotation = {0, 180, 0}
for i, object in ipairs(saveObjects) do
if <a href="http://object.name" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;">object.name [1] [1] == name then

params.index = object.index
local foundObject = self.takeObject(params)
else
end
end
end

O que acontece: quando a função é executada ele irá pegar um
objeto de dentro do contêiner (bag). Para ele saber qual objeto
pegar, ele procura pela string Notes.
Ou seja, eu escrevo por exemplo "nome" no espaço notes do
ambiente
e ele pega um objeto que tenha o nome "nome" de dentro do
contêiner
e coloca no locar certo. Até aí funciona tudo certinho. O
problema
é: Se eu escrever nesse local "nome1, nome2, nome3, ..." ele vai

procurar apenas um objeto com essa string inteira como nome. Eu
queria que ele, ao chegar na primeira " , " executasse, e depois
fizesse um loop e continuaria a partir de onde tinha parado.
Pegando
o objeto com nomes "nome1" "nome2" etc... e não apenas um objeto

com o nome da string inteira. Só que como eu disse lá em cima,
sou
iniciante e não sei como fazer para partir essa string e fazer
ele
reconhecer apenas os pedaços e depois seguir executando até
terminar tudo. Alguém sabe como me ajudar?

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua
BR"
dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails
dele, envie um e-mail para [hidden email].
Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br [3]
[2].
Para mais opções, acesse <a href="https://groups.google.com/d/optout" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout [4]
[3].

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua
BR"
dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails
dele, envie um e-mail para [hidden email].
Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br [3]
[2].
Para mais opções, acesse <a href="https://groups.google.com/d/optout" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout [4]
[3].


Links:
------
[1] <a href="http://object.name/" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHD2YmZTQa5cquilBnGv13BT_B93g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHD2YmZTQa5cquilBnGv13BT_B93g&#39;;return true;">http://object.name/ [5]
[2] <a href="https://groups.google.com/group/lua-br" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br [3]
[3] <a href="https://groups.google.com/d/optout" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout [4]
[4] <a href="http://lua-users.org/wiki/SplitJoin" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;">http://lua-users.org/wiki/SplitJoin [2]

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails
dele, envie um e-mail para [hidden email].
Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br [3].
Para mais opções, acesse <a href="https://groups.google.com/d/optout" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout [4].

 --
 Você recebeu essa mensagem porque está inscrito no grupo "Lua BR"
dos Grupos do Google.
 Para cancelar inscrição nesse grupo e parar de receber e-mails
dele, envie um e-mail para <a href="javascript:" target="_blank" gdf-obfuscated-mailto="UVafPrt0FAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">lua-br+un...@googlegroups.com.
 Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br [3].
 Para mais opções, acesse <a href="https://groups.google.com/d/optout" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout [4].


Links:
------
[1] <a href="http://object.name" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGMS_Nydm4ouJt5CP7UoTTKhbG15g&#39;;return true;">http://object.name
[2] <a href="http://lua-users.org/wiki/SplitJoin" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Flua-users.org%2Fwiki%2FSplitJoin\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF-H3DUTVLGtk5V1dCdrfEL6haOCg&#39;;return true;">http://lua-users.org/wiki/SplitJoin
[3] <a href="https://groups.google.com/group/lua-br" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br
[4] <a href="https://groups.google.com/d/optout" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout
[5] <a href="http://object.name/" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHD2YmZTQa5cquilBnGv13BT_B93g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHD2YmZTQa5cquilBnGv13BT_B93g&#39;;return true;">http://object.name/

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para <a href="javascript:" target="_blank" gdf-obfuscated-mailto="UVafPrt0FAAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">lua-br+un...@googlegroups.com.
Visite este grupo em <a href="https://groups.google.com/group/lua-br" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br.
Para obter mais opções, acesse <a href="https://groups.google.com/d/optout" rel="nofollow" target="_blank" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Crow Craw
In reply to this post by Crow Craw
Bom, como eu consigo tirar de 1 em 1, será que não é possível fazer dessa forma: (não sei como explicar tecnicamente então vou falar por etapas da forma que eu pensei que pode funcionar)

Primeiro temos a string com todos os nomes.
Essa string é divida, separando nome por nome.
Agora cada nome é colocado no lugar da string original, executando o comando que eu ja tenho, o objeto vai ser encontrado.
agora a string é substituída pelo segundo nome, executa o comando, pega o objeto...
e continua assim até todos os nomes acabarem
Não seria possível isso? 

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Diego Nascimento
sim seria, mas precisamos ver teu código, saber aonde essa string tem que ser inserida.. veja, te passei um código que eu imaginei, mas não nada haver com o que vc precisa, deu até vergonha depois, rsrs.. cola a função getNotes() aqui.. essa é a que retorna o nome do objeto que vc quer pegar???   joga mais códigos aqui para tentarmos te ajudar.

Em 9 de janeiro de 2017 16:42, Crow Craw <[hidden email]> escreveu:
Bom, como eu consigo tirar de 1 em 1, será que não é possível fazer dessa forma: (não sei como explicar tecnicamente então vou falar por etapas da forma que eu pensei que pode funcionar)

Primeiro temos a string com todos os nomes.
Essa string é divida, separando nome por nome.
Agora cada nome é colocado no lugar da string original, executando o comando que eu ja tenho, o objeto vai ser encontrado.
agora a string é substituída pelo segundo nome, executa o comando, pega o objeto...
e continua assim até todos os nomes acabarem
Não seria possível isso? 

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Crow Craw
function buttonpress()
        String = getNotes()      --getNotes é o lugar em que a pessoa escreve todos os nomes, separados por uma "," dai isso coloca todos os nomes na variavel string
        String = 'nometeste'     --aqui eu substituo todos esses nomes por "nometeste"
        setNotes(String)          --e aqui eu modifiquei o lugar original que estariam os nomes para "nometeste"
end

eu escrevi essa mini função só para explicar mesmo, caso um desses comandos sejam do próprio programa. ok, seguindo.

agora, olhando meu comando original:

function getThing(o, color)
  local name = getNotes()
  local saveObjects = self.getObjects()   --apesar de não ter certeza, acredito que isso é o que reconhece todos os objetos dentro do contêiner atualmente.
  local params = {}
  params.position = {0, 0, 0}                 --isso é como eles vão estar, posição e rotação depois de serem tirados do contêiner
  params.rotation = {0, 180, 0}
  for i, object in ipairs(saveObjects) do
    if object.name == name then                  -- se o nome do objeto, for igual a variavel nome ( sendo que nome é tudo que o usuario escreveu que é = a getnotes)
      params.index = object.index
      local foundObject = self.takeObject(params)  -- objeto encontrado = pegar objeto ( do contêiner), e ele é colocado nas coordenadas ali de cima.
    else
    end
  end
end

E como eu ja disse, isso acontece bem para apenas 1, funciona.
para mais de 1 não. ja tentei aplicar um loop, e o resultado é: ele ate pega varias coisas, mas em numero e nome aleatórios.
Mas a minha ideia foi:
fazer uma função "mudarnome" por exemplo, em que:
A notes seria assim: "nome_001,nome_002,nome_003,nome_004,nome_005,nome_006,nome_007..."
Adicione toda a string (getNotes) em uma table (creio)
essa table, de alguma forma é dividida em vários pedaços, que são separados originalmente por virgulas
então usaríamos o comando
setNotes(variavel que representa a primeira palavra da table aqui)
agora o notes (getnotes) seria apenas o nome "nome_001"
nisso, faríamos a call pra função getThing ali de cima. E ela iria acontecer normalmente como já acontece.
depois iniciaria um loop da função "mudarnome"
e o que aconteceria:

setNotes(variavel que representa a SEGUNDA palavra da table aqui)
agora o notes (getnotes) seria apenas o nome "nome_002"
nisso, faríamos a call pra função getThing.

setNotes(variavel que representa a TERCEIRA palavra da table aqui)
agora o notes (getnotes) seria apenas o nome "nome_002"
nisso, faríamos a call pra função getThing.

e isso iria acontecer até que todas as palavras da table acabassem. Espero que eu tenha conseguido explicar o que eu acho que seja a melhor forma de fazer isso. talvez colocar meio segundo antes de cada loop começar possa ser uma boa ideia para evitar que o código se atropele. Desculpe se estou causando trabalho ou se eu falei algum termo errado (principalmente o table) estou arressem no começo de aprender lua então erro muito as coisas mais básicas ainda ^^"

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Diego Nascimento
esse  getThing() foi vc que criou neh.. uq vc espera de parâmetro, o que é o "o" e o "color"? pq ele não aparece no corpo da função?

achei a documentação da API.. to vendo o que as funções fazem tbm pela documentação.


Em 9 de janeiro de 2017 17:52, Crow Craw <[hidden email]> escreveu:
function buttonpress()
        String = getNotes()      --getNotes é o lugar em que a pessoa escreve todos os nomes, separados por uma "," dai isso coloca todos os nomes na variavel string
        String = 'nometeste'     --aqui eu substituo todos esses nomes por "nometeste"
        setNotes(String)          --e aqui eu modifiquei o lugar original que estariam os nomes para "nometeste"
end

eu escrevi essa mini função só para explicar mesmo, caso um desses comandos sejam do próprio programa. ok, seguindo.

agora, olhando meu comando original:

function getThing(o, color)
  local name = getNotes()
  local saveObjects = self.getObjects()   --apesar de não ter certeza, acredito que isso é o que reconhece todos os objetos dentro do contêiner atualmente.
  local params = {}
  params.position = {0, 0, 0}                 --isso é como eles vão estar, posição e rotação depois de serem tirados do contêiner
  params.rotation = {0, 180, 0}
  for i, object in ipairs(saveObjects) do
    if object.name == name then                  -- se o nome do objeto, for igual a variavel nome ( sendo que nome é tudo que o usuario escreveu que é = a getnotes)
      params.index = object.index
      local foundObject = self.takeObject(params)  -- objeto encontrado = pegar objeto ( do contêiner), e ele é colocado nas coordenadas ali de cima.
    else
    end
  end
end

E como eu ja disse, isso acontece bem para apenas 1, funciona.
para mais de 1 não. ja tentei aplicar um loop, e o resultado é: ele ate pega varias coisas, mas em numero e nome aleatórios.
Mas a minha ideia foi:
fazer uma função "mudarnome" por exemplo, em que:
A notes seria assim: "nome_001,nome_002,nome_003,nome_004,nome_005,nome_006,nome_007..."
Adicione toda a string (getNotes) em uma table (creio)
essa table, de alguma forma é dividida em vários pedaços, que são separados originalmente por virgulas
então usaríamos o comando
setNotes(variavel que representa a primeira palavra da table aqui)
agora o notes (getnotes) seria apenas o nome "nome_001"
nisso, faríamos a call pra função getThing ali de cima. E ela iria acontecer normalmente como já acontece.
depois iniciaria um loop da função "mudarnome"
e o que aconteceria:

setNotes(variavel que representa a SEGUNDA palavra da table aqui)
agora o notes (getnotes) seria apenas o nome "nome_002"
nisso, faríamos a call pra função getThing.

setNotes(variavel que representa a TERCEIRA palavra da table aqui)
agora o notes (getnotes) seria apenas o nome "nome_002"
nisso, faríamos a call pra função getThing.

e isso iria acontecer até que todas as palavras da table acabassem. Espero que eu tenha conseguido explicar o que eu acho que seja a melhor forma de fazer isso. talvez colocar meio segundo antes de cada loop começar possa ser uma boa ideia para evitar que o código se atropele. Desculpe se estou causando trabalho ou se eu falei algum termo errado (principalmente o table) estou arressem no começo de aprender lua então erro muito as coisas mais básicas ainda ^^"

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Crow Craw
Sim, o getThing é só a função. não faz diferença ele. os parâmetros do lado dele o color, eu não tenho certeza o por que de eles estarem ali, um outro usuário do programa me recomendou coloca-los, no jogo cada pessoa tem uma cor, e pelo que eu entendi esses parâmetros são apenas pra indicar qual jogador que está executando a função, se quem executou foi o jogador azul, vermelho, etc...

Em segunda-feira, 9 de janeiro de 2017 18:33:50 UTC-2, Diego Nascimento escreveu:
esse  getThing() foi vc que criou neh.. uq vc espera de parâmetro, o que é o "o" e o "color"? pq ele não aparece no corpo da função?

achei a documentação da API.. to vendo o que as funções fazem tbm pela documentação.

<a href="http://berserk-games.com/knowledgebase/api/" target="_blank" rel="nofollow" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fberserk-games.com%2Fknowledgebase%2Fapi%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHxBXUVEoKvQxodbPo9n47BfpxDzg&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fberserk-games.com%2Fknowledgebase%2Fapi%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHxBXUVEoKvQxodbPo9n47BfpxDzg&#39;;return true;">http://berserk-games.com/knowledgebase/api/

Em 9 de janeiro de 2017 17:52, Crow Craw <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="FExqSxdmFQAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">cr0w...@...> escreveu:
function buttonpress()
        String = getNotes()      --getNotes é o lugar em que a pessoa escreve todos os nomes, separados por uma "," dai isso coloca todos os nomes na variavel string
        String = 'nometeste'     --aqui eu substituo todos esses nomes por "nometeste"
        setNotes(String)          --e aqui eu modifiquei o lugar original que estariam os nomes para "nometeste"
end

eu escrevi essa mini função só para explicar mesmo, caso um desses comandos sejam do próprio programa. ok, seguindo.

agora, olhando meu comando original:

function getThing(o, color)
  local name = getNotes()
  local saveObjects = self.getObjects()   --apesar de não ter certeza, acredito que isso é o que reconhece todos os objetos dentro do contêiner atualmente.
  local params = {}
  params.position = {0, 0, 0}                 --isso é como eles vão estar, posição e rotação depois de serem tirados do contêiner
  params.rotation = {0, 180, 0}
  for i, object in ipairs(saveObjects) do
    if <a href="http://object.name/" rel="nofollow" target="_blank" onmousedown="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHD2YmZTQa5cquilBnGv13BT_B93g&#39;;return true;" onclick="this.href=&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fobject.name%2F\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNHD2YmZTQa5cquilBnGv13BT_B93g&#39;;return true;">object.name == name then                  -- se o nome do objeto, for igual a variavel nome ( sendo que nome é tudo que o usuario escreveu que é = a getnotes)
      params.index = object.index
      local foundObject = self.takeObject(params)  -- objeto encontrado = pegar objeto ( do contêiner), e ele é colocado nas coordenadas ali de cima.
    else
    end
  end
end

E como eu ja disse, isso acontece bem para apenas 1, funciona.
para mais de 1 não. ja tentei aplicar um loop, e o resultado é: ele ate pega varias coisas, mas em numero e nome aleatórios.
Mas a minha ideia foi:
fazer uma função "mudarnome" por exemplo, em que:
A notes seria assim: "nome_001,nome_002,nome_003,nome_004,nome_005,nome_006,nome_007..."
Adicione toda a string (getNotes) em uma table (creio)
essa table, de alguma forma é dividida em vários pedaços, que são separados originalmente por virgulas
então usaríamos o comando
setNotes(variavel que representa a primeira palavra da table aqui)
agora o notes (getnotes) seria apenas o nome "nome_001"
nisso, faríamos a call pra função getThing ali de cima. E ela iria acontecer normalmente como já acontece.
depois iniciaria um loop da função "mudarnome"
e o que aconteceria:

setNotes(variavel que representa a SEGUNDA palavra da table aqui)
agora o notes (getnotes) seria apenas o nome "nome_002"
nisso, faríamos a call pra função getThing.

setNotes(variavel que representa a TERCEIRA palavra da table aqui)
agora o notes (getnotes) seria apenas o nome "nome_002"
nisso, faríamos a call pra função getThing.

e isso iria acontecer até que todas as palavras da table acabassem. Espero que eu tenha conseguido explicar o que eu acho que seja a melhor forma de fazer isso. talvez colocar meio segundo antes de cada loop começar possa ser uma boa ideia para evitar que o código se atropele. Desculpe se estou causando trabalho ou se eu falei algum termo errado (principalmente o table) estou arressem no começo de aprender lua então erro muito as coisas mais básicas ainda ^^"

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para <a href="javascript:" target="_blank" gdf-obfuscated-mailto="FExqSxdmFQAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">lua-br+un...@googlegroups.com.
Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br.
Para mais opções, acesse <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Crow Craw
mas eu acabei de remover aqueles parâmetros, e não mudou nada. então talvez não sejam necessários mesmo.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Diego Nascimento
então, vc digita no terminal "nome1, nome2, nome3" .. e getNotes() retorna isso, correto?


Em 9 de janeiro de 2017 18:45, Crow Craw <[hidden email]> escreveu:
mas eu acabei de remover aqueles parâmetros, e não mudou nada. então talvez não sejam necessários mesmo.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Crow Craw
exato. getNotes pega tudo que vc escreve nessa área
e setNotes muda tudo que ja está nessa área para o que vc quiser.

Em segunda-feira, 9 de janeiro de 2017 18:48:07 UTC-2, Diego Nascimento escreveu:
então, vc digita no terminal "nome1, nome2, nome3" .. e getNotes() retorna isso, correto?


Em 9 de janeiro de 2017 18:45, Crow Craw <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="VecC495mFQAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">cr0w...@...> escreveu:
mas eu acabei de remover aqueles parâmetros, e não mudou nada. então talvez não sejam necessários mesmo.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para <a href="javascript:" target="_blank" gdf-obfuscated-mailto="VecC495mFQAJ" rel="nofollow" onmousedown="this.href=&#39;javascript:&#39;;return true;" onclick="this.href=&#39;javascript:&#39;;return true;">lua-br+un...@googlegroups.com.
Acesse esse grupo em <a href="https://groups.google.com/group/lua-br" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/group/lua-br&#39;;return true;">https://groups.google.com/group/lua-br.
Para mais opções, acesse <a href="https://groups.google.com/d/optout" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;" onclick="this.href=&#39;https://groups.google.com/d/optout&#39;;return true;">https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Ajuda com String e Loop

Diego Nascimento
coloca um print nessa área:
------------------------------------------------------
for i, object in ipairs(saveObjects) do
    if object.name == name then

------------------------------------------------------
deixa assim

------------------------------------------------------
for i, object in ipairs(saveObjects) do
    print(object.name)
    if object.name == name then
------------------------------------------------------

vê se imprime os nomes, se está imprimindo corretamente.

Em 9 de janeiro de 2017 18:52, Crow Craw <[hidden email]> escreveu:
exato. getNotes pega tudo que vc escreve nessa área
e setNotes muda tudo que ja está nessa área para o que vc quiser.

Em segunda-feira, 9 de janeiro de 2017 18:48:07 UTC-2, Diego Nascimento escreveu:
então, vc digita no terminal "nome1, nome2, nome3" .. e getNotes() retorna isso, correto?


Em 9 de janeiro de 2017 18:45, Crow Craw <[hidden email]> escreveu:
mas eu acabei de remover aqueles parâmetros, e não mudou nada. então talvez não sejam necessários mesmo.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.

--
Você recebeu essa mensagem porque está inscrito no grupo "Lua BR" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para [hidden email].
Acesse esse grupo em https://groups.google.com/group/lua-br.
Para mais opções, acesse https://groups.google.com/d/optout.
123