better check for round based + fix nil values
This commit is contained in:
parent
033d649338
commit
4c6be6ec2d
@ -2,6 +2,16 @@ if game:issingleplayer() then
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- from mpdepotbase.lua, global definition isn't working
|
||||||
|
InventoryCurrencyType = {
|
||||||
|
LaunchCredits = 1,
|
||||||
|
Credits = 2,
|
||||||
|
Parts = 3,
|
||||||
|
CoDPoints = 4,
|
||||||
|
Bonus = 5,
|
||||||
|
Max = 6
|
||||||
|
}
|
||||||
|
|
||||||
custom_depot = {
|
custom_depot = {
|
||||||
collection_details_menu = nil,
|
collection_details_menu = nil,
|
||||||
data = {
|
data = {
|
||||||
|
@ -1,17 +1,48 @@
|
|||||||
local player_score = 0
|
-- from roundend.lua, dev comments says that the game["round_end"] array contains indexes for this table
|
||||||
|
local ending_reasons = {
|
||||||
|
"MP_DRAW",
|
||||||
|
"LUA_MENU_REPORT_DRAW",
|
||||||
|
"MP_ROUND_WIN",
|
||||||
|
"MP_ROUND_LOSS",
|
||||||
|
"LUA_MENU_REPORT_VICTORY",
|
||||||
|
"LUA_MENU_REPORT_DEFEAT",
|
||||||
|
"MP_HALFTIME",
|
||||||
|
"MP_OVERTIME",
|
||||||
|
"MP_ROUNDEND",
|
||||||
|
"MP_INTERMISSION",
|
||||||
|
"MP_SWITCHING_SIDES",
|
||||||
|
"MP_MATCH_BONUS_IS",
|
||||||
|
"MP_MATCH_TIE",
|
||||||
|
"MP_GAME_END",
|
||||||
|
"SPLASHES_BLANK"
|
||||||
|
}
|
||||||
|
|
||||||
|
local function starts_with(str, start)
|
||||||
|
return str:sub(1, #start) == start
|
||||||
|
end
|
||||||
|
|
||||||
local player_old_score = 0
|
local player_old_score = 0
|
||||||
|
|
||||||
Scoreboard_orig = LUI.MenuBuilder.m_types_build["scoreboard"]
|
local scoreboard_orig = LUI.MenuBuilder.m_types_build["scoreboard"]
|
||||||
Scoreboard = function(unk1, unk2)
|
local scoreboard = function(unk1, unk2)
|
||||||
local scoreboard = Scoreboard_orig(unk1, unk2)
|
local scoreboard = scoreboard_orig(unk1, unk2)
|
||||||
|
|
||||||
scoreboard:registerOmnvarHandler("ui_round_end", function(f22_arg0, f22_arg1)
|
scoreboard:registerOmnvarHandler("ui_round_end", function(f22_arg0, f22_arg1)
|
||||||
if GameX.IsRankedMatch() then
|
if GameX.IsRankedMatch() then
|
||||||
|
local player_score = 0
|
||||||
|
|
||||||
local gamemode = GameX.GetGameMode()
|
local gamemode = GameX.GetGameMode()
|
||||||
local player_stats = Game.GetPlayerScoreInfoAtRank(Game.GetPlayerTeam(), Game.GetPlayerScoreRanking())
|
local player_stats = Game.GetPlayerScoreInfoAtRank(Game.GetPlayerTeam(), Game.GetPlayerScoreRanking())
|
||||||
|
|
||||||
if Engine.GetDvarInt(string.format("scr_%s_halftime", gamemode)) == 1 or IsGameTypeRoundBased(gamemode) or
|
--[[
|
||||||
gamemode == "conf" or gamemode == "war" then
|
this will do the job for when its needed, aka when round loss/win occurs
|
||||||
|
this check may be true more than once cuz this callback happens 3 times,
|
||||||
|
but the player_old_score variable will stop us from adding more currency
|
||||||
|
]] --
|
||||||
|
local unlocalized_string = ending_reasons[Game.GetOmnvar("ui_round_end_title")]
|
||||||
|
local is_round_based = starts_with(unlocalized_string, "MP_ROUND") or IsGameTypeRoundBased(gamemode)
|
||||||
|
|
||||||
|
if is_round_based or gamemode == "conf" or gamemode == "war" then
|
||||||
player_score = player_stats.score
|
player_score = player_stats.score
|
||||||
else
|
else
|
||||||
player_score = player_stats.extrascore0
|
player_score = player_stats.extrascore0
|
||||||
@ -19,7 +50,7 @@ Scoreboard = function(unk1, unk2)
|
|||||||
|
|
||||||
local currency_gain = math.floor((player_score - player_old_score) * 10 / 100)
|
local currency_gain = math.floor((player_score - player_old_score) * 10 / 100)
|
||||||
|
|
||||||
if currency_gain == 0 then
|
if currency_gain <= 0 then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -32,4 +63,4 @@ Scoreboard = function(unk1, unk2)
|
|||||||
|
|
||||||
return scoreboard
|
return scoreboard
|
||||||
end
|
end
|
||||||
LUI.MenuBuilder.m_types_build["scoreboard"] = Scoreboard
|
LUI.MenuBuilder.m_types_build["scoreboard"] = scoreboard
|
||||||
|
Loading…
Reference in New Issue
Block a user