I have had a persistent bug in my game that I cannot seem to fix. I have a script in ServerScriptService that evaluates a player's rank in the group and assigns them tools accordingly. The problem is that on initial load a large percentage of the time the player does not receive the tools. This appears to be most prevalent when it is the first player in the server.
Upon doing a player reset 100% of the time the player gets the tools as I intend.
I have tried many things including suggestions from this post.
Clearly the issue pertains to the tools or player not loading in fully by the time the script executes. I have tried addressing both scenarios with waitFor commands as shown in the code below.
The only scenario I'm not covering is any wait for the group lookup, however I understand that it pauses the script so I should be covered there. Any help would be greatly appreciated.
game.Players.PlayerAdded:Connect(function(Player)
---- Load all player defaults
local thisPlayer ={}
thisPlayer.Name = Player.Name
thisPlayer.UserId = Player.UserId
thisPlayer.Rank = Player:GetRankInGroup(settings.groupId)
... more player defaults are loded
... code to loop through rank levels assigning a Boolean on whether or not to assign various tools
... code that fires an event to send some initialization parameters to the client for later use
Player.CharacterAdded:Connect(function(Character)
wait(Character:WaitForChild("HumanoidRootPart"))
local tool = game.ServerStorage:WaitForChild("SpecifiedTool") -- The tool you want to give
local toolCopy = tool:Clone() -- Make a clone of the original tool
toolCopy.Parent = Player.StarterGear
end) -- charachterAdded
end) -- playerAdded
