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

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *