脚本触发机制原理
HEROM2引擎支持装备佩戴触发脚本功能,通过QFunction.txt文件中的@TakeOn标签实现。勋章作为特殊装备类型,佩戴时可触发预设脚本,执行怪物生成、属性加成、效果播放等操作。触发流程分为佩戴检测、条件判断、执行动作三个环节。
基础脚本结构配置
在QFunction.txt文件中添加勋章佩戴触发代码:
[@TakeOn10]
IF
CHECKITEMW 战神勋章 1
ACT
MonGen 沃玛教主 1 300 300 5
SendCenterMsg 250 252 战神勋章已激活 召唤BOSS降临 1 30
BREAK
@TakeOn10中数字10代表装备位置,勋章通常占用位置9或10。CHECKITEMW检测佩戴物品,MonGen生成怪物,参数依次为名称、数量、X坐标、Y坐标、范围。
勋章物品数据库配置
在Stditem.txt中配置勋章属性,确保触发脚本可识别:
1000 战神勋章 4 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1001 法神勋章 4 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1002 道尊勋章 4 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
字段说明:物品编号、名称、外观、装备位置、重量、持久等。装备位置10对应勋章槽位。
多勋章类型触发
支持多种勋章分别触发不同怪物:
[@TakeOn10]
IF
CHECKITEMW 战神勋章 1
ACT
MonGen 沃玛教主 1 300 300 5
SendCenterMsg 250 252 战神勋章召唤沃玛教主 1 30
BREAK
IF
CHECKITEMW 法神勋章 1
ACT
MonGen 祖玛教主 1 350 350 5
SendCenterMsg 250 252 法神勋章召唤祖玛教主 1 30
BREAK
IF
CHECKITEMW 道尊勋章 1
ACT
MonGen 赤月恶魔 1 400 400 5
SendCenterMsg 250 252 道尊勋章召唤赤月恶魔 1 30
BREAK
每种勋章对应独立触发逻辑,使用#IF#ACT分段处理。
冷却时间控制
防止频繁召唤设置冷却时间:
[@TakeOn10]
IF
CHECKITEMW 战神勋章 1
CHECKVAR P_SpawnCooldown = 0
ACT
MonGen 沃玛教主 1 300 300 5
SET P_SpawnCooldown 1
TIMER 1 300000
SendCenterMsg 250 252 召唤成功 冷却时间五分钟 1 30
BREAK
ELSE
SendCenterMsg 250 252 冷却时间未到 无法召唤 1 30
BREAK
[@TimerEvent1]
ACT
SET P_SpawnCooldown 0
SendCenterMsg 250 252 召唤冷却已结束 1 30
BREAK
TIMER命令设置定时器,300000毫秒等于五分钟。冷却期间变量为1,禁止再次触发。
地图限制条件
限定特定地图才能触发召唤:
[@TakeOn10]
IF
CHECKITEMW 战神勋章 1
CHECKMAP D6001
ACT
MonGen 沃玛教主 1 300 300 5
SendCenterMsg 250 252 活动地图召唤成功 1 30
BREAK
ELSE
SendCenterMsg 250 252 当前地图无法召唤 1 30
BREAK
CHECKMAP检测当前地图编号,非指定地图阻止召唤。地图编号在MapInfo.txt中定义。
等级门槛设置
玩家达到指定等级才能触发:
[@TakeOn10]
IF
CHECKITEMW 战神勋章 1
CHECKLEVEL >= 50
ACT
MonGen 沃玛教主 1 300 300 5
SendCenterMsg 250 252 等级达标 召唤成功 1 30
BREAK
ELSE
SendCenterMsg 250 252 等级不足五十级 无法召唤 1 30
BREAK
CHECKLEVEL检测玩家等级,>=50表示五十一级以上可触发。根据版本需求调整等级阈值。
召唤次数统计
记录玩家召唤次数供查询:
[@TakeOn10]
IF
CHECKITEMW 战神勋章 1
ACT
INC P_SpawnCount
SAVEVAR P_SpawnCount
MonGen 沃玛教主 1 300 300 5
SendCenterMsg 250 252 累计召唤次数:%P_SpawnCount 1 30
BREAK
INC命令递增变量,SAVEVAR保存至数据库。玩家可随时查询历史召唤数据。
摘除勋章触发
勋章摘除时执行清理或惩罚:
[@TakeOff10]
IF
CHECKITEMW 战神勋章 0
ACT
KillMon 沃玛教主
SendCenterMsg 250 252 勋章已摘除 召唤怪物消失 1 30
BREAK
@TakeOff10对应摘除事件,KillMon清理指定怪物。防止玩家摘除后怪物残留。
团队召唤模式
组队时召唤怪物归属队伍:
[@TakeOn10]
IF
CHECKITEMW 战神勋章 1
CHECKGROUP
ACT
MonGen 沃玛教主 1 300 300 5
GROUPCALL @TeamNotify
SendCenterMsg 250 252 队伍召唤成功 1 30
BREAK
ELSE
MonGen 沃玛教主 1 300 300 5
SendCenterMsg 250 252 个人召唤成功 1 30
BREAK
[@TeamNotify]
ACT
SendCenterMsg 250 252 队员已召唤BOSS 准备战斗 1 30
BREAK
CHECKGROUP检测是否组队,GROUPCALL通知队友。掉落物品按队伍分配规则处理。
召唤怪物属性配置
在Monsters.txt中配置召唤怪物属性:
沃玛教主 80 10000 500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
字段包含等级、生命值、攻击力、防御力等参数。召唤怪物属性独立于普通怪物配置。
全服广播通知
召唤时向全服发送消息:
[@TakeOn10]
IF
CHECKITEMW 战神勋章 1
ACT
MonGen 沃玛教主 1 300 300 5
SendCenterMsg 250 252 玩家%USERNAME佩戴战神勋章召唤沃玛教主 1 30
SendMsg 0 全服广播:%USERNAME已开启BOSS挑战 1 30
BREAK
%USERNAME替换为玩家名称,SendMsg 0表示全服广播。其他玩家可前往参与战斗。
掉落专属配置
召唤怪物掉落专属物品:
;MonDrop文件夹中创建沃玛教主.txt
1/1 金币 10000-50000
1/5 战神勋章碎片 1
1/10 沃玛号角 1
1/20 裁决之杖 1
1/50 特戒碎片 1
爆率文件与怪物名称对应,召唤怪物与普通怪物共享爆率配置。可单独创建召唤专属爆率文件。
脚本调试方法
开启M2Server调试模式查看脚本执行:
;M2Server控制台设置
ScriptDebug=1
LogScript=1
日志输出脚本执行路径,定位问题段落。使用SendMsg输出变量值确认数据准确。
[@TakeOn10]
ACT
SendMsg 0 调试:当前佩戴物品=%ITEMNAME
SendMsg 0 调试:变量值=%P_SpawnCooldown
BREAK
常见问题处理
召唤不触发检查装备位置是否正确,勋章是否占用位置10。怪物不生成确认MonGen参数格式,地图坐标是否有效。冷却失效验证TIMER命令执行,变量保存是否成功。
排查清单:
检查QFunction.txt语法
确认勋章装备位置
验证地图坐标范围
检测变量初始化
查看M2Server日志
多服务器同步
跨服时召唤状态需同步:
[@TakeOn10]
IF
CHECKITEMW 战神勋章 1
ACT
MonGen 沃玛教主 1 300 300 5
SET G_CrossSpawn 1
SAVEVAR G_CrossSpawn
CrossServerSync @SpawnSync
BREAK
CrossServerSync命令同步至其他服务器,G_开头变量全局共享。确保跨服玩家可见召唤状态。
性能控制要点
单次召唤怪物数量不超过十只。同一地图同时存在召唤怪物不超过五只。冷却时间不低于三分钟,避免服务器负载过高。
性能配置:
MaxSummonMon=10
MaxMapSummon=5
MinCooldown=180000
在M2Server配置文件中调整参数,确保稳定运行。
脚本部署流程
第一步打开M2Server/Script/QFunction.txt文件。第二步添加@TakeOn10触发代码。第三步配置Stditem.txt勋章数据。第四步设置Monsters.txt怪物属性。第五步重启M2Server使配置生效。第六步进入游戏测试功能。
部署检查清单:
脚本文件编码ANSI
装备位置配置正确
怪物数据已添加
地图坐标有效
测试角色可触发
测试验证场景
创建测试角色佩戴勋章,观察怪物是否生成。摘除勋章检测怪物是否清理。冷却时间内再次佩戴确认阻止触发。切换地图验证限制条件。组队测试队伍通知功能。
测试场景:
佩戴触发召唤
摘除清理怪物
冷却时间生效
地图限制有效
等级门槛检测
队伍通知正常
扩展功能实现
添加召唤特效播放:
[@TakeOn10]
ACT
MonGen 沃玛教主 1 300 300 5
PlayEffect 100 300 300
SendCenterMsg 250 252 召唤特效已播放 1 30
BREAK
PlayEffect播放特效,参数为特效编号和坐标。增强视觉反馈提升玩家体验。
添加召唤成就系统:
[@TakeOn10]
ACT
INC P_SpawnCount
IF P_SpawnCount >= 100
BEGIN
GIVE 召唤大师称号 1
SendCenterMsg 250 252 恭喜获得召唤大师称号 1 30
END
BREAK
累计召唤次数达成条件发放奖励,鼓励玩家持续参与。

