es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Script de temporizador de Lua produciendo un valor completamente numérico en lugar del tiempo adecuado.

Mi script de temporizador escribe esto en el archivo cuando guarda el valor.

Ejemplo de tiempo en el archivo: 1638185640

Ejemplo de tiempo mostrado en el juego:

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

START_STOP_KEY = 0x55 –o ‘U’

RESET_KEY = 0x4A –o ‘J’

–[[
Módulo de script del temporizador por SebyGHG. Script original por Onix64 (Cronómetro)
Si deseas cambiar la clave, puedes tomar el código de clave desde aquí:
https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
]]

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

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El script del temporizador guarda el valor del temporizador en un archivo llamado “timesave.txt”. El valor de tiempo se guarda como el número de segundos desde el 1 de enero de 1970 (también conocido como tiempo Unix o época) utilizando la función Lua “os.time()”.

    Cuando el temporizador se detiene, el script escribe el valor de la variable “stopTime” (que contiene el tiempo Unix en el que se detuvo el temporizador) en el archivo “timesave.txt” utilizando la función “io.write()”.

    Por lo tanto, el valor almacenado en el archivo “timesave.txt” estará en tiempo Unix, que puede no ser fácilmente legible para usuarios no técnicos. Sin embargo, el script puede mostrar el temporizador en un formato amigable para el usuario, como se muestra en la imagen del juego proporcionada, convirtiendo el tiempo Unix en horas, minutos y segundos utilizando las funciones Lua en la función “timeText()”.

Comments are closed.