传奇脚本检测当前攻击模式命令写法与攻击触发判断完整配置方法

来源: 作者: 点击:
传奇脚本中检测攻击模式,通常不是用一条固定命令就能完成,而是要根据当前引擎、版本脚本库、M2设置和触发文件来写。常见思路有三种:

通过脚本检测玩家当前攻击模式编号。
通过攻击触发脚本判断攻击目标类型。
通过条件判断限制不同攻击模式下的行为。

不同引擎和版本的命令名称、参数顺序、触发标签可能不同,下面写法以常见传奇脚本结构作为示例,实际使用时需要对照当前版本的脚本帮助文件或命令列表确认。

一、传奇常见攻击模式类型

传奇类游戏中,攻击模式一般包括以下几种:
模式名称 作用说明
和平模式 不能攻击其他玩家

全体模式 可以攻击所有玩家

编组模式 不能攻击同组玩家

行会模式 不能攻击同行会玩家

善恶模式 主要攻击红名或伤害过自己的玩家

师徒模式 不能攻击师徒关系玩家

夫妻模式 不能攻击夫妻关系玩家

红名模式 主要攻击红名玩家

不同版本支持的攻击模式可能不完全一样,有的版本只有和平、全体、编组、行会、善恶,有的版本会额外支持师徒、夫妻、红名等模式。

二、攻击模式切换方式

玩家切换攻击模式常见有两种方式。

第一种是快捷键切换。

常见快捷键为:

Ctrl + H

每按一次,攻击模式会循环切换。

第二种是聊天命令切换。

部分版本支持类似以下命令:

@攻击模式 全体
@攻击模式 和平
@攻击模式 组队
@攻击模式 行会
@攻击模式 善恶

也有版本使用其他命令格式,例如:

/mode
!mode

具体命令名称和参数需要看当前版本是否支持。如果版本没有开放对应命令,玩家输入后不会生效。

三、脚本中检测攻击模式的基本结构

传奇脚本通常由条件判断和执行命令组成。

基础结构如下:

IF
检测命令
ACT
执行命令

其中:

#IF 表示开始判断条件。
#ACT 表示条件满足后执行内容。
#ELSEACT 表示条件不满足时执行内容。
#SAY 表示显示对话内容。
SENDMSG 表示发送提示信息。

如果要检测攻击模式,需要先确认当前版本是否有“检测攻击模式”的命令。

示例结构:

IF
CHECKATTACKMODE 全体
ACT
SENDMSG 6 当前攻击模式为全体模式。

如果当前版本没有 CHECKATTACKMODE 这个命令,就不能直接使用,需要换成版本实际支持的攻击模式检测命令。

四、用变量记录攻击模式

如果版本没有直接检测攻击模式的命令,可以用变量记录玩家当前攻击模式。

思路是:

玩家切换攻击模式时,把对应编号写入变量。
脚本中读取变量判断当前模式。
根据变量值执行不同逻辑。

示例:

[@设置攻击模式全体]
IF
ACT
MOV P0 1
SENDMSG 6 攻击模式已切换为全体模式。

[@设置攻击模式和平]
IF
ACT
MOV P0 0
SENDMSG 6 攻击模式已切换为和平模式。

判断示例:

IF
EQUAL P0 1
ACT
SENDMSG 6 当前为全体攻击模式。
ELSEACT
SENDMSG 6 当前不是全体攻击模式。

这种写法适合自定义攻击模式系统,但需要保证每次玩家切换模式时都同步更新变量,否则判断会不准确。

五、攻击触发脚本判断攻击目标

如果目的是判断“玩家攻击的是怪物还是人物”,可以使用攻击触发脚本。

常见触发标签示例:

[@攻击触发]

不同引擎标签名称可能不同,有的版本使用:

[@Attack]

有的版本使用:

[@自己物理攻击触发]

具体标签名称需要查看当前版本的触发脚本说明。

基础写法示例:

[@攻击触发]
IF
CHECKCURRTARGETRACE 0
ACT
SENDMSG 6 你正在攻击人物目标。

IF
CHECKCURRTARGETRACE 1
ACT
SENDMSG 6 你正在攻击怪物目标。

这里 CHECKCURRTARGETRACE 只是示例命令,用于判断当前攻击目标类型。不同版本参数含义可能不同,例如:

0 表示人物
1 表示怪物
其他数值表示英雄、宠物、特殊目标等

如果版本不支持该命令,需要换成当前引擎支持的目标检测命令。

六、根据攻击模式限制攻击行为

如果希望某些地图、某些活动、某些安全区域内禁止特定攻击模式,可以结合攻击模式检测进行限制。

示例:禁止在安全地图使用全体攻击模式。

IF
ISONMAP 3
CHECKATTACKMODE 全体
ACT
SENDMSG 6 当前地图禁止使用全体攻击模式。

如果版本没有直接检测攻击模式命令,可以改用变量方式:

IF
ISONMAP 3
EQUAL P0 1
ACT
SENDMSG 6 当前地图禁止使用全体攻击模式。

其中:

ISONMAP 3 表示检测当前是否在编号为3的地图。
EQUAL P0 1 表示检测变量P0是否为1。
SENDMSG 6 表示给玩家发送提示信息。

七、攻击触发中区分人物和怪物

攻击触发脚本常用于制作以下功能:

攻击怪物触发切割
攻击怪物触发中毒
攻击怪物触发冰冻
攻击人物触发特殊效果
攻击英雄触发不同逻辑
攻击宠物时不触发主逻辑

示例:

[@攻击触发]
IF
CHECKCURRTARGETRACE 0
ACT
SENDMSG 6 当前攻击目标为人物。

IF
CHECKCURRTARGETRACE 1
ACT
SENDMSG 6 当前攻击目标为怪物。

如果版本支持英雄判断,还可以继续扩展:

IF
CHECKCURRTARGETRACE 2
ACT
SENDMSG 6 当前攻击目标为英雄。

具体数值需要以当前版本命令说明为准。

八、完整攻击模式检测脚本示例

下面是一个常见结构的示例,用于演示攻击模式判断逻辑。

[@检测攻击模式]
IF
SAY
当前攻击模式检测系统。

<检测全体模式/@检测全体>
<检测和平模式/@检测和平>
<检测攻击目标/@检测目标>
<关闭/@exit>

[@检测全体]
IF
CHECKATTACKMODE 全体
ACT
SENDMSG 6 当前攻击模式为全体模式。
ELSEACT
SENDMSG 6 当前攻击模式不是全体模式。

[@检测和平]
IF
CHECKATTACKMODE 和平
ACT
SENDMSG 6 当前攻击模式为和平模式。
ELSEACT
SENDMSG 6 当前攻击模式不是和平模式。

[@检测目标]
IF
CHECKCURRTARGETRACE 0
ACT
SENDMSG 6 当前攻击目标为人物。

IF
CHECKCURRTARGETRACE 1
ACT
SENDMSG 6 当前攻击目标为怪物。

这个脚本包含:

NPC对话入口
攻击模式检测
攻击目标检测
条件满足提示
条件不满足提示

如果当前版本没有 CHECKATTACKMODE,需要替换成实际支持的命令。

九、攻击模式检测常见应用场景

攻击模式检测可以用于以下功能:

安全区禁止全体攻击。
活动地图强制和平模式。
攻城战自动切换全体模式。
行会战限制攻击范围。
善恶地图只允许攻击红名玩家。
师徒、夫妻之间禁止攻击。
攻击触发时区分人物和怪物。
特殊装备只在特定攻击模式下生效。
特殊技能只在特定攻击模式下触发。
防止玩家在安全地图误开全体攻击。

十、脚本编写注意事项

攻击模式命令必须与当前引擎匹配。
触发标签名称不能随意修改。
攻击触发脚本通常放在 QFunction 或对应触发文件中。
修改脚本后需要重新加载脚本文件。
检测命令只能写在 #IF 下方。
执行命令只能写在 #ACT 或 #ELSEACT 下方。
变量记录攻击模式时,必须保证切换时同步更新。
攻击目标判断要区分人物、怪物、英雄、宠物。
不要给普通玩家开放管理员命令。
测试时先用管理员账号测试,再用普通账号测试。

十一、常见错误排查
问题 可能原因 处理方式
检测命令无效 命令名称不匹配 查看当前版本脚本命令列表

攻击触发不生效 触发标签错误 检查触发文件位置和标签名

人物和怪物判断错误 目标类型参数不同 核对当前版本目标类型数值

攻击模式切换后判断失败 变量未更新 切换模式时同步写入变量

脚本不执行 未重新加载脚本 在M2中重新加载脚本文件

提示信息不显示 SENDMSG参数错误 检查消息类型和内容格式

地图判断失败 地图编号错误 核对当前地图编号

十二、排查顺序建议

遇到攻击模式检测不生效时,可以按以下顺序排查:

确认当前版本是否支持攻击模式检测命令。
确认攻击触发标签名称是否正确。
确认脚本文件是否放在正确目录。
确认修改后是否重新加载脚本。
确认攻击目标类型参数是否正确。
确认变量是否被正确赋值。
确认地图编号、职业、等级等附加条件是否正确。
确认是否存在其他脚本覆盖或冲突。
用管理员账号和普通账号分别测试。
查看服务端日志中是否有脚本报错。

传奇检测攻击模式命令脚本的核心,是根据当前版本支持的攻击模式检测命令、攻击触发标签和目标类型判断命令来组合条件。如果版本支持直接检测攻击模式,就用对应检测命令;如果不支持,可以通过变量记录攻击模式,再在脚本中判断变量值。攻击触发部分则主要用于判断当前攻击的是人物、怪物、英雄还是其他目标。