My Trick Or Treat System works but the doors dont work again after being used
Were have i gone wrong ?
local dss = game:GetService(“DataStoreService”)
local ds = dss:GetDataStore(“TrickOrTreat”)
local playersHouses = {}
function saveData(p)
local candy = p.leaderstats.Candy.Value
local houses = playersHouses[p]
pcall(function()
ds:SetAsync(p.UserId, {candy, houses})
end)
end
game.Players.PlayerAdded:Connect(function(p)
local ls = Instance.new("Folder", p)
ls.Name = "leaderstats"
local candy = Instance.new("IntValue", ls)
candy.Name = "Candy"
local candyData = 0
local housesData = {}
pcall(function()
local data = ds:GetAsync(p.UserId)
candyData = data[1]
housesData = data[2]
end)
playersHouses[p] = housesData
candy.Value = candyData
end)
game.Players.PlayerRemoving:Connect(saveData)
game:BindToClose(function()
for i, p in pairs(game.Players:GetPlayers()) do
spawn(saveData(p))
end
end)
for i, house in pairs(script.Parent:GetChildren()) do
if house:IsA("Model") and house:FindFirstChild("Doorbell") then
local doorOpen = false
local cd = house.Doorbell.ClickDetector
cd.MouseClick:Connect(function(p)
if not table.find(playersHouses[p], house.Name) and not doorOpen then
doorOpen = true
local character = game.Players:GetPlayers()[math.random(1, #game.Players:GetPlayers())].Character
character.Archivable = true
character = character:Clone()
character:SetPrimaryPartCFrame(house.Door.CFrame - house.Door.CFrame.LookVector * 2)
wait(math.random(1, 3))
character.Parent = workspace
local cf = house.Door.CFrame
house.Door.CFrame = cf * CFrame.Angles(0, math.rad(90), 0) + (cf.LookVector * house.Door.Size.X/2) + (cf.RightVector * house.Door.Size.X/2)
p.leaderstats.Candy.Value += 5
wait(5)
house.Door.CFrame = cf
character:Destroy()
table.insert(playersHouses[p], house.Name)
doorOpen = false
end
end)
end
end