传奇NPC装备合成概率脚本实现方法

来源: 作者: 点击:
在传奇NPC脚本中实现概率合成,核心命令是 RANDOM。该命令通过生成随机数来模拟成功率,配合条件检测与物品扣除,即可构建完整的概率合成逻辑。

基础概率合成脚本模板

以下脚本演示了“3个祖玛首饰 + 1000元宝”有 1/3 几率(约33%) 合成“赤月首饰”,失败则扣除材料并提示。
[@合成赤月首饰]
#IF
;检测材料:祖玛首饰3个,元宝1000
CHECKITEM 祖玛首饰 3
CHECKGAMEGOLD > 999
;概率判定:RANDOM 3 代表 1/3 几率
RANDOM 3
#ACT
;成功分支:扣除材料,给予成品
TAKE 祖玛首饰 3
GAMEGOLD - 1000
GIVE 赤月首饰 1
SENDMSG 6 恭喜!合成赤月首饰成功!
BREAK
#ELSEACT
;失败分支:仅扣除材料,不给成品
TAKE 祖玛首饰 3
GAMEGOLD - 1000
SENDMSG 6 很遗憾,合成失败,材料已消失!
BREAK


RANDOM 命令的几率换算

RANDOM N 的含义是 1/N 的成功率。系统会随机生成一个 0 到 N-1 的整数,只有当这个数等于 0 时,#IF 条件才判定为真,执行 #ACT 段(成功),否则执行 #ELSEACT 段(失败)。

RANDOM 参数 实际成功率 适用场景

RANDOM 2 50% 抛硬币,对半几率

RANDOM 3 33.3% 基础概率合成

RANDOM 4 25% 中等难度合成

RANDOM 5 20% 常用设定

RANDOM 10 10% 高价值装备,低成功率

进阶:多档位概率与保底机制

如果需要实现更复杂的逻辑(如“30%成功、20%破碎、50%无损失败”),需要使用多个 RANDOM 段进行分流。
[@高级合成]
#IF
CHECKITEM 黑铁矿石 5
RANDOM 10 ; 总概率分母设为10
#ACT
; 第一档:30% 成功 (Random 10 的 0,1,2 三种情况)
GOTO @合成成功
BREAK
#ELSEACT
; 进入失败判定分支
GOTO @判定失败结果

[@合成成功]
#ACT
TAKE 黑铁矿石 5
GIVE 屠龙 1
SENDMSG 1 神器出世!%s 合成屠龙成功!
BREAK

[@判定失败结果]
; 在剩下的70%几率里,再分两档
#IF
RANDOM 7 ; 70% 中的 2/7 ≈ 28.5% 即总概率20%的破碎
#ACT
TAKE 黑铁矿石 5
SENDMSG 6 合成失败,装备已破碎!
BREAK
#ELSEACT
; 剩余情况(总概率50%)仅提示,不扣材料
SENDMSG 6 合成失败,材料无损返还。
BREAK


常见错误与避坑指南

1. 逻辑顺序错误:必须先检测材料 (CHECKITEM),再进行 RANDOM 判定。如果顺序颠倒,玩家即使材料不足也会触发随机数消耗。
2. 分母选择不当:RANDOM 100 是 1% 的成功率,而非 100%。若需 80% 的高成功率,应使用反向逻辑(检测 RANDOM 5,失败给成功)。
3. BREAK 缺失:每个执行分支末尾必须加 BREAK,否则脚本会继续向下执行,导致逻辑混乱。
4. M2 内置合成系统:部分引擎(如 LEGENDM2)在 M2Server 的“列表信息”中提供了可视化合成设置,可直接配置成功率百分比,无需手写脚本。若已使用该功能,则无需在 NPC 中重复编写 RANDOM 逻辑。

引擎差异说明

• GOM / GEE / BLUE / HERO:均支持上述 RANDOM 标准语法。

- HGE / 翎风:部分新引擎支持 RANDOMEX 命令,可指定更精确的百分比(如 RANDOMEX(80) 代表 80% 几率),具体需查阅对应引擎说明书。

修改脚本后,需在 M2Server 控制台点击“重载 NPC”或“重载 QF脚本”使改动生效。