**UPGRADEITEMEX 指令参数解析**
要搞懂问题出在哪,先把这条指令的五个参数逐一拆开看。标准格式是 `UPGRADEITEMEX 物品位置 属性位置 成功机率 点数机率 是否破碎`。
物品位置:1 代表武器栏,这部分脚本写得没错。属性位置:6 在多数引擎中对应攻击速度,这个也需要根据具体引擎确认。成功机率:数字越大成功率越低,0 就是永远不成功。点数机率:升级成功后增加的点数。是否破碎:0 为失败不碎,1 为失败破碎。
原脚本把第三个参数写成 0,等于告诉引擎“这次升级绝对失败”。有些引擎在判定升级失败后,会对目标属性进行反向修正,攻速就这么被扣掉了。
**修正方案**
根据脚本的实际需求,有两种改法。
如果希望升级是必定成功的,把第三个参数改成 100:`UPGRADEITEMEX 1 6 100 1 0`。这样每次执行都会稳定增加 1 点攻速属性。
如果希望保留成功率机制,把第三个参数设为合理数值,比如 50 表示 50% 成功率:`UPGRADEITEMEX 1 6 50 1 0`。成功时加 1 点,失败时不扣属性,因为最后一个参数是 0 表示不破碎、也不倒扣。
**攻击速度属性的方向问题**
这里还有一个容易踩的坑。部分传奇引擎中,攻击速度字段的实际含义是“攻击间隔时间”,数值越大代表出手越慢。如果服务端把攻速属性设计成这种反向逻辑,那么脚本加 1 点攻速实际效果就是让角色变慢。
判断方法:进入服务端目录,查找物品扩展属性定义文件,比如 Hero 引擎下的 `ItemExt.txt`,找到 `WeaponSpeed` 或 `AttackSpeed` 相关条目,看描述中“数值越小速度越快”还是相反。如果确认是反向逻辑,脚本中的加点操作就要改成减点。
**CheckItemAddValue 的检测逻辑**
原脚本中 `CheckItemAddValue 1 6 < 3` 用于检测武器攻速附加属性是否低于 3 点,以此作为升级上限。这个判断本身没问题,但需要注意区分“基础攻速”和“附加攻速”。部分武器自身带有基础攻速属性,如果检测时把基础值也算进去了,判断就会失准。
测试时建议先用一把基础攻速为 0 的武器来验证脚本效果,排除基础属性的干扰。
**goto 跳转的潜在问题**
脚本执行成功后 `goto @武器升级` 跳转回主菜单,这个逻辑本身没问题。但要确认 `@武器升级` 标签下的代码里没有再次操作攻速属性的指令。如果那个标签里存在反向修改攻速的代码,就会出现“升一次降一次”的循环异常。
**完整修正后的脚本**
结合以上分析,修正后的脚本如下:
```
[@速度升级]
#IF
CHECKUSEITEM 1
CheckItemAddValue 1 6 < 3
CHECKGAMEGOLD > 199999
#ACT
GAMEGOLD - 200000
SENDMSG 6 开始炼化...祝你好运....
UPGRADEITEMEX 1 6 100 1 0
goto @武器升级
#ELSEACT
MESSAGEBOX 你没有200000元宝或未戴武器,或者已经升级超过3点了,不能再升!
```
核心改动就是把 `UPGRADEITEMEX` 的第三个参数从 0 改成 100,确保升级必定成功且不会反向扣属性。如果服务端确认攻速属性是反向逻辑,则需要把加点改为减点,同时同步修改 `CheckItemAddValue` 的判断条件和提示文字,避免玩家产生混淆。
| 以下为引用的内容: [@速度升级] #IF CHECKUSEITEM 1 CheckItemAddValue 1 6 < 3 CHECKGAMEGOLD > 199999 #ACT GAMEGOLD - 200000 SENDMSG 6 开始炼化...祝你好运.... UPGRADEITEMEX 1 6 100 1 0 goto @武器升级 #ELSEACT MESSAGEBOX 你没有200000元宝或未戴武器,或者已经升级超过3点了,不能再升! |

