local RP = game:GetService("ReplicatedStorage")
local Remotes = RP:WaitForChild("Remotes")
local players = game:GetService("Players")
players.PlayerAdded:Connect(function(plr)
local Quest = Instance.new("Folder", plr)
Quest.Name = "Quest"
local questGiver = Instance.new("StringValue", Quest)
questGiver.Name = "QuestGiver"
local questTask = Instance.new("StringValue", Quest)
questTask.Name = "QuestTask"
local questReward = Instance.new("NumberValue", Quest)
questReward.Name = "QuestReward"
local questRewardCurrency = Instance.new("StringValue", Quest)
questRewardCurrency.Name = "QuestRewardCurrency"
local questRewardCurrencyFolder = Instance.new("StringValue", Quest)
questRewardCurrencyFolder.Name = "QuestRewardCurrencyFolder"
local questProgress = Instance.new("NumberValue", Quest)
questProgress.Name = "QuestProgress"
local questGoal = Instance.new("NumberValue", Quest)
questGoal.Name = "QuestGoal"
local isRepeatable = Instance.new("BoolValue", Quest)
isRepeatable.Name = "isRepeatable"
questProgress:GetPropertyChangedSignal("Value"):Connect(function()
if questTask.Value ~= nil then
if questProgress.Value >= questGoal.Value then
plr:WaitForChild(questRewardCurrencyFolder.Value):WaitForChild(questRewardCurrency.Value).Value += questReward.Value
for i, v in pairs(Quest:GetChildren()) do
if v:IsA("StringValue") then
v.Value = ""
elseif v:IsA("NumberValue") then
v.Value = 0
end
end
end
end
end)
end)
Remotes:WaitForChild("GiveQuest").OnServerEvent:Connect(function(plr, questGiver, questTask, questReward, questRewardCurrency, questRewardCurrencyFolder, questGoal, isRepeatable)
local quest = plr:WaitForChild("Quest")
quest:WaitForChild("QuestGiver").Value = questGiver
quest:WaitForChild("QuestTask").Value = questTask
quest:WaitForChild("QuestReward").Value = questReward
quest:WaitForChild("QuestGoal").Value = questGoal
quest:WaitForChild("QuestRewardCurrency").Value = questRewardCurrency
quest:WaitForChild("QuestRewardCurrencyFolder").Value = questRewardCurrencyFolder
quest:WaitForChild("isRepeatable").Value = isRepeatable
end)
local UIS = game:GetService("UserInputService")
local Player = game.Players.LocalPlayer
local Quest = Player:WaitForChild("Quest")
local GUI = script.Parent
local frame = GUI.QuestFrame
local ButtonFrame = GUI.ButtonFrame
UIS.InputBegan:Connect(function(inp, typing)
if typing then return end
if inp.KeyCode == Enum.KeyCode.J then
frame.Visible = not frame.Visible
end
end)
repeat wait() until Quest:WaitForChild("QuestTask").Value ~= "" or nil
if Quest:WaitForChild("QuestTask").Value ~= "" or Quest:WaitForChild("QuestTask").Value ~= nil then
end
To embed this project on your website, copy the following code and paste it into your website's HTML: