Ok great i will now try to put that in my script but asides from that apparently instead of creating it once the script is like creating it more then once. what its creating is the information that is going to be saved.

Like I even added a debounce.
I should tell you guys my script shouldn’t I
function DragonHandler:ConnectDragonToCharacter(player,Dragon,SlotPosition)
local Character = player.Character or player.CharacterAdded:Wait()
local HumanoidRootPart = Character:WaitForChild("HumanoidRootPart")
local PlayerDragons = player:WaitForChild("PlayerDragons")
local DragonInfo = Dragon:WaitForChild("DragonInfo")
local success, err = pcall(function()
if Character:FindFirstChild(player.Name) then
Character:FindFirstChild(player.Name):Destroy()
end
Dragon:SetPrimaryPartCFrame(HumanoidRootPart.CFrame)
local BabyDragon = Dragon:WaitForChild("BabyDragon")
local createDb = false
if createDb == false then
createDb = true
local DragonStringValue = Instance.new("StringValue",PlayerDragons)
DragonStringValue.Name = Dragon.Name
local DragonNames = {
"Lucy",
"Alex",
"James",
"John",
"Pro",
"Gamer",
"Dragon",
"Miles",
"Jenny",
"Mack"
}
local DragonNameSV = Instance.new("StringValue")
DragonNameSV.Name = "DragonName"
DragonNameSV.Parent = DragonStringValue
DragonNameSV.Value = DragonNames[math.random(1,#DragonNames)]
local DragonLevelNV = Instance.new("NumberValue")
DragonLevelNV.Parent = DragonStringValue
DragonLevelNV.Name = "DragonLevel"
local DragonExp = Instance.new("NumberValue")
DragonExp.Parent = DragonStringValue
DragonExp.Name = "DragonExp"
end
local CharacterAttachA1 = Instance.new("Attachment",HumanoidRootPart)
CharacterAttachA1.Name = "CharacterAttachA1"
CharacterAttachA1.Orientation = Vector3.new(0,-180,90)
local CharacterAttach2A2 = Instance.new("Attachment",HumanoidRootPart)
CharacterAttach2A2.Name = "CharacterAttach2A2"
CharacterAttach2A2.Orientation = Vector3.new(-0, 178, 90)
local DragonAttachment = Dragon.PrimaryPart.HBA
local DragonAlignPosition = Dragon.PrimaryPart.AlignPosition
local DragonAlignOrientation = Dragon.PrimaryPart.AlignOrientation
DragonAlignPosition.MaxForce = 500000
DragonAlignPosition.Responsiveness = 20
DragonAlignOrientation.MaxTorque = 500000
DragonAlignOrientation.Responsiveness = 20
DragonAlignPosition.Attachment0 = DragonAttachment
DragonAlignPosition.Attachment1 = CharacterAttachA1
DragonAlignOrientation.Attachment0 = DragonAttachment
DragonAlignOrientation.Attachment1 = CharacterAttach2A2
Dragon.PrimaryPart.Position = HumanoidRootPart.Position + Vector3.new(0,2.5,0)
Dragon.Parent = Character
local DragonClone = script.Dragon:Clone()
DragonClone.Parent = Dragon
DragonClone.Disabled = false
local Location = PlayerDragons:FindFirstChild(Dragon.Name)
local DragonNameTag = Dragon.PrimaryPart:FindFirstChild("DragonNameTag")
DragonNameTag.DragonName.Text = Location:WaitForChild("DragonName").Value
DragonNameTag.DragonLevel.Text = Location:WaitForChild("DragonName").Value.."'s Level: "..Location:WaitForChild("DragonLevel").Value
Location.DragonName.Changed:Connect(function()
DragonNameTag.DragonName.Text = Location:WaitForChild("DragonName").Value
DragonNameTag.DragonLevel.Text = Location:WaitForChild("DragonName").Value.."'s Level: "..Location:WaitForChild("DragonLevel").Value
end)
DragonHandler:CheckDragonAge(Dragon,SlotPosition,CharacterAttachA1,CharacterAttach2A2)
createDb = false
end)
end