Passe o mouse sobre ServerScriptService, clique em + e adicione um Script. Dê o nome Stats.
Apague a linha que já está lá e cole este código.
Aperte Play. A lista de jogadores mostra Power 0 e Coins 0.
ServerScriptService > Stats
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local stats = Instance.new("Folder")
stats.Name = "leaderstats"
stats.Parent = player
for _, name in ipairs({"Power", "Coins"}) do
local value = Instance.new("IntValue")
value.Name = name
value.Parent = stats
end
local multiplier = Instance.new("IntValue")
multiplier.Name = "Multiplier"
multiplier.Value = 1
multiplier.Parent = player
end)
O que cada parte faz
O loop cria dois valores com um só pedaço de código: Power e Coins.
Multiplier é quanta força um clique dá. Ele começa em 1.
O Multiplier fica no jogador e não no leaderstats, por isso fica escondido da lista de jogadores.
Mais detalhes
Quando você clica em +, digite a palavra Script para achar rápido.
O script abre em uma nova aba. Clique dentro do código, aperte Ctrl+A e depois Ctrl+V para trocar tudo.
Mude o nome do script no Explorer com F2. O nome é só para você. Ele ajuda a achar o script depois.
A lista de jogadores fica no canto superior direito do jogo.
Este passo não funciona para mim
Confira primeiro estas três coisas
O nome de cada Part e de cada Script está exatamente como no guia, com as mesmas letras maiúsculas.
O Script está dentro do objeto certo. Olhe o rótulo que fica acima da caixa de código.
Abra a janela Output pelo menu Window. O texto em vermelho mostra qual script e qual linha têm o problema.
Adicione uma Part. Coloque Size em 6, 8, 6, ligue Anchored e dê o nome Crystal. Escolha uma cor bem forte e coloque Material em Neon.
Passe o mouse sobre Crystal, clique em + e adicione um ClickDetector.
Adicione um Script em Crystal e cole este código.
Aperte Play e clique no cristal. O Power sobe 1 a cada clique.
Crystal > Script
local crystal = script.Parent
local clickDetector = crystal.ClickDetector
clickDetector.MouseClick:Connect(function(player)
local power = player.leaderstats.Power
power.Value += player.Multiplier.Value
end)
O que cada parte faz
Um ClickDetector faz uma Part poder ser clicada. Ele também funciona com toques no celular.
MouseClick diz ao script qual jogador clicou.
O script soma o Multiplier do jogador ao Power, então as melhorias deixam cada clique mais forte.
Mais detalhes
Digite o tamanho no campo Size no Properties e aperte Enter. Depois levante o cristal com a ferramenta Move até ele ficar em cima do chão.
Quando você clica em +, digite ClickDetector para achar. No Explorer ele precisa ficar um passo à direita, embaixo do Crystal.
No jogo, o ponteiro do mouse vira uma mãozinha quando está sobre o cristal.
Você precisa estar perto o bastante. Um ClickDetector funciona a 32 studs de distância ou menos.
Erro comum. Nada acontece ao clicar: o ClickDetector precisa estar diretamente dentro de Crystal, ao lado do script.
Este passo não funciona para mim
Confira primeiro estas três coisas
O nome de cada Part e de cada Script está exatamente como no guia, com as mesmas letras maiúsculas.
O Script está dentro do objeto certo. Olhe o rótulo que fica acima da caixa de código.
Abra a janela Output pelo menu Window. O texto em vermelho mostra qual script e qual linha têm o problema.
Adicione uma Part no chão. Coloque Size em 8, 1, 8, ligue Anchored, deixe ela amarela e dê o nome Sell.
Adicione um Script em Sell e cole este código.
Aperte Play, clique no cristal algumas vezes e ande até o pad. O Power vira Coins.
Sell > Script
local Players = game:GetService("Players")
local pad = script.Parent
pad.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if not player then return end
local stats = player.leaderstats
if stats.Power.Value > 0 then
stats.Coins.Value += stats.Power.Value
stats.Power.Value = 0
end
end)
O que cada parte faz
GetPlayerFromCharacter descobre o jogador que pisou no pad.
O pad soma todo o Power do jogador a Coins e depois volta o Power para 0.
Mais detalhes
Uma plataforma é uma peça plana em que os jogadores andam por cima.
Deixe a plataforma deitada no chão. Se ela ficar alta demais, os jogadores não conseguem subir.
Pisar na plataforma com 0 de poder não faz nada. Isso está certo.
Para testar: clique no cristal 10 vezes, ande até a plataforma e a lista de jogadores mostra Power 0 e Coins 10.
Este passo não funciona para mim
Confira primeiro estas três coisas
O nome de cada Part e de cada Script está exatamente como no guia, com as mesmas letras maiúsculas.
O Script está dentro do objeto certo. Olhe o rótulo que fica acima da caixa de código.
Abra a janela Output pelo menu Window. O texto em vermelho mostra qual script e qual linha têm o problema.
Adicione outra Part no chão. Coloque Size em 8, 1, 8, ligue Anchored, deixe ela azul e dê o nome Upgrade.
Adicione um Script em Upgrade e cole este código.
Aperte Play, ganhe 25 moedas e pise no pad. Agora cada clique dá 2 de força.
Upgrade > Script
local Players = game:GetService("Players")
local pad = script.Parent
local waiting = {}
pad.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if not player or waiting[player] then return end
local price = player.Multiplier.Value * 25
local coins = player.leaderstats.Coins
if coins.Value < price then return end
waiting[player] = true
coins.Value -= price
player.Multiplier.Value += 1
task.wait(1)
waiting[player] = nil
end)
O que cada parte faz
O preço é o Multiplier do jogador vezes 25, então cada melhoria custa mais que a anterior.
A tabela waiting impede que ficar parado no pad por muito tempo compre várias melhorias de uma vez.
Depois da compra, o Multiplier sobe 1.
Mais detalhes
Ponha a plataforma a alguns passos da plataforma de venda, para os jogadores não comprarem sem querer.
A primeira melhoria custa 25 moedas. Depois dela, as Coins diminuem 25 e um clique dá 2 de poder.
Com menos moedas do que o preço, a plataforma não faz nada. Saia dela, ganhe mais e volte.
A pausa de 1 segundo é o motivo de ficar parado na plataforma comprar só uma melhoria de cada vez.
Este passo não funciona para mim
Confira primeiro estas três coisas
O nome de cada Part e de cada Script está exatamente como no guia, com as mesmas letras maiúsculas.
O Script está dentro do objeto certo. Olhe o rótulo que fica acima da caixa de código.
Abra a janela Output pelo menu Window. O texto em vermelho mostra qual script e qual linha têm o problema.