Hey. So for my game, it is supposed to use datastores and award BlitzCreditz to the player for winning a round. Everything works fine up until line 208, when it is supposed to give the credits to the player. It doesn't award anything or update the leaderboard. I have tried everything at this point! Please no annoying vague answers, not to be picky but I ask that you please directly fix the problems, I'm a very novice scripter. Here's my code; sorry it's long.
local roundtimer = 90 local intermissiontimer = 5 local datastore = game:GetService("DataStoreService"):GetDataStore("playerdata") local serverstorage = game:GetService("ServerStorage") local replicatedstorage = game:GetService("ReplicatedStorage") local debris = game:GetService("Debris") local maps = serverstorage:WaitForChild("Maps") local mapholder = game.Workspace:WaitForChild("MapHolder") local gear = serverstorage:WaitForChild("Gear") local statustag = replicatedstorage:WaitForChild("Status") local timertag = replicatedstorage:WaitForChild("TimerTag") local Winner = replicatedstorage:WaitForChild("Winner") local resulttag = replicatedstorage:WaitForChild("result") local event = replicatedstorage:WaitForChild("RemoteEvent") local firstrun = true local playerdata = {} function awardwin(players) if type(players) == type({}) then for i = 1, #players do if players[i]:FindFirstChild("MatchTag") then if players[i]:FindFirstChild('leaderstats') then if players[i].leaderstats:FindFirstChild('BlitzCreditz') then local stat = players[i].leaderstats.Wins stat.Value = stat.Value + 1 datastore:UpdateAsync(players.userId).Wins = datastore:UpdateAsync(players.userId).Wins + 1 end end end end end end function awardcredit(players, credits) if type(players) == type({}) then for i = 1, #players do if players[i]:FindFirstChild("MatchTag") then if players[i]:FindFirstChild('leaderstats') then if players[i].leaderstats:FindFirstChild('BlitzCreditz') then local stat = players[i].leaderstats.BlitzCreditz stat.Value = stat.Value + credits datastore:UpdateAsync(players.userId).BC = datastore:UpdateAsync(players.userId).BC + credits end end end end end end function playeradded(player) local mydata = datastore:GetAsync(player.userId) or {} mydata.wins = mydata.wins or 0 mydata.BC = mydata.BC or 0 mydata.hyperlaser = mydata.hyperlaser or 0 playerdata[player.userId] = mydata local leaderstats = Instance.new("Model") leaderstats.Name = "leaderstats" leaderstats.Parent = player local wins = Instance.new("IntValue") wins.Name = "Wins" wins.Value = mydata.wins wins.Parent = leaderstats local hyperlaser = Instance.new("IntValue") hyperlaser.Name = "Hyperlaser" hyperlaser.Value = mydata.hyperlaser hyperlaser.Parent = player local BC = Instance.new("IntValue") BC.Name = "BlitzCreditz" BC.Value = mydata.BC BC.Parent = leaderstats end game.Players.PlayerAdded:connect(playeradded) for _, player in pairs(game.Players:GetPlayers()) do playeradded(player) end if firstrun == true then wait(15) firstrun = false end function permsave(player) if player then local mydata = playerdata[player.userId] if mydata then datastore:SetAsync(player.userId, mydata) end end end game.Players.PlayerRemoving:connect(function(player) if player then permsave(player) playerdata[player.userId] = nil end end) game.OnClose = function() for i, v in pairs(playerdata) do datastore:SetAsync(i, v) end end while true do --Waits 1 minute in between games m = Instance.new("Message") --Creates a new message local players = game.Players:GetChildren() wait(intermissiontimer) m.Parent = game.Workspace m.Text = "Choosing Map..." wait(3) m.Text = "Map is 'The Classic Map'" wait(3) m.Parent = nil mapholder:ClearAllChildren() wait(1) local allmaps = maps:GetChildren() local newmap = allmaps[math.random(1, #allmaps)]:clone() newmap.Parent = mapholder print("FoundRandomMap") contestants = {} while true do print("Finding Players") for _, player in pairs(game.Players:GetPlayers()) do if player and player.Character then local humanoid = player.Character:FindFirstChild("Humanoid") if humanoid and humanoid.Health > 0 then table.insert(contestants, player) end end end if #contestants >= 1 then break end wait(1) end for _, player in pairs (contestants)do if player and player.Character then local torso = player.Character:FindFirstChild("Torso") local humanoid = player.Character:FindFirstChild("Humanoid") if torso and humanoid then humanoid.Health = 100 end local matchtag = Instance.new("StringValue") matchtag.Name = "MatchTag" matchtag.Parent = player.Character local backpack = player:FindFirstChild("Backpack") if backpack then local allgear = gear:GetChildren() local randomgear = allgear[math.random(1, #allgear)]:clone() randomgear.Parent = backpack torso.CFrame = CFrame.new(newmap:WaitForChild("floor").Position + Vector3.new(0, 10, 0)) print("Teleported player") end end local localtimer = roundtimer while localtimer > 0 do print("Run") wait(1) localtimer = localtimer - 1 activecontestants = {} for _, player in pairs(contestants) do if player then local character = player.Character if character then local humanoid = character:FindFirstChild("Humanoid") local matchtag = character:FindFirstChild("MatchTag") if matchtag and humanoid and humanoid.Health > 0 then table.insert(activecontestants, player) end end end end if #activecontestants <= 1 then awardcredit(players, 4) awardwin(players) break end end wait(5) for _, player in pairs(contestants) do if player and player.Character then local humanoid = player.Character:FindFirstChild("Humanoid") local matchtag = player:FindFirstChild("MatchTag") if matchtag then player.Character:MoveTo(Vector3.new(-73.024, 4.478, 144.138)) end if humanoid then humanoid:UnequipTools() end end local backpack = player:FindFirstChild("Backpack") if backpack then backpack:ClearAllChildren() print("Cleared backpack") end end mapholder:ClearAllChildren() m.Parent = game.Workspace m.Text = "Blitz over! " wait(3) m.Text = "You have 10 seconds until the start of the next Blitz." wait(3) m.Parent = nil m:remove() wait(2) end end