CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
界面UI角色面板

【界面UI】属性加点界面:自由属性点的分配与预览

2026-09-23 17:02 作者:996 技术组 996引擎Lua教程传奇脚本

实战应用:用在哪里

每升 5 级发 1 点自由属性点,加攻击还是加防御——加点界面是玩家 build 决策的操作台。加点的要点是剩余点数的呈现、分配的即时预览与提交的批量打包,决策的工具越顺手,build 的尝试越积极。

分配的界面

lua
---属性加点:三项属性的加减
AttrUI.points = { atk = 0, def = 0, vit = 0 }

function AttrUI.bind(win, free)
    AttrUI.free = free
    for i, key in ipairs({ "atk", "def", "vit" }) do
        local add = GUI:Button_Create(win, "add_" .. key,
            200, 40 + (i - 1) * 40)
        GUI:Button_setTitleText(add, "+")
        GUI:addOnClickEvent(add, function()
            AttrUI.addOne(key)
        end)
    end
    AttrUI.refresh()
end

---加一点:剩余点数的守恒
function AttrUI.addOne(key)
    local used = AttrUI.points.atk + AttrUI.points.def
        + AttrUI.points.vit
    if used >= AttrUI.free then
        SL:ShowSystemTips("自由属性点已用完")
        return
    end
    AttrUI.points[key] = AttrUI.points[key] + 1
    AttrUI.refresh()
end

分配的界面三行三键:攻击、防御、体力各一行,加号按钮逐点分配——剩余点数的守恒校验在客户端先行(用满即提示),提交前的预览让玩家看得到每加一点带来的面板变化(加 1 点攻击等于面板攻击加 2)。重置的按钮把本批的分配清零重来,确认前的犹豫有出口,提交后的重置走洗点的付费通道。

提交的打包

lua
---提交:本批分配一次性发送
function AttrUI.submit()
    local used = AttrUI.points.atk + AttrUI.points.def
        + AttrUI.points.vit
    if used == 0 then return end
    SL:SendNetMsg(MSGID.ADD_POINT,
        AttrUI.points.atk, AttrUI.points.def,
        AttrUI.points.vit)
    SL:ShowSystemTips("属性点分配已提交")
end

---服务器回包的刷新
SL:RegisterLuaNetMsg("ATTR_SYNC", function(data)
    local d = SL:JsonDecode(data)
    if not d then return end
    AttrUI.free = d.free
    AttrUI.points = { atk = 0, def = 0, vit = 0 }
    AttrUI.refresh()
    GUI:Text_setString(AttrUI.atkLabel,
        "攻击 " .. d.atk)
end)

提交的打包把本批的分配一次性发送:三项的增量打包进一条消息,服务器的剩余点数守恒校验是终审——客户端的预演与服务器的一致性由回包刷新保证。加点的即时反馈三路:面板数字的变化、剩余点数的扣减、分配行的清零,三路同步让每次点击都有回应。加点的撤销不支持:提交即生效的规则写明,防反悔的反复横跳刷洗点的差价。属性的上限校验在服务器:单项属性不超过等级的 3 倍,极端的堆叠被上限压住。

验证与监控

加点提交的客户端预演与服务器裁决的一致性测试,点数的守恒断言逐批验证;洗点的付费转化与加点分布的统计,职业倾向的数据反哺平衡调整。

踩坑记录

剩余点数的计算曾经不含未提交的本批,连点到超发被服务器拒绝,本地守恒的口径修正。提交的打包曾经逐点发送,10 点发 10 条消息刷屏,批量的打包替代。回包的刷新曾经覆盖玩家的本批未提交分配,回包只更新 free 与面板,分配行的状态不动。

上线要点

属性的效果系数(1 点攻击等于多少面板)进配置,加点的收益透明。加点确认弹窗列出本批的分配明细,批量操作有知情确认。洗点的价格与次数限制公示,反悔的成本固定。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

幂尔框架 · 实战干货 · 接口调用

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

策划架构996引擎数值设计跨服远征

【策划架构】跨服远征:多服混战的归属与结算框架

设计初衷 单服沙巴克打了一年,城主轮流坐庄,大行会互相看着都腻了。跨服远征把 8 个服务器的顶级行会丢进同一张远征地图:对手…

2026-09-24 08:15 996 技术组
策划架构996引擎数值设计怪物密度地图设计

【策划架构】怪物密度:刷怪间距与清怪效率的地图设计

设计初衷 地图设计里最被低估的变量是密度:密了,法师的地狱火一次烧五只体验起飞,近战却在怪堆里寸步难行;稀了,职业生态倒是平…

2026-09-24 08:15 996 技术组
高级技巧996引擎Lua均摊分析性能

【高级技巧】均摊分析:数组扩容的成本真相

底层原理 t[ t + 1] = v 的尾插看起来恒定廉价,实际藏着尖峰:Lua 表的数组部分按 2 的幂扩容,表满的那一刻…

2026-09-24 08:15 996 技术组
策划架构996引擎数值设计时段运营登录曲线

【策划架构】每日三峰:登录时段的奖励投放节奏

设计初衷 登录曲线天然三峰:午休峰 12:30 到 13:30、黄金档 19:30 到 22:00、守夜峰 0:00 到 1…

2026-09-24 08:15 996 技术组
进阶实战996引擎Lua红包二倍均值

【进阶实战】全服红包:手气拆分与过期退回封装

业务场景 首杀祖玛教主的庆典撒全服红包:1000 根金条拆 200 份。拆分算法要满足三条:每份至少 1 根(不许空手)、金…

2026-09-24 08:15 996 技术组
高级技巧996引擎Lua排序比较器

【高级技巧】比较器契约:invalid order function的成因与规避

底层原理 table.sort 对比较函数有硬性契约:满足严格弱序——自反不成立(a<b 则 b a)、传递性成立(a<b …

2026-09-24 08:15 996 技术组