Remote event ignoring data save

You can write your topic however you want, but you need to answer these questions:

  1. What do you want to achieve?
    A script that fires a remote event when a text button is pressed, and the remote event to add 100 dollars to my leaderboard then data save.
  2. What is the issue?
    Everything is perfect, but the data save isn’t working.
  3. What solutions have you tried so far?
    Using data save was my original solution to local scripts not using data save, but I have tried to google it.

Local script or text button script.

local Players = game:GetService("Players")

local playerGui = Players.LocalPlayer.PlayerGui

local button = playerGui:WaitForChild("ScreenGui").TextButton

local player = game.Players.LocalPlayer

button.MouseButton1Click:Connect(function()

game.ReplicatedStorage.MoneyEvent:FireServer()

end)

Server Script or data saving script.

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local player = game.Players.LocalPlayer
local datastore = game:GetService("DataStoreService"):GetDataStore("SaveData")

local createEvent = Instance.new("RemoteEvent")
createEvent.Name = "MoneyEvent"
createEvent.Parent = ReplicatedStorage

local function onMoneyEventFired()
	player.leaderstats.Money.Value = player.leaderstats.Money.Value + 100
	datastore:GetAsync("id_"..player.UserId, {player.leaderstats.Money.Value, player.leaderstats.Rebirths.Value})
end

createEvent.OnServerEvent:Connect(onMoneyEventFired)

Everything in the script works fine but the data save. If you see something wrong like “money”, “MoneyEvent”, or “createEvent” named to something else thats because I changed it to make my script more universal for the dev forum.

1 Like

may i ask what is this for? you are using :GetAsync and then not using the returned data for no reason?
:GetAsync is used to get stored data in your game
:SetAsync is used to store data in your game

1 Like

As p49p0 above me has stated your using GetAsync when I think your trying to save the data not load it so you should be using SetAsync instead. Also if the second script is (as stated) a server script then you can’t use LocalPlayer to get a player, here’s the script modified:

local ReplicatedStorage = game:GetService("ReplicatedStorage")
-- local Players = game:GetService("Players") - Don't need this anymore
--local player = game.Players.LocalPlayer : Can't use LocalPlayer on a ServerScript
local datastore = game:GetService("DataStoreService"):GetDataStore("SaveData")

local createEvent = Instance.new("RemoteEvent")
createEvent.Name = "MoneyEvent"
createEvent.Parent = ReplicatedStorage

local function onMoneyEventFired(player) -- Now getting the player from the FiredEvent
	player.leaderstats.Money.Value = player.leaderstats.Money.Value + 100
	datastore:SetAsync("id_"..player.UserId, {player.leaderstats.Money.Value, player.leaderstats.Rebirths.Value})
end

createEvent.OnServerEvent:Connect(onMoneyEventFired)
1 Like

You can actually use local player since the remote event sends the data.

1 Like