Sistema de loja

Atenção!!! Não apenas copie o código sem ler as explicações. Elas são necessárias tanto para entender o que você está fazendo como também para saber se está sendo colocado corretamente!

Nesse momento é interessante começarmos a ter alguma ideia de como nosso jogo vai ser: Clicker ou Idle? Os dois? O jogador melhora as construções que tem ou simplesmente compra melhores (ou mais das mesmas)? E o visual, como vai ser? Tem outros jogos do gênero de inspiração?

Independente disso, muito provavelmente seu jogo vai ter alguma forma de gastar os pontos acumulados pelos jogador, e para isso precisamos de um sistema de loja

Por agora faremos uma marcação simples em tela para depois animar e estilizar.


Da mesma forma que criamos a visualização de pontos na primeira página dessa sessão, vamos para StarterGui e criar um novo ScreenGui. Para evitar futuros problemas com o código (além de deixar mais organizado), renomeie para menuLoja.

Pasted image 20251003130804.png|300

Para os botões desse menu temos duas opções:

Para o atual exemplo vou utilizar o TextButton, e vou criar apenas um por agora. Também vou renomeá-lo para "item1" de forma que seja bem mais intuitivo de conectá-lo a códigos futuros. Dentro desse botão vou adicionar um LocalScript:

Pasted image 20251003131249.png|300


Dentro do LocalScript eu adicionei o seguinte bloco de códigos:

IMPORTANTE: o código precisa ser adaptado para o nome de algumas partes no seu jogo, então siga as instruções que estarão logo abaixo dele.

local melhorias = workspace:WaitForChild("Melhorias")
local melhoria1 = melhorias:WaitForChild("Item 1 ponto")
local botao = script.Parent
local gui = botao.Parent
local playerGui = gui.Parent
local pontosGui = playerGui:WaitForChild("ScreenGui")
local pontos = pontosGui:WaitForChild("TextLabel"):WaitForChild("Pontos")
print(melhoria1)

script.Parent.Activated:Connect(function(hit)
	
	if pontos.Value < 20  then
		print("Você não tem pontos suficientes")
	else
		pontos.Value -= 20
		local clone = melhoria1:Clone();
		clone.Parent = workspace
		clone.Position = Vector3.new(0, 5, 0)
	end
end)

  1. Organize todos os itens que podem ser comprados em uma pasta. Renomeie essa pasta (no meu caso, eu a nomeei como Melhorias). Na linha 1 do código mude o nome que está entre aspas para o que você colocou na sua pasta.

Pasted image 20251003131726.png|300

  1. Tenha certeza que deu um nome diferente para cada item, e mude o nome que está entre aspas na segunda linha para o nome que você colocou nesse item. No meu caso renomeei para Item 1 ponto.

local melhoria1 = melhorias:FindFirstChild("Item 1 ponto")

  1. Teste!

Do modo como está escrito o código só conseguiremos comprar a primeira melhoria gastando 20 pontos, e a melhoria vai aparecer no ponto (0,0,0) do nosso mapa (ou seja, o item vai aparecer bem no centro da área do jogo). Em breve estarei atualizando essa página ensinando como mudar o local de spawn do clone.