GE
dúvida

Não remove item do array

Por Geraldoida, 22 de abr. de 2014 em Scripts

array
item
resolvido
10
1.4k
GeraldoidaG
22 de abril de 2014 às 15:37

Alô povo tô eu aí de novo com outra dúvida. Espero que possam me responder, to fazendo um código de npc aqui , e parte dele taí :



if msgcontains(msg, 'yes') then
local array = {11454,12415,6543}
local var = array[math.random(1,#array)]
doPlayerAddItem(cid,var,1)
table.remove(array,var)
addEvent(table.insert,60000,array,var)



O que eu quero que isso faça , é que ao player falar 'yes' , math random sorteie 1 numero dos que estão dentro do array, e assim o table.remove retirar esse numero sorteado do array, e por último, depois de 1 minuto o addEvent execute o table.insert e adicione o item no array novamente. O meu problema está sendo que o table.remove não está retirando o numero da tabela, quando eu falo yes 2 ou mais vezes , o mesmo item está sendo sorteado mais de uma vez em menos de 1 minuto. Gostaria que vcs criticassem e me ajudassem a concertar esse erro. Valeu galera !

Editado Abril 22 por Geraldoida

SlicerS
22 de abril de 2014 às 15:43

joga a array do pro começo do script...

GeraldoidaG
22 de abril de 2014 às 17:28

como é que é slicer ?

SkymagnumS
22 de abril de 2014 às 17:34
Melhor resposta

Geraldoida, em 22 Abr 2014 - 17:28, disse:

como é que é slicer ?

O table remove funciona por posição.
local array = {2, 2160, 2159, 9323, 3, 4, 5, 6}table.remove(array, 2)print(table.concat(array, " "))
Assim printando:
2 2159 9323 3 4 5 6
Usa isso aqui:

local array = {2160, 2159, 9323}

    local rand = array[math.random(#array)]
    print(rand)

    for k, v in ipairs(array) then
        if(v == rand) then
            table.remove(array, k)
        end
    end

Editado Abril 22 por Skymagnum

SlicerS
22 de abril de 2014 às 18:19

/\ ui como q n reparei nisso? o.O ty kk'

GeraldoidaG
22 de abril de 2014 às 18:30

sky , muito obrigado cara. Mas n sei se vc sabe eu sou scripter iniciante, e teve uma vez que tentei aprender 'for k, v in ipairs(table)' mas tava muito dificil e deixei para aprender mais tarde. Agora que vc postou o codigo tem como vc me explicar o que vc fez ali ? ?De todo jeito fico muito agradecido a voce e ao slicer. Valeu ! Rep + pros 2

SkymagnumS
22 de abril de 2014 às 19:07

sky , muito obrigado cara. Mas n sei se vc sabe eu sou scripter iniciante, e teve uma vez que tentei aprender 'for k, v in ipairs(table)' mas tava muito dificil e deixei para aprender mais tarde. Agora que vc postou o codigo tem como vc me explicar o que vc fez ali ? ?De todo jeito fico muito agradecido a voce e ao slicer. Valeu ! Rep + pros 2

Então eu fiz assim, for k, v in ipairs(array), v vai retornar os elementos da tabela e k a posição dele, então eu chequei se o random é igual um elemento da tabela e coloquei pra remover com k(que é a posição dele).

DbkoD
22 de abril de 2014 às 19:17

Então eu fiz assim, for k, v in ipairs(array), v vai retornar os elementos da tabela e k a posição dele, então eu chequei se o random é igual um elemento da tabela e coloquei pra remover com k(que é a posição dele).

Poxa gostei Muito Tbm Estavá Procurando Entender um pouco + disso Agora Pq vir ums tutorial aprendir + só que n sabia direito agora sei 100%

GeraldoidaG
22 de abril de 2014 às 19:50

Simplesmente perfect. Parabéns sky ! Podem fechar !

Editado Abril 22 por Geraldoida

OmegaO
22 de abril de 2014 às 23:47

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