como fazer quest no roblox

Como fazer Quest no Roblox Studio

Se você procura uma aula prática e divertida de programação, principalmente para quem está começando, este vídeo é perfeito! Hoje vamos te ensinar passo a passo como criar uma quest no Roblox Studio, utilizando a linguagem Lua, uma das mais usadas na criação de jogos no Roblox. Essa aula foi pensada especialmente para crianças e adolescentes que desejam aprender programação de forma simples, criando missões e sistemas interativos nos seus próprios jogos.

Aqui no Programação for Kids, mostramos que aprender a programar pode ser divertido e acessível, mesmo para quem nunca teve contato com códigos antes. Nossas aulas de programação para crianças, programação para adolescentes e até mesmo aulas de informática são focadas em desenvolver criatividade, lógica e habilidades digitais.

Assista ao vídeo completo e veja como é fácil programar sua primeira quest no Roblox, ideal para aplicar em jogos próprios e deixar o Roblox Studio ainda mais interessante!

Script do Server

				
					local Players = game:GetService("Players")
local ReplicatedStorage= game:GetService("ReplicatedStorage")
local QuestUpdateEvent = ReplicatedStorage.QuestUpdateEvent

local PlayerData={}


local debounce ={}

local quest={
	{level=1, item={ moeda=1 , diamante=1, maca=1}},
	{level=2, item={ moeda=2, diamante=2, maca=2}},
	{level=3, item={ moeda=4, diamante=4, maca=6}},
	{level=4, item={ moeda=10, diamante=10, maca=15}},
}


local function checkQuest(data, player)
	local level = data.level
	
	for _, itemQuest in ipairs(quest) do
		if itemQuest.level ==level then
			local temTodosOsItens= true
			
			for  nomeItem, quantidadeNecessaria in pairs(itemQuest.item) do
				local quantidadeJogador= data.inventario[nomeItem] or 0
				if quantidadeJogador < quantidadeNecessaria then
					temTodosOsItens=false
				end
			end
			local SendDataNecessary={
				quest[PlayerData[player.UserId].level],
				PlayerData[player.UserId]
			}
			QuestUpdateEvent:FireClient(player, SendDataNecessary)
			
			if temTodosOsItens then
				for name, itemQuest in pairs(quest[PlayerData[player.UserId].level].item) do
					PlayerData[player.UserId].inventario[name] -= itemQuest
				end
				data.level = data.level + 1
				print("novo nivel ".. data.level)
				
				print(PlayerData)
				
				if not quest[data.level] then
					return
				end
				local sendData={
					quest[PlayerData[player.UserId].level],
					PlayerData[player.UserId]
				}
				QuestUpdateEvent:FireClient(player, sendData)
			end
		end
	end
end

for _, item in ipairs(game.Workspace.Itens:GetChildren()) do
	item.Touched:Connect(function(hit)
		if hit.Parent:FindFirstChild("Humanoid") then
			
			local player = Players:GetPlayerFromCharacter(hit.Parent)
			if player and not debounce[player.UserId] then
				debounce[player.UserId]= true
				
				local itemName= item:GetAttribute("name")
				PlayerData[player.UserId].inventario[itemName]+=1
				item:Destroy()
				-- função checar se ele ja tem os itens necessário passar na quest
				checkQuest(PlayerData[player.UserId], player)
				wait(0.5)
				debounce[player.UserId]= false
				print(PlayerData)
			end
		end
	end)
end






Players.PlayerAdded:Connect(function(player)
	PlayerData[player.UserId]={
		inventario={
			moeda=0,
			diamante=0,
			maca=0
		},
		level=1
	}
	local data={
		quest[PlayerData[player.UserId].level],
		PlayerData[player.UserId]
	}
	QuestUpdateEvent:FireClient(player,data)
end)
				
			

Local Script

				
					local player = game.Players.LocalPlayer
local ReplicatedStorage= game:GetService("ReplicatedStorage")
local QuestUpdateEvent = ReplicatedStorage.QuestUpdateEvent


local questItem = ReplicatedStorage.quest

local ScreenGui = script.Parent
local Frame = ScreenGui.Frame
local FrameItem = Frame.FrameItemRequest
local level = Frame.Level







local function updateGui(data)
	local playerData = data[2]
	local questData = data[1]
	
	for _, child in pairs(FrameItem:GetChildren()) do
		if child:IsA("TextLabel") then
			child:Destroy()
		end
	end
	level.Text = "Level " ..playerData.level
	
	for nameItemNecessario, itemNecessario in pairs(questData.item) do
		local quantidadeJogador = playerData.inventario[nameItemNecessario] or 0
		local textQuest = questItem:Clone()
		textQuest.Parent = FrameItem
		
		if quantidadeJogador >= itemNecessario then
			textQuest.Text ="✅ " .. nameItemNecessario
		else
			local falta= itemNecessario - quantidadeJogador
			textQuest.Text= "❌ " .. quantidadeJogador .."/" .. itemNecessario .. " " .. nameItemNecessario
		end
	end
end


QuestUpdateEvent.OnClientEvent:Connect(function(data)
	print("📩 Dados recebidos do servidor!")
	print(data)
	updateGui(data)
end)
				
			

💻✨ Gostou dessa aula? Então você vai adorar nossos cursos completos de programação! No Programação for Kids, ensinamos crianças e adolescentes a criarem seus próprios jogos, aplicativos e sistemas, mesmo que nunca tenham programado antes. Tudo de forma divertida, prática e passo a passo, usando ferramentas como Roblox Studio, Code.org e muito mais.

🎓 Nossos cursos são ideais para:

  • Crianças e adolescentes que querem aprender programação

  • Pais que buscam atividades educativas e criativas para seus filhos

👉 Conheça nossos cursos e comece hoje mesmo:

Curso de Programação em Jogos

Leave a Reply

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