Hit Play [F5] inside Roblox Studio and copy the script PlayerModule inside Players > your name > PlayerScripts.
Once you’re done with that, hit Stop [Shift + F5] and paste it inside StarterPlayer > StarterPlayerScripts.
Finally, go inside StarterPlayer > StarterPlayerScripts > PlayerModule > CameraModule > MouseLockController and change this line
local DEFAULT_MOUSE_LOCK_CURSOR = "rbxasset://textures/MouseLockedCursor.png"
Yeah, for regular cursors it’s even easier.
Put this inside a LocalScript in StarterPack and put this is the code:
wait() --necessary wait
--wait() --if the cursor still bugs remove the two dashes at the start of the line
game.Players.LocalPlayer:GetMouse().Icon = image_id
LocalScript.
And it has to be in StarterPack as if you were adding a tool. You don’t need to insert it into a tool though.
This is because if the cursor loads too fast, then Roblox cursor will override that, and Instances inside StarterGear will load after the character. By that the default Roblox cursor should be loaded.