ber Posted December 31, 2020 Share Posted December 31, 2020 (edited) Estou com um grande problema no meu sistema de inventário, não consegui pensar em uma solução até o momento. Preciso fazer um sistema de resetar o inventário do player através de comando ou quando o mesmo morrer, tentei mais ou menos desta maneira: ItensNaoRemoviveis = { ["identidade"] = true, ["porte"] = true, ["cnh"] = true, ["ak47natal"] = true, } inventario = { [1] = {"hamburguer", 2}, [2] = {"suco", 3}, [3] = {"glock", 5}, [4] = {"kit_reparo", 2}, } function teste() for i, v in pairs(inventario) do local item = inventario[i][1] if not ItensNaoRemoviveis[item] then table.remove(i) end end end addCommandHandler("test", teste) Porém, quando usa o table.remove, ele "deleta" o index atual e acaba puxando o próximo pro lugar dele, ai quando o loop roda novamente, ele vai para o próximo index do loop, ignorando o que foi "movido". Usar o bom e velho 'nil' não é viável nessa situação pois se setar o inventario inteiro como nil, o jogador perde itens como documentos, skins de armas compradas na loja, etc. e se setar o inventario[index] como nil, o próximo item que será adicionado através do table.insert irá "pular" este campo vazio e será adicionado depois da última linha "válida" da tabela, e quando chegar no limite de slots do inventario (30), ele não vai mais acrescentar item e vai retornar uma mensagem de erro, mesmo tendo os espaços vazios feitos pelo nil. inventario = nil inventario[i] = nil Edited December 31, 2020 by ber Link to comment
Gw8 Posted January 1, 2021 Share Posted January 1, 2021 ItensNaoRemoviveis = { ["identidade"] = true, ["porte"] = true, ["cnh"] = true, ["ak47natal"] = true, } inventario = { {"hamburguer", 2}, {"suco", 3}, {"glock", 5}, {"kit_reparo", 2} } function teste() for i=#inventario,1,-1 do local item = inventario[i][1] if not ItensNaoRemoviveis[item] then table.remove(inventario,i) end end end addCommandHandler("test", teste) testa ae! 1 Link to comment
Boechat Posted January 6, 2021 Share Posted January 6, 2021 No for, tenta usar "ipairs" no lugar de "pairs". pairs varre a tabela em modo aleatório, ipairs em modo sequencial, não sei se vai funcionar mas vale a pena tentar... Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now