Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

Why are my scripts fine in studio and now when I publish my game with api services?

So Im creating a game, the scripts are perfectly fine. Their scripted by professionals, we turned on API services also. When I publish the game its not like it should be. Its not perfectly fine like in studio. What could be the issue?

2 comments

0

Are you doing it on a group game?

0

No, Its a game by my profile.

1 answer

Pro tip:

Before I get into answering your question, I would like to say that ROBLOX studio and the real game are to different things. What I mean is that some scripts works in studio and it doesn't work on the published game.

Why is that you may ask?

This is because the two environments are not the same, one may work in one side but doesn't work on the other. Besides that, the real test is the published game.

Solution:

The cause of your error may be that the datastore itself is not working, I think that the bug was that it didn't actually save with the Player:Removing event

Since you didn't clearly, give a valid description that may not be the case.

You could try this script:

local DataStoreService = game:GetService("DataStoreService")
local Event = game:GetService("ReplicatedStorage"):WaitForChild("Events"):WaitForChild("SaveMyStats")

game.Players.PlayerAdded:Connect(function(player)
	local Stats = Instance.new("Configuration", player)
	Stats.Name = "Stats"
	
	-- Main stats
	
	local diamonds = Instance.new("IntValue", Stats)
	diamonds.Name = "Diamonds"
	diamonds.Value = DataStoreService:GetDataStore("DiamondDataStore"):GetAsync(player.UserId) or 0
	
	local level = Instance.new("IntValue", Stats)
	level.Name = "Level"
	level.Value = DataStoreService:GetDataStore("LevelDataStore"):GetAsync(player.UserId) or 1
	--
	-- Other stats
	local parachute	 = Instance.new("StringValue", Stats)
	parachute.Name = "Parachute"
	parachute.Value = DataStoreService:GetDataStore("ParachuteDataStore"):GetAsync(player.UserId) or "Black"
	
	local skydiveseconds = Instance.new("IntValue", Stats)
	skydiveseconds.Name = "SkydiveSeconds"
	skydiveseconds.Value = DataStoreService:GetDataStore("SkydiveSecondsDataStore"):GetAsync(player.UserId) or 0
	
	local tutorial = Instance.new("BoolValue", Stats)
	tutorial.Name = "Tutorial"
	tutorial.Value = DataStoreService:GetDataStore("TutorialDataStore"):GetAsync(player.UserId) or false
	--
end)

function SaveMyStats(player)
	-- Main stats
	if player:FindFirstChild("Stats") then
		DataStoreService:GetDataStore("DiamondDataStore"):SetAsync(player.UserId, player.Stats:FindFirstChild("Diamonds").Value)
		local level = DataStoreService:GetDataStore("LevelDataStore"):GetAsync(player.UserId)
		if level ~= nil and level <= player.Stats:FindFirstChild("Level").Value	then
			DataStoreService:GetDataStore("LevelDataStore"):SetAsync(player.UserId, player.Stats:FindFirstChild("Level").Value)
		elseif level == nil then
			DataStoreService:GetDataStore("LevelDataStore"):SetAsync(player.UserId, player.Stats:FindFirstChild("Level").Value)
		end
		--
		-- Other stats
		DataStoreService:GetDataStore("ParachuteDataStore"):SetAsync(player.UserId, player.Stats:FindFirstChild("Parachute").Value)
		DataStoreService:GetDataStore("SkydiveSecondsDataStore"):SetAsync(player.UserId, player.Stats:FindFirstChild("SkydiveSeconds").Value)
		DataStoreService:GetDataStore("TutorialDataStore"):SetAsync(player.UserId, player.Stats:FindFirstChild("Tutorial").Value)
		
	end
end

game.Players.PlayerRemoving:Connect(SaveMyStats)
Event.OnServerEvent:Connect(SaveMyStats)

If you want to change the stats just edit the leaderstats.

If you need to learn about datastore 's click here

1 comment

1

Please contact me if any issues.

This discussion is preserved as it was. New answers, comments, and votes are closed.