Como criar sistema de dropar itens no Roblox
Se você é apaixonado por desenvolver jogos no Roblox e quer criar mecânicas que deixam seus jogadores ainda mais empolgados, um sistema de drops aleatórios com inventário é exatamente o que você precisa! Neste artigo, vou te ensinar o passo a passo para implementar essa funcionalidade, explicando cada conceito de forma simples e prática.
O que é um sistema de drops aleatórios?
Imagine que, ao eliminar um inimigo em um jogo, ele deixa cair (dropa) um item aleatório, como uma espada, escudo, ou uma poção. Esse sistema traz uma experiência emocionante e imprevisível, pois o jogador nunca sabe o que vai ganhar!
E para melhorar, esses itens podem ser recolhidos e adicionados ao inventário do jogador, permitindo que sejam usados posteriormente no jogo.
Passo a passo de como dropar itens no Roblox
Códigos escritos em aula
print("Hello world!")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RemoteEvent = ReplicatedStorage:WaitForChild("RemoteEvent")
local Zombies = game.Workspace.Zombies:GetChildren()
local premios = ReplicatedStorage.Drops:GetChildren()
print(premios)
print(#premios)
local Players = game:GetService("Players")
local debounce = false
local PlayerData={}
local function dropItens(zombiePosition)
print("Chamei a função dropItens")
print("Posição do Zombie")
print(zombiePosition)
local premioDrop = premios[math.random(1,#premios)]:Clone()
premioDrop.Parent = workspace.DropItens
premioDrop.Position = zombiePosition
local dropItens = workspace.DropItens:GetChildren()
for _, dropIten in ipairs(dropItens) do
dropIten.Touched:Connect(function(hit)
local character = hit.Parent
local humanoid = character:FindFirstChild("Humanoid")
local player = Players:GetPlayerFromCharacter(character)
if humanoid and player and not debounce then
debounce=true
print(player)
print(player.UserId)
print(dropIten.Name)
PlayerData[player.UserId][dropIten.Name]=
PlayerData[player.UserId][dropIten.Name]+1
print(PlayerData)
RemoteEvent:FireClient(player, PlayerData)
dropIten:Destroy()
wait(0.3)
debounce= false
end
end)
end
end
for i, zombie in ipairs(Zombies) do
local humanoid = zombie:FindFirstChild("Humanoid")
if humanoid then
humanoid.Died:Connect(function()
print("Zombie morreu ")
local zombiePosition = zombie.PrimaryPart.Position
dropItens(zombiePosition)
end)
end
end
local function onPlayerAdded(player)
PlayerData[player.UserId]={
coin=0,
diamond=0,
esmeralda=0
}
end
Players.PlayerAdded:Connect(onPlayerAdded)
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RemoteEvent =ReplicatedStorage:WaitForChild("RemoteEvent")
local ScreenGui = script.Parent
local Frame = ScreenGui.Frame
local coinTxt =Frame.coinImage.coinTxt
local diamanteTxt= Frame.diamanteImage.diamanteTxt
local esmeraldaTxt=Frame.esmeraldaImage.esmeraldaTxt
local function recebeValor(data)
print(data)
local userId = tostring(player.UserId)
print(data[userId])
coinTxt.Text = data[userId]["coin"]
diamanteTxt.Text= data[userId]["diamond"]
esmeraldaTxt.Text= data[userId]["esmeralda"]
end
RemoteEvent.OnClientEvent:Connect(recebeValor)
Aprenda mais sobre programação
Na Programação for Kids, você encontra cursos completos para crianças e adolescentes aprenderem a programar de forma divertida e prática. Explore nosso catálogo de cursos e conquiste suas habilidades em programação!
🎓 Acesse nossos cursos gratuitos:
Programação for Kids – Cursos de Programação