每升 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 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 版本更新上线后突然下架了某件热销商品,但更新公告里没有提到这件事。玩家发现后截图传播,两小时内贴吧帖子超…
实战应用:用在哪里 技能升级后缺少视觉与听觉反馈,玩家不确定升级是否成功。技能升级反馈在升级成功的瞬间展示金色光效、播放升级…
实战应用:用在哪里 点击其他玩家的角色时默认弹出查看面板,但在战斗中玩家希望点击即攻击。双击检测在单击查看的基础上增加双击攻…
实战应用:用在哪里 灵宠在战斗中作用有限,玩家养了宠物但缺少日常互动。灵宠派遣让宠物成为玩家的探索伙伴:派遣灵宠外出探索获取…
实战应用:用在哪里 宠物养成线只有喂食和升级,缺少宠物之间的对抗玩法。宠物竞技让两只宠物在专属竞技场进行自动对战,玩家通过调…
实战应用:用在哪里 测试环境直接复制生产库会把真实玩家数据暴露给开发和测试人员,存在隐私泄露风险。脱敏测试库的搭建分三步:从…