【问题标题】:Script Math's not correct lua minecraft脚本数学不正确 lua minecraft
【发布时间】:2022-01-06 08:11:28
【问题描述】:

idk 出了什么问题,但它在保存值时将其写入文件。如果您需要更多信息或有任何问题,请问我!感谢您抽出宝贵时间,希望您能提供解决方案! 赛比GHG 我的不和谐:S̸̽̚e̵̓̓b̸̿̕y̴͆͐#4638 这是文件中时间和值的屏幕截图: Value in file Time 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()
            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 - 86400
    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

【问题讨论】:

  • 有什么问题?到底错在哪里?预期的结果是什么?此外,将联系信息置于问题中不是本网站的工作方式。所有的澄清、问题、cmets、讨论和答案都将在这里提出
  • 预期结果是一个存储时间的文件
  • 时间到了。这就是 os.time() 返回的内容。这是Unix Timestamp
  • 你到底是什么意思
  • 您可以在保存到文件之前将时间转换为人类可读的格式:local dt = os.date("*t", stopTime); io.write(dt.year.."."..dt.month.."."..dt.day)

标签: math lua timer minecraft


【解决方案1】:

我发现的一个错误是这部分

while (time > 3599) do
    hours = hours + 1
    time = time - 86400
end

这很可能是

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

【讨论】:

  • 谢谢你知道文件写入部分有什么问题吗?
猜你喜欢
  • 2022-01-06
  • 2017-09-17
  • 2020-09-29
  • 1970-01-01
  • 2014-11-06
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 1970-01-01
相关资源
最近更新 更多