361M2引擎支持直接检测人物身上指定装备槽位,判断该位置是否穿戴装备,可搭配读取装备名称、物品编号、装备属性,常用于穿戴激活套装、部位任务、装备校验,脚本写在NPC对话或者QFunction全局触发标签,修改前备份Mir200脚本文件,避免语法错误造成M2加载失败。
装备位置编号规则,361M2装备槽位序号固定,0代表武器,1代表衣服,2代表项链,3代表头盔,4代表左手镯,5代表右手镯,6代表左戒指,7代表右戒指,8代表腰带,9代表靴子。该编号顺序在检测装备、读取装备属性指令统一使用,不要混淆顺序。
核心检测指令CHECKSLOTITEM,格式为CHECKSLOTITEM 位置编号,执行后判断该槽位是否存在装备,有装备条件成立,空槽位条件不成立。搭配GETSLOTITEMNAME读取槽位装备名称存入临时变量,GETSLOTITEMID读取装备数据库ID,GETSLOTITEMATTR读取装备属性,用于后续多条件校验。
NPC基础检测示例,玩家点击NPC检测身上武器槽位,判断0号位置是否穿戴装备,有装备继续执行后续逻辑,没有装备直接弹出提示。
[@main]
#ACT
SENDMSG 6 检测武器槽位是否穿戴装备
#IF
CHECKSLOTITEM 0
#ACT
GETSLOTITEMNAME 0 <$STR(S0)>
SENDMSG 6 \(STR(S0)>
SENDMSG 6 检测成功,武器槽位装备:<\)<$STR(S0)>
#ELSEACT
SENDMSG 6 武器槽位为空,请穿戴武器再来。
多部位同时检测写法,使用多组CHECKSLOTITEM叠加判断,可实现多件装备同时穿戴才满足条件。例如同时检测项链2和头盔3槽位,两个位置都有装备才判定条件成立。
[@CheckTwoEquip]
#IF
CHECKSLOTITEM 2
CHECKSLOTITEM 3
#ACT
SENDMSG 6 项链与头盔均已穿戴。
#ELSEACT
SENDMSG 6 项链或头盔位置为空。
槽位装备名称精准校验,检测槽位存在装备之后,读取装备名称,使用EQUAL对比变量,判断是否为指定装备,防止其他装备占用槽位通过检测。
[@CheckTargetEquip]
#IF
CHECKSLOTITEM 0
#ACT
GETSLOTITEMNAME 0 <$\(STR(S0)>
#IF
<\)$STR(S0)> = 屠龙
#ACT
SENDMSG 6 检测到武器槽位穿戴屠龙。
#ELSEACT
SENDMSG 6 武器槽位装备不是屠龙。
全局穿戴事件内使用,在QFunction-0.txt的[@OnTakeOn]穿戴触发标签,自动获取当前穿戴槽位编号,可用于装备穿戴时触发BUFF、套装判定。
[@OnTakeOn]
#ACT
GETTAKEONSLOT <$\(STR(S0)>
#IF
<\)$STR(S0)> = 0
#ACT
SENDMSG 6 你穿戴了武器槽位装备。
取下装备检测,[@OnTakeOff]标签内GETTAKEOFFSLOT获取取下装备的槽位编号,用于取消套装增益、移除BUFF。
[@OnTakeOff]
#ACT
GETTAKEOFFSLOT <$\(STR(S0)>
#IF
<\)$STR(S0)> = 0
#ACT
SENDMSG 6 你卸下武器槽位装备。
读取槽位装备属性,GETSLOTITEMATTR 槽位 属性类型 变量,属性类型包含DC、MC、SC、LUCK等,读取装备幸运、攻击数值用于脚本逻辑。例如读取项链槽位幸运:
#IF
CHECKSLOTITEM 2
#ACT
GETSLOTITEMATTR 2 LUCK <$STR(S0)>
SENDMSG 6 \(STR(S0)>
SENDMSG 6 当前项链幸运值:<\)<$STR(S0)>
英雄装备槽检测,361M2英雄装备检测指令增加H前缀,H.CHECKSLOTITEM 槽位编号,H.GETSLOTITEMNAME读取英雄槽装备名称,用于校验英雄身上装备。
常见故障排查,检测槽位一直判定为空,核对槽位编号,编号写错会读取错误位置。读取装备名称为空,确认槽位确实穿戴装备,部分临时幻化装备无法读取真实名称。多条件检测失效,注意脚本顺序,CHECKSLOTITEM必须写在GETSLOTITEMNAME之前,槽位无装备时读取名称指令不会赋值。穿戴触发不执行,确认M2内开启[@OnTakeOn]穿戴事件,精简版本关闭该事件则无法触发。
功能扩展,可制作部位任务,要求玩家穿戴指定槽位装备领取奖励;也可做装备校验,进入特定地图前检测身上指定部位装备,缺少装备禁止进入地图。可以增加多档位套装检测,每满足几个槽位穿戴激活对应属性。
调试方法,单机环境进入游戏穿戴对应装备,调用NPC脚本测试,观察提示文字。切换不同装备、清空槽位反复测试,确认空槽、有装备、装备名称匹配三种场景判断正常。调试完成后删除多余SENDMSG输出语句,减少M2日志写入,重载M2脚本即可生效,无需重启整套服务端。
注意区分槽位检测和背包物品检测,CHECKSLOTITEM只识别身上穿戴装备,背包内装备不会被判定。背包物品检测需要使用CHECKHAVEITEM,二者不可混用。循环批量检测全身装备时,使用变量遍历0至9全部槽位,依次判断,不要重复写大量独立判断语句。GM可以使用指令直接读取指定玩家槽位装备信息,用于后台核对装备状态。
传奇361M2引擎检测人物指定装备位置穿戴状态脚本 装备位置判断与读取属性示例
来源:
作者:
点击:

