Hello Developers,
Lastly i was working on time badge (Or basically badge that will be awarded when you’re 10, 30 or 60 minutes in server.)
The problem is that only 10 minute variant badge is awarded. The other two (30 and 60) aren’t awarded.
I tried reviewing the script, but was not able to find anything that may cause it.
10 minutes script:
local Time = 600 -- Here you can adjust how long a player needs to be in the game to get the badge.
local PlayersJoinedTime = {}
local function awardBadge(player)
if not player:FindFirstChild("BadgeAwarded") then
local BadgeAwarded = Instance.new("BoolValue")
BadgeAwarded.Name = "BadgeAwarded"
BadgeAwarded.Parent = player
game:GetService("BadgeService"):AwardBadge(player.UserId, BadgeID)
end
end
local function trackJoinedTime(player)
PlayersJoinedTime[player] = tick()
end
local function checkJoinedTime()
for player, joinedTime in pairs(PlayersJoinedTime) do
if tick() - joinedTime >= Time then
awardBadge(player)
PlayersJoinedTime[player] = nil
end
end
end
game.Players.PlayerAdded:Connect(function(player)
trackJoinedTime(player)
end)
while true do
checkJoinedTime()
wait(1)
end
30 minutes script:
local Time = 1800 -- Here you can adjust how long a player needs to be in the game to get the badge.
local PlayersJoinedTime = {}
local function awardBadge(player)
if not player:FindFirstChild("BadgeAwarded") then
local BadgeAwarded = Instance.new("BoolValue")
BadgeAwarded.Name = "BadgeAwarded"
BadgeAwarded.Parent = player
game:GetService("BadgeService"):AwardBadge(player.UserId, BadgeID)
end
end
local function trackJoinedTime(player)
PlayersJoinedTime[player] = tick()
end
local function checkJoinedTime()
for player, joinedTime in pairs(PlayersJoinedTime) do
if tick() - joinedTime >= Time then
awardBadge(player)
PlayersJoinedTime[player] = nil
end
end
end
game.Players.PlayerAdded:Connect(function(player)
trackJoinedTime(player)
end)
while true do
checkJoinedTime()
wait(1)
end
type or paste code here
60 minutes script:
local BadgeID = 147193319471618 -- Change to Your Badge ID
local Time = 3600 -- Here you can adjust how long a player needs to be in the game to get the badge.
local PlayersJoinedTime = {}
local function awardBadge(player)
if not player:FindFirstChild("BadgeAwarded") then
local BadgeAwarded = Instance.new("BoolValue")
BadgeAwarded.Name = "BadgeAwarded"
BadgeAwarded.Parent = player
game:GetService("BadgeService"):AwardBadge(player.UserId, BadgeID)
end
end
local function trackJoinedTime(player)
PlayersJoinedTime[player] = tick()
end
local function checkJoinedTime()
for player, joinedTime in pairs(PlayersJoinedTime) do
if tick() - joinedTime >= Time then
awardBadge(player)
PlayersJoinedTime[player] = nil
end
end
end
game.Players.PlayerAdded:Connect(function(player)
trackJoinedTime(player)
end)
while true do
checkJoinedTime()
wait(1)
end
Note: 10 minutes and 30 minutes don’t show the badge id when copied. I have no idea why, but the lane with badge id is there.
I would be really happy for any help!
Thanks in advance,
jeziskrista