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