在传奇服务端中实现带条件判断的合成系统,需通过NPC脚本结合物品检测与概率控制逻辑。以下以GOM引擎为例,展示如何配置两种合成模式:基础双材料合成(失败全损)与三材料保护合成(失败返还主材料)。
首先创建合成NPC,在D:MirServerMir200EnvirMarket_def目录下新建文件名为“HeCheng”的文本文件,内容如下:
[@main]
IF
CHECKITEM乌木剑1
CHECKITEM黑铁矿1
ACT
MOVS01
GOTO@check_material3
IF
CHECKITEM乌木剑1
CHECKITEM黑铁矿1
CHECKITEM金矿1
ACT
MOVS02
GOTO@do_synthesis
[@check_material3]
IF
CHECKITEM金矿1
ACT
MOVS02
GOTO@do_synthesis
ELSEACT
MOVS01
GOTO@do_synthesis
[@do_synthesis]
IF
EQUALS01
ACT
TAKE乌木剑1
TAKE黑铁矿1
MOVRS1100
CALCS1/30;成功率30%
MOVRS2100
IF
SMALLS2S1
GIVE铁剑1
SENDMSG7[合成成功]获得:铁剑
ELSEACT
SENDMSG7[合成失败]材料已消失
IF
EQUALS02
ACT
TAKE乌木剑1
TAKE黑铁矿1
TAKE金矿1
MOVRS1100
CALCS1/60;成功率60%
MOVRS2100
IF
SMALLS2S1
GIVE铁剑1
SENDMSG7[合成成功]获得:铁剑
ELSEACT
GIVE乌木剑1
SENDMSG7[合成失败]返还:乌木剑
脚本逻辑说明:
玩家对话后先检测是否携带乌木剑和黑铁矿。
若同时持有金矿,则S0=2,进入三材料流程;否则S0=1,进入双材料流程。
双材料合成(S0=1):扣除全部材料,按30%概率给予铁剑,失败不返还任何物品。
三材料合成(S0=2):扣除三种材料,按60%概率给予铁剑,失败时仅返还乌木剑。
关键指令解析:
CHECKITEM:检测背包是否存在指定物品及数量。
TAKE:扣除材料,必须在判断前执行,避免重复扣除。
MOVRS1100/CALCS1/X:生成1~100随机数,通过除法设定成功率(如/30即约33.3%,实际可调整数值精确控制)。
SENDMSG7:向玩家发送黄色系统提示。
部署步骤:
将“HeCheng”文件放入Market_def目录。
在D:MirServerMir200EnvirMapQuest_def中添加地图触发或通过QFunction.txt调用。
重启LoginSrv与GameSrv使脚本生效。
扩展应用:
如需增加更多合成配方,可在@main中追加CHECKITEM组合,并分配不同S0值。
成功率可通过数据库或外部配置文件动态读取,避免频繁修改脚本。
物品名称必须与StdItems.db中ItemName字段完全一致,包括空格与符号。
该脚本结构清晰,支持多配方并行判断,适用于装备升级、材料转化等场景,满足不同合成规则需求。
首先创建合成NPC,在D:MirServerMir200EnvirMarket_def目录下新建文件名为“HeCheng”的文本文件,内容如下:
[@main]
IF
CHECKITEM乌木剑1
CHECKITEM黑铁矿1
ACT
MOVS01
GOTO@check_material3
IF
CHECKITEM乌木剑1
CHECKITEM黑铁矿1
CHECKITEM金矿1
ACT
MOVS02
GOTO@do_synthesis
[@check_material3]
IF
CHECKITEM金矿1
ACT
MOVS02
GOTO@do_synthesis
ELSEACT
MOVS01
GOTO@do_synthesis
[@do_synthesis]
IF
EQUALS01
ACT
TAKE乌木剑1
TAKE黑铁矿1
MOVRS1100
CALCS1/30;成功率30%
MOVRS2100
IF
SMALLS2S1
GIVE铁剑1
SENDMSG7[合成成功]获得:铁剑
ELSEACT
SENDMSG7[合成失败]材料已消失
IF
EQUALS02
ACT
TAKE乌木剑1
TAKE黑铁矿1
TAKE金矿1
MOVRS1100
CALCS1/60;成功率60%
MOVRS2100
IF
SMALLS2S1
GIVE铁剑1
SENDMSG7[合成成功]获得:铁剑
ELSEACT
GIVE乌木剑1
SENDMSG7[合成失败]返还:乌木剑
脚本逻辑说明:
玩家对话后先检测是否携带乌木剑和黑铁矿。
若同时持有金矿,则S0=2,进入三材料流程;否则S0=1,进入双材料流程。
双材料合成(S0=1):扣除全部材料,按30%概率给予铁剑,失败不返还任何物品。
三材料合成(S0=2):扣除三种材料,按60%概率给予铁剑,失败时仅返还乌木剑。
关键指令解析:
CHECKITEM:检测背包是否存在指定物品及数量。
TAKE:扣除材料,必须在判断前执行,避免重复扣除。
MOVRS1100/CALCS1/X:生成1~100随机数,通过除法设定成功率(如/30即约33.3%,实际可调整数值精确控制)。
SENDMSG7:向玩家发送黄色系统提示。
部署步骤:
将“HeCheng”文件放入Market_def目录。
在D:MirServerMir200EnvirMapQuest_def中添加地图触发或通过QFunction.txt调用。
重启LoginSrv与GameSrv使脚本生效。
扩展应用:
如需增加更多合成配方,可在@main中追加CHECKITEM组合,并分配不同S0值。
成功率可通过数据库或外部配置文件动态读取,避免频繁修改脚本。
物品名称必须与StdItems.db中ItemName字段完全一致,包括空格与符号。
该脚本结构清晰,支持多配方并行判断,适用于装备升级、材料转化等场景,满足不同合成规则需求。

