Sistema de pontos básico

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!


Para nosso jogo idle queremos ter alguma forma de guardar a pontuação (ou dinheiro, sementes, cookies, etc), já que é a parte principal para o funcionamento do jogo.

Na pasta StarterGui vamos criar um elemento de tela que vai salvar a pontuação atual do nosso jogador. Nela, adicione um ScreenGui, e dentro dele um TextLabel. Dentro do TextLabel, vamos adicionar dois elementos: um IntValue que renomearemos para "Pontos" e um LocalScript.

Pasted image 20250910161920.png

No LocalScript, adicione o seguinte trecho de código:

local texto = script.Parent
local pontos = texto:FindFirstChild("Pontos")

print(pontos)

while true do
	texto.Text = pontos.Value
	wait(0.01)
end

Agora precisamos de alguma forma de ganhar (ou perder) pontos.

Crie uma parte no seu mundo para servir como um objeto de teste. Vamos fazer com que, ao aproximar dele, aparecerá uma mensagem na tela pedindo para interagir. Interagindo com ela, você obtém um ponto.

Dentro da parte adicione um ProximityPrompt e, dentro desse, um Script.

Pasted image 20250910100632.png

Coloque o bloco abaixo dentro do Script:

local players = game:GetService("Players")


script.Parent.Triggered:Connect(function(jogador)
	local playerGui = jogador.PlayerGui
	local screenGui = playerGui:WaitForChild("ScreenGui")
	local textLabel = screenGui:WaitForChild("TextLabel")
	local pontos = textLabel:FindFirstChild("Pontos")
	pontos.Value = pontos.Value + 1
	textLabel.Text = pontos.Value
	
	
end)

Desafio 1: Crie uma segunda parte que gere 5 pontos ao invés de 1.


Objetivo geral do código

Ambos os blocos de código dessa página trabalham em conjunto mas, em ordem, eles fazem a seguinte função:

  1. Cria um sistema de pontuação.
  2. Aumenta a pontuação do jogador ao interagir com o bloco

Explicação passo a passo do código 1

local texto = script.Parent

local pontos = texto:FindFirstChild("Pontos")

print(pontos)

while true do
	texto.Text = pontos.Value
	wait(0.01)
end

Explicação passo a passo do código 2

local players = game:GetService("Players")
local prompt = script.Parent
local part = prompt.Parent

script.Parent.Triggered:Connect(function(jogador)

local playerGui = jogador.PlayerGui
local screenGui = playerGui:WaitForChild("ScreenGui")
local textLabel = screenGui:WaitForChild("TextLabel")

local pontos = textLabel:FindFirstChild("Pontos")
pontos.Value = pontos.Value + 1