在传奇服务端脚本中实现装备合成的成功率,需结合随机数判断与条件跳转。以下以QFunction或NPC对话脚本为例,说明具体写法。
一、基础合成结构回顾
典型无概率合成脚本如下:
[@合成]
IF
CHECKITEM火焰戒指1
CHECKITEM紫碧螺1
ACT
TAKE火焰戒指1
TAKE紫碧螺1
GIVE红宝石戒指1
SENDMSG6合成成功!
二、加入成功率判断
使用RANDOM命令设定百分比几率。例如设成功率为70%,则失败率为30%。修改后脚本:
[@合成]
IF
CHECKITEM火焰戒指1
CHECKITEM紫碧螺1
ACT
goto@开始合成
[@开始合成]
IF
RANDOM70
ACT
TAKE火焰戒指1
TAKE紫碧螺1
GIVE红宝石戒指1
SENDMSG6合成成功!
ELSEACT
TAKE火焰戒指1
TAKE紫碧螺1
SENDMSG6合成失败,材料已消失。
三、保留材料的失败处理
若希望失败时不扣除材料,仅扣除金币或特殊道具(如祝福油),可调整为:
[@合成]
IF
CHECKITEM火火戒指1
CHECKITEM紫碧螺1
CHECKGOLD10000
ACT
goto@判定
[@判定]
IF
RANDOM60
ACT
TAKE火焰戒指1
TAKE紫碧螺1
TAKEGOLD10000
GIVE红宝石戒指1
SENDMSG6合成成功!
ELSEACT
TAKEGOLD10000
SENDMSG6合成失败,消耗了金币。
四、多档概率与不同结果
可设置大成功、普通成功、失败三种结果。例如:
10%概率获得强化版装备;
60%概率获得普通版;
30%失败。
脚本写法:
[@高级合成]
IF
CHECKITEM黑铁矿10
CHECKITEM金条1
ACT
goto@概率分支
[@概率分支]
IF
RANDOM10
ACT
TAKE黑铁矿10
TAKE金条1
GIVE金手镯+11
SENDMSG6大成功!获得强化金手镯!
break
IF
RANDOM60
ACT
TAKE黑铁矿10
TAKE金条1
GIVE金手镯1
SENDMSG6合成成功。
break
ELSEACT
TAKE黑铁矿10
TAKE金条1
SENDMSG6合成失败。
注意:RANDOM每次调用独立计算,先判断小概率事件,再判断大概率,避免逻辑重叠。
五、使用变量动态调整概率
可通过变量控制不同玩家的合成几率,例如VIP等级越高成功率越高:
[@合成入口]
IF
EQUAL1
ACT
SET[SuccessRate]80
goto@执行合成
IF
EQUAL0
ACT
SET[SuccessRate]50
goto@执行合成
[@执行合成]
IF
RANDOM
ACT
;成功逻辑
ELSEACT
;失败逻辑
六、注意事项
RANDOMN中N为整数,代表N%几率返回真;
所有CHECKITEM必须在概率判断前完成,避免材料不足仍进入随机流程;
若合成涉及多个步骤(如先熔炼再锻造),每个步骤应独立设置概率;
测试时可用@变量SuccessRate查看当前概率值是否正确赋值;
部分引擎要求RANDOM后不能直接跟#ELSEACT,需用goto跳转确保兼容性。
此方法适用于所有基于标准QFunction事件的传奇引擎,包括给力、3K、Hero等常见版本。核心是将材料检测与随机判断分离,确保逻辑清晰且可维护。
一、基础合成结构回顾
典型无概率合成脚本如下:
[@合成]
IF
CHECKITEM火焰戒指1
CHECKITEM紫碧螺1
ACT
TAKE火焰戒指1
TAKE紫碧螺1
GIVE红宝石戒指1
SENDMSG6合成成功!
二、加入成功率判断
使用RANDOM命令设定百分比几率。例如设成功率为70%,则失败率为30%。修改后脚本:
[@合成]
IF
CHECKITEM火焰戒指1
CHECKITEM紫碧螺1
ACT
goto@开始合成
[@开始合成]
IF
RANDOM70
ACT
TAKE火焰戒指1
TAKE紫碧螺1
GIVE红宝石戒指1
SENDMSG6合成成功!
ELSEACT
TAKE火焰戒指1
TAKE紫碧螺1
SENDMSG6合成失败,材料已消失。
三、保留材料的失败处理
若希望失败时不扣除材料,仅扣除金币或特殊道具(如祝福油),可调整为:
[@合成]
IF
CHECKITEM火火戒指1
CHECKITEM紫碧螺1
CHECKGOLD10000
ACT
goto@判定
[@判定]
IF
RANDOM60
ACT
TAKE火焰戒指1
TAKE紫碧螺1
TAKEGOLD10000
GIVE红宝石戒指1
SENDMSG6合成成功!
ELSEACT
TAKEGOLD10000
SENDMSG6合成失败,消耗了金币。
四、多档概率与不同结果
可设置大成功、普通成功、失败三种结果。例如:
10%概率获得强化版装备;
60%概率获得普通版;
30%失败。
脚本写法:
[@高级合成]
IF
CHECKITEM黑铁矿10
CHECKITEM金条1
ACT
goto@概率分支
[@概率分支]
IF
RANDOM10
ACT
TAKE黑铁矿10
TAKE金条1
GIVE金手镯+11
SENDMSG6大成功!获得强化金手镯!
break
IF
RANDOM60
ACT
TAKE黑铁矿10
TAKE金条1
GIVE金手镯1
SENDMSG6合成成功。
break
ELSEACT
TAKE黑铁矿10
TAKE金条1
SENDMSG6合成失败。
注意:RANDOM每次调用独立计算,先判断小概率事件,再判断大概率,避免逻辑重叠。
五、使用变量动态调整概率
可通过变量控制不同玩家的合成几率,例如VIP等级越高成功率越高:
[@合成入口]
IF
EQUAL1
ACT
SET[SuccessRate]80
goto@执行合成
IF
EQUAL0
ACT
SET[SuccessRate]50
goto@执行合成
[@执行合成]
IF
RANDOM
ACT
;成功逻辑
ELSEACT
;失败逻辑
六、注意事项
RANDOMN中N为整数,代表N%几率返回真;
所有CHECKITEM必须在概率判断前完成,避免材料不足仍进入随机流程;
若合成涉及多个步骤(如先熔炼再锻造),每个步骤应独立设置概率;
测试时可用@变量SuccessRate查看当前概率值是否正确赋值;
部分引擎要求RANDOM后不能直接跟#ELSEACT,需用goto跳转确保兼容性。
此方法适用于所有基于标准QFunction事件的传奇引擎,包括给力、3K、Hero等常见版本。核心是将材料检测与随机判断分离,确保逻辑清晰且可维护。

