传奇合成脚本:支持多材料组合与差异化失败返还

来源: 作者: 点击:
在传奇服务端中实现合成系统,需通过QFunction脚本控制材料检测、成功率计算及物品增减逻辑。以下脚本支持两种合成模式:基础双材料(失败全损)与三材料增强(失败返还主材料),以乌木剑+黑铁矿合成铁剑为例。

脚本结构说明

所有合成逻辑写入MirServerMir200EnvirQFunction-0.txt。使用自定义NPC触发,例如在NPC对话中添加选项“[@合成武器]”。

基础双材料合成(失败全损)

[@合成武器]
IF
CHECKITEM 10 1 ;背包有1把乌木剑(物品代码10)
CHECKITEM 15 30 ;背包有30个黑铁矿(物品代码15)
ACT
MOV S0 60 ;设定成功率60%
RANDOM S0 ;生成0-59随机数
IF
EQUAL S0 0 ;随机数小于60即成功(0-59共60个值)
ACT
TAKE 10 1 ;扣除乌木剑
TAKE 15 30 ;扣除黑铁矿
GIVE 11 1 ;给予铁剑(物品代码11)
SENDMSG 0 合成成功!获得铁剑。
BREAK
ELSEACT
TAKE 10 1 ;失败:扣除全部材料
TAKE 15 30
SENDMSG 0 合成失败,材料已消失。

三材料增强合成(失败返还主材料)

[@高级合成]
IF
CHECKITEM 10 1 ;乌木剑
CHECKITEM 15 30 ;黑铁矿
CHECKITEM 16 5 ;金矿(物品代码16),5个
ACT
MOV S0 80 ;成功率提升至80%
RANDOM S0
IF
EQUAL S0 0
ACT
TAKE 10 1
TAKE 15 30
TAKE 16 5
GIVE 11 1
SENDMSG 0 高级合成成功!获得铁剑。
BREAK
ELSEACT
TAKE 15 30 ;仅扣除辅料
TAKE 16 5
; 乌木剑(主材料)不扣除,保留在背包
SENDMSG 0 合成失败,消耗了黑铁矿和金矿。

物品代码对照表(示例)
物品名称 代码 数量
乌木剑 10 1

黑铁矿 15 30

金矿 16 5

铁剑 11 1

实际使用时需根据客户端Item目录中的StdItems.txt确认真实物品代码。

集成到NPC对话

在MirServerMir200EnvirMarket_def下创建NPC文件(如HeCheng.txt),内容如下:

[@main]
欢迎使用合成系统!

[@合成武器]
...(插入上述双材料脚本)...

[@高级合成]
...(插入上述三材料脚本)...

在D:MirServerMir200!Setup.txt中注册该NPC:
N$HeCheng 300 300 HeCheng.txt

重启M2Server后,在地图(300,300)处出现合成师NPC。

扩展多配方支持

若需添加更多合成配方(如裁决+祝福油=强化裁决),复制上述结构,修改物品代码、数量和成功率即可。每个配方使用独立标签(如@合成裁决),避免逻辑冲突。

注意事项

物品代码必须准确:错误代码会导致TAKE/GIVE失效;
材料顺序无关:CHECKITEM仅检测存在性,不依赖背包位置;
成功率范围:MOV S0 X 中X最大为100,对应0%-99%区间;
背包空间检查:若合成成功但背包满,物品可能丢失。可在GIVE前加CHECKBAGSIZE 1判断。

此脚本无需额外插件,兼容GOM、GEE、Hero等主流引擎,直接部署即可实现差异化合成返还机制。