In my studio, this save button script works completely fine with the Remote Function.
Client Sided:
local Player = game.Players.LocalPlayer
local MoneyStat = Player.Data.Money
local Id = Player.UserId
local SaveFunction = script.Script.save
local SaveButton = script.Parent
local CanSave = true
local Sound = script.Script.select
local Cooldown = 5
SaveButton.MouseEnter:Connect(function()
SaveButton.TextColor3 = Color3.new(255, 255, 0)
end)
SaveButton.MouseLeave:Connect(function()
SaveButton.TextColor3 = Color3.new(255, 255, 255)
end)
ValueDecrease = function(Value, GuiObject)
Sound:Play()
GuiObject.Text = Value
repeat wait(1)
Value = Value - 1
GuiObject.Text = Value
until Value == 0
GuiObject.Text = "Save"
end
SaveButton.MouseButton1Down:Connect(function()
if CanSave then
CanSave = false
SaveFunction:InvokeServer()
ValueDecrease(60, SaveButton)
CanSave = true
end
end)
Server Sided:
local SaveFunction = script.save
SaveFunction.OnServerInvoke = function(Player)
local Data = Player.Data
local Id = Player.UserId
local Stat = Data.Money
local DataStoreService = game:GetService("DataStoreService")
local Money = DataStoreService:GetDataStore("Money")
Money:SetAsync(Id, Stat.Value)
end
