传奇脚本强制修改人物攻击模式核心参数详解与引擎命令适配对照

来源: 作者: 点击:
攻击模式的强制修改依赖三个核心命令:SetHumAttackMode、ChangeAttatckMode、ChangeModeEx。三者用途不同,参数格式和生效条件也有差异。先厘清攻击模式编号体系,再逐一说明各命令的用法。

一、攻击模式编号体系

攻击模式编号在多数引擎中统一为0至7,共八种模式。0对应全体攻击模式,角色主动攻击地图内所有可攻击单位,包括玩家和怪物。1对应和平攻击模式,角色仅攻击怪物,无法攻击玩家。2对应夫妻攻击模式,仅攻击非夫妻关系的玩家。3对应师徒攻击模式,仅攻击非师徒关系的玩家。4对应编组攻击模式,仅攻击非本组队的玩家。5对应行会攻击模式,仅攻击非本行会的玩家。6对应红名攻击模式,角色不主动攻击,受到攻击后反击。7对应国家攻击模式,仅攻击非本国玩家。

部分引擎存在编号差异。Blue引擎的CheckAttackMode检测范围标注为0至6,6代表善恶模式而非红名模式。在编写脚本前,先确认所用引擎的攻击模式编号表。

二、SetHumAttackMode 强制模式命令

功能为强制设定人物攻击模式,在有效时间内玩家无法自行切换。格式为:SetHumAttackMode 攻击模式(0-7) 有效时间(秒)。有效时间以秒为单位,上限65535秒,设置9999秒约等于2.7小时。

典型应用是红名角色上线时强制切换为和平模式,防止红名玩家一上线就攻击其他玩家。脚本写入QManage.txt的[@Login]触发段:
```
#IF
CHECKPKPOINT > 200
#ACT
SETHUMATTACKMODE 1 9999
SENDMSG 6 红名状态强制和平模式
```
该命令与ChangeAttatckMode的关键区别在于强制性和时效性。SetHumAttackMode在有效时间内玩家按键切换无效,小退后失效。ChangeAttatckMode设置的攻击模式玩家仍可自由切换。

地图强制攻击模式也用此命令。在国战地图的进入脚本中加入SetHumAttackMode 0 3600,进入地图后1小时内强制全体攻击模式,配合sendmsg 6发送提示。

三、ChangeAttatckMode 脚本设定模式命令

功能为脚本设定人物攻击模式,玩家之后可自由切换。格式为:ChangeAttatckMode 模式编号(0-6)。无时间参数,执行一次即变更当前模式,玩家可后续自行按键修改。

该命令常用于假人系统配置。在假人脚本中将ChangeAttatckMode设为0,假人进入全体主动攻击模式,可攻击怪物、其他假人和玩家角色。设为1则全程无攻击行为,仅移动和站立。假人配置文件中AttatckMode参数调为0即全体攻击,调为5则仅攻击敌对行会。

行会掌门控制行会成员强制行会模式的脚本也基于此命令。掌门输入@强制行会模式后,遍历在线成员逐个执行ChangeAttatckMode 5,再次输入则恢复。该方案用于攻沙期间统一行会成员攻击模式。

四、ChangeModeEx 人物状态模式命令

ChangeModeEx与攻击模式编号体系不同,它控制的是角色状态而非攻击目标筛选。格式为:ChangeModeEx 模式(1-10) 有效时间(1-65535) 附加值(1-65535)。

模式编号1至10依次为:1等于无敌,2等于隐身,3等于HP上限,4等于MP上限,5等于攻击力,6等于魔法力,7等于道术力,8等于攻击速度,9等于禁止攻击,10等于锁定。第三个参数在模式1、2、9时不使用,模式3至8时作为属性增加值。

禁止攻击模式在需要限制玩家输出的场景中有实际用途。例如进入答题地图时执行ChangeModeEx 9 60,玩家60秒内无法攻击也无法施法。锁定模式ChangeModeEx 10 60则禁止移动、攻击和传送,用于处罚挂机角色。攻击力增益的写法为ChangeModeEx 5 60 20,60秒内攻击上限增加20点。

五、引擎命令差异与兼容处理

GOM引擎支持全部三个命令。SetHumAttackMode参数为0至7模式加0至65535秒。ChangeAttatckMode在GOM中适用于假人配置,参数0至6。ChangeModeEx在GOM中支持扩展模式编号至24,包括禁锢、冰冻、蛛网、防麻痹、护身、吸血、吸蓝等。

GEE引擎的攻击模式切换命令为ChangeAttMode,与GOM的ChangeMode拼写不同。从GOM迁移脚本到GEE时需替换命令名。BLUE引擎使用ChangeAttackMode,参数为0至5模式,无时间参数。HERO引擎的CHECKATTACKMODE支持0至6检测,ChangeAttackMode用于切换。

MAX引擎使用SetHumAttackMode,参数格式与GOM一致。强制和平模式的写法为SetHumAttackMode 1 3600,配合CHECKPKPOINT条件判断触发。

六、检测命令与条件触发

CheckAttackMode用于检测人物当前攻击模式,格式为CheckAttackMode 模式(0-7)。返回条件成立则执行后续脚本段。示例:
```
#IF
CheckAttackMode 1
#SAY
当前为和平攻击模式
```
该命令常与SetHumAttackMode配合使用,在强制修改前先检测当前模式,避免重复设置。HGE引擎使用H.CheckAttackMode命令,检测语法与通用版一致。

七、失效条件与排查要点

SetHumAttackMode的强制效果仅持续到设定秒数结束或玩家小退。小退后重新登录,攻击模式恢复为默认值。若需上线即强制,脚本必须写入QManage.txt的[@Login]段,每次登录都执行一次。

强制攻击模式命令不生效时,先排查三个方向。一是命令名拼写是否与引擎匹配,GOM用SetHumAttackMode,GEE用ChangeAttMode,BLUE用ChangeAttackMode。二是参数是否超出引擎支持范围,部分引擎攻击模式最大值为6而非7,传入7会被拒绝并报ERR_ATTACKMODE_1无效模式代码。三是脚本触发段是否正确,检查QFunction-0.txt或QManage.txt中的触发标签是否完整闭合,[@Login]段末尾是否有Break语句。

修改脚本后需在M2控制器中重新加载脚本文件,或重启服务端使变更生效。仅保存文件不加载,脚本不会执行。