传奇引擎实现装备隐藏属性加成(如力量戒指攻击+1)的脚本指南

来源: 作者: 点击:
在传奇游戏中,当玩家佩戴特定装备(如力量戒指)时,触发隐藏属性加成(如攻击力额外+1),但装备面板不显示该属性(面板仍显示0-6,实际变为0-7)。这种效果需通过游戏脚本实现,而非简单修改数据库。以下是实现步骤和脚本示例。

一、实现原理
数据库定义基础属性

在 StdItems.DB 中设置装备的基础属性(如力量戒指攻击0-6)。
脚本动态追加隐藏属性

通过监听装备穿戴/卸下事件:
穿戴时:触发脚本,临时增加人物属性(如攻击+1)。

卸下时:移除临时属性。
登录时重算属性

因临时属性下线消失,需在登录时重新计算当前穿戴装备的隐藏加成。

二、具体步骤(GOM引擎为例)
数据库设置(StdItems.DB)

物品名称 攻击下限 攻击上限 其他属性

力量戒指 0 6 ...

在M2引擎中添加自定义变量

路径:M2 -> 查看 -> 列表信息二 -> 其他设置 -> 自定义变量

添加变量:

变量名:力量戒指加成

类型:数字型(用于记录当前攻击加成值)
编写脚本(QFunction-0.txt)

重新计算隐藏属性(核心脚本)

[@ReCalcPowerRing]
ACT
获取上次加成值并减去

MOV N上次加成值 <HUMAN(力量戒指加成)>
CHANGEMODE 2 - <STR(N上次加成值)> ; 扣除旧加成
重新计算佩戴的数量

MOV N$当前加成值 0
检查左手戒位置

IF

CheckItemW 力量戒指 7
ACT

INC N$当前加成值 1 ; 左手戒存在,数量+1
检查右手戒位置

IF

CheckItemW 力量戒指 8
ACT

INC N$当前加成值 1 ; 右手戒存在,数量+1
应用新加成

CHANGEMODE 2 + <STR(N当前加成值)> ; 增加新加成
HUMAN 力量戒指加成 = <STR(N当前加成值)> ; 更新自定义变量
提示信息

IF

LARGE N$当前加成值 0
ACT

SendMsg 5 力量戒指触发隐藏属性:攻击力+<STR(N当前加成值)>
穿戴/卸下装备时触发

[@TakeOn7] ; 左手戒穿戴
[@TakeOn8] ; 右手戒穿戴
ACT

GOTO @ReCalcPowerRing ; 调用重算脚本

[@TakeOff7] ; 左手戒卸下
[@TakeOff8] ; 右手戒卸下
ACT

GOTO @ReCalcPowerRing ; 调用重算脚本

登录时重算属性(Login.txt)

[@Login]
ACT

HUMAN 力量戒指加成 = 0 ; 初始化变量
GOTO @ReCalcPowerRing ; 登录时立即重算隐藏属性

三、注意事项
位置编号说明

7 = 左手戒,8 = 右手戒(不同引擎需调整,参考引擎文档)。
同时佩戴多件装备

脚本已支持同时检查左右手戒位置,自动累加属性(如戴两枚戒指,攻击+2)。
避免属性重复

通过变量记录当前加成值,每次重算前先清除旧加成,防止属性叠加错误。
引擎兼容性

GOM/GEE引擎:直接使用上述脚本。

Hero引擎:需将 CHANGEMODE 改为 CHANGEATTACK 命令。

四、常见问题
面板为何不显示隐藏属性?

脚本动态修改的是人物属性而非装备属性,因此装备面板保持不变。
如何为其他装备追加隐藏属性?

复制脚本逻辑,修改装备名称和属性类型(如魔法防御:CHANGEMODE 3)。
属性加成不生效?

检查自定义变量是否在M2中添加。

检查装备位置编号是否正确。

确认脚本文件路径(如 MirServer\Mir200\Envir\QuestDiary)。

最终效果:玩家佩戴力量戒指时,人物攻击力实际提升(0-6 → 0-7),卸下后恢复,完美实现隐藏属性加成!

无需修改数据库,仅通过脚本即可动态控制属性,适用于各类复古和定制版本。