每升 5 级发 1 点自由属性点,加攻击还是加防御——加点界面是玩家 build 决策的操作台。加点的要点是剩余点数的呈现、分配的即时预览与提交的批量打包,决策的工具越顺手,build 的尝试越积极。
---属性加点:三项属性的加减
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)。重置的按钮把本批的分配清零重来,确认前的犹豫有出口,提交后的重置走洗点的付费通道。
---提交:本批分配一次性发送
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 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
设计初衷 单服沙巴克打了一年,城主轮流坐庄,大行会互相看着都腻了。跨服远征把 8 个服务器的顶级行会丢进同一张远征地图:对手…
设计初衷 地图设计里最被低估的变量是密度:密了,法师的地狱火一次烧五只体验起飞,近战却在怪堆里寸步难行;稀了,职业生态倒是平…
底层原理 t[ t + 1] = v 的尾插看起来恒定廉价,实际藏着尖峰:Lua 表的数组部分按 2 的幂扩容,表满的那一刻…
设计初衷 登录曲线天然三峰:午休峰 12:30 到 13:30、黄金档 19:30 到 22:00、守夜峰 0:00 到 1…
业务场景 首杀祖玛教主的庆典撒全服红包:1000 根金条拆 200 份。拆分算法要满足三条:每份至少 1 根(不许空手)、金…
底层原理 table.sort 对比较函数有硬性契约:满足严格弱序——自反不成立(a<b 则 b a)、传递性成立(a<b …