Como fazer um Inventário no Roblox

No Roblox, ter um sistema de inventário é essencial para qualquer jogo onde o jogador coleta itens ao longo da jornada. Pensando nisso, trouxemos um tutorial especial que ensina como criar um inventário com menu scroll para seu jogo. Se você já imaginou como é dar aos jogadores uma forma prática e organizada de verem tudo o que coletaram, este tutorial é para você!

O Que Você Vai Aprender

No vídeo, Fernanda, do canal Programação for Kids, apresenta de forma prática e divertida o processo para montar um sistema de inventário. Este sistema permite que os itens coletados apareçam em um menu deslizante, oferecendo uma navegação super intuitiva. Ao longo do tutorial, você vai aprender a:

  • Criar um sistema de inventário que guarda todos os itens coletados;
  • Programar um menu scroll, onde o jogador pode navegar e visualizar cada item;
  • Fazer com que o inventário atualize automaticamente à medida que os itens são adquiridos no jogo.

Por Que Um Sistema de Inventário é Importante?

Ter um inventário bem estruturado melhora a experiência do jogador e facilita o acesso aos itens conquistados. Imagine que o jogador precise de um item específico, mas tem que percorrer uma lista desorganizada de objetos. Com um menu scroll, a navegação fica muito mais prática, e cada item pode ser acessado em poucos cliques.

Assista ao Tutorial Completo

Se você quer implementar um sistema de inventário incrível no seu jogo, assista ao vídeo e siga o passo a passo para aprender tudo! Basta clicar no link abaixo:

Códigos para o Sistema de Inventário Utilizados em Aula

Script 1

				
					local ReplicateStorage = game:GetService("ReplicatedStorage")
local adicionaItem = ReplicateStorage:FindFirstChild("AdicionaItem")

local playerData={}

local ScreenGui = script.Parent
local ScroolingFrame= ScreenGui.ScrollingFrame
local HamburguerTxt= ScroolingFrame.HamburguerImage.HamburguerTxt
local ChickenTxt = ScroolingFrame.ChickenImage.ChickenTxt
local MadeiraTxt= ScroolingFrame.MadeiraImage.MadeiraTxt
local PedraTxt= ScroolingFrame.PedraImage.PedraTxt
MadeiraTxt.Text = 0
ChickenTxt.Text = 0
HamburguerTxt.Text= 0
PedraTxt.Text = 0
local function atualizaGui(data)
	print('chamou o fireclient')
	print(data)
	MadeiraTxt.Text = data["madeira"]
	ChickenTxt.Text = data["chicken"]
	HamburguerTxt.Text= data["hamburguer"]
	PedraTxt.Text = data["pedra"]
end
	




adicionaItem.OnClientEvent:Connect(atualizaGui)
				
			

Script 2

				
					local ReplicateStorage = game:GetService("ReplicatedStorage")
local adicionaItem = ReplicateStorage:FindFirstChild("AdicionaItem")
local playerData={}

local itens = game.Workspace.Itens:GetChildren()
local debounces = {} 
local function inicializaDadosJogador(player)
	playerData[player.UserId]={
		nome= player.Name,
		chicken=0,
		madeira=0,
		pedra=0,
		hamburguer=0
	}
	print(playerData)
end

local function atualizaDadosDoJogador(player, itemName)
	local data = playerData[player.UserId]
	if data and data[itemName] ~= nil then
		data[itemName] = data[itemName] + 1
		print("Atualizado:", itemName, "=", data[itemName])
		adicionaItem:FireClient(player, playerData[player.UserId])
	else
		print("Item", itemName, "não existe no inventário.")
	end
end

for key, item in ipairs(itens) do
	
	item.Touched:Connect(function(hit)
		local character = hit.Parent
		local player= game.Players:GetPlayerFromCharacter(character)
		if character and player and not debounces[item] then
			debounces[item]=true
			print(player)
			print(playerData[player.UserId])
			print(item.Name)
			atualizaDadosDoJogador(player, item.Name)
			item:Destroy()
			wait(1)
			debounces[item]=false
			--
			print(playerData)
		end
		
	end)
	
end


game.Players.PlayerAdded:Connect(inicializaDadosJogador)
				
			

Aprender a criar um inventário no Roblox pode transformar o seu jogo e impressionar seus amigos! Se você está pronto para adicionar uma funcionalidade prática e divertida, siga o tutorial e dê o próximo passo na sua jornada de programação!

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *