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

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

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

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

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

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

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

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

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

力量戒指06...

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

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

添加变量:

变量名:力量戒指加成

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

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

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

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

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

IF

CheckItemW力量戒指7
ACT

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

IF

CheckItemW力量戒指8
ACT

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

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

IF

LARGEN$当前加成值0
ACT

SendMsg5力量戒指触发隐藏属性:攻击力+<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命令。

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

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

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

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

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

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

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

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