Como Criar uma Loja no Roblox Studio (SHOP)
Aprenda como criar uma loja dentro do Roblox Studio para vender itens, skins, armas, poderes ou personalizações. Neste tutorial, você vai entender como funciona uma SHOP com moeda do jogo, RemoteEvent, interface e compra por Robux quando o jogador não tem moedas suficientes.
Veja o passo a passo de como criar uma loja no Roblox Studio
No vídeo, você acompanha a criação da loja dentro do Roblox Studio, desde a interface visual até a programação dos botões, moedas, itens e compra por Robux quando o jogador não tem saldo suficiente.
Assista ao vídeo junto com os scripts abaixo. Assim fica mais fácil entender onde colocar cada código, como nomear os botões e como configurar o preço dos produtos usando atributos.
Como criar uma loja no Roblox Studio: o que esse sistema faz?
Antes de copiar os scripts, vale entender a lógica da loja. Neste tutorial, a SHOP permite que o jogador abra uma interface, veja seus coins, compre itens com moeda do jogo e, se não tiver saldo suficiente, receba a opção de comprar mais moedas com Robux.
Abre e fecha a loja
A interface da SHOP fica escondida no início. Quando o jogador clica no botão da loja, o FrameProducts aparece na tela.
Mostra os coins do jogador
O servidor cria os dados do jogador em uma tabela chamada playerdata, começando com coins = 100.
Entrega o item comprado
Se o jogador tiver coins suficientes, o script desconta o valor e clona o item do ServerStorage para a Backpack.
Abre compra por Robux
Se o jogador não tiver dinheiro no jogo, o script chama o PromptProductPurchase para oferecer a compra de mais coins.
A lógica da loja funciona como uma conversa entre a tela e o servidor
O botão da interface não entrega o item sozinho. Ele envia um pedido para o servidor usando RemoteEvent. O servidor verifica os dados, desconta coins e só então libera o item para o jogador.
Estrutura necessária para criar a loja no Roblox Studio
Para os scripts funcionarem corretamente, os objetos precisam estar nos lugares certos e com os nomes certos. Neste tutorial, vamos seguir a mesma estrutura usada no vídeo, com RemoteEvent, ServerStorage, ScreenGui, botões, frames e atributos de preço.
Mapa dos objetos no Explorer
Use essa estrutura como referência para montar a loja. Os nomes precisam bater com os nomes usados nos scripts.
O que cada parte faz na loja
Cada objeto tem uma função específica. Se algum nome estiver diferente, o script pode não encontrar o item certo.
O script procura exatamente por RemoteEvent, FrameProducts,
FrameMoedas, CloseBtn e FrameBtn.
Se você trocar algum nome no Roblox Studio, precisa trocar também no código.
Como organizar a interface da loja no Roblox Studio
A interface é a parte que o jogador enxerga: o botão para abrir a loja, o painel dos produtos, o botão de fechar, o texto das moedas e os botões de compra. Para o script funcionar, essa organização precisa seguir os nomes usados na aula.
O que você precisa configurar na GUI
No tutorial, o LocalScript procura partes específicas dentro do ScreenGui. Então, antes de colar o código, organize a interface com atenção.
StarterGui, crie um ScreenGui. O LocalScript ficará dentro dele.
ImageButton e um TextLabel.
O TextLabel vai mostrar o preço.
ImageButton, crie um atributo chamado price.
Esse valor será enviado para o servidor na hora da compra.
No script real da aula, o botão envia button.Name para o servidor.
Então, se o botão se chama Espada, precisa existir um item chamado
Espada dentro do ServerStorage. Se os nomes forem diferentes,
o item não será encontrado.
Script Server da loja no Roblox Studio
Este é o script principal da loja. Ele cria os dados do jogador, controla os coins, verifica se o jogador tem dinheiro suficiente, entrega o item comprado e abre a compra por Robux quando faltar saldo.
Onde colocar este script?
Crie um Script dentro do ServerScriptService. Esse código precisa ficar no servidor, porque é ele que valida a compra e entrega o item para o jogador.
ReplicatedStorage, crie um objeto chamado exatamente RemoteEvent.
ServerStorage com o mesmo nome dos botões.
productId pelo ID do seu Developer Product, caso use compra por Robux.
coins = 100 e a GUI recebe esse valor.
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RemoteEvent = ReplicatedStorage.RemoteEvent
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local MarketPlaceService = game:GetService("MarketplaceService")
local productId = 2676251236
local playerdata = {
}
local function createPlayerData(player)
local data = {
playerName = player.Name,
coins = 100,
itens = {}
}
return data
end
Players.PlayerAdded:Connect(function(player)
playerdata[player.UserId] = createPlayerData(player)
print(playerdata)
RemoteEvent:FireClient(player, playerdata[player.UserId]["coins"])
end)
local function buyItem(player, data)
print(playerdata[player.UserId])
print(data)
local dataPlayer = playerdata[player.UserId]
if data[2] <= dataPlayer["coins"] then
print("tem dinheiro")
dataPlayer["coins"] = dataPlayer["coins"] - data[2]
RemoteEvent:FireClient(player, playerdata[player.UserId]["coins"])
local produtoComprado = ServerStorage:FindFirstChild(data[1]):Clone()
print(produtoComprado)
produtoComprado.Parent = player:FindFirstChild("Backpack")
else
print("não tem dinheiro")
MarketPlaceService:PromptProductPurchase(player, productId)
end
end
RemoteEvent.OnServerEvent:Connect(function(player, data)
buyItem(player, data)
end)
MarketPlaceService.ProcessReceipt = function(receiptInfo)
print("Comprou")
print(receiptInfo)
local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
if player then
playerdata[player.UserId]["coins"] = playerdata[player.UserId]["coins"] + 200
RemoteEvent:FireClient(player, playerdata[player.UserId]["coins"])
return Enum.ProductPurchaseDecision.PurchaseGranted
end
return Enum.ProductPurchaseDecision.NotProcessedYet
end
Porque a compra precisa ser validada com segurança. O jogador clica na interface, mas quem decide se ele tem
coins suficientes é o Script Server. Assim, a loja fica mais organizada e evita que o item seja entregue
sem passar pela verificação.
LocalScript da loja no Roblox Studio
Este script fica dentro do ScreenGui e controla a parte visual da loja: mostra o preço dos produtos, envia o pedido de compra para o servidor, atualiza as moedas na tela e abre ou fecha a interface SHOP.
Onde colocar este LocalScript?
Crie um LocalScript dentro do ScreenGui da loja. Ele precisa ficar na interface, porque vai ler botões, textos, frames e cliques do jogador.
ScreenGui.FrameProducts:GetChildren() para encontrar os frames dos produtos.
price. Esse valor aparece no TextLabel do produto.
button.Name e price pelo RemoteEvent.
CloseBtn fecha o painel. O botão dentro de FrameBtn abre a loja novamente.
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RemoteEvent = ReplicatedStorage.RemoteEvent
local ScreenGui = script.Parent
local FrameProducts = ScreenGui.FrameProducts:GetChildren()
local FrameMoedas = ScreenGui.FrameMoedas
local MoedasTxt = FrameMoedas.TextLabel
local CloseBtn = ScreenGui.CloseBtn
local BtnShop = ScreenGui.FrameBtn.TextButton
local FrameProductsGui = ScreenGui.FrameProducts
for i, frame in pairs(FrameProducts) do
if frame:IsA("Frame") then
local FrameButton = frame:GetChildren()
local button: ImageButton = FrameButton[1]
local text: TextLabel = FrameButton[2]
text.Text = button:GetAttribute("price")
button.MouseButton1Click:Connect(function()
print(button.Name, button:GetAttribute("price"))
RemoteEvent:FireServer({button.Name, button:GetAttribute("price")})
end)
end
end
RemoteEvent.OnClientEvent:Connect(function(data)
print("recebi as moedas")
print(data)
MoedasTxt.Text = data
end)
CloseBtn.MouseButton1Click:Connect(function()
FrameProductsGui.Visible = false
CloseBtn.Visible = false
end)
BtnShop.MouseButton1Click:Connect(function()
FrameProductsGui.Visible = true
CloseBtn.Visible = true
end)
Nesse código, o botão é lido como FrameButton[1] e o texto como FrameButton[2].
Então, se algo não funcionar, confira se dentro de cada frame de produto existe um ImageButton e um TextLabel.
Como configurar botões, preços e itens da loja no Roblox Studio
Depois de criar a interface e colar os scripts, você precisa configurar os produtos da loja. Essa etapa é muito importante, porque o LocalScript envia o nome do botão e o preço para o servidor. O servidor usa essas informações para descontar coins e entregar o item certo.
Configurando os botões da interface
Cada produto da loja precisa ter um ImageButton. Esse botão representa o item que o jogador vai comprar.
Espada.
price com o valor do produto em coins.
price.
Configurando os itens no ServerStorage
O servidor procura o item usando ServerStorage:FindFirstChild(data[1]).
Isso significa que o nome enviado pelo botão precisa encontrar um item com o mesmo nome no ServerStorage.
ServerStorage.
Espada, o item no ServerStorage também precisa chamar Espada.
Tool. Assim ela poderá ser entregue na Backpack do jogador.
Exemplo prático de configuração dos produtos
| Produto na loja | Nome do ImageButton | Atributo price | Nome no ServerStorage |
|---|---|---|---|
| Espada | Espada |
50 |
Espada |
| Boost | Boost |
100 |
Boost |
| Skin | Skin |
200 |
Skin |
Se o botão se chama Espada, mas o item no ServerStorage se chama Sword,
o script não vai encontrar o produto. Para esse tutorial funcionar, o nome do botão e o nome do item
precisam ser iguais.
Erros comuns ao criar uma loja no Roblox Studio
Se a loja não abrir, se o item não aparecer ou se as moedas não atualizarem, não se desespere. Na maioria das vezes, o problema está em nomes diferentes no Explorer, objetos no lugar errado ou atributos de preço configurados de forma incorreta.
O script usa ReplicatedStorage.RemoteEvent. Se o RemoteEvent não existir ou tiver outro nome,
o código vai parar logo no começo.
RemoteEvent.
O servidor procura o produto no ServerStorage usando o nome enviado pelo botão.
Se o nome estiver diferente, o item não será clonado.
O LocalScript usa button:GetAttribute("price"). Se o atributo não existir,
o preço pode aparecer vazio ou incorreto.
price no ImageButton de cada produto.
O valor das moedas aparece em FrameMoedas.TextLabel. Se esse caminho estiver diferente,
o texto não será atualizado.
FrameMoedas com um TextLabel dentro.
O script usa CloseBtn para fechar e FrameBtn.TextButton para abrir a interface.
Quando faltam coins, o script chama PromptProductPurchase usando o valor de productId.
productId pelo ID real do seu Developer Product.
Checklist rápido antes de testar a loja
RemoteEvent, FrameProducts, FrameMoedas,
CloseBtn e FrameBtn estão escritos corretamente.
ServerStorage e com o mesmo nome dos botões.
price, com valor numérico.
Abra a janela Output do Roblox Studio enquanto testa o jogo. As mensagens com print, warn e erros ajudam a descobrir se o problema está no botão, no RemoteEvent, no ServerStorage ou no productId.
Gostou de criar uma loja? Agora imagine criar seu próprio jogo completo
Nos cursos da Programação For Kids, crianças e adolescentes aprendem Roblox Studio de forma prática, criando jogos, sistemas, desafios, scripts e projetos passo a passo, mesmo começando do zero.
Este tutorial é só uma amostra do que o aluno pode aprender quando transforma a curiosidade por jogos em habilidade real de criação e programação.
Conheça o canal da Programação For Kids no YouTube
Se você gostou deste tutorial de loja no Roblox Studio, acompanhe também nosso canal no YouTube. Lá publicamos aulas práticas de Roblox, scripts, jogos, interfaces e programação para crianças e adolescentes.
Tutoriais para crianças, adolescentes e iniciantes aprenderem programação criando jogos no Roblox Studio.
Aprenda mais com outras aulas de Roblox Studio
Se você curtiu essa aula de como criar uma loja no Roblox Studio, com certeza vai gostar desses outros tutoriais para deixar seus jogos mais completos, criativos e divertidos.
Como Fazer um Jogo em Primeira Pessoa no Roblox Studio
Aprenda a configurar a câmera e os controles para criar uma experiência imersiva em primeira pessoa no seu jogo.
Ver tutorialComo Criar Socos Múltiplos no Roblox Studio
Descubra como programar ataques com animações de soco, colisão com inimigos e efeitos visuais.
Ver tutorialComo Fazer uma BillboardGui no Roblox Studio
Veja como mostrar texto flutuante com nomes, moedas ou informações acima do jogador usando BillboardGui.
Ver tutorialFAQ sobre como criar uma loja no Roblox Studio
Reunimos as principais dúvidas sobre a criação de uma SHOP no Roblox Studio, incluindo moedas, RemoteEvent, itens, preços, Robux e erros comuns durante o teste.
Para criar uma loja no Roblox Studio, você precisa montar uma interface no StarterGui, criar um RemoteEvent no ReplicatedStorage, guardar os itens no ServerStorage e usar scripts para controlar a compra, descontar moedas e entregar o item ao jogador.
Não. Você pode criar uma loja usando apenas uma moeda do próprio jogo, como coins. Neste tutorial, o Robux aparece como uma opção extra quando o jogador não tem moedas suficientes e o sistema chama a compra de um Developer Product.
Para colocar preço nos itens da loja, adicione um atributo chamado price no ImageButton de cada produto. O LocalScript lê esse atributo com GetAttribute("price") e envia o valor para o servidor na hora da compra.
O item pode não aparecer na mochila se ele não estiver no ServerStorage, se o nome do item for diferente do nome do botão ou se o objeto não puder ser entregue para a Backpack. Confira se o item vendido tem exatamente o mesmo nome enviado pelo ImageButton.
O RemoteEvent da loja deve ficar dentro do ReplicatedStorage. Neste tutorial, ele precisa se chamar exatamente RemoteEvent, porque tanto o Script Server quanto o LocalScript procuram esse objeto pelo mesmo nome.
Sim. Você pode vender skins, armas, poderes, ferramentas, boosts ou outros itens do seu jogo. Para isso, cada produto precisa ter um botão na interface, um preço configurado e um item correspondente no ServerStorage para ser entregue ao jogador.
Para fazer a loja abrir e fechar, use um LocalScript para alterar a propriedade Visible do painel da loja. Neste tutorial, o botão dentro de FrameBtn abre o FrameProducts, e o CloseBtn fecha a loja.
A maioria dos erros nesse tipo de loja acontece porque um objeto foi escrito com nome diferente. Confira RemoteEvent, FrameProducts, FrameMoedas, CloseBtn, FrameBtn, price e os itens dentro do ServerStorage.
Seu filho pode ir além de jogar: ele pode criar jogos no Roblox
Criar uma loja no Roblox Studio é só um exemplo do que acontece quando a criança começa a entender a lógica por trás dos jogos. Na Programação For Kids, o aprendizado acontece com projetos práticos, desafios criativos e aulas pensadas para quem está começando.
Transforme o interesse por Roblox em uma experiência de aprendizado real: criatividade, tecnologia, lógica e programação desde cedo.





