Fix points on replayed rounds
This commit is contained in:
		
							parent
							
								
									1978768a5d
								
							
						
					
					
						commit
						3073897ce2
					
				@ -6,7 +6,7 @@ local settings = {
 | 
				
			|||||||
	JackpotMax = 2500,
 | 
						JackpotMax = 2500,
 | 
				
			||||||
	JackpotMultiplier = 1.1,
 | 
						JackpotMultiplier = 1.1,
 | 
				
			||||||
	MinimumRounds = 5,
 | 
						MinimumRounds = 5,
 | 
				
			||||||
	EndroundPoints = 50,		-- Points to give at the end of the round (Jackpot gets added to the points the players get)
 | 
						EndroundPoints = 10,		-- Points to give at the end of the round (Jackpot gets added to the points the players get)
 | 
				
			||||||
	ZombiePointsFactor = 0.5,	-- Factor of points zombies get of the points payout after round end
 | 
						ZombiePointsFactor = 0.5,	-- Factor of points zombies get of the points payout after round end
 | 
				
			||||||
	LosePointReduction = 0.85	-- Factor of points that gets taken away from players who lost
 | 
						LosePointReduction = 0.85	-- Factor of points that gets taken away from players who lost
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -58,7 +58,7 @@ end
 | 
				
			|||||||
local function postStatistics(mapParams, timesPlayed, freqMult, zombiePercentCalcMap)
 | 
					local function postStatistics(mapParams, timesPlayed, freqMult, zombiePercentCalcMap)
 | 
				
			||||||
	PrintMessage(HUD_PRINTTALK,"This map has been played "..timesPlayed.." times with humans winning "..(mapParams.TimesWon).." times.("..(math.Round((mapParams.TimesWon/timesPlayed)*100)).."%)")
 | 
						PrintMessage(HUD_PRINTTALK,"This map has been played "..timesPlayed.." times with humans winning "..(mapParams.TimesWon).." times.("..(math.Round((mapParams.TimesWon/timesPlayed)*100)).."%)")
 | 
				
			||||||
	PrintMessage(HUD_PRINTTALK,"Zombies were playing this map for "..math.Round(zombiePercentCalcMap * 100).."% of the time.")
 | 
						PrintMessage(HUD_PRINTTALK,"Zombies were playing this map for "..math.Round(zombiePercentCalcMap * 100).."% of the time.")
 | 
				
			||||||
	PrintMessage(HUD_PRINTTALK,"frequency multiplier for this map is "..freqMult..". Play maps infrequently for a higher value!")
 | 
						PrintMessage(HUD_PRINTTALK,"frequency multiplier for this map is "..math.Round(freqMult, 2)..". Play maps infrequently for a higher value!")
 | 
				
			||||||
	PrintMessage(HUD_PRINTTALK,"Special boost for this map is "..(mapParams.Boost)..". Tell an admin if you think it should be changed!")
 | 
						PrintMessage(HUD_PRINTTALK,"Special boost for this map is "..(mapParams.Boost)..". Tell an admin if you think it should be changed!")
 | 
				
			||||||
	PrintMessage(HUD_PRINTTALK,"Map jackpot is now "..(mapParams.Jackpot)..".")
 | 
						PrintMessage(HUD_PRINTTALK,"Map jackpot is now "..(mapParams.Jackpot)..".")
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
@ -80,7 +80,10 @@ hook.Add("PostEndRound", "pointsave_givedapoints", function(winner)
 | 
				
			|||||||
	
 | 
						
 | 
				
			||||||
	timer.Simple(0, function()
 | 
						timer.Simple(0, function()
 | 
				
			||||||
		print("point bonus hook")
 | 
							print("point bonus hook")
 | 
				
			||||||
		local zombiePercentCalcMap = (zombieIntervalCounter / totalIntervalCounter)
 | 
							local zombiePercentCalcMap = 1
 | 
				
			||||||
 | 
							if totalIntervalCounter > 0 then
 | 
				
			||||||
 | 
								zombiePercentCalcMap = (zombieIntervalCounter / totalIntervalCounter)
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
		local timesPlayed = mapParams.TimesWon + mapParams.TimesLost
 | 
							local timesPlayed = mapParams.TimesWon + mapParams.TimesLost
 | 
				
			||||||
		local freqMult = 1 / math.pow(math.Max(timesPlayed, 10) / 10, 0.2) + 1
 | 
							local freqMult = 1 / math.pow(math.Max(timesPlayed, 10) / 10, 0.2) + 1
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
@ -125,11 +128,13 @@ hook.Add("PostEndRound", "pointsave_givedapoints", function(winner)
 | 
				
			|||||||
		
 | 
							
 | 
				
			||||||
		-- Calculate points to give
 | 
							-- Calculate points to give
 | 
				
			||||||
		local pointsToGive
 | 
							local pointsToGive
 | 
				
			||||||
 | 
							local jackpot = 0
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if winner == TEAM_HUMAN then
 | 
							if winner == TEAM_HUMAN then
 | 
				
			||||||
			local finalMultiply = (mapParams.Boost * freqMult * (mapParams.TimesLost / timesPlayed) * zombiePercentCalcMap)
 | 
								local finalMultiply = (mapParams.Boost * freqMult * (mapParams.TimesLost / timesPlayed) * zombiePercentCalcMap)
 | 
				
			||||||
			PrintMessage(HUD_PRINTTALK, "Congratulations, you won the jackpot of "..mapParams.Jackpot.." for winning this round")
 | 
								PrintMessage(HUD_PRINTTALK, "Congratulations, every survivor won the jackpot of "..mapParams.Jackpot.." for winning this round")
 | 
				
			||||||
			pointsToGive = math.Round((settings.EndroundPoints * finalMultiply) + mapParams.Jackpot)
 | 
								pointsToGive = math.Round((settings.EndroundPoints * finalMultiply))
 | 
				
			||||||
 | 
								jackpot = mapParams.Jackpot
 | 
				
			||||||
			mapParams.Jackpot = settings.JackpotStart
 | 
								mapParams.Jackpot = settings.JackpotStart
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			local finalMultiply = (mapParams.Boost * (mapParams.TimesWon / timesPlayed) * zombiePercentCalcMap)
 | 
								local finalMultiply = (mapParams.Boost * (mapParams.TimesWon / timesPlayed) * zombiePercentCalcMap)
 | 
				
			||||||
@ -141,12 +146,13 @@ hook.Add("PostEndRound", "pointsave_givedapoints", function(winner)
 | 
				
			|||||||
		-- Give or take points, and output messages for each player
 | 
							-- Give or take points, and output messages for each player
 | 
				
			||||||
		for k, ply in pairs(player.GetAll()) do
 | 
							for k, ply in pairs(player.GetAll()) do
 | 
				
			||||||
			local pointsToGivePly
 | 
								local pointsToGivePly
 | 
				
			||||||
			local points = ply:GetPoints()
 | 
								local points = math.Round(ply:GetSavedPoints())
 | 
				
			||||||
			-- Calculate points to give for each player (Depending on if the round was lost or won)
 | 
								-- Calculate points to give for each player (Depending on if the round was lost or won)
 | 
				
			||||||
			if ply:Team() == TEAM_HUMAN then
 | 
								if ply:Team() == TEAM_HUMAN then
 | 
				
			||||||
				pointsToGivePly = math.Round(pointsToGive)
 | 
									points = math.Round(ply:GetPoints())
 | 
				
			||||||
 | 
									pointsToGivePly = math.Round(pointsToGive + jackpot)
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
				pointsToGivePly = math.Round(pointsToGive * settings.ZombiePointsFactor) - points * settings.LosePointReduction
 | 
									pointsToGivePly = math.Round(pointsToGive * settings.ZombiePointsFactor - points * settings.LosePointReduction)
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
			-- Limit pointsToGivePly
 | 
								-- Limit pointsToGivePly
 | 
				
			||||||
			if points + pointsToGivePly < 0 then pointsToGivePly = -points end
 | 
								if points + pointsToGivePly < 0 then pointsToGivePly = -points end
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user