Anyway to detect if is the first time a person joins the game?

You can use a data store, if there is nothing on the datastore you can create one to say that they joined

Example
local DSS = game:GetService("DataStoreService")  
local store = DSS:GetDataStore("Joins") 
game.Players.PlayerAdded:Connect(function(plr)
local didjoin = false 
local firsttime = false
local success, joined =  pcall(function()
 return store:GetAsync(plr.UserId)
end)
if success then
 if joined = 1 then 
    didjoin = true
else
    store:SetAsync(plr.UserId, 1)
    firsttime = true
end
end
if not success then
print("failed")
end
end)

If you don’t understand this you can read more about datastores here: Data Stores or I can recommend this video from @UseCode_Tap whos videos helped me a lot when I was getting started. Data Stores Video

17 Likes