Furthermore, I am also doing my best to try and secure the game to the best of my ability. Is this method considered faulty and impractical? Should I rather just script all the values from ServerScriptService?
There is a bug present where anything destroyed in the character gets replicated to the server, this could potentially break your server scripts if not handled correctly, for now it is best to store value objects outside of character, it is completely safe since they will be managed from the server.
1.) Create a server script within the the ServerScriptService.
2.) Have that server script responsible for managing/creating the values. For ex.:
local RS = game:GetService("ReplicatedStorage")
game.Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(character)
local afkVal = Instance.new("BoolValue")
afkVal.Name = "AFK"
afkVal.Value = true
afkVal.Parent = character
--Then so on more values added ect. ect.
end)
end)