Venda itens

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

Para a próxima etapa do ciclo do jogo, os jogadores precisam vender seus itens por ouro para permitir que eles comprem mais espaço em suas mochilas.

Crie uma plataforma de venda

Os jogadores venderão seus itens pisando em uma plataforma que lhes dá ouro por cada item em sua bolsa.

Configurar a plataforma

A plataforma pode ser qualquer parte e incluirá um script que lida com a venda.

  1. Crie uma nova peça chamada SellPlatform. Personalize-a para combinar com o tema de sua experiência.

  2. Na SellPlatform, crie um novo script chamado SellScript e adicione um comentar.

  3. No SellScript, digite local sellPart = script.Parent para obter a parte da Plataforma de Venda.


    -- Vende todos os itens de um jogador e dá a eles ouro
    local sellPart = script.Parent

Manusear eventos de toque

Para usar a plataforma, o script precisa de uma função para verificar se algum jogador toca nele.

  1. Crie uma função chamada onTouch() que verifica se um jogador está tocando na plataforma.


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. Para alterar qualquer uma das estatísticas na tabela de classificação, o script precisa saber qual jogador está controlando o personagem.Na declaração if, use a função GetPlayerFromCharacter() para encontrar um jogador.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
  3. Na próxima linha, obtenha o contêiner de estatísticas de líder desse jogador.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Obtém a tabela de classificação do jogador. Precisa obter itens e dinheiro
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. Na próxima linha, crie variáveis para obter o dinheiro e os itens do jogador.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Obtém a tabela de classificação do jogador. Precisa obter itens e dinheiro
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Obtém os itens e o dinheiro do jogador
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    end
    end
  5. Para verificar seu trabalho, adicione uma declaração de impressão que será executada se um jogador tocar em sellPart.


    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
  6. Na parte inferior do script, conecte o onTouch() para vender o evento Tocado da parte tocada.


    local Players = game:GetService("Players")
    local function onTouch(partTouched)
    local character = partTouched.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Obtém a tabela de classificação do jogador. Precisa obter itens e dinheiro
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Obtém os itens e o dinheiro do jogador
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
    end
    end
    end
    sellPart.Touched:Connect(onTouch)
  7. Jogue seu projeto e pise em sellPart; você deve ver a mensagem "A Player touched sellPart" na janela de Saída.

Venda itens

Nesta experiência, um jogador receberá 100 Ouros por cada item.Depois de obter dinheiro, seus itens serão redefinidos para 0, permitindo que os jogadores explorem o mundo para mais itens.

Codifique uma nova função de venda

  1. Sob as variáveis, crie uma função chamada sellItems() que recebe dois parâmetros chamados playerItems e playerGold.


    -- Vende todos os itens de um jogador e dá a eles ouro
    local sellPart = script.Parent
    local function sellItems(playerItems, playerGold)
    end
    local function onTouch(partTouched)
  2. Para dar aos jogadores a quantidade certa de ouro, pegue o valor do playerItems e multiplique-o pela quantidade de ouro que eles devem receber por item.Este exemplo dá cem peças de ouro por item.

    Na função sellItems(), digite local totalSell = playerItems.Value * 100


    local function sellItems(playerItems, playerGold)
    -- Obtém quantos itens o jogador tem e multiplica isso pelo valor do item.
    local totalSell = playerItems.Value * 100
    end
  3. Digite playerGold.Value += totalSell para adicionar o ouro para os itens ao seu ouro atual.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    -- Adicione quanto o jogador ganha ao seu dinheiro
    playerGold.Value += totalSell
    end
  4. Tipo playerItems.Value = 0 .Isso redefine os itens de um jogador de volta a 0.Se os itens de um jogador não forem redefinidos para 0, o script continuará dando ouro aos jogadores sem parar.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. Na função onTouch() , sob a segunda declaração if , chame a função sellItems().Passe os parâmetros, playerItems e playerGold para que possam ser alterados.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Obtém a tabela de classificação do jogador. Precisa obter itens e dinheiro
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Obtém os itens e o dinheiro do jogador
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    if playerItems and playerGold then
    sellItems(playerItems, playerGold)
    end
    end
    end
  6. Jogue seu projeto; verifique que sempre que um jogador pisa na plataforma, seu ouro aumenta e os itens são definidos como 0.

Dicas de solução de problemas

Neste ponto, vender itens não funciona como pretendido, tente um dos seguintes abaixo.

  • sellItems() é chamado no segundo se a declaração que verifica os itens do jogador.
  • Qualquer IntValue, como playerItems, usa .Value no final se você estiver fazendo uma alteração nele. O valor é sempre capitalizado.
  • sellPart.Touched:Connect(onTouch) é digitado na parte inferior de do script .
  • sellItems(playerItems, playerGold) é digitado antes do fim da declaração if humanoid então.