刺杀是传奇战士职业的核心近身攻击技能,依靠特定站位(斜角或纵向两格)打出双倍伤害。很多版本默认刺杀是硬编码在引擎里的,但要做特殊版本、刺杀特效、刺杀触发自定义逻辑(比如刺杀时吸血、刺杀暴击、刺杀触发麻痹),就必须用脚本接管刺杀的触发判定。下面把 GOM 引擎里刺杀触发的几种实现方式、完整代码、文件路径和常见坑一次讲清。
一、先搞清楚刺杀在引擎里的位置
GOM 引擎的刺杀伤害计算在 M2 服务端内部完成,常规配置通过 MirServer\Mir200\M2Server.ini 或 M2 控制面板的"选项-参数设置-战斗"里的参数控制,比如:
[Battle]
WarriorSkillPower=1 ; 战士技能威力倍数
AssassinateDamageRate=200 ; 刺杀伤害倍数,200=2倍
AssassinateRange=2 ; 刺杀触发距离(格)
这些参数只能调数值,不能挂自定义逻辑。要写脚本触发,得走技能事件和攻击事件两条路。
二、方式一:通过技能释放事件拦截(最常用)
GOM 的 QuestDiary 系统提供了技能释放相关的触发标签。刺杀的技能 ID 在不同版本里是 25 或 26(刺杀剑术),具体看你的 StdSkill 表。先用下面代码在人物释放刺杀时做拦截:
文件路径: MirServer\Mir200\Envir\QuestDiary\QFunction-0.txt
或自建: MirServer\Mir200\Envir\QuestDiary\刺杀触发.txt
[@Spell] ; 释放技能时触发
#IF
CheckSkill 25 > 0 ; 25=刺杀剑术,检查当前释放的是不是刺杀
CheckMagicName 刺杀剑术 ; 双保险,用技能名再校验一次
#ACT
SENDMSG 6 刺杀剑术已释放!
; 这里写你的自定义逻辑,比如加Buff、扣蓝、触发特效
AddState 7 10 0 0 ; 举例:给自己加攻击加速状态
#ELSEACT
SENDMSG 7 不是刺杀技能,不处理
说明:[@Spell] 是 GOM 里"人物释放魔法/技能"的全局事件,任何技能都会进这里,所以用 CheckSkill + CheckMagicName 双重判断锁定刺杀。如果你的版本没有 [@Spell],试试 [@UseSkill] 或 [@MagicSpell],不同 GOM 小版本标签名有差异。
三、方式二:攻击命中触发(判定刺杀伤害)
方式一只能拦"放技能",但刺杀真正的特点是"站位对才出双倍"。要判定这一次攻击是不是刺杀命中,得在攻击事件里判断。GOM 提供 [@Attack] 或 [@Hit] 系列标签:
[@Attack] ; 人物攻击时触发
#IF
CheckJob 0 ; 0=战士
CheckSkill 25 > 0 ; 学了刺杀
CheckVar H.AI = 0 ; 普通攻击(非技能连招状态)
#ACT
; 判断目标与自己的站位关系(斜角/两格纵向)
; GOM 内置变量:$ATTACKDIR$(攻击方向)、$TARGET.X$ $TARGET.Y$
#IF
CheckTargetInLine 2 ; 自定义扩展:目标在纵向2格线
#ACT
SENDMSG 6 刺杀命中!造成双倍伤害
; 触发自定义效果
POWERRATE 220 1 ; 本次攻击后1秒内攻击翻倍(模拟暴击)
#ELSEACT
SENDMSG 7 站位不对,未触发刺杀
注意:CheckTargetInLine 不是所有 GOM 版本都自带,如果引擎不支持,需要用坐标差值自己算。用人物的 $X$ $Y$ 和目标 $TARGET.X$ $TARGET.Y$ 做判断,横纵坐标差的绝对值满足"(dx =1 且 dy =0)或( dx =0 且 dy =1)"即斜角/直线一格判定,刺杀两格则是 dx + dy
=2 且其中一项为0。
四、方式三:纯配置文件改刺杀参数(不改脚本)
如果只是想调刺杀伤害和概率,不动逻辑,改 M2Server.ini 最省事:
[Magic]
; 刺杀剑术相关
MagicID=25
MagicName=刺杀剑术
DamageRate=200 ; 伤害倍数
SuccessRate=80 ; 触发成功率(%)
Range=2 ; 有效距离
或者通过 GOM 的 Magic.db(DBC 表)修改:
• 打开 MirServer\DB\Magic.db
• 找到"刺杀剑术"行
• 改 DMG(基础伤害)、DmgUp(每级加成)、Range(范围)、TargetType(目标类型)
改完重启 M2 生效。这种改法稳定,适合复古版本。
五、完整实战代码:刺杀触发吸血 + 暴击
下面是一段可直接用的完整脚本,实现"刺杀命中时 20% 概率暴击 + 吸血 30%":
;==== 文件:Envir\QuestDiary\刺杀系统.txt ====
[@Attack]
#IF
CheckJob 0
CheckSkill 25 > 0
CheckTargetInLine 2
Random 20 ; 20%概率
#ACT
POWERRATE 300 0 ; 3倍攻击(暴击)
SENDMSG 6 刺杀暴击!伤害大幅提升
#ELSEACT
; 不暴击,走普通刺杀逻辑
[@Attack]
#IF
CheckJob 0
CheckSkill 25 > 0
#ACT
; 吸血:按造成伤害的百分比回血
; 正经做法是用 LifeUp 系列命令
LifeUp 50 ; 吸血回50血(示例值)
说明:吸血的真百分比需要用 GOM 的扩展插件(如"伤害回血"模块),原生命令只能固定回数值。如果没有插件,用 LifeUp 固定值是最稳的替代。
六、刺杀触发自定义状态(麻痹/冰冻)
很多超变版本要"刺杀有概率麻痹",代码框架:
[@Attack]
#IF
CheckJob 0
CheckSkill 25 > 0
CheckTargetInLine 2
Random 15 ; 15%概率
#ACT
AddStateEx $TARGET.NAME$ 3 5 0 0 ; 给目标加麻痹状态(3=麻痹,5秒)
SENDMSG 6 刺杀触发麻痹!目标无法移动
BROADCASTMSG 刺杀麻痹!{s} 被定身5秒
AddStateEx 的参数格式:(目标, 状态类型, 持续时间秒, 属性, 保留位)。状态类型 3 是麻痹,不同引擎可能不同,以你的 StateDef 表为准。
七、常见问题排查
1. 脚本不触发: 确认标签名,GOM 有的版本是 [@OnAttack] 而非 [@Attack],进 M2 控制台看"脚本事件列表"。
2. 刺杀 SkillID 不对: 用 GM 命令 @技能 刺杀剑术 查 ID,或在 Magic.db 里看行号。
3. 站位判定失效: CheckTargetInLine 不存在的版本,改用坐标变量手动算差值。
4. 双倍伤害不叠加: 引擎自带的刺杀 2 倍 + 脚本 POWERRATE 可能取最大值而非相乘,测试时先把引擎 AssassinateDamageRate 设为 100。
5. Random 概率不生效: Random 命令必须放在 #IF 段,且要在 #ACT 之前,顺序错了概率判定不执行。
6. 吸血没反应: 原生 GOM 不支持攻击百分比吸血,需装"伤害回血"插件或用 LifeUp 固定值。
7. 重启后失效: 改完 QuestDiary 的 txt 必须重启 M2 或点"重新加载脚本",改 M2Server.ini 也必须重启。
八、刺杀触发与英雄(H.)的配合
合击版本里英雄也会刺杀,英雄的变量和命令都要加 H. 前缀:
[@H.Attack] ; 英雄攻击事件,注意带点
#IF
H.CheckJob 0
H.CheckSkill 25 > 0
#ACT
H.POWERRATE 250 0
SENDMSG 6 英雄刺杀触发2.5倍
英雄的 [@Spell] 对应 [@H.Spell],事件标签加 H. 前缀是 GOM 的通用规则,写反了(在主号事件里写 H. 命令)会导致无反应。
九、版本兼容性提醒
• GOM 3.0 以下: 多用 [@Attack],技能判断靠 CheckMagicName
• GOM 3.0+: 支持 [@Spell]、SetAttackPowerRate、AddStateEx
• GEE 引擎: 标签和命令名不同,本文代码不能直接照搬
• HERO 引擎: 刺杀判定走 OnAttack 事件,参数格式有差异
改之前先看 M2 控制台的"引擎版本号",对着版本号查命令集,别盲目照抄。
十、调试技巧
1. 在脚本关键位置加 SENDMSG 6 打印变量值,确认流程走到哪一步。
2. 用 GM 命令 @mob 刷一个假人靶子,反复测试站位判定。
3. M2 日志(MirServer\Mir200\Log\)里搜脚本报错关键字。
4. 先用最简单的"释放刺杀就弹消息"验证事件是否触发,再逐步加站位、概率、状态逻辑。
5. 所有坐标类变量打印出来看真实值,再写判断条件。
总结
GOM 引擎实现刺杀触发脚本就三条路:[@Spell] 拦技能释放、[@Attack] 拦攻击命中做站位判定、改 M2Server.ini / Magic.db 调参数。做特殊效果(吸血、暴击、麻痹)走前两条写脚本,只调数值改配置文件最稳。核心是锁定刺杀的 SkillID、用 CheckSkill + CheckMagicName 双重校验、站位判定用坐标差值或引擎内置命令、英雄命令加 H. 前缀。改完记得重启 M2,一步步加 SENDMSG 调试,别一口气把所有逻辑堆上去。
gom_assassination_trigger_script.md
传奇GOM引擎刺杀触发脚本代码详解与实战配置
来源:
作者:
点击:

