HERO引擎可通过穿戴触发脚本限制项链幸运最高只能保留3点,超出部分自动扣除,整套逻辑依托[@OnTakeOn]穿戴装备标签,仅针对项链装备生效,其他部位首饰不受影响,编写脚本前备份Mir200下QFunction-0.txt文件,防止语法错误造成M2加载失败。
脚本触发逻辑为玩家穿戴装备瞬间执行检测,先判断当前穿戴装备类型,确认属于项链才继续执行幸运校验,其余装备直接跳过。读取装备的幸运属性数值,对比预设上限3,装备幸运大于3时,执行修改装备幸运指令,将幸运强制修改为3,同时发送提示文字告知玩家,项链幸运已被限制至最大值。装备幸运小于等于3则不做任何改动,保留原有属性。HERO引擎支持直接读取穿戴装备属性,无需额外复杂变量,检测代码放在全局穿戴事件内,所有玩家穿戴项链都会触发判断。
基础脚本主体写入QFunction-0.txt的[@OnTakeOn]标签下,先通过ISADDEQUIP判断是新增穿戴,排除取下装备的触发分支。使用CHECKITEMTYPE检测当前穿戴物品类型,项链对应的Stdmode为19,匹配成功才进入幸运校验流程。读取装备幸运存入临时变量,IF判断幸运>3,满足条件执行CHANGEITEMATTR修改装备幸运值为3,SENDMSG输出提示,不满足直接结束脚本。
区分装备原始幸运与临时附加幸运,该脚本只处理装备本身自带幸运,不包含祝福油临时加持逻辑。如果需要限制祝福油使用时最高加到3点,需要额外编写祝福油双击脚本。在祝福油NPC或者双击道具脚本内,检测目标项链当前幸运,当前幸运等于3时,直接提示幸运已达上限,不扣除祝福油,祝福失败逻辑不再执行。
祝福油限制分支写法,新建祝福油双击触发[@UseBlessOil],先检测人物身上是否佩戴项链,读取项链幸运数值。项链幸运大于等于3,提示当前项链幸运已满,无法继续增加幸运,终止脚本,不扣除背包内祝福油。项链幸运小于3,正常执行祝福油随机增减幸运逻辑,执行完成后再次读取项链幸运,若结果超过3,强制回落为3。
增加取下装备校验分支,在[@OnTakeOff]标签内增加可选检测,防止通过替换装备方式绕过限制。取下项链时不修改属性,仅用于异常校验,一般场景不需要开启。
多项链兼容处理,脚本会识别所有Stdmode19类型装备,不管项链名称,只要是项链都触发幸运上限校验。如果需要部分特殊项链不受3点幸运限制,增加物品名称判断,使用#ACT内的CHECKITEMNAME匹配豁免项链,匹配成功直接跳出脚本,不执行幸运数值修正。
测试流程,在单机环境刷一条幸运5的项链,穿戴后查看装备面板,幸运自动变成3。刷幸运2项链穿戴,属性保持不变。使用祝福油对幸运3项链操作,提示幸运已满,道具不会扣除。测试完成后清理脚本内多余调试消息,减少M2日志体积。重载M2脚本即可生效,不需要重启整套服务端。
常见问题排查,穿戴项链幸运没有被修正,优先核对Stdmode编号,HERO引擎项链Stdmode固定为19,编号写错不会触发检测。修改后属性不变,确认CHANGEITEMATTR指令为HERO引擎支持的装备属性修改指令,部分旧精简版本引擎不支持实时修改穿戴装备属性,需要更换完整版本。祝福油依旧可以继续叠加幸运,检查祝福油脚本内判断位置,检测代码需要放在扣除祝福油之前。玩家替换装备卡属性,在穿戴事件内增加延迟检测,穿戴完成短暂延时后二次读取幸运数值,再次校验。
变量使用注意,本示例不需要持久人物变量,全部使用脚本临时变量,小退不会影响装备本身属性。修改装备属性是直接修改数据库内这条装备实例,不是临时buff,项链取下存放背包,幸运依旧保持3点。如果想要仅穿戴时临时限制,取下恢复原始幸运,需要改用人物BUFF方式,记录原始幸运,穿戴时降低,取下时还原,该方案代码更长,适合需要保留装备原始高幸运的场景。
权限控制,GM账号可以设置豁免,脚本增加ISADMIN判断,GM穿戴项链不执行幸运限制,方便后台测试。普通玩家全部执行幸运上限校验,不会出现例外。
属性冲突注意,不要和其他装备穿戴脚本冲突,多个功能都写在[@OnTakeOn]内,需要做好跳转逻辑,每个功能执行完毕使用BREAK跳出,避免多条脚本连续执行引发异常。每次修改QFunction文件之后,保存再重载M2,查看M2控制台日志,确认无未知命令报错。
完整脚本示例:
[@OnTakeOn]
#ACT
;检测穿戴物品是否为项链 Stdmode=19
CHECKITEMTYPE 19
#IF
#ACT
GETITEMATTR 0 LUCK <$\(STR(S0)>
#IF
<\)$STR(S0)> > 3
#ACT
CHANGEITEMATTR 0 LUCK 3
SENDMSG 6 系统提示:项链幸运最高限制为3点,已自动修正。
#ELSEACT
BREAK
[@UseBlessOil]
#ACT
CHECKUSEITEM 0
#IF
ISADDEQUIP 1
CHECKITEMTYPE 19
#ACT
GETITEMATTR 0 LUCK <$\(STR(S0)>
#IF
<\)$STR(S0)> >= 3
#ACT
SENDMSG 6 系统提示:该项链幸运已达到上限,无法继续使用祝福油。
BREAK
#ELSEACT
;原有祝福油逻辑放在此处
BREAK
脚本内GETITEMATTR读取当前装备幸运,CHANGEITEMATTR修改幸运数值,0代表身上第一个项链位置,HERO引擎装备位置编号固定不变。如果存在多格项链扩展,需要修改装备位置编号。脚本只对人物生效,英雄项链如需限制,需要单独写英雄穿戴事件,使用H开头的装备属性读取指令。
HERO引擎项链幸运上限3点脚本示例 穿戴检测幸运限制与属性校验实现方案
来源:
作者:
点击:

