Hello, i am trying to do a forums GUI with datastores, but the problem is that when i post it duplicates, an example
if the message 1 is a
and the message 2 is b
i will get
a b b
and if the message 3 is c i will get
a c c c
It overwrites the other messages and duplicates, why ?
function newp(info)
local a = script.Parent.pos:Clone()
a.Name = info.realName
a.Parent = script.Parent.psts
a.Visible = true
local success, image, ready = pcall(function()
return game.Players:GetUserThumbnailAsync(info.usid, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
end)
if success then
if ready then
a.im.Image = image
end
end
local elaboratedUD = UDim2.new(0,0,0,script.Parent.psts.UIListLayout.AbsoluteContentSize.Y)
script.Parent.psts.CanvasSize = elaboratedUD
a.des.Text = info.Text
a.us.Text = info.Name
if info.Name == "maumaumaumaumaumau" then
a.OW.Visible = true
end
if info.usid == script.Parent.Parent.Parent.Parent.UserId then
a.del.Visible = true
a.del.MouseButton1Click:Connect(function()
a:Destroy()
print("clicked")
local dtstore = game:GetService("DataStoreService"):GetDataStore("adatastore")
local ps = dtstore:GetAsync("Posts")
for i,v in pairs(ps) do
if v == info.id then
print("found")
table.remove(ps,i)
end
end -- remove the post from table if the delete button was clicked
dtstore:SetAsync(info.realName,false)
dtstore:SetAsync("Posts",ps)
loadData()
end)
end
if script.Parent.Parent.Parent.Parent.Name == "maumaumaumaumaumau" then
if a.del.Visible == false then
a.del.Visible = true
-- for me
a.del.MouseButton1Click:Connect(function()
a:Destroy()
local dtstore = game:GetService("DataStoreService"):GetDataStore("adatastore")
local ps = dtstore:GetAsync("Posts")
for i,v in pairs(ps) do
if v == info.id then
table.remove(ps,i)
end
end -- delete the post from the table posts
dtstore:SetAsync(info.realName,false)
dtstore:SetAsync("Posts",ps)
loadData()
end)
end
end
end
function loadData()
local dtstore = game:GetService("DataStoreService"):GetDataStore("adatastore")
local ps = dtstore:GetAsync("Posts")
for i,v in pairs(script.Parent.psts:GetChildren()) do
if v:IsA("Frame") then
v:Destroy()
end
end
if not ps then
dtstore:SetAsync("Posts",{})
ps = dtstore:GetAsync("Posts")
end
for i,v in pairs(ps) do
local dt = dtstore:GetAsync("P-"..v)
if dt ~= false then
newp(dt)
end
end
end
loadData()
script.Parent.send.OnServerEvent:Connect(function(plr,txt)
local dtstore = game:GetService("DataStoreService"):GetDataStore("adatastore")
local ps = dtstore:GetAsync("Posts")
local nm = 0
for i,v in pairs(ps) do
if not ps[tostring(tonumber(v)+1)] then
nm = tonumber(v)+1 -- make a new number
break
end
end
if nm == 0 then
nm = 1
end
table.insert(ps, tostring(nm))
dtstore:SetAsync("Posts", ps)
dtstore:SetAsync("P-"..tostring(nm), {
realName = "P-"..tostring(nm),
usid = plr.UserId,
Name = plr.Name,
Text = txt,
id = tostring(nm)
}) -- set the table data
loadData() -- reload the data
end)
