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





Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: