Comprando Melhorias

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Isso nos leva ao último estágio do ciclo do jogo - comprar melhorias. Ao permitir que os jogadores comprem melhorias que aumentam o tamanho de sua bolsa de itens, eles podem coletar mais itens por viagem e ganhar ainda mais ouro.

Criando uma Loja

Cada loja terá um botão que os jogadores clicarão para comprar uma bolsa de item maior. A loja em si será uma parte com um SurfaceGUI, um item que permite que o texto seja escrito nas peças.

Criando o Sinal

  1. No Workspace, crie um novo modelo chamado Loja.

  2. Na Loja, crie uma nova parte do bloco chamada BuyButton.

  3. No BuyButton, adicione uma nova GUI de Superfície clicando no + e passando para a Interface gráfica do usuário.

  4. Na interface Interface gráfica do usuáriodo usuário da superfície, adicione uma nova etiqueta de texto chamada BuyText. Uma pequena etiqueta aparecerá em algum lugar da peça.

  5. Dependendo de como a peça foi feita, a etiqueta pode estar em outro lugar. Se você não vir o texto no lado que deseja, vá para a interface da superfície e encontre a propriedade Face. Altere essa propriedade até que você veja a etiqueta / rótulode texto.

Mudando o Texto da Placa

No momento, a Etiqueta de Texto é realmente pequena e difícil de ver para os jogadores. Precisa ser dimensionado.

  1. Nas propriedades de ComprarTexto, clique na seta ao lado de Tamanho . Altere o offset **** para X (esquerda e direita) e Y (para cima e para baixo) para 0.

  2. Altere a escala **** de X e Y para 0,5 para fazer um quadrado.

  3. Role para cima nas propriedades do TextLabel e clique na seta para a esquerda do AnchorPoint . Digite 0,5 para X e Y. Isso moverá uma parte do seu rótulo para fora da vista, mas você a posicionará corretamente a seguir.

  4. Role para baixo nas propriedades e abra Posição . Mude a escala de X e Y para 0,5 para que a caixa esteja centralizada no meio.

  5. Nas propriedades de ComprarTexto, role para baixo e altere Texto para algo descritivo. Por instância: "Buy Larger Bag: 100 gold".

  6. Marque TextScaled para ser em . Isso dimensiona automaticamente seu texto para que ele se encaixe na caixa.

Adicionando um Detector de Cliques

Os jogadores comprarão itens clicando na loja em vez de apenas tocá-la. O script usará um detector de cliques para dizer se um jogador clicou no sinal da loja. ClickDetectors são objetos que permitem que os usuários interajam com algo no ambiente, como abrir uma porta.

  1. No BuyButton, adicione um ClickDetector.

  2. No BuyButton, adicione um novo script chamado BuyScript e dê a ele um comentardescritivo.

  3. No BuyScript, crie variáveis para armazenar a parte do botão e clique no detector.


    -- Permite que os jogadores cliquem em um botão para comprar uma melhoria que aumenta os Espaços
    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
  4. Crie uma nova função chamada giveUpgrade() que receba um parâmetro chamado player. A função atualizará os espaços de um jogador sempre que clicarem no botão.


    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
    local function giveUpgrade(player)
    end
  5. Após a função, digite conectar o evento MouseClick do detector de cliques à função giveUpgrade().


    local function giveUpgrade(player)
    end
    clickDetector.MouseClick:Connect(giveUpgrade)
  6. Adicione uma instrução de impressão em giveUpgrade() para testar a função.


    local function giveUpgrade(player)
    print("Someone clicked the button.")
    end
  7. Reproduza seu projeto. Clique no botão e verifique se você vê o texto na janela de saída.

Dicas de solução de problemas

Problema: Você não pode clicar no botão ou o cursor do mouse não aparece no botão.

  • Certifique-se de que o objeto ClickDetector seja um filho da parte que você está tentando clicar.
  • Verifique se seu personagem está perto o suficiente do botão. Ou, certifique-se de que a ferramenta não esteja equipada.

Comprando Melhorias

Com um botão funcionando, é hora de adicionar código ao giveUpgrade para remover o ouro de um jogador em troca de uma bolsa aprimorada.

Adicionando Variáveis de Melhoria

Cada atualização terá duas variáveis: o preço da atualização e quantos espaços ela tem.

  1. No BuyScript, em local clickDetector, crie duas variáveis:

    • newSpace : Quantos espaços uma melhoria adiciona quando comprada.
    • upgradeCost : O preço de uma única upgrade / melhoria

    -- Variáveis para a upgrade / melhoria
    local newSpaces = 10
    local upgradeCost = 100

Concedendo Melhorias

Antes de vender a upgrade / melhoriaao jogador, você precisa verificar se eles têm dinheiro suficiente. Se eles fizerem isso, você adicionará à quantidade máxima de espaços.

  1. Em giveUpgrade(), digite o seguinte abaixo para obter as estatísticas de liderança do jogador para que você possa acessar suas variáveis de ouro e espaços.


    local function giveUpgrade(player)
    print("Someone clicked the button")
    -- Obtenha a tabela de classificação do jogador para obter outros IntValues
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Obtém o dinheiro e os espaços do jogador para fazer alterações
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    end
    end
  2. Depois de escrever as variáveis para espaços, crie uma declaração if para se o valor de playerGold for maior ou igual ao preço da atualização.


    local function giveUpgrade(player)
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    -- Verifica se o jogador tem dinheiro suficiente para pagar a upgrade / melhoria
    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    end
    end
    end
  3. Na declaração if, subtraia o preço da upgrade / melhoriado ouro do jogador.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    -- Subtraia o preço do item do dinheiro do jogador
    playerGold.Value -= upgradeCost
    end
  4. Na próxima linha, adicione o número de espaços atuais do jogador, juntamente com os novos espaços concedidos por upgrade / melhoria.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    playerGold.Value -= upgradeCost
    playerSpaces.Value += newSpaces
    end
  5. Jogue seu projeto e verifique a tabela de classificação para verificar se a atualização de espaços funcionou.

Dicas de solução de problemas

Neste ponto, as atualizações não funcionam como pretendido, tente uma das seguintes opções abaixo.

  • Certifique-se de que qualquer coisa no () de FindFirstChild() tenha citações em ambos os lados , como "leaderstats".
  • Verifique se cada string no FindFirstChild é exatamente igual ao nome desse IntValue no script PlayerSetup. Por exemplo, se o seu código usar Rubis como dinheiro, você deve ter FindFirstChild("Rubies") .
  • Certifique-se de que giveUpgrade() esteja acima de clickDetector.MouseClick.

Completar BuyScript Script

Uma versão finalizada do script pode ser referenciada abaixo.


-- Permite que os jogadores cliquem em um botão para comprar uma atualização que aumenta os MaxSpaces
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- Variáveis para a upgrade / melhoria
local newSpaces = 10
local upgradeCost = 100
local function giveUpgrade(player)
print("Someone clicked the button")
-- Obtenha a tabela de classificação do jogador para obter outros IntValues
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- Obtém o dinheiro e os espaços do jogador para fazer alterações
local playerGold = playerStats:FindFirstChild("Gold")
local playerSpaces = playerStats:FindFirstChild("Spaces")
-- Verifica se o jogador tem dinheiro suficiente para pagar a upgrade / melhoria
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- Subtraia o preço do item do dinheiro do jogador
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)