课时 24 · 装备合成系统
课时 24 · 装备合成系统(功能开发实战):实现带概率与失败处理的合成功能。示例跑在 996 新三端引擎里,接口按本地官方文档逐个核对。
本课的代码跑在 996 引擎里,用到的是服务端接口(changeexp、 SetInt 这类),在线运行器里没有这些函数。 每个函数的签名都能在 文档检索 里按名字查到原文。
本课目标
- 实现带概率与失败处理的合成功能。
知识讲解
需求:两件低级装备合成一件高级装备,成功率 80%,失败时材料消耗、返还部分碎片。核心流程:检测材料(checkitems)→ 扣除材料(takeitem)→ 概率判定(math.random)→ 成功发装备(giveitem)/失败给碎片 → 公告提示(sendmsg/sendcentermsg)。
示例:装备合成(核心)
local SUCCESS_RATE = 80 -- 成功率 80%
local MAT_NAME = '低级装备碎片'
local MAT_COUNT = 5
local TARGET_NAME = '高级装备'
function clicknpc(actor, npcId, script)
if npcId ~= 3001 then return false end
-- 1. 检测材料
local ok = checkitems(actor, MAT_NAME .. '#' .. MAT_COUNT, 0, 0)
if not ok then
sendmsg(actor, 1, '{"Msg":"材料不足,需要 ' .. MAT_COUNT .. ' 个' .. MAT_NAME .. '","Type":1}')
return true
end
-- 2. 扣除材料
takeitem(actor, MAT_NAME, MAT_COUNT, 0, '装备合成')
-- 3. 概率判定
math.randomseed(os.time())
if math.random(1, 100) <= SUCCESS_RATE then
giveitem(actor, TARGET_NAME, 1)
sendmsg(actor, 1, '{"Msg":"合成成功!获得 ' .. TARGET_NAME .. '","Type":1}')
else
giveitem(actor, '合成碎片', 1)
sendmsg(actor, 1, '{"Msg":"合成失败,返还 1 个合成碎片","Type":1}')
end
return true
end
说明:成功装备若需继承材料属性(属性继承),请在 giveitem 后查 接口\物品操作 目录的「修改物品自定义属性」类接口补充;概率与材料配置应放入脚本顶部配置区,便于后续调整。
练习任务
- 完善合成系统:① 增加「材料不足」「成功率提示」文案;② 把成功率与材料配置提取为表;③ 加全服公告(sendmsg type=2)提示极品合成成功。
参考:验收要点
- 材料检测与扣除数量一致,失败时材料不扣除;
- 成功/失败两条分支都有反馈;
- 全服公告仅在成功时发送,失败不刷屏;
- 连续合成 100 次统计成功率接近 80%。
本篇依据
- 《996 新三端 Lua 开发教学技术手册》课时 24
参数与取值以你本机版本的官方帮助文档为准,不同版本之间有过调整。