Hello. I made a script where you can sign yourself in a book and it will stay forever. However its not working. Every message you write in it is getting duplicated. For example
You write message "Hello"
when you leave the game and open book again in the "Other messages" gui there is 2 hello's.
You write 2 messages "hello" and test.
when you leave the game and open book again in the "Other messages" gui there is 2 hello's and 2 "test"
Here's the script because i don't know what to do.
local Datastore = game:GetService("DataStoreService")
local OurDataStore = Datastore:GetDataStore("BookSigns11")
local iDataStore = Datastore:GetDataStore("iDataStore11")
local MiejsceNaNotke = {}
game.Players.PlayerAdded:Connect(function(NewPlr)
repeat wait() until NewPlr.Character and NewPlr.Character.HumanoidRootPart and NewPlr.PlayerGui and MiejsceNaNotke ~= nil
print(MiejsceNaNotke)
for i, v in pairs(MiejsceNaNotke) do
if v then
local TheTemplate = script:WaitForChild("Message"):Clone()
TheTemplate.Text = v
TheTemplate.Parent = NewPlr.PlayerGui.BookGui.Background.Other.OtherMessagesFrame
end
end
end)
local success, i = pcall(function()
return iDataStore:GetAsync("key")
end)
if not i then
print("failed loading i value")
i = 1
end
print("i: " .. i-1)
local success, pages = pcall(function()
print("D")
return OurDataStore:GetAsync("key")
end)
if pages then
for page = 1, i-1 do
local ReadyToShowMessage = pages[page]
for i, v in pairs(pages) do
table.insert(MiejsceNaNotke, v)
end
end
else
pages = {}
end
function save_note(player, text, Template)
local texttext = game.TextService:FilterStringAsync(text, player.UserId)
local texttexttext = texttext:GetNonChatStringForBroadcastAsync()
local ActualText = texttexttext.." by "..player.Name.." Date: "..os.date("%x")
table.insert(pages, ActualText)
local success, err = pcall(function()
OurDataStore:SetAsync("key", pages)
i = i + 1
iDataStore:SetAsync("key", i)
end)
if err then
print("Error while saving data! " .. err)
end
end
game.ReplicatedStorage.Book.Filtering.OnServerEvent:connect(save_note)
game.ReplicatedStorage.Book.Filtering.OnServerEvent:Connect(function(Player, Message, Template)
Player.DidWrote.WroteAlready.Value = true
local FilterText = game.TextService:FilterStringAsync(Message, Player.UserId)
local FilteredText = FilterText:GetNonChatStringForBroadcastAsync()
Template.Text = FilteredText.." by "..Player.Name.." Date: "..os.date("%x")
local ReadyMessage = Template
for i,v in pairs(game.Players:GetChildren()) do
if v then
local ClonedReadyMessage = ReadyMessage:Clone()
ClonedReadyMessage.Parent = v.PlayerGui.BookGui.Background.Other.OtherMessagesFrame
end
end
end)
