在 SKY 版本(即 HeroM2 引擎)的传奇私人服务器中,要实现 “怪物杀死玩家时取回屠龙,玩家 PK 死亡时有几率取回屠龙” 的效果,需要通过死亡触发脚本实现。下面结合引擎特性具体说说编写方法。
首先要明确脚本的存放位置。HeroM2 引擎的死亡触发事件通常在 QManage.txt(全局管理脚本)中设置,也可能在专门的 DeathScript.txt 文件里。可以先在服务器端的 Script 文件夹中查找这两个文件,打开后在末尾添加新的脚本内容(注意不要覆盖原有代码)。
第一步是区分死亡类型:怪物击杀还是玩家 PK。HeroM2 引擎中,可用 “CheckKillerType” 命令检测击杀者类型,其中 “1” 代表怪物,“2” 代表玩家。脚本开头需要先判断这个条件,比如:
[@Death]
#IF
CheckKillerType 1
goto @MonsterKill
#ELSE
goto @PlayerPK
这段代码的意思是,当玩家死亡时,先检查击杀者是怪物还是玩家,分别跳转到对应的处理环节。
接下来编写怪物杀死玩家的处理逻辑(@MonsterKill 标签)。需要先判断玩家是否携带屠龙,再执行删除操作。HeroM2 中判断物品是否存在的命令是 “CheckItem”,删除物品用 “TakeItem”,屠龙的物品 ID 通常是 121(可在 Item.txt 中查询确认)。因此代码可以这样写:
[@MonsterKill]
#IF
CheckItem 121 1
#ACT
TakeItem 121 1
SendMsg 6 你的屠龙被怪物夺走了!
break
#ELSE
SendMsg 6 幸好你没带屠龙,逃过一劫。
break
这里的 “CheckItem 121 1” 表示检测玩家是否有 1 把屠龙,“TakeItem 121 1” 则是删除这把武器,同时用 “SendMsg” 给玩家发送提示信息。
然后处理玩家 PK 死亡的情况(@PlayerPK 标签)。需要加入随机概率判断,HeroM2 中用 “Random” 命令实现,比如 “Random 2” 代表 50% 概率。结合武器检测和删除命令,代码如下:
[@PlayerPK]
#IF
CheckItem 121 1
Random 2
#ACT
TakeItem 121 1
SendMsg 6 不幸!你的屠龙在 PK 中遗失了。
break
#ELSE
SendMsg 6 幸运!你的屠龙保住了。
break
这段代码的逻辑是:如果玩家携带屠龙,有 50% 概率被删除,50% 概率保留,同样用提示信息反馈结果。
需要注意物品 ID 的准确性。如果不清楚屠龙的具体 ID,可以打开服务器端的 Item.txt 文件,搜索 “屠龙” 关键词,找到对应的 “Index” 数值(通常是 121,但不同版本可能有差异)。比如某版本 Item.txt 中 “屠龙 = 121,1,50,100,...”,这里的 121 就是需要用到的 ID。
另外,脚本编写要严格遵循 HeroM2 的语法规则:标签用 [@名称] 表示,#IF 和 #ACT 要大写,命令后参数用空格分隔,每个逻辑段结尾加 “break”。如果脚本无效,可检查是否有拼写错误,或尝试在 QManage.txt 的 “@Death” 主标签下直接编写(部分版本需在此处触发)。
测试脚本时,可创建两个账号,一个带屠龙被怪物杀死,观察是否必定删除;另一个带屠龙进行 PK 死亡,多次测试看是否约 50% 概率删除。若不生效,可能是死亡触发未开启,需在 M2 服务器控制器的 “功能设置 - 脚本触发” 中勾选 “启用死亡脚本”。
总的来说,编写这类脚本的核心是:用 “CheckKillerType” 区分死亡类型,用 “CheckItem” 检测武器,“TakeItem” 删除武器,“Random” 控制概率,最后通过提示信息让玩家明确结果。按照这个结构调整物品 ID 和概率数值,就能实现所需功能。

