无尽之塔每天免费挑战两次,一层接一层往上打,每过三层三选一挑一个临时词条。塔内词条只在本局生效,出塔清空,随机性让每一局体验都不重样,爬塔视频也因此成了直播间的热门内容,冲击历史最高层是硬核玩家的周目标。
function Tower.enter(plr)
if plr.towerCount >= 2 then return false, "今日次数已用完" end
plr.towerCount = plr.towerCount + 1
plr.towerRun = { floor = 1, buffs = {}, at = os.time() }
QF_EnterMap(plr, "tower_1")
return true
end
function Tower.clearFloor(plr)
local run = plr.towerRun
run.floor = run.floor + 1
if run.floor % 3 == 0 then
Tower.offerBuffs(plr)
else
QF_EnterMap(plr, "tower_" .. run.floor)
end
end
每次清层层数加一,逢三的倍数层弹出词条三选一,选完进入下一层。层数越高怪物属性按 12% 复利增长,30 层的怪物强度是初始的 26 倍,自然形成多数玩家的天花板。挑战中途掉线保留进度 10 分钟,重连后从当前层继续。
local TOWER_BUFFS = {
{ id = 1, name = "狂暴", attr = { atk = 200 } },
{ id = 2, name = "铁壁", attr = { def = 150 } },
{ id = 3, name = "嗜血", attr = { leech = 50 } },
}
function Tower.pickBuff(plr, buffId)
local run = plr.towerRun
for _, b in ipairs(TOWER_BUFFS) do
if b.id == buffId then
table.insert(run.buffs, buffId)
QF_ApplyTempAttr(plr, b.attr)
QF_EnterMap(plr, "tower_" .. run.floor)
return true
end
end
return false
end
临时属性走独立容器,出塔时 QF_ClearTempAttr 整体清空,与角色永久属性物理隔离,杜绝词条带出塔的漏洞。三个词条组合叠加产生流派:全选狂暴是速攻流,铁壁嗜血是消耗流,选择策略就是讨论度。历史最高层进排行榜,词条图标用 SL 粒子边框区分品质,结算面板展示本局用时与选用词条路线。
词条选择的分布按层数统计,某词条选择率超七成说明强度失衡需要调整。
词条三选一的面板曾经可以卡在 selection 界面无限拖延,读条战术被用来回血,选择面板加了 30 秒倒计时强制随机选。爬塔的楼层地图只做了五张循环使用,第九层的既视感被老玩家调侃,第六张图上线后讨论热度回升。历史最高层的排行榜曾经允许同一天反复刷新,榜一的执行记录只保留顶端一条,最高层达成时刻的独立快照让首通荣誉留了档。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
设计初衷 行会系统的通病是"人多力量大"只体现在攻城:日常没有人人有份的参与结构,普通成员对行会缺少归属感与参与点。科技树把…
设计初衷 打怪掉装、强化失败、版本更替,都在往玩家背包里塞过渡装备,卖不掉、扔了心疼,压在包里发臭。回收系统的价值两条:给过…
底层原理 性能优化不靠猜,靠剖析。os.clock 返回脚本进程占用的 CPU 时间(秒,小数),两次取值之差就是中间代码的…
设计初衷 满级是长线游戏的分水岭:不转生,毕业玩家无事可做、数值通胀无处吸收;硬开新等级,老装备一夜贬值。转生系统的价值在于…
业务场景 石墓阵里 6 个精英点位驻着白野猪王,被清掉后要按周期补位。散装写法把地图、坐标、怪物名硬编码在脚本里,开新区要复…
底层原理 闭包是函数与其捕获环境的绑定:内层函数引用外层局部变量时,这份数据随函数体一起存活,外部既访问不到也改不掉。限频器…