XP Giving System Bugged

I Need Help With My Script, So I’m Trying Todo If Player FInishes Obby Then Give Player Xp

Full Script

---///Services

local ReplicatedStorageService = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")

---///locals

local ReplicatedStorage = game.ReplicatedStorage
local MadeToEnd = ReplicatedStorage.Events.MadeToEnd
local sendtime = ReplicatedStorage.Events.SendTime
local LocalPlayer = game.Players.LocalPlayer

---///Script

script.Parent.Touched:Connect(function(hit)
	local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
	local Playing = plr.Playing
	if hit.Parent:FindFirstChild("Humanoid") then
		if Playing.Value == true then

			Playing.Value = false -- Makes Value False

			MadeToEnd:FireClient(plr) -- Fireds Clinet Side

			local function gettime(player, data)
				
				print("False Info")
				
				print(player.Name .. " got " .. data)

				if data < 40 then
					plr.leaderstats.xp.Value = plr.leaderstats.xp.Value + (50 - data)
				else
					plr.leaderstats.xp.Value = plr.leaderstats.xp.Value + 15


				end

			end

		end

	end

end)

What’s Broken

			local function gettime(player, data)
				
				print("Test")
				
				print(player.Name .. " got " .. data)

				if data < 40 then
					plr.leaderstats.xp.Value = plr.leaderstats.xp.Value + (50 - data)
				else
					plr.leaderstats.xp.Value = plr.leaderstats.xp.Value + 15


				end

			end

Photo’s:

image image image

You never exactly connected the function gettime, so it doesn’t fire the moment you touch the Part

---///Services

local ReplicatedStorageService = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")

---///locals

local ReplicatedStorage = game.ReplicatedStorage
local MadeToEnd = ReplicatedStorage.Events.MadeToEnd
local sendtime = ReplicatedStorage.Events.SendTime
local LocalPlayer = game.Players.LocalPlayer

---///Script

script.Parent.Touched:Connect(function(hit)
	local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
	local Playing = plr.Playing
	if hit.Parent:FindFirstChild("Humanoid") then
		if Playing.Value == true then

			Playing.Value = false -- Makes Value False

			MadeToEnd:FireClient(plr) -- Fireds Clinet Side

			print(player.Name .. " got " .. data)

			if data < 40 then
				plr.leaderstats.xp.Value = plr.leaderstats.xp.Value + (50 - data)
			else
				plr.leaderstats.xp.Value = plr.leaderstats.xp.Value + 15
			end
		end
	end
end)

You never exactly connected the function gettime , so it doesn’t fire the moment you touch the Part

I NEED “gettime” To Find The Data

Well you’ll have to separate it then, it won’t fire even if you put it inside a Touched event:

Also what exactly is “Data” even defined as…? A Number/Int value of some sort? You didn’t include it inside your OP

---///Services

local ReplicatedStorageService = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")

---///locals

local ReplicatedStorage = game.ReplicatedStorage
local MadeToEnd = ReplicatedStorage.Events.MadeToEnd
local sendtime = ReplicatedStorage.Events.SendTime
local LocalPlayer = game.Players.LocalPlayer

---///Script

script.Parent.Touched:Connect(function(hit)
	local plr = game.Players:GetPlayerFromCharacter(hit.Parent)
	local Playing = plr.Playing
	if hit.Parent:FindFirstChild("Humanoid") then
		if Playing.Value == true then

			Playing.Value = false -- Makes Value False
            gettime(plr, nil) --I don't know what Data is defined as
			MadeToEnd:FireClient(plr) -- Fireds Clinet Side
		end
	end
end)

local function gettime(player, data)	
    if not player then
        return
    end
	print("False Info")	
	print(player.Name .. " got " .. data)

	if data < 40 then
		plr.leaderstats.xp.Value = plr.leaderstats.xp.Value + (50 - data)
	else
		plr.leaderstats.xp.Value = plr.leaderstats.xp.Value + 15
	end
end

gettime(nil, nil)