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

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

基础概率合成脚本模板

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


RANDOM命令的几率换算

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

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

RANDOM250%抛硬币,对半几率

RANDOM333.3%基础概率合成

RANDOM425%中等难度合成

RANDOM520%常用设定

RANDOM1010%高价值装备,低成功率

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

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

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

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


常见错误与避坑指南

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

引擎差异说明

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

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

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