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