符文是装备之外的平行养成线:每个符文页有六个插槽,镶嵌符文获得属性,同系符文凑齐触发共鸣。996 引擎里符文数据挂在玩家变量上,插槽的校验与共鸣的判定全在后端脚本完成。
local RUNE_SLOTS = 6
function Rune.inlay(actor, page, slot, runeId)
local def = RUNE_DEF[runeId]
if not def or slot > RUNE_SLOTS then return false, "插槽无效" end
if not QF_TakeRune(actor, runeId) then return false, "缺少符文" end
setplayvar(actor, "HUMAN", "rune_" .. page .. "_" .. slot, runeId, 1)
Rune.recalc(actor, page)
return true
end
符文页数据用变量名加页码加槽位的三段键存储,isSave 置 1 随档持久化。镶嵌前扣走符文物品,防止复制,Rune.recalc 全量重算该页的属性总和。
function Rune.recalc(actor, page)
local counts = {}
for slot = 1, RUNE_SLOTS do
local rid = tonumber(getplayvar(actor, "HUMAN", "rune_" .. page .. "_" .. slot)) or 0
if rid > 0 then
local sys = RUNE_DEF[rid].system
counts[sys] = (counts[sys] or 0) + 1
end
end
local bonus = 0
for sys, n in pairs(counts) do
if n >= 3 then bonus = bonus + RESO_DEF[sys] end
end
setplayvar(actor, "HUMAN", "rune_bonus_" .. page, bonus, 1)
end
同系三颗触发对应共鸣加成,加成写入独立变量参与面板合并。摘下符文同样触发重算,共鸣即时消失。符文页之间的切换走 copy 语义:页一与页二互相独立,切换界面用 SL:SendNetMsg 通知前端重绘。
符文持有数与镶嵌数的差值审计,共鸣加成的面板抽查每周一次。
变量键的三段拼接曾经超长被截断,页码与槽位压缩进一位数字后恢复。共鸣的判定遗漏了摘符文的场景,戴上触发重算、摘下不触发,一戴一摘之间属性凭空多了一截,摘下也挂 recalc 的钩子后才收口。
符文的获取渠道覆盖祖玛教主掉落与活动积分兑换两条线,符文的分解返还一半合成材料,折损的设计让玩家敢于尝试搭配。符文页的命名支持自定义,法师把页命名成冰法专精的操作很常见,个性化的命名给养成线添了身份认同。
符文的合成(三合一升阶)走物品合成接口的同一套预锁机制,材料锁定防止并发超扣。页属性与面板属性的合并顺序进文档,共鸣的优先级高于单颗符文。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 沃玛教主血量每降一档触发一次全服播报,播报逻辑散在伤害结算里,改一条文案翻三个文件。时间轴框架把阶段播报…
实战应用:用在哪里 金位摊位成了稀缺资产,私下转让滋生倒卖。过户系统把转让收编:双方确认、缴纳成交价一成的过户费、转让后原主…
实战应用:用在哪里 师门积分商店的热门商品每周限购两件,限购状态跨周重置的口径必须稳:本周已购几件、下周何时刷新、补签周怎么…
实战应用:用在哪里 练级区怪物密度是玩家口碑的晴雨表:太密抢怪打架,太稀挂机空转。密度动态平衡机制把刷新倍率做成运营参数,按…
实战应用:用在哪里 新玩家不知道安全区边界在哪,迈出一步被野怪围殴,第一印象直接崩坏。边界警示方案:接近安全区边界时地面浮现…
实战应用:用在哪里 自动寻路省心但让玩家成了观光客,手动跑图自由却容易迷路。追踪切换方案:任务追踪面板提供自动与手动两种模式…