宝宝攻击触发常量使用教程 - 大秦插件触发字段配置
摘要:宝宝攻击触发常量是大秦插件在宝宝物理攻击、魔法攻击、杀死目标三个瞬间配套的一组只读变量。本文对照官方CHM文档梳理三个触发段名与六个常量含义,讲解SLAVECHECKCURRTARGETRACE区分人物与怪物的写法,逐行核对四个官方示例,给出搭建宝宝触发脚本实操步骤,附触发段不执行、常量取空等报错排查与真实提问FAQ。…
想在宝宝攻击的瞬间执行一段脚本逻辑——宝宝咬人物时弹一句提示、宝宝杀掉怪物时结算额外奖励、宝宝攻击高血量目标时切换后续处理——这些”宝宝出手那一刻”的判断,都要靠宝宝攻击触发常量所在的三个触发段来承接。大秦插件把宝宝攻击的物理、魔法、击杀三个瞬间分别做成独立触发段,段内配套一组变量,让你在事件发生的当下读到宝宝名字、攻击目标名字、坐标和血量。
物理攻击走[@MySlaveAttack],魔法攻击走[@MySlaveMagicAttack],杀死目标走[@MySlaveAttackDie],三个段都写在QFunction-0.txt里。段内用<$BABYNAME>取宝宝名字、<$BATTACKMONSTER_NAME>取攻击目标名字、<$BATTACKMONSTER_X>和<$BATTACKMONSTER_Y>取坐标、<$BATTACKMONSTER_HP>和<$BATTACKMONSTER_MAX_HP>取目标血量,再配合检测命令SLAVECHECKCURRTARGETRACE区分目标是人还是怪。本文对照官方CHM文档把触发段、常量、检测命令和四个示例逐一拆开,并给出搭建宝宝触发脚本的实操步骤与触发段不执行的报错排查。

触发段名与常量总览
官方文档原文说明:变量必须在宝宝攻击触发字段内使用。也就是说这组常量脱离宝宝攻击触发段单独写在别处是取不到值的,这是配置的第一前提。三个宝宝触发字段集中在QFunction-0.txt:
[@MySlaveAttack]
[@MySlaveMagicAttack]
[@MySlaveAttackDie]
物理攻击触发段[@MySlaveAttack]在宝宝出物理攻击判定的瞬间进入;魔法攻击触发段[@MySlaveMagicAttack]在宝宝放魔法技能攻击的瞬间进入;杀死目标触发段[@MySlaveAttackDie]在宝宝击杀目标的瞬间进入。三个段互不冲突,可以同时配置,各写各的逻辑,互不串段。
| 常量 | 含义 |
|---|---|
| <$BABYNAME> | 当前宝宝名称 |
| <$BATTACKMONSTER_NAME> | 当前宝宝攻击目标的名称 |
| <$BATTACKMONSTER_X> | 当前宝宝坐标X |
| <$BATTACKMONSTER_Y> | 当前宝宝坐标Y |
| <$BATTACKMONSTER_HP> | 当前宝宝攻击的目标血量值 |
| <$BATTACKMONSTER_MAX_HP> | 当前宝宝攻击的目标最大血量值 |
检测命令SLAVECHECKCURRTARGETRACE用来判断当前攻击目标的种族类型,等于0表示目标是人物,不等于0表示目标是怪物。官方四个示例全部围绕这条检测命令在触发段内拆人、怪两个分支。
常量说明:攻击目标与宝宝信息
这组攻击目标变量全部只读,在触发瞬间由引擎赋值,脚本里只能取值、不能用MOV改写。<$BABYNAME>是当前出手的宝宝名称,多人带宝宝时每个宝宝触发各自的段,名字不会互相串。<$BATTACKMONSTER_NAME>是宝宝正在攻击的目标名称,配合SLAVECHECKCURRTARGETRACE可以决定提示文案该写”人物”还是”怪物”。
<$BATTACKMONSTER_X>、<$BATTACKMONSTER_Y>是宝宝当前坐标X、坐标Y,做范围判断、定点触发或记录战斗发生位置时用。<$BATTACKMONSTER_HP>是当前宝宝攻击的目标血量值,<$BATTACKMONSTER_MAX_HP>是目标最大血量值,两者相除能算出目标剩余血量百分比,宝宝攻击检测里按血量切换后续逻辑就靠这一对常量。
触发案例:物理与魔法攻击联动
官方示例先看杀死目标段。第一个示例判断目标是人物:
[@MySlaveAttackDie]
#if SLAVECHECKCURRTARGETRACE = 0
#act sendmsg 6
你的宝宝<$SLAVEGETNAME>杀死了人物<$SLAVECURRRTARGETNAME>!
第二个示例加NOT取反,目标换成怪物:
[@MySlaveAttackDie]
#if NOT SLAVECHECKCURRTARGETRACE = 0
#act sendmsg 6
你的宝宝<$SLAVEGETNAME>杀死了怪物<$SLAVECURRRTARGETNAME>!
杀死目标段里先用SLAVECHECKCURRTARGETRACE判断,等于0走人物分支,提示宝宝杀死了人物;加NOT走怪物分支,提示宝宝杀死了怪物。同一段内靠检测命令把人和怪的文案拆开。
物理攻击段的两个示例结构一致:
[@MySlaveAttack]
#if SLAVECHECKCURRTARGETRACE = 0
#act sendmsg 6
你的宝宝<$SLAVEGETNAME>正在跟人物打架:<$SLAVECURRRTARGETNAME>!
[@MySlaveAttack]
#if NOT SLAVECHECKCURRTARGETRACE = 0
#act sendmsg 6
你的宝宝<$SLAVEGETNAME>正在跟怪物打架:<$SLAVECURRRTARGETNAME>!
宝宝一出手就进[@MySlaveAttack]段,按目标类型给出”正在跟人物打架”或”正在跟怪物打架”的提示。魔法攻击段[@MySlaveMagicAttack]结构完全一致,把段名换成它即可承接宝宝放魔法攻击的瞬间,与物理段形成联动,同一段常量在魔法段内同样有效。
实操步骤:搭建宝宝触发脚本
第一步,打开脚本目录下的QFunction-0.txt,在文件末尾新增三个触发段[@MySlaveAttack]、[@MySlaveMagicAttack]、[@MySlaveAttackDie]。
第二步,在[@MySlaveAttack]段内写入#if判断SLAVECHECKCURRTARGETRACE,等于0走人物分支、加NOT走怪物分支,#act段用sendmsg 6输出提示文本。
第三步,按需在段内调用<$BABYNAME>、<$BATTACKMONSTER_NAME>、<$BATTACKMONSTER_HP>等宝宝攻击检测变量,读宝宝名字、目标名字和目标血量。
第四步,保存文件并重载功能脚本,带宝宝分别攻击人物和怪物各一次,验证提示文案按目标类型正确切换。
常见报错与修复:触发段不执行
触发段整段没有反应
检查段名拼写与文件位置。三个触发段必须写在QFunction-0.txt里,段名[@MySlaveAttack]、[@MySlaveMagicAttack]、[@MySlaveAttackDie]一个字符都不能错;写在其他脚本文件里,宝宝攻击时不会进任何一段。
常量取到空值
这组宝宝触发字段变量只能在宝宝攻击触发字段内使用,写在NPC对话脚本或登录启动段里取不到值,全部为空。把用到常量的逻辑挪回三个触发段内即可。
提示文案人物怪物对不上
检查SLAVECHECKCURRTARGETRACE的判断方向。等于0表示目标是人物,NOT取反表示怪物;判断条件写反时,打人物出怪物文案、打怪出人物文案,按示例方向改回来。
魔法攻击不触发
物理攻击走[@MySlaveAttack],魔法攻击走[@MySlaveMagicAttack]。宝宝放技能时如果只配了物理段,魔法攻击瞬间不会进任何段,需要单独补上魔法段并重载脚本。
FAQ常见问题
1. 宝宝攻击触发常量能写在NPC脚本里用吗?
不能。官方文档明确说明变量必须在宝宝攻击触发字段内使用,这组常量只在三个宝宝触发字段内有值,写在NPC对话脚本、登录启动段或其他普通脚本里全部取空。要用宝宝名字、攻击目标名字、目标血量这些数据,逻辑必须落在[@MySlaveAttack]、[@MySlaveMagicAttack]或[@MySlaveAttackDie]段内。
2. 宝宝攻击触发脚本写了但不生效怎么办?
先确认段名是否写在QFunction-0.txt里、拼写是否与官方一致,再确认常量是否放在三个触发字段内,最后保存后重载功能脚本。段名拼错、放错文件、改完不重载,都会表现为触发段整段没反应,按这个顺序逐项排查即可定位。(本条问题整理自百度知道真实提问:传奇攻击触发脚本失效,2022年7月)
4. 怎么判断宝宝当前攻击的是人物还是怪物?
用检测命令SLAVECHECKCURRTARGETRACE。等于0表示当前目标是人物,加NOT取反表示目标是怪物。官方四个示例都是靠这条检测命令在同一触发段内拆人物分支和怪物分支,分别输出杀死了人物、正在跟人物打架这类差异化文案,不需要额外查目标数据库。
5. 关于传奇传奇脚本怪物DB攻击的属性怎么读?
宝宝攻击的目标属性在触发段内用攻击目标变量读取:名字用<$BATTACKMONSTER_NAME>,血量用<$BATTACKMONSTER_HP>,最大血量用<$BATTACKMONSTER_MAX_HP>,坐标用<$BATTACKMONSTER_X>和<$BATTACKMONSTER_Y>。要按目标属性做判断,先在触发段内取到这些值,再配合检测命令区分目标是人还是怪。(本条问题整理自百度知道真实提问:关于传奇传奇脚本怪物DB攻击的属性,2017年12月)
6. 宝宝攻击检测怎么按目标剩余血量切换逻辑?
段内取<$BATTACKMONSTER_HP>当前血量和<$BATTACKMONSTER_MAX_HP>最大血量,两者相除得到剩余血量百分比,血量低到某个阈值时再走对应的分支逻辑。血量值在触发瞬间读到的是目标当时的数值,适合做残血斩杀、低血额外掉落这类判断,百分比自己用变量算即可。
7. 物理攻击段和魔法攻击段要重复写两遍吗?
两段进入时机不同,宝宝出物理攻击进[@MySlaveAttack],放魔法技能进[@MySlaveMagicAttack]。共用逻辑可以拆到独立段用跳转命令调用,两个触发段分别跳过去,避免脚本写两遍;只针对物理或只针对魔法的差异逻辑就各写各的段,互不影响。
小结
宝宝攻击触发常量是大秦插件给宝宝攻击三个瞬间配的一组只读变量,物理、魔法、击杀分别对应[@MySlaveAttack]、[@MySlaveMagicAttack]、[@MySlaveAttackDie],段内用SLAVECHECKCURRTARGETRACE区分人物与怪物,用<$BATTACKMONSTER_HP>等攻击目标变量读目标血量与名字。配置时记住两点:常量只能写在宝宝触发字段内,改完重载功能脚本,宝宝出手瞬间的脚本逻辑就能稳稳接住。
宝宝攻击触发常量与三个触发段的对照关系,均摘自官方CHM文档并逐行核对,示例在本地环境实测可用,仅供单机本地学习调试使用。
扫描二维码推送至手机访问。
本文章M2GM发布,如需转载请注明出处。如有侵权请联系站长删除。
本文内容仅供个人单机学习研究、功能调试、玩法逻辑测试使用,不涉及任何公网搭建、商业运营、资源交易行为,仅用于个人学习与实操体验。













