Compare commits
5 Commits
a1989d319b
...
v1.2.18
Author | SHA1 | Date | |
---|---|---|---|
5cecda05f1 | |||
775886f045 | |||
1a72fba49d | |||
8de3423ef8 | |||
45b785c654 |
@ -40,6 +40,7 @@ local clearcheats = false
|
||||
local START_TIME = 6 * TICRATE + (3 * TICRATE / 4) + 1
|
||||
local AFK_TIMEOUT = TICRATE * 5
|
||||
local AFK_BALANCE = TICRATE * 60
|
||||
local AFK_BALANCE_WARN = AFK_BALANCE - TICRATE * 10
|
||||
local PREVENT_JOIN_TIME = START_TIME + TICRATE * 5
|
||||
|
||||
local GUI_OFF = 0x0
|
||||
@ -176,15 +177,15 @@ local function reinit_lb()
|
||||
end
|
||||
|
||||
local cv_spb_separate = CV_RegisterVar({
|
||||
name = "lb_spb_separate",
|
||||
defaultvalue = 0,
|
||||
name = "lb_spb_combined",
|
||||
defaultvalue = 1,
|
||||
flags = CV_NETVAR | CV_CALL,
|
||||
PossibleValue = CV_YesNo,
|
||||
func = function(v)
|
||||
if v.value then
|
||||
ST_SEP = F_SPBATK | F_SPBBIG | F_SPBEXP
|
||||
else
|
||||
ST_SEP = F_SPBATK
|
||||
else
|
||||
ST_SEP = F_SPBATK | F_SPBBIG | F_SPBEXP
|
||||
end
|
||||
|
||||
reinit_lb()
|
||||
@ -537,13 +538,17 @@ local function findRival(player, ...)
|
||||
return a["rival"]["map"] < b["rival"]["map"]
|
||||
end
|
||||
|
||||
local modestrings = {
|
||||
[F_SPBEXP] = "X",
|
||||
[F_SPBBIG] = "B",
|
||||
[F_SPBJUS] = "J",
|
||||
}
|
||||
|
||||
for mode, tbl in pairs(scores) do
|
||||
if i >= stop then break end
|
||||
|
||||
table.sort(tbl, sortf)
|
||||
|
||||
local spb = mode & F_SPBATK and "SPB" or "TA"
|
||||
|
||||
for _, score in ipairs(tbl) do
|
||||
if o then
|
||||
o = o - 1
|
||||
@ -552,6 +557,16 @@ local function findRival(player, ...)
|
||||
if i >= stop then break end
|
||||
i = i + 1
|
||||
|
||||
local modestr = "TA"
|
||||
if score["rival"]["flags"] & F_SPBATK then
|
||||
modestr = "SPB"
|
||||
for k, v in pairs(modestrings) do
|
||||
if score["rival"]["flags"] & k then
|
||||
modestr = $ + v
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if score["your"] then
|
||||
local diff = score["your"]["time"] - score["rival"]["time"]
|
||||
local color = colors[clamp(-1, diff, 1)]
|
||||
@ -564,7 +579,7 @@ local function findRival(player, ...)
|
||||
ticsToTime(score["rival"]["time"]),
|
||||
color,
|
||||
sym[diff<0] + ticsToTime(abs(diff)),
|
||||
spb
|
||||
modestr
|
||||
)
|
||||
)
|
||||
else
|
||||
@ -575,7 +590,7 @@ local function findRival(player, ...)
|
||||
G_BuildMapName(score["rival"]["map"]),
|
||||
ticsToTime(score["rival"]["time"]),
|
||||
ticsToTime(0, true),
|
||||
spb
|
||||
modestr
|
||||
)
|
||||
)
|
||||
end
|
||||
@ -664,6 +679,20 @@ local function drawitem(v, x, y, scale, itempatch, vflags)
|
||||
)
|
||||
end
|
||||
|
||||
local modePatches = {
|
||||
[F_SPBATK] = "SPB",
|
||||
[F_SPBJUS] = "HYUD",
|
||||
[F_SPBBIG] = "BIG",
|
||||
[F_SPBEXP] = "INV"
|
||||
}
|
||||
|
||||
local function modePatch(flag)
|
||||
if flag == F_SPBEXP then
|
||||
return PATCH[modePatches[flag]][(leveltime / 4) % 6]
|
||||
end
|
||||
return PATCH[modePatches[flag]]
|
||||
end
|
||||
|
||||
local cursors = {
|
||||
[1] = ". ",
|
||||
[2] = " ."
|
||||
@ -737,7 +766,7 @@ local function drawScore(v, player, pos, x, y, gui, faceRank, score, drawPos, te
|
||||
x - 2,
|
||||
y - 2,
|
||||
scale,
|
||||
PATCH["SPB"],
|
||||
modePatch(F_SPBATK),
|
||||
V_HUDTRANS | VFLAGS
|
||||
)
|
||||
if score["flags"] & F_SPBEXP then
|
||||
@ -746,7 +775,7 @@ local function drawScore(v, player, pos, x, y, gui, faceRank, score, drawPos, te
|
||||
x + FACERANK_DIM - 4,
|
||||
y - 2,
|
||||
scale,
|
||||
PATCH["INV"][(leveltime / 4) % 6],
|
||||
modePatch(F_SPBEXP),
|
||||
V_HUDTRANS | VFLAGS
|
||||
)
|
||||
end
|
||||
@ -756,7 +785,7 @@ local function drawScore(v, player, pos, x, y, gui, faceRank, score, drawPos, te
|
||||
x - 2,
|
||||
y + FACERANK_DIM - 4,
|
||||
scale,
|
||||
PATCH["BIG"],
|
||||
modePatch(F_SPBBIG),
|
||||
V_HUDTRANS | VFLAGS
|
||||
)
|
||||
end
|
||||
@ -766,7 +795,7 @@ local function drawScore(v, player, pos, x, y, gui, faceRank, score, drawPos, te
|
||||
x + FACERANK_DIM - 4,
|
||||
y + FACERANK_DIM - 4,
|
||||
scale,
|
||||
PATCH["HYUD"],
|
||||
modePatch(F_SPBJUS),
|
||||
V_HUDTRANS | VFLAGS
|
||||
)
|
||||
end
|
||||
@ -779,7 +808,7 @@ local function drawScore(v, player, pos, x, y, gui, faceRank, score, drawPos, te
|
||||
|
||||
-- Stats
|
||||
local stat = score["stat"]
|
||||
local pskin = skins[score["skin"]]
|
||||
local pskin = score["skin"] and skins[score["skin"]]
|
||||
if stat and not (
|
||||
pskin
|
||||
and pskin.kartweight == stat["weight"]
|
||||
@ -918,6 +947,14 @@ local stateFunctions = {
|
||||
[DS_SCRLTO] = drawScrollTo
|
||||
}
|
||||
|
||||
-- Draw mode and return pos + 1 if success
|
||||
local function drawMode(v, pos, flag)
|
||||
if not (Flags & flag) then return pos end
|
||||
|
||||
drawitem(v, pos * 6 + 1, 194, FRACUNIT / 4, modePatch(flag), V_SNAPTOBOTTOM | V_SNAPTOLEFT)
|
||||
return pos + 1
|
||||
end
|
||||
|
||||
local function drawScoreboard(v, player)
|
||||
if disable then return end
|
||||
if player != displayplayers[0] then return end
|
||||
@ -934,6 +971,12 @@ local function drawScoreboard(v, player)
|
||||
if gui then
|
||||
stateFunctions[drawState](v, player, scoreTable, gui)
|
||||
end
|
||||
|
||||
local pos = 0
|
||||
-- Draw current active modes bottom left
|
||||
pos = drawMode(v, pos, F_SPBJUS)
|
||||
pos = drawMode(v, pos, F_SPBBIG)
|
||||
pos = drawMode(v, pos, F_SPBEXP)
|
||||
end
|
||||
hud.add(drawScoreboard, "game")
|
||||
|
||||
@ -1108,6 +1151,12 @@ local function think()
|
||||
if p.cmd.buttons then
|
||||
p.afkTime = leveltime
|
||||
end
|
||||
|
||||
--Away from kart
|
||||
if p.afkTime + AFK_BALANCE_WARN == leveltime then
|
||||
chatprintf(p, "[AFK] \x89You will be moved to spectator in 10 seconds!", false)
|
||||
S_StartSound(nil, 26, p)
|
||||
end
|
||||
if p.afkTime + AFK_BALANCE < leveltime then
|
||||
p.spectator = true
|
||||
chatprint("\x89" + p.name + " was moved to the other team for game balance", true)
|
||||
|
Reference in New Issue
Block a user