addHook("PlayerThink", function(p) if p.mo and p.mo.valid and not p.bot p.miles = (p.speed / FRACUNIT) * (1 + (2 / 5)) p.kilos = (p.speed / FRACUNIT) * (2 + (1 / 5)) end end) local function TooFast(player, arg) if arg if arg == "1" or arg == "on" or arg == "fracs" or arg == "fracunits" if io and player == consoleplayer local file = io.openlocal("client/speedometer.dat", "w+") file:write(arg) file:close() end player.howfast = 1 CONS_Printf(player, "Speed will be displayed in Fracunits per Tic") elseif arg == "miles" or arg == "2" or arg == "mph" if io and player == consoleplayer local file = io.openlocal("client/speedometer.dat", "w+") file:write(arg) file:close() end player.howfast = 2 CONS_Printf(player, "Speed will be displayed in miles per hour") elseif arg == "3" or arg == "kilometers" or arg == "kmh" if io and player == consoleplayer local file = io.openlocal("client/speedometer.dat", "w+") file:write(arg) file:close() end player.howfast = 3 CONS_Printf(player, "Speed will be displayed in kilometers per hour.") elseif arg == "0" or arg == "off" or arg == "disable" if io and player == consoleplayer local file = io.openlocal("client/speedometer.dat", "w+") file:write(arg) file:close() end player.howfast = 4 CONS_Printf(player, "Speedometer is diabled.") end else CONS_Printf(player, "Changes the style of the speed display") end end COM_AddCommand("speedometer", function(player, arg) TooFast(player, arg) end) local function SPEEDHUD(v) local player = displayplayer if v.dupy() == 1 -- lowest resolution v.YOffset = 4 v.InitialY = 6 elseif v.dupy() == 2 -- above lowest v.YOffset = 8 v.InitialY = 9 elseif v.dupy() == 3 -- 720p+ v.YOffset = 13 v.InitialY = 10 elseif v.dupy() == 4 -- ??? seems to work with 1080p numbers v.YOffset = 14 v.InitialY = 5 elseif v.dupy() == 5 -- 1080p? v.YOffset = 20 v.InitialY = 5 end if player.howfast == 1 v.drawString(20, (v.InitialY+(v.YOffset*40)), ("\x89\Player Speed: \x88" .. tostring(player.speed / FRACUNIT) .. " FU / T"), V_ALLOWLOWERCASE|V_PERPLAYER|V_NOSCALESTART|V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_HUDTRANSHALF, "thin") elseif player.howfast == 2 v.drawString(20, (v.InitialY+(v.YOffset*40)), ("\x89\Player Speed: \x88" .. tostring(player.miles) .. " mph"), V_ALLOWLOWERCASE|V_PERPLAYER|V_NOSCALESTART|V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_HUDTRANSHALF, "thin") elseif player.howfast == 3 v.drawString(20, (v.InitialY+(v.YOffset*40)), ("\x89\Player Speed: \x88" .. tostring(player.kilos) .. " kmh"), V_ALLOWLOWERCASE|V_PERPLAYER|V_NOSCALESTART|V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_HUDTRANSHALF, "thin") else return end end hud.add(SPEEDHUD) addHook("PlayerSpawn", function(p) if io and p == consoleplayer and p.howfast == nil local file = io.openlocal("client/speedometer.dat") if file local string = file:read("*a") if string == "1" or string == "fracs" or string == "on" or string == "fracunits" or string == nil COM_BufInsertText(p, "speedometer 1") elseif string == "2" or string == "miles" or string == "mph" COM_BufInsertText(p, "speedometer 2") elseif string == "3" or string == "kilometers" or string == "kmh" COM_BufInsertText(p, "speedometer 3") elseif string == "0" or string == "disable" or string == "off" COM_BufInsertText(p, "speedometer 0") end file:close() else COM_BufInsertText(p, "speedometer 1") end end end)