传奇服务端合成系统通过QFunction脚本实现,需结合随机概率、物品检测与条件分支。以下以“极品金牛戒指”和“极品金牛碎片”为例,说明带成功率及特殊道具干预的完整写法。
一、基础合成结构(无成功率)
如用户所述,基础合成检测材料并执行扣除与给予,结构正确。但需注意:物品名称必须与ItemDB.txt完全一致,包括空格与标点。
二、加入合成成功率(无精练符)
使用Random指令设定失败概率。例如80%成功率,则失败概率为20:
[@HeChengJinNiuRing]
IF
CheckItem 金牛道戒 1
CheckItem 金牛战戒 1
CheckItem 金牛魔戒 1
CheckItem 极品金牛碎片 2
Random 20
ACT
Take 金牛道戒 1
Take 金牛战戒 1
Take 金牛魔戒 1
Take 极品金牛碎片 2
Give 极品金牛戒指 1
SendMsg 1 合成成功!获得极品金牛戒指!
Break
ELSEACT
Take 金牛道戒 1
Take 金牛战戒 1
Take 金牛魔戒 1
Take 极品金牛碎片 2
SendMsg 7 合成失败!材料已销毁!
说明:Random 20 表示20%几率条件成立(即失败),此时执行#ELSEACT。若希望保留部分材料,可在失败分支中仅扣除部分物品。
三、加入精练符实现100%成功
需优先检测精练符是否存在。若存在,则跳过随机判断,直接成功:
[@HeChengJinNiuRing]
; 先检查是否携带精练符
IF
CheckItem 精练符 1
CheckItem 金牛道戒 1
CheckItem 金牛战戒 1
CheckItem 金牛魔戒 1
CheckItem 极品金牛碎片 2
ACT
Take 精练符 1
Take 金牛道戒 1
Take 金牛战戒 1
Take 金牛魔戒 1
Take 极品金牛碎片 2
Give 极品金牛戒指 1
SendMsg 1 使用精练符,合成必定成功!
Break
; 无精练符时走普通成功率流程
IF
CheckItem 金牛道戒 1
CheckItem 金牛战戒 1
CheckItem 金牛魔戒 1
CheckItem 极品金牛碎片 2
Random 20
ACT
Take 金牛道戒 1
Take 金牛战戒 1
Take 金牛魔戒 1
Take 极品金牛碎片 2
Give 极品金牛戒指 1
SendMsg 1 合成成功!
Break
ELSEACT
Take 金牛道戒 1
Take 金牛战戒 1
Take 金牛魔戒 1
Take 极品金牛碎片 2
SendMsg 7 合成失败!材料消失!
注意:两个#IF块顺序不可颠倒,否则精练符逻辑会被普通流程覆盖。
四、极品金牛碎片合成(禁用精练符)
该合成需王者碎片、天龙碎片、金牛碎片各1个,且不允许使用精练符。即使玩家携带精练符,也强制走随机流程:
[@HeChengJinNiuFrag]
; 无论是否带精练符,均不检测,直接走随机
IF
CheckItem 王者碎片 1
CheckItem 天龙碎片 1
CheckItem 金牛碎片 1
Random 30
ACT
Take 王者碎片 1
Take 天龙碎片 1
Take 金牛碎片 1
Give 极品金牛碎片 1
SendMsg 1 极品金牛碎片合成成功!
Break
ELSEACT
Take 王者碎片 1
Take 天龙碎片 1
Take 金牛碎片 1
SendMsg 7 合成失败!碎片化为尘埃!
关键点:脚本中完全不出现CheckItem 精练符,确保其无效。
五、通用注意事项
所有物品名称区分大小写,建议统一使用ItemDB.txt中的标准命名;
Random数值为失败概率百分比,如Random 10 = 10%失败 = 90%成功;
每个合成应分配独立标签(如@HeChengJinNiuRing),避免与其他功能冲突;
若需提示材料不足,可在所有#IF前加一个总检测:
IF
CheckItem 金牛道戒 1
CheckItem 金牛战戒 1
CheckItem 金牛魔戒 1
CheckItem 极品金牛碎片 2
ACT
Goto @HeChengJinNiuRing
ELSEACT
MessageBox 材料不全,无法合成!
修改后需在M2控制台执行@ReloadNpc或重启服务端使脚本生效。
以上脚本适用于Hero、GOM等主流Mir2引擎,可直接复制到QFunction-0.txt对应标签下使用。实际部署前建议在测试账号验证材料扣除与概率逻辑。

