ber Posted August 9, 2020 Share Posted August 9, 2020 Fiz um sistema de inventário e os itens estão no formato de tabela armazenados através de um elementData no jogador, a tabela tem apenas duas colunas, item e quantidade. Queria saber como faço para alterar a quantidade de um determinado item desta tabela. Link to comment
Other Languages Moderators androksi Posted August 9, 2020 Other Languages Moderators Share Posted August 9, 2020 O recomendado não é utilizar elementData para isso, uma tabela seria suficiente. Mas vamos lá. Para editar uma tabela que está dentro de uma elementData, você terá de obter essa tabela, editá-la e adicionar de novo ao jogador. (pior performance possível hauauhauhau) addCommandHandler("add", function(player) setElementData(player, "player.items", {name = "Vibrador Neutro", amount = 3}) end) addCommandHandler("edit", function(player) -- Digamos que eu queira editar o item Vibrador Neutro local handleItem = "Vibrador Neutro" local playerItems = getElementData(player, "player.items") if playerItems then -- Encontrar a index do item local index for i = 1, #playerItems do if playerItems[i].name == handleItem then index = {i, tonumber(playerItems[i].amount)} break end end -- Agora que encontramos o índice, vamos editar o valor. O nome continuará igual, e o valor terá aumentado mais 1. local editItem = {name = "Vibrador Neutro", amount = index[2] + 1} -- Editamos dentro da tabela table.remove(playerItems, index[1]) table.insert(playerItems, index[1], editItem) -- Salvamos novamente a elementData no jogador setElementData(player, "player.items", playerItems) end end) Link to comment
ber Posted August 9, 2020 Author Share Posted August 9, 2020 Aaah aí é complicado, achei que dava pra fazer essa alteração meio que "dentro" do elementData, mas se tiver que buscar, alterar e salvar novamente não vai adiantar muita coisa. Dá pra utilizar a tabela sozinha então? Mas como é um sistema de inventário eu preciso dela nos 2 sides, e vi em alguns tópicos gringos que triggerClientEvent é igual ou até mais "pesado" que um elementData... Link to comment
Other Languages Moderators androksi Posted August 9, 2020 Other Languages Moderators Share Posted August 9, 2020 Tudo depende de como você realiza as tarefas de sincronização dentro do código. Concordo que "tem hora pra tudo", mas tabelas são mais eficientes. E também, pra falar a verdade, a diferença é mínima. Prefiro ter o código mais organizado com tabelas e criar a sincronização manual, através dos triggers, do que utilizar elementData. Sim, você precisa ter a tabela no client-side e server-side, é aí que entra a parte de sincronizar tudo, basta usar a lógica de como as coisas devem ser feitas. 1 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