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

来源: 作者: 点击:
在《热血传奇》中通过NPC脚本实现装备合成,并加入成功率控制,需结合条件判断、随机数指令与物品操作命令。以下为完整实现逻辑,适用于标准Mir2服务端。

一、基础合成结构
首先定义合成入口与材料检测。例如合成“龙纹剑”需“炼狱”+“魔法书”:

[@main]
想合成龙纹剑吗?



[@make]
IF
CHECKITEM 炼狱 1
CHECKITEM 魔法书 1
ACT
TAKE 炼狱 1
TAKE 魔法书 1
CALL [MakeSwordProcess]
ELSEACT
MESSAGE 材料不足!需要炼狱和魔法书各1个。


二、引入随机概率判定
在Process.txt中使用RANDOM指令控制成功率。假设成功率为70%(即7000/10000):

[@main]
IF
RANDOM 7000
ACT
GIVE 龙纹剑 1
SENDMSG 6 合成成功!获得龙纹剑。
ELSEACT
SENDMSG 1 合成失败,材料已消耗。

RANDOM后数值为万分比,7000=70%,3000=30%,以此类推。

三、多档成功率设计(可选)
若需根据道具或等级调整概率,可加入前置判断。例如持有“祝福油”提升至90%:

[@main]
IF
CHECKITEM 祝福油 1
ACT
TAKE 祝福油 1
MOV S1 9000
ELSEACT
MOV S1 7000

IF
RANDOM S1
ACT
GIVE 龙纹剑 1
SENDMSG 6 合成成功!
ELSEACT
SENDMSG 1 合成失败。

S1作为动态概率变量,由前置条件赋值。

四、失败保留材料(可选机制)
若希望失败时不扣除材料,需将TAKE操作移至成功分支:

[@make]
IF
CHECKITEM 炼狱 1
CHECKITEM 魔法书 1
ACT
CALL [MakeSwordProcess]
ELSEACT
MESSAGE 材料不足!

; Process.txt
[@main]
IF
RANDOM 7000
ACT
TAKE 炼狱 1
TAKE 魔法书 1
GIVE 龙纹剑 1
SENDMSG 6 合成成功!
ELSEACT
SENDMSG 1 合成失败,材料未消耗。


五、防止重复触发与冷却
为避免快速连点,可加入冷却标记:

IF
EQUAL S0 1
ACT
MESSAGE 正在处理中,请稍候。
break
ACT
MOV S0 1
TIMERECALL @resetflag 2
; 执行合成逻辑
[@resetflag]
MOV S0 0

S0作为锁标志,2秒后自动重置。

六、注意事项
RANDOM指令必须大写,参数为整数;
物品名称需与Item.db中定义完全一致(区分全角半角);
多条件检测时,所有#IF条件需同时满足才执行#ACT;
脚本路径中的反斜杠在CALL指令中需转义为正斜杠或双反斜杠(依服务端版本而定);
测试时建议先用低价值物品验证概率逻辑,避免资源浪费。

通过上述方法,可灵活实现任意装备的带成功率合成系统,支持材料消耗策略调整与动态概率控制,满足多样化玩法需求。