Compre 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 de jogo - comprar melhorias.Permitindo que os jogadores comprem upgrades que aumentem o tamanho de sua bolsa de itens, eles podem coletar mais itens por viagem e ganhar ainda mais ouro.

Criar uma comprar

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

Crie a assinatura

  1. No espaço de Workspace, crie um novo modelo chamado Loja.

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

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

  4. Na Interface gráfica do usuáriosuperfície, adicione um novo rótulo de texto chamado BuyText. Um pequeno rótulo aparecerá em algum lugar da peça.

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

Altere o texto do sinal

No momento, o TextLabel é muito pequeno e difícil de ver para os jogadores. Precisa ser escalado.

  1. Nas propriedades de Compra de Texto, clique na seta ao lado de Tamanho . Mude o Deslocamento 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. Rolagem para cima nas propriedades do TextLabel e clique na seta à esquerda de Ponto de Ancoragem .Digite 0.5 para X e Y.Isso move parte de sua etiqueta para fora de vista, mas você a posicionará corretamente na próxima.

  4. Desça na propriedade e abra Posição . Mude o tamanho de X e Y para 0,5 para que a caixa seja centrada no meio.

  5. Nas propriedades de Texto de Compra, desça e altere Texto para algo descritivo. Por instância: "Buy Larger Bag: 100 gold" .

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

Adicione 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. Detectores de Clique são objetos que permitem que os usuários interajam com algo no ambiente, como abrir uma porta.

  1. No Botão de Comprar, adicione um Detector de Clique.

  2. No BuyButton, adicione um novo script chamado BuyScript e dê-lhe um comentardescritivo.

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


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


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


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


    local function giveUpgrade(player)
    print("Someone clicked the button.")
    end
  7. Jogue o 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 peça que você está tentando clicar.
  • Verifique se o seu personagem está perto o suficiente do botão. Ou, garanta que a ferramenta não está equipada.

Compre melhorias

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

Adicionar variáveis de atualização

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

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

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

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

Conceder melhorias

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

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


    local function giveUpgrade(player)
    print("Someone clicked the button")
    -- Obtém 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 custo de 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 custo da upgrade / melhoriado ouro do jogador.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    -- Subtraia o custo do item do dinheiro do jogador
    playerGold.Value -= upgradeCost
    end
  4. Na próxima linha, adicione o número dos espaços atuais do jogador junto 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 dos espaços funcionou.

Dicas de solução de problemas

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

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

Complete o script BuyScript

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


-- Deixe os jogadores clicarem em um botão para comprar uma atualização que aumenta os Espaços Máximos
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")
-- Obtém 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 custo do item do dinheiro do jogador
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)