Home > front end >  Maths in my timer script is wrong... Lua Minecraft
Maths in my timer script is wrong... Lua Minecraft

Time:12-07

idk what is wrong but it writes this into the file when it saves the value. If u need more information or have a question please ask me! Thanks for your time and hopefully u your solution! SebyGHG My discord: S̸̽̚e̵̓̓b̸̿̕y̴͆͐#4638 os.time() gives you the value in a number. Thanks for your attention! Example Time in file: 1638185640

Example of time displayed in game: in game

name = "Timer"
description = "Just a normal Timer."
positionX = 0
positionY = 0
sizeX = 24
sizeY = 10
scale = 1

START_STOP_KEY = 0x55 --or 'U'
RESET_KEY = 0x4A --or 'J'
 --
--[[
    Timer Module Script by SebyGHG original script by Onix64(Stopwatch)


    if you wish to change the key you can take the key code from here
    https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
]] -------------script-code-------------

state = 1
stopTime = 0
startTime = 0

f = io.input("timesave.txt")
result  = f :read()
f :close()
stopTime = result
state = 2

function keyboard(key, isDown)
    if (isDown == true) then
        if (key == RESET_KEY) then
            state = 0
        elseif (key == START_STOP_KEY) then
            if (state == 0) then
                state = 1
                startTime = os.time()
            elseif (state == 1) then
                state = 2
        io.output("timesave.txt")
        timesave= (io.open("timesave.txt","w"))
                io.write(stopTime)
                io.close(timesave)
                stopTime = os.time() -stopTime
            elseif (state == 2) then
        state = 1
        startTime =startTime    os.time() - stopTime
            end
        end
    end
end

TimerText = "00:00"
TextColor = {r = 30, g = 255, b = 30, a = 255}
function doubleDigit(number)
    if (number < 10) then
        return "0" .. math.floor(number)
    else
        return math.floor(number)
    end
end

function timeText(time)
    local result = ""
    local days = 0
    while (time > 86399) do
        days = days   1
        time = time - 86400
    end

    local hours = 0
    while (time > 3599) do
        hours = hours   1
        time = time - 3600
    end

    local minutes = 0
    while (time > 59) do
        minutes = minutes   1
        time = time - 60
    end

    if (days == 0) then
        if (hours == 0) then
            return doubleDigit(minutes) .. ":" .. doubleDigit(time)
        else
            return math.floor(hours) .. " : " .. doubleDigit(minutes) .. ":" .. doubleDigit(time)
        end
    else
        return math.floor(days) ..
            " : " .. doubleDigit(hours) .. " : " .. doubleDigit(minutes) .. ":" .. doubleDigit(time)
    end
end

function update()
    if (state == 0) then
        TextColor = {r = 255, g = 0, b = 0, a = 255}
        TimerText = "00:00"
    elseif (state == 1) then
        TimerText = timeText(os.time() - startTime)
        TextColor = {r = 0, g = 255, b = 255, a = 255}
    elseif (state == 2) then
        TimerText = timeText(stopTime - startTime)
        TextColor = {r = 255, g = 255, b = 0, a = 255}
    end
end

function render()
    local font = gui.font()
    local tw = font.width(TimerText)

    gfx.color(0, 0, 0, 0)
    gfx.rect(0, 0, tw   4, 10)

    gfx.color(TextColor.r, TextColor.g, TextColor.b, TextColor.a)
    gfx.text(2, 1, TimerText)
end

CodePudding user response:

It looks like you are saving the Unix Timestamp to your file, you can try and make it human readable using an online time converter (https://time.is/Unix_time_converter)

Besides this, take some time to read the os.time() implementation details on this lua page: https://www.lua.org/pil/22.1.html

The time function, when called without arguments, returns the current date and time, coded as a number. (In most systems, that number is the number of seconds since some epoch.)

If you want the time in between certain action, save the initial timestamp and diff it at the end of the action. This is natively supported in lua using os.difftime(). (http://www.lua.org/manual/5.3/manual.html#pdf-os.difftime)

  • Related