Para a próxima fase do ciclo de jogos, os jogadores precisam vender seus itens por ouro para permitir que eles comprem mais espaço em suas mochilas.
Criando uma Plataforma de Venda
Os jogadores venderão seus itens pisando em uma plataforma que lhes dá ouro por cada item em sua bolsa.
Configurando a Plataforma
A plataforma pode ser qualquer parte e incluirá um script que lida com a venda.
Crie uma nova peça chamada SellPlatform. Personalize-a para refletir o tema de sua experiência.
Na SellPlatform, crie um novo script chamado SellScript e adicione um comentar.
In SellScript, type local sellPart = script.Parent to get the SellPlatform part.
-- Vende todos os itens de um jogador e os dá de ourolocal sellPart = script.Parent
lidando com eventos de toque
Para usar a plataforma, o script precisa de uma função para verificar se quaisquer jogadores a tocarem.
Crie uma função chamada onTouch() que verifica se um jogador está tocando a plataforma.
local function onTouch(partTouched)local character = partTouched.ParentendPara 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)Na próxima linha, obtenha o contêiner de estatísticas de liderança desse jogador.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- Obtém a tabela de classificação do jogador. É necessário para obter itens e dinheirolocal playerStats = player:FindFirstChild("leaderstats")endNa 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. É necessário para obter itens e dinheirolocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Pega os itens e dinheiro do jogadorlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")endendPara verificar seu trabalho, adicione uma declaração de impressão que será executada se um jogador tocar sellPart.
local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")Na parte inferior do script, conecte o onTouch() para vender o evento Touched do móvel.
local Players = game:GetService("Players")local function onTouch(partTouched)local character = partTouched.Parentlocal player = Players:GetPlayerFromCharacter(character)if player then-- Obtém a tabela de classificação do jogador. É necessário para obter itens e dinheirolocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Pega os itens e dinheiro do jogadorlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")endendendsellPart.Touched:Connect(onTouch)Jogue seu projeto e pise em sellPart; você deve ver a mensagem "_A Player touched sellPart" em uma janela de saída.
Vendendo 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 por mais itens.
Código de uma Nova Função de Venda
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 os dá de ourolocal sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)Para dar aos jogadores a quantidade exata de ouro, leve o valor do playerItems e multiplique-o pelo número 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 por valor de cada item.local totalSell = playerItems.Value * 100endDigite playerGold.Value += totalSell para adicionar o ouro aos seus itens atuais.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100-- Adicione quanto o jogador ganha para o seu dinheiroplayerGold.Value += totalSellendTipo playerItems.Value = 0 . Isso configura os itens de um jogador de volta para 0. Se os itens de um jogador não estiverem configurados de volta para 0, o script continuará dando ouro sem parar.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100playerGold.Value += totalSellplayerItems.Value = 0endNa função onTouch(), em a segunda declaração if, chama a função 1>sellItems()1>. Passam os parâmetros, 4> playerItems4> e 7> playerGold7>, para que eles 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. É necessário para obter itens e dinheirolocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Pega os itens e dinheiro do jogadorlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")if playerItems and playerGold thensellItems(playerItems, playerGold)endendendJogue seu projeto; verifique se, sempre que um jogador pisar na plataforma, seu ouro aumenta e seus itens são definidos para 0.
Dicas de solução de problemas
Neste ponto, vender itens não funciona como deveria, tente um dos seguintes abaixo.
- sellItems() é chamado na segunda-feira se a declaração verificar 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) é escrito na parte inferior do script.
- sellItems(playerItems, playerGold) é escrito antes do fim da declaração se o humanoide for então.