I am trying to make a game but you need to complete quests to unlock the swords. When you complete a quest it will update a BoolValue and make the button to use the sword visible. You start off with the Starter Sword and the Holy Lightning Blade if you have the VIP gamepass. It is working fine in studio but it won't work in game.
View in studio
View in game
Script that creates the values and stores them once the player leaves:
local datastoreservice = game:GetService("DataStoreService")
local odata = datastoreservice:GetDataStore("show")
local Market = game:GetService("MarketplaceService")
game.Players.PlayerAdded:Connect(function(plr)
local show = Instance.new("Folder", plr)
show.Name = "show"
local HLB = Instance.new("BoolValue", show)
HLB.Name = "HLB"
local MB = Instance.new("BoolValue", show)
MB.Name = "MB"
local NS = Instance.new("BoolValue", show)
NS.Name = "NS"
local SB = Instance.new("BoolValue", show)
SB.Name = "SB"
local SS = Instance.new("BoolValue", show)
SS.Name = "SS"
local STS = Instance.new("BoolValue", show)
STS.Name = "STS"
local WS = Instance.new("BoolValue", show)
WS.Name = "WS"
local dMB
local dNS
local dSB
local dSS
local dSTS
local dWS
pcall(function()
dMB = odata:GetAsync(plr.UserId.."-dMB")
dNS = odata:GetAsync(plr.UserId.."-dNS")
dSB = odata:GetAsync(plr.UserId.."-dSB")
dSS = odata:GetAsync(plr.UserId.."-dSS")
dSTS = odata:GetAsync(plr.UserId.."-dSTS")
dWS = odata:GetAsync(plr.UserId.."-dWS")
end)
if dMB ~= nil then
if Market:UserOwnsGamePassAsync(plr.UserId, 7483219) then
HLB.Value = true
else
HLB.Value = false
end
MB.Value = dMB
NS.Value = dNS
SB.Value = dSB
SS.Value = dSS
STS.Value = dSTS
WS.Value = dWS
else
if Market:UserOwnsGamePassAsync(plr.UserId, 7483219) then
HLB.Value = true
else
HLB.Value = false
end
MB.Value = false
NS.Value = false
SB.Value = false
SS.Value = false
STS.Value = true
WS.Value = false
end
end)
game.Players.PlayerRemoving:Connect(function(plr)
local show = plr:FindFirstChild("show")
local MB = show.MB
local NS = show.NS
local SB = show.SB
local SS = show.SS
local STS = show.STS
local WS = show.WS
pcall(function()
odata:SetAsync(plr.UserId.."-dMB", MB.Value)
odata:SetAsync(plr.UserId.."-dNS", NS.Value)
odata:SetAsync(plr.UserId.."-dSB", SB.Value)
odata:SetAsync(plr.UserId.."-dSS", SS.Value)
odata:SetAsync(plr.UserId.."-dSTS", STS.Value)
odata:SetAsync(plr.UserId.."-dWS", WS.Value)
end)
end)
For example: the script that makes the Holy Lightning Blade visible (its parent is the button):
local show = game.Players.LocalPlayer:WaitForChild("show")
local sHLB = show:WaitForChild("HLB")
sHLB.Changed:Connect(function()
if sHLB.Value == true then
script.Parent.Visible = true
end
end)
So any ideas?
