如何让这个Rainmeter皮肤在每一年都重新开始倒计时?
2021-9-21 3:12:36
收藏:0
阅读:199
评论:1
我一直在编辑/重建Rainmeter皮肤(如果这些代码有点乱,请见谅),但我不知道如何每年重新开始倒计时(即圣诞节)。基本上,我想要这个倒计时时钟循环,如果有意义的话... 我附上了.ini代码和.lua代码。
[Rainmeter]
Update=1000
[Variables]
Color=0,0,0
FontName=Franklin Gothic Heavy
FontHeight=46
;设置这些变量以更改倒计时钟针对的日期,并更改在到达该时间时显示的文本!;
toYear=2021
toMonth=12
toDay=25
toHour=24
toMinute=0
toSecond=0
ReleaseText="0"
;措施;
[MeasureScript]
Measure=script
ScriptFile=#CURRENTPATH#countdown.lua
TableName=Countdown
year=#toYear#
month=#toMonth#
day=#toDay#
hour=#toHour#
min=#toMinute#
sec=#toSecond#
fintext=#ReleaseText#
;米特;
[MeterLogo]
Meter=Image
ImageName=Xmas.png
SolidColor=0,0,0,1
X=R
Y=0
[MeterString]
Meter=string
MeasureName=MeasureScript
X=555
Y=38
H=1
FontFace=#FontName#
FontSize=#FontHeight#
FontColor=#Color#
StringStyle=BOLD
Text=%1
AntiAlias=1
StringAlign=Center
Group=Static
[MeterTextTop]
[MeterTextMiddle]
Meter=String
Text=插入文本
X=308
Y=131
FontColor=0,0,0
StringStyle=BOLD
FontSize=20
FontFace=Franklin Gothic Heavy
AntiAlias=1
StringAlign=Center
[MeterTextBottom]
Meter=String
Text= 你好!
X=320
Y=190
FontColor=255,255,255
StringStyle=BOLD
FontSize=20
FontFace=Franklin Gothic Heavy
AntiAlias=1
StringAlign=Center
这是.lua代码
PROPERTIES = {year=0, month=0, day=0, hour=0, min=0, sec=0, fintext=""}
function Initialize()
RELEASEDATE = {}
setmetatable(RELEASEDATE, getmetatable(PROPERTIES))
for k,v in pairs(PROPERTIES) do
if k ~= fintext then
RELEASEDATE[k] = v
end
end
RELEASEDATE.isdst = true
RELEASETEXT = PROPERTIES.fintext or ""
end
function GetTimeLeft()
local dif = os.time(RELEASEDATE) - os.time()
local timeleft = {
[1] = math.floor(dif/60/60/24), --day
}
local text = {}
for i=1, #timeleft do
if i == 1 then
if timeleft[i] > 0 then
table.insert(text,timeleft[i])
end
else
table.insert(text,timeleft[i])
end
end
if dif <= 0 then
text = RELEASETEXT
else
text = table.concat(text,":")
end
return tostring(text)
end
function Update()
end
function GetStringValue()
return GetTimeLeft()
end
local function centerText(text)
local x,y = term.getSize()
local x2,y2 = term.getCursorPos()
term.setCursorPos(math.round((x / 2) - (text:len() / 2)), y2)
write(text)
end
原文链接 https://stackoverflow.com/questions/69251073
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
如果您已经超过一天,您可以重新计算:
- 这只是一个用于测试的示例 PROPERTIES = {year=2021, month=9, day=23, fintext="圣诞节到了!"} function Initialize() RELEASEDATE = {} setmetatable(RELEASEDATE, getmetatable(PROPERTIES)) for k,v in pairs(PROPERTIES) do if k ~= fintext then RELEASEDATE[k] = v end end RELEASEDATE.isdst = true RELEASEDATE.year = os.date("%Y") RELEASETEXT = PROPERTIES.fintext or "" end function GetTimeLeft() local dif = os.time(RELEASEDATE) - os.time{year=os.date("%Y"),month=os.date("%m"), day=os.date("%d")} if dif < 0 then RELEASEDATE.year = os.date("%Y")+1 return GetTimeLeft() end local timeleft = { [1] = math.floor(dif/60/60/24), --day } local text = {} for i=1, #timeleft do if i == 1 then if timeleft[i] > 0 then table.insert(text,timeleft[i]) end else table.insert(text,timeleft[i]) end end if dif <= 0 then text = RELEASETEXT else text = table.concat(text,":") end return tostring(text) end -- 这只是为了测试 Initialize() for i=1, 5 do print(GetTimeLeft() .. " 天后就是圣诞节了") end