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:38:04 |
👁️ 阅读: 9
根据你的需求,我来帮你修改代码。主要添加开服天数判断、星期判断和data条件判断逻辑。
```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()
SL:Print("parent:----------------1", parent)
if GUI:Win_IsNull(parent) then
SL:Print("parent为空")
return
end
-- 获取开服天数
local openDay = SL:GetMetaValue("SERVER_OPEN_DAY", 0)
SL:Print("开服天数:", openDay)
-- 判断是否是开服第一天
if openDay <= 1 then
SL:Print("开服第一天,不显示按钮")
return
end
-- 获取当前星期几(1=星期日,2=星期一,...,7=星期六)
local currentTime = SL:GetMetaValue("SERVER_TIME")
local timeTable = os.date("*t", currentTime)
local weekday = timeTable.wday -- 注意:星期日=1,星期一=2,...,星期六=7
SL:Print("当前星期:", weekday)
-- 判断是否是星期五(6)、星期六(7)、星期日(1)
if weekday ~= 6 and weekday ~= 7 and weekday ~= 1 then
SL:Print("不是周五、周六、周日,不显示按钮")
return
end
-- 获取数据
local jsonData = SL:GetMetaValue("SERVER_VALUE", "HUMAN(幸运转盘数据)")
local data = SL:JsonDecode(jsonData)
-- 检查data["2"]["5"] = 1则不显示
if data and data["2"] and 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)
SL:Print("删除了旧节点")
end
-- 创建新节点
local Top_node_obj = GUI:Widget_Create(parent, "node_rightSide_1", 0, 0, 0, 0)
if GUI:Win_IsNull(Top_node_obj) then
SL:Print("创建节点失败")
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)
-- 根据data["1"]["5"]的值动态设置cmd[1]
local cmdValue = v.cmd[1]
if data and data["1"] and data["1"]["5"] == 1 then
cmdValue = 2 -- 如果data["1"]["5"] = 1,则发送2
end
GUI:addOnClickEvent(but_switch, function()
SL:SendLuaNetMsg(1100, cmdValue, 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)
-- 计算明天0点的时间戳
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", 0)`获取开服天数,如果≤1则不显示
2. **星期判断**:
- 使用`os.date("*t", currentTime)`获取时间表
- `timeTable.wday`返回星期几(星期日=1,星期一=2,...,星期六=7)
- 只显示星期五(6)、星期六(7)、星期日(1)
3. **data条件判断**:
- 如果`data["2"]["5"] == 1`,直接返回不显示
- 如果`data["1"]["5"] == 1`,按钮点击时发送`cmd[1] = 2`,否则发送原来的值
4. **添加调试信息**:每个判断都加了`SL:Print`,方便查看执行流程
这样修改后,按钮只会在符合条件的日期显示,并且根据data的值动态调整发送的参数。
← 返回问答库