两岸资源点隔河相望:绕路要大半张地图,摆渡全靠临时铺路。渡口摆渡封装:渡口 NPC 按固定班次开船(每 15 分钟一班、航程 90 秒),玩家登船后自动渡往白日门对岸;载客上限 20 人,满员即开不等人——班次制让摆渡成为可预期的公共运力。
登船登记。示例代码如下:
local CAP = 20
local function boardFerry(actor, waiting)
if #waiting >= CAP then
sendmsg(actor, 1, "本班已满,15 分钟后下一班。")
return
end
waiting[#waiting + 1] = actor
sendmsg(actor, 1, "已登船,当前 " .. #waiting .. "/" .. CAP .. " 人。")
end
开航结算。示例代码如下:
local function sailFerry(waiting)
for _, actor in ipairs(waiting) do
beginteleport(actor, 120, 88)
end
for i = #waiting, 1, -1 do
table.remove(waiting)
end
end
班次由定时器驱动(每 900 秒一班、航程 90 秒),boardFerry 查名单人数(上限 20)登记登船;sailFerry 开航时对名单逐个 beginteleport 到对岸坐标(120,88),随后倒序清空名单等待下一班——满员即开与到点即开双规则并行;登船名单是场景状态,内存表即可(重启清空重新排队)。
渡口摆渡踩过三个坑:一是登船后玩家下线,开航 teleport 对失效对象报错,开航前逐个校验对象有效性、失效者跳过;二是船上玩家被 PK 拉扯出名单但人还在船上,登船后进入航程保护(不可攻击、不可被攻击);三是班次时刻与攻城战重叠,摆渡沦为攻城运兵车,攻城期间渡口停航、提前 30 分钟发布公告。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【游戏】 一、业务场景 帮会人少时打不死召唤的目标,人多时又抢不到,时机全靠会长手点,纠纷不断。改为每日一次的定时召唤加伤害…
【游戏】 一、业务场景 30 人团本开荒,伤害按个人目标结算,近战几秒就把目标打空,后排毫无参与感。改为全团共享血池:目标总…
【语法】 一、隐蔽陷阱 账目表频繁单点改值又要频繁查前 n 项合计:朴素写法改值一步、查询要扫 n 个元素,查询一多整体就慢…
【游戏】 一、业务场景 想拉动日活,登录礼包要跟着连登天数走:第 1 天小奖,第 7 天大奖。发放核心就一行:按连登天数查阶…
【语法】 一、隐蔽陷阱 大数加法用字符串竖式解决了失真,两笔大数相乘怎么办?tonumber 相乘在 9 位乘 9 位时结果…
【语法】 一、隐蔽陷阱 两批任务分别每 6 分钟与每 8 分钟刷新一次,想知道它们同帧刷新的间隔,从 1 开始逐个试除到 4…