当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

二、攻击模式切换方式

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

第一种是快捷键切换。

常见快捷键为:

Ctrl+H

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

第二种是聊天命令切换。

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

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

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

/mode
!mode

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

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

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

基础结构如下:

IF
检测命令
ACT
执行命令

其中:

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

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

示例结构:

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

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

四、用变量记录攻击模式

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

思路是:

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

示例:

[@设置攻击模式全体]
IF
ACT
MOVP01
SENDMSG6攻击模式已切换为全体模式。

[@设置攻击模式和平]
IF
ACT
MOVP00
SENDMSG6攻击模式已切换为和平模式。

判断示例:

IF
EQUALP01
ACT
SENDMSG6当前为全体攻击模式。
ELSEACT
SENDMSG6当前不是全体攻击模式。

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

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

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

常见触发标签示例:

[@攻击触发]

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

[@Attack]

有的版本使用:

[@自己物理攻击触发]

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

基础写法示例:

[@攻击触发]
IF
CHECKCURRTARGETRACE0
ACT
SENDMSG6你正在攻击人物目标。

IF
CHECKCURRTARGETRACE1
ACT
SENDMSG6你正在攻击怪物目标。

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

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

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

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

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

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

IF
ISONMAP3
CHECKATTACKMODE全体
ACT
SENDMSG6当前地图禁止使用全体攻击模式。

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

IF
ISONMAP3
EQUALP01
ACT
SENDMSG6当前地图禁止使用全体攻击模式。

其中:

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

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

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

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

示例:

[@攻击触发]
IF
CHECKCURRTARGETRACE0
ACT
SENDMSG6当前攻击目标为人物。

IF
CHECKCURRTARGETRACE1
ACT
SENDMSG6当前攻击目标为怪物。

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

IF
CHECKCURRTARGETRACE2
ACT
SENDMSG6当前攻击目标为英雄。

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

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

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

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

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

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

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

[@检测目标]
IF
CHECKCURRTARGETRACE0
ACT
SENDMSG6当前攻击目标为人物。

IF
CHECKCURRTARGETRACE1
ACT
SENDMSG6当前攻击目标为怪物。

这个脚本包含:

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

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

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

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

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

十、脚本编写注意事项

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

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

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

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

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

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

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

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

十二、排查顺序建议

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

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

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