Hello, I Need help fixing my time played script, i need it to increase +4 per second when the player buy a gamepass, do anyone know how can i fix this bug?
local Players = game:GetService(“Players”)
local MarketplaceService = game:GetService(“MarketplaceService”)
local GamePassID_X2 = 113157057 – Replace with your Game Pass ID for X2
local GamePassID_X4 = 264808140 – Replace with your Game Pass ID for X4
local GamePassID_X2_PerSecond = 26017526 – Replace with your Game Pass ID for X2 per second
local DeveloperProductID = 1839918053 – Replace with your Developer Product ID for +250 seconds
local DeveloperProductID_500 = 1840210818 – Replace with your Developer Product ID for +500 seconds
local DeveloperProductID_1000 = 1840971653 – Replace with your Developer Product ID for +1000 seconds
local function createLeaderstats(player)
local leaderstats = Instance.new(“Folder”)
leaderstats.Name = “leaderstats”
leaderstats.Parent = player
local playTime = Instance.new("IntValue")
playTime.Name = "TimePlayed"
playTime.Parent = leaderstats
playTime.Value = 0
end
local function updatePlaytime(player, increment)
while player.Parent do
local playTimeAttribute = player:GetAttribute(“PlayTime”) or 0
player:SetAttribute(“PlayTime”, playTimeAttribute + increment)
-- Update leaderboard value
if player:FindFirstChild("leaderstats") and player.leaderstats:FindFirstChild("TimePlayed") then
player.leaderstats.TimePlayed.Value = player.leaderstats.TimePlayed.Value + increment
end
wait(1) -- Update every second
end
end
local function checkAndStartUpdatingPlaytime(player)
local increment = 1
local success_X2, hasPass_X2 = pcall(function() return MarketplaceService:UserOwnsGamePassAsync(player.UserId, GamePassID_X2) end)
local success_X4, hasPass_X4 = pcall(function() return MarketplaceService:UserOwnsGamePassAsync(player.UserId, GamePassID_X4) end)
local success_X2_PerSecond, hasPass_X2_PerSecond = pcall(function() return MarketplaceService:UserOwnsGamePassAsync(player.UserId, GamePassID_X2_PerSecond) end)
if success_X2 and hasPass_X2 then
increment = 2 -- Default multiplier
print("Player has Game Pass X2: Increment set to 2")
end
if success_X4 and hasPass_X4 then
increment = 4 -- X4 multiplier
print("Player has Game Pass X4: Increment set to 4")
end
if success_X2_PerSecond and hasPass_X2_PerSecond then
increment = increment + 4 -- X2PerSecond multiplier
print("Player has Game Pass X2 Per Second: Increment increased by 4")
end
-- Debug logs to ensure correct increment value is being set
print("Player:", player.Name, "Final Increment set to:", increment)
spawn(function() updatePlaytime(player, increment) end)
end
local function onPlayerAdded(player)
createLeaderstats(player)
player:SetAttribute(“PlayTime”, 0)
checkAndStartUpdatingPlaytime(player)
end
Players.PlayerAdded:Connect(onPlayerAdded)
for _, player in pairs(Players:GetPlayers()) do
onPlayerAdded(player)
end
MarketplaceService.PromptGamePassPurchaseFinished:Connect(function(player, gamePassId, wasPurchased)
if wasPurchased then
if gamePassId == GamePassID_X2 or gamePassId == GamePassID_X4 or gamePassId == GamePassID_X2_PerSecond then
checkAndStartUpdatingPlaytime(player)
end
end
end)
MarketplaceService.ProcessReceipt = function(receiptInfo)
local player = Players:GetPlayerByUserId(receiptInfo.PlayerId)
if player then
local playTimeAttribute = player:GetAttribute(“PlayTime”) or 0
if receiptInfo.ProductId == DeveloperProductID then
player:SetAttribute(“PlayTime”, playTimeAttribute + 250)
elseif receiptInfo.ProductId == DeveloperProductID_500 then
player:SetAttribute(“PlayTime”, playTimeAttribute + 500)
elseif receiptInfo.ProductId == DeveloperProductID_1000 then
player:SetAttribute(“PlayTime”, playTimeAttribute + 1000)
end
if player:FindFirstChild("leaderstats") and player.leaderstats:FindFirstChild("TimePlayed") then
player.leaderstats.TimePlayed.Value = player:GetAttribute("PlayTime")
end
end
return Enum.ProductPurchaseDecision.PurchaseGranted
end