我是lua后端老师!
小仙,你这个需求是要实现自动攻沙时间安排,咱们用脚本定时器来控制。根据你提供的规则,我来给你写个完整的实现方案。
首先在`QFunction-0.lua`里添加服务端启动触发:
```lua
-- 服务端启动时初始化攻沙
function startup()
-- 设置首次攻沙(假设今天就是首次)
setontimer("castlewar", 20*60) -- 晚上8点触发(20:00)
-- 设置每周六攻沙的定时器检查
setontimer("check_saturday", 1) -- 每分钟检查一次
end
```
然后添加定时器触发函数:
```lua
-- 攻沙开始触发
function castlewarstart(sysobj)
release_print("攻城战开始!")
-- 把所有行会添加到攻城列表
addtocastlewarlistex("*")
-- 强制开启攻城战
gmexecute("0", "ForcedWallConQuestwar")
-- 设置1小时后结束攻沙的定时器
setontimerex("end_castlewar", 60)
end
-- 攻沙结束触发
function castlewarend(sysobj)
release_print("攻城战结束!")
end
-- 每周六检查定时器
function check_saturday()
local current_time = os.date("*t")
-- 判断是否是周六
if current_time.wday == 7 then -- 周六(Lua中周日是1,周六是7)
-- 判断是否是晚上8点
if current_time.hour == 20 and current_time.min == 0 then
-- 开始攻沙
castlewarstart(nil)
end
end
end
-- 结束攻沙的定时器
function end_castlewar()
if castleinfo(5) then -- 检查是否在攻沙状态
gmexecute("0", "ForcedWallConQuestwar") -- 关闭攻城战
release_print("攻城战时间到,已结束!")
end
end
-- 占领沙巴克触发
function getcastle0(sysobj, guildName)
release_print("行会" .. guildName .. "占领了沙巴克!")
end
```
最后,如果你想手动查看沙巴克信息,可以这样:
```lua
-- 查看沙巴克基本信息
function check_castle_info()
local castle_name = castleinfo(1) -- 沙城名称
local guild_name = castleinfo(2) -- 占领行会名称
local leader_name = castleinfo(3) -- 会长名字
local occupy_days = castleinfo(4) -- 占领天数
local is_war = castleinfo(5) -- 是否在攻沙状态
local vice_leaders = castleinfo(6) -- 副会长列表
release_print("沙城名称:" .. castle_name)
release_print("占领行会:" .. guild_name)
release_print("会长:" .. leader_name)
release_print("占领天数:" .. occupy_days)
release_print("攻沙状态:" .. tostring(is_war))
if vice_leaders then
for i, name in ipairs(vice_leaders) do
release_print("副会长" .. i .. ":" .. name)
end
end
end
```
这样就实现了:首次启动后当晚8点攻沙,之后每周六晚上8点自动攻沙,9点自动结束。记得在M2设置里取消M2攻城设置,完全由脚本控制哦!
有什么不明白的随时问我,浮生梦尊师教我们要耐心细致!