This part makes no sense. You are trying to save data via :GetAsync(). Do you mean :SetAsync()? If you do mean SetAsync why are you trying to save it when the player joins. They will have no data when they first join unless they have it in the datastore which the first part of the main part of the if statement deals with, so your just using up some of your rate limit for something you really don’t need.
You need to have your :GetAsync inside of a pcall function (also anything to do with datastores such as :SetAsync(). If an error occurs it will make the whole script not work so you need it inside of a pcall function.
There is no end) at the bottom of the function you connect to so it will very likely error unless you just forget to copy the end) on the DevForum.
Also the key you have there to set the data is different then the one you use to get the data. To get the data you have plr + userid but when saving the data you have the id + userid.
Only way is like what I said about the else in the if statement there is no need to get or save data there.
You can just add them in a table like your doing inside the code you sent. You should be able to save more then 7 values inside of a table unless I am mistaken. Unsure why your trying to save more then 7 values inside of a datastore however.