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

