传奇NPC装备合成脚本添加概率控制方法

来源: 作者: 点击:
在传奇服务端脚本中实现装备合成的成功率,需结合随机数判断与条件跳转。以下以QFunction或NPC对话脚本为例,说明具体写法。

一、基础合成结构回顾
典型无概率合成脚本如下:
[@合成]
IF
CHECKITEM 火焰戒指 1
CHECKITEM 紫碧螺 1
ACT
TAKE 火焰戒指 1
TAKE 紫碧螺 1
GIVE 红宝石戒指 1
SENDMSG 6 合成成功!

二、加入成功率判断
使用 RANDOM 命令设定百分比几率。例如设成功率为70%,则失败率为30%。修改后脚本:
[@合成]
IF
CHECKITEM 火焰戒指 1
CHECKITEM 紫碧螺 1
ACT
goto @开始合成

[@开始合成]
IF
RANDOM 70
ACT
TAKE 火焰戒指 1
TAKE 紫碧螺 1
GIVE 红宝石戒指 1
SENDMSG 6 合成成功!
ELSEACT
TAKE 火焰戒指 1
TAKE 紫碧螺 1
SENDMSG 6 合成失败,材料已消失。

三、保留材料的失败处理
若希望失败时不扣除材料,仅扣除金币或特殊道具(如祝福油),可调整为:
[@合成]
IF
CHECKITEM 火火戒指 1
CHECKITEM 紫碧螺 1
CHECKGOLD 10000
ACT
goto @判定

[@判定]
IF
RANDOM 60
ACT
TAKE 火焰戒指 1
TAKE 紫碧螺 1
TAKEGOLD 10000
GIVE 红宝石戒指 1
SENDMSG 6 合成成功!
ELSEACT
TAKEGOLD 10000
SENDMSG 6 合成失败,消耗了金币。

四、多档概率与不同结果
可设置大成功、普通成功、失败三种结果。例如:
10% 概率获得强化版装备;
60% 概率获得普通版;
30% 失败。

脚本写法:
[@高级合成]
IF
CHECKITEM 黑铁矿 10
CHECKITEM 金条 1
ACT
goto @概率分支

[@概率分支]
IF
RANDOM 10
ACT
TAKE 黑铁矿 10
TAKE 金条 1
GIVE 金手镯+1 1
SENDMSG 6 大成功!获得强化金手镯!
break

IF
RANDOM 60
ACT
TAKE 黑铁矿 10
TAKE 金条 1
GIVE 金手镯 1
SENDMSG 6 合成成功。
break

ELSEACT
TAKE 黑铁矿 10
TAKE 金条 1
SENDMSG 6 合成失败。

注意:RANDOM 每次调用独立计算,先判断小概率事件,再判断大概率,避免逻辑重叠。

五、使用变量动态调整概率
可通过变量控制不同玩家的合成几率,例如VIP等级越高成功率越高:
[@合成入口]
IF
EQUAL 1
ACT
SET [SuccessRate] 80
goto @执行合成

IF
EQUAL 0
ACT
SET [SuccessRate] 50
goto @执行合成

[@执行合成]
IF
RANDOM
ACT
; 成功逻辑
ELSEACT
; 失败逻辑

六、注意事项
RANDOM N 中 N 为整数,代表 N% 几率返回真;
所有 CHECKITEM 必须在概率判断前完成,避免材料不足仍进入随机流程;
若合成涉及多个步骤(如先熔炼再锻造),每个步骤应独立设置概率;
测试时可用 @变量 SuccessRate 查看当前概率值是否正确赋值;
部分引擎要求 RANDOM 后不能直接跟 #ELSEACT,需用 goto 跳转确保兼容性。

此方法适用于所有基于标准QFunction事件的传奇引擎,包括给力、3K、Hero等常见版本。核心是将材料检测与随机判断分离,确保逻辑清晰且可维护。