local MainButton = {}
MainButton.cfg = {
{ but_id = "id1", x = 230, y = -270, but_img = "res/public/996kf_red.png", cmd = { 1, 0, 0 } }, --GM功能
}
function MainButton:main()
SL:ScheduleOnce(function()
local parent = GUI:Attach_LeftTop
🤖 回答引擎: 前端Lua |
🕒 时间: 2026-03-09 17:52:24 |
👁️ 阅读: 17
根据你的需求,我来帮你修改代码。主要需要添加三个判断条件:
1. 判断是否开服第一天
2. 判断是否星期五、六、日
3. 判断data["2"]["5"]是否等于1
```lua
local MainButton = {}
MainButton.cfg = {
{ but_id = "id1", x = 230, y = -270, but_img = "res/public/996kf_red.png", cmd = { 1, 0, 0 } }, --GM功能
}
function MainButton:main()
SL:ScheduleOnce(function()
local parent = GUI:Attach_LeftTop()
if GUI:Win_IsNull(parent) then
return
end
-- 获取数据
self.data = SL:JsonDecode(SL:GetMetaValue("SERVER_VALUE", "HUMAN(幸运转盘数据)"))
-- 判断条件1:检查是否是开服第一天
local serverOpenDay = SL:GetMetaValue("SERVER_OPEN_DAY") or 1
if serverOpenDay <= 1 then
SL:Print("开服第一天,不显示按钮")
return
end
-- 判断条件2:检查是否是星期五、六、日
local serverTime = SL:GetMetaValue("SERVER_TIME")
local timeTable = os.date("*t", serverTime)
local weekDay = timeTable.wday - 1 -- 周日=1,周一=2...周六=7
if weekDay == 0 then weekDay = 7 end -- 调整周日为7
-- 周五=5,周六=6,周日=7
if weekDay < 5 then
SL:Print("不是周五、六、日,不显示按钮")
return
end
-- 判断条件3:检查data["2"]["5"]是否等于1
if self.data and self.data["2"] and self.data["2"]["5"] == 1 then
SL:Print("data[2][5] = 1,不显示按钮")
return
end
-- 检查并移除旧节点
if GUI:getChildByName(parent, "node_rightSide_1") then
local oldNode = GUI:getChildByName(parent, "node_rightSide_1")
GUI:removeFromParent(oldNode)
end
-- 创建新节点
local Top_node_obj = GUI:Widget_Create(parent, "node_rightSide_1", 0, 0, 0, 0)
if GUI:Win_IsNull(Top_node_obj) then
return
end
for _, v in pairs(MainButton.cfg) do
-- 创建按钮
local but_switch = GUI:Button_Create(Top_node_obj, "switch",
SL:GetMetaValue("CURRENT_OPERMODE") == 1 and 230 or 270,
SL:GetMetaValue("CURRENT_OPERMODE") == 1 and -270 or -310, v.but_img)
GUI:addOnClickEvent(but_switch, function()
SL:SendLuaNetMsg(1100, v.cmd[1], v.cmd[2], v.cmd[3], "")
end)
end
-- 在按钮正下方添加倒计时文本
local timeText = GUI:Text_Create(Top_node_obj, "timeText_but_id",
SL:GetMetaValue("CURRENT_OPERMODE") == 1 and 273 or 313,
SL:GetMetaValue("CURRENT_OPERMODE") == 1 and -280 or -320, 16, "#FF0000", "")
GUI:setAnchorPoint(timeText, 0.5, 0.5)
-- 计算距离第二天0点的剩余时间
local function updateCountdown()
local currentTime = SL:GetMetaValue("SERVER_TIME")
local currentDate = os.date("*t", currentTime)
currentDate.hour = 0
currentDate.min = 0
currentDate.sec = 0
local todayZero = os.time(currentDate)
local tomorrowZero = todayZero + 24 * 60 * 60
local remainingSeconds = tomorrowZero - currentTime
GUI:Text_COUNTDOWN(timeText, remainingSeconds, nil, 0)
end
-- 立即更新一次
updateCountdown()
-- 每秒更新一次
SL:schedule(timeText, function()
updateCountdown()
end, 1)
end, 0.2)
end
return MainButton
```
**修改说明:**
1. **开服第一天判断**:使用`SL:GetMetaValue("SERVER_OPEN_DAY")`获取开服天数,如果≤1则不显示
2. **星期判断**:
- 使用`os.date("*t", serverTime)`获取时间表
- `timeTable.wday`返回星期几(周日=1,周一=2...周六=7)
- 调整后:周一=1,周二=2...周日=7
- 只显示周五(5)、周六(6)、周日(7)
3. **数据判断**:检查`self.data["2"]["5"]`是否等于1,如果是则不显示
三个条件中任意一个不满足,函数都会直接返回,不会创建按钮节点。这样就能满足你的需求了。
← 返回问答库