触发原理与脚本位置捡取物品触发功能通过QFunction-0.txt脚本文件实现。当玩家捡取地面物品时,系统自动检测该物品是否在触发列表中,若存在则执行对应脚本段。触发脚本位于Mir200\Envir\MapQuest_def\QFunction-0.txt文件中,使用[@PickUpItemX]格式定义,X为物品数据库中StdIndex字段数值。M2Server选项-功能设置-其他控制中需开启捡取物品触发功能。
基础触发脚本结构最简单的捡取触发脚本示例:
[@PickUpItem1]
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
物品数据库中StdIndex为1的物品被捡取时,发送全服公告。SENDMSG0表示发送全服黄色公告,<$USERNAME>为玩家角色名变量。脚本必须放在QFunction-0.txt文件中,物品StdIndex需与脚本段编号对应。
多物品触发设置多个物品共享同一触发脚本时使用范围检测:
[@PickUpItem1]
[@PickUpItem2]
[@PickUpItem3]
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了高级武器!
物品StdIndex为1、2、3时均执行相同脚本。也可使用条件判断区分不同物品:
[@PickUpItem1]
#ACT
MOVP01
GOTO@PickUpCheck
[@PickUpItem2]
#ACT
MOVP02
GOTO@PickUpCheck
[@PickUpCheck]
#IF
EQUALP01
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
#IF
EQUALP02
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了开天!
MOVP01将物品标识存入变量,GOTO跳转到公共处理段,EQUALP01判断具体物品。
条件判断与限制添加捡取条件限制,如等级、职业、地图等:
[@PickUpItem1]
#IF
CHECKLEVELEX<40
#ACT
SENDMSG0玩家[<$USERNAME>]等级不足40,无法捡取屠龙!
TAKE屠龙1
#ELSEACT
SENDMSG0玩家[<$USERNAME>]成功捡取屠龙!
CHECKLEVELEX<40检测玩家等级小于40,条件成立时TAKE屠龙1收回物品并发送提示。等级足够时发送成功消息。
职业限制脚本限制特定职业捡取物品:
[@PickUpItem1]
#IF
CHECKJOBWarrior
#ACT
SENDMSG0战士玩家[<$USERNAME>]捡取了屠龙!
#ELSEACT
SENDMSG0非战士玩家试图捡取屠龙!
TAKE屠龙1
CHECKJOBWarrior检测战士职业,非战士职业捡取时收回物品。CHECKJOBWizard检测法师,CHECKJOBTaoist检测道士。
时间间隔控制防止频繁捡取触发,添加时间间隔检测:
[@PickUpItem1]
#IF
CHECK[捡取冷却]1
#ACT
SENDMSG0捡取过于频繁,请稍后再试。
TAKE屠龙1
BREAK
#ELSEACT
SET[捡取冷却]1
DelayCall5000@重置冷却
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
[@重置冷却]
#ACT
SET[捡取冷却]0
CHECK[捡取冷却]1检测冷却标记,SET[捡取冷却]1设置标记,DelayCall5000五秒后执行@重置冷却段清除标记。BREAK终止脚本执行。
变量记录与统计记录玩家捡取特定物品数量:
[@PickUpItem1]
#ACT
INCP101
SENDMSG0玩家[<$USERNAME>]第<$STR(P10)>次捡取屠龙!
INCP101增加捡取计数,<$STR(P10)>显示当前次数。P10为个人变量,角色下线后仍保存。
地图限制触发特定地图内捡取才触发提示:
[@PickUpItem1]
#IF
EQUAL<$MAP>3
#ACT
SENDMSG0玩家[<$USERNAME>]在盟重土城捡取了屠龙!
#ELSEACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
EQUAL<$MAP>3检测当前地图编号,3为盟重土城。不同地图显示不同提示消息。
组队捡取共享组队状态下捡取触发队伍提示:
[@PickUpItem1]
#IF
CHECKGROUP
#ACT
GROUPMSG0队员[<$USERNAME>]捡取了屠龙!
#ELSEACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
CHECKGROUP检测玩家是否有队伍,GROUPMSG0发送队伍消息。组队时通知队友,非组队时发送全服公告。
捡取记录日志将捡取信息写入日志文件:
[@PickUpItem1]
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
WRITELINE..\QuestDiary\捡取日志.txt[<$DATETIME>]<$USERNAME>捡取屠龙
WRITELINE将记录写入QuestDiary目录下的捡取日志.txt文件,格式为[时间]角色名捡取物品。便于管理员查询物品流向。
物品绑定触发捡取时自动绑定物品给玩家:
[@PickUpItem1]
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了绑定屠龙!
SetIconFlag11
SetIconFlag11将物品栏第一格物品设置为绑定状态。参数1为物品位置,1为绑定标志。绑定后物品无法交易、丢弃、存仓。
随机奖励触发捡取物品时概率获得额外奖励:
[@PickUpItem1]
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
RANDOM10
#IF
SMALL<$STR(N0)>3
#ACT
GAMEGOLD+100
SENDMSG0幸运降临n外获得100元宝!
RANDOM10生成0-9随机数,SMALL<$STR(N0)>3检测小于3即30%概率。条件成立时GAMEGOLD+100增加元宝。
任务物品检测捡取任务物品触发任务进度更新:
[@PickUpItem100]
#ACT
SENDMSG0玩家[<$USERNAME>]获得了任务物品!
SET[任务进度]1
SENDMSG0任务进度更新!
SET[任务进度]1设置任务进度标记。配合任务脚本检测标记值推进任务流程。
极品装备提示捡取装备时检测极品属性并特别提示:
[@PickUpItem1]
#ACT
GetUserItemValue10P20
#IF
LARGEP205
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了极品屠龙!攻击+<$STR(P20)>
#ELSEACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙。
GetUserItemValue10P20读取物品栏第一格装备的攻击属性值,LARGEP205检测攻击大于5。极品装备发送特别公告,普通装备普通提示。
颜色区分提示不同品质物品使用不同颜色消息:
[@PickUpItem1]
#ACT
SENDMSG1玩家[<$USERNAME>]捡取了普通屠龙!
[@PickUpItem2]
#ACT
SENDMSG4玩家[<$USERNAME>]捡取了稀有屠龙!
[@PickUpItem3]
#ACT
SENDMSG5玩家[<$USERNAME>]捡取了史诗屠龙!
SENDMSG1发送灰色消息,SENDMSG4发送粉色消息,SENDMSG5发送红色消息。通过颜色区分物品稀有度。
数量累计提示捡揉个相同物品时累计提示:
[@PickUpItem1]
#ACT
INCP301
#IF
EQUALP3010
#ACT
SENDMSG0玩家[<$USERNAME>]已累计捡取10把屠龙!
MOVP300
#ELSEACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙,累计<$STR(P30)>把。
INCP301增加计数,EQUALP3010检测达到10把时发送累计公告并重置计数。未达到时显示当前累计数量。
时间分段提示不同时间段捡取显示不同提示:
[@PickUpItem1]
#IF
HOUR6
MIN0
HOUR12
MIN0
#ACT
SENDMSG0玩家[<$USERNAME>]清晨捡取了屠龙!
#IF
HOUR12
MIN0
HOUR18
MIN0
#ACT
SENDMSG0玩家[<$USERNAME>]午后捡取了屠龙!
#ELSEACT
SENDMSG0玩家[<$USERNAME>]夜晚捡取了屠龙!
检测小时与分钟判断时间段,6-12点为清晨,12-18点为午后,其他时间为夜晚。不同时间段使用不同提示文案。
首捡特别提示服务器首次捡取某物品特别公告:
[@PickUpItem1]
#IF
CHECK[全服首捡]0
#ACT
SET[全服首捡]1
SENDMSG0全服首把屠龙被玩家[<$USERNAME>]捡取!
#ELSEACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙。
CHECK[全服首捡]0检测全局标记,0表示未触发过。首次捡取时SET[全服首捡]1设置标记并发送全服首捡公告。后续捡取普通提示。
怪物关联提示捡取特定怪物掉落物品时提示怪物信息:
[@PickUpItem1]
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了赤月恶魔掉落的屠龙!
脚本中直接写入怪物名称。如需动态获取,需配合怪物死亡触发记录变量。
区域限制触发特定坐标区域内捡取才生效:
[@PickUpItem1]
#IF
InRange33032010
#ACT
SENDMSG0玩家[<$USERNAME>]在安全区捡取了屠龙!
#ELSEACT
SENDMSG0玩家[<$USERNAME>]在野外捡取了屠龙!
InRange33032010检测玩家是否在以330320为中心10格范围内。安全区内与野外显示不同提示。
触发效果扩展捡取时附加视觉或声音效果:
[@PickUpItem1]
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
PlayEffect13303205
PlayEffect13303205在坐标330320播放1号特效5秒。需在M2Server中预先配置特效编号。
多条件组合检测综合多个条件决定是否触发:
[@PickUpItem1]
#IF
CHECKLEVELEX>35
CHECKJOBWarrior
CHECKGUILD
EQUAL<$MAP>3
CHECKGAMEGOLD>1000
#ACT
SENDMSG0符合条件的战士玩家[<$USERNAME>]捡取了屠龙!
#ELSEACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙,但不符合特别条件。
同时检测等级大于35、战士职业、有行会、在盟重土城地图、元宝大于1000。全部满足时发送特别提示。
脚本调试方法测试捡取触发脚本时使用GM命令辅助。@ReloadQFunction重载QFunction-0.txt脚本。@ViewP0查看变量P0值。@SetP01设置变量值。@Make屠龙1生成测试物品。捡取后观察M2Server控制台输出,确认脚本执行。修改脚本后及时重载,避免重启服务端。
最终脚本部署在QFunction-0.txt中添加捡取触发脚本段,保存文件。M2Server控制台点击选项-功能设置-其他控制,勾选启用捡取物品触发。重启M2Server或使用@ReloadQFunction命令重载脚本。测试物品捡取,确认触发正常。根据需求调整提示内容、条件限制、变量记录等功能。定期检查日志文件,监控物品捡取情况。
基础触发脚本结构最简单的捡取触发脚本示例:
[@PickUpItem1]
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
物品数据库中StdIndex为1的物品被捡取时,发送全服公告。SENDMSG0表示发送全服黄色公告,<$USERNAME>为玩家角色名变量。脚本必须放在QFunction-0.txt文件中,物品StdIndex需与脚本段编号对应。
多物品触发设置多个物品共享同一触发脚本时使用范围检测:
[@PickUpItem1]
[@PickUpItem2]
[@PickUpItem3]
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了高级武器!
物品StdIndex为1、2、3时均执行相同脚本。也可使用条件判断区分不同物品:
[@PickUpItem1]
#ACT
MOVP01
GOTO@PickUpCheck
[@PickUpItem2]
#ACT
MOVP02
GOTO@PickUpCheck
[@PickUpCheck]
#IF
EQUALP01
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
#IF
EQUALP02
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了开天!
MOVP01将物品标识存入变量,GOTO跳转到公共处理段,EQUALP01判断具体物品。
条件判断与限制添加捡取条件限制,如等级、职业、地图等:
[@PickUpItem1]
#IF
CHECKLEVELEX<40
#ACT
SENDMSG0玩家[<$USERNAME>]等级不足40,无法捡取屠龙!
TAKE屠龙1
#ELSEACT
SENDMSG0玩家[<$USERNAME>]成功捡取屠龙!
CHECKLEVELEX<40检测玩家等级小于40,条件成立时TAKE屠龙1收回物品并发送提示。等级足够时发送成功消息。
职业限制脚本限制特定职业捡取物品:
[@PickUpItem1]
#IF
CHECKJOBWarrior
#ACT
SENDMSG0战士玩家[<$USERNAME>]捡取了屠龙!
#ELSEACT
SENDMSG0非战士玩家试图捡取屠龙!
TAKE屠龙1
CHECKJOBWarrior检测战士职业,非战士职业捡取时收回物品。CHECKJOBWizard检测法师,CHECKJOBTaoist检测道士。
时间间隔控制防止频繁捡取触发,添加时间间隔检测:
[@PickUpItem1]
#IF
CHECK[捡取冷却]1
#ACT
SENDMSG0捡取过于频繁,请稍后再试。
TAKE屠龙1
BREAK
#ELSEACT
SET[捡取冷却]1
DelayCall5000@重置冷却
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
[@重置冷却]
#ACT
SET[捡取冷却]0
CHECK[捡取冷却]1检测冷却标记,SET[捡取冷却]1设置标记,DelayCall5000五秒后执行@重置冷却段清除标记。BREAK终止脚本执行。
变量记录与统计记录玩家捡取特定物品数量:
[@PickUpItem1]
#ACT
INCP101
SENDMSG0玩家[<$USERNAME>]第<$STR(P10)>次捡取屠龙!
INCP101增加捡取计数,<$STR(P10)>显示当前次数。P10为个人变量,角色下线后仍保存。
地图限制触发特定地图内捡取才触发提示:
[@PickUpItem1]
#IF
EQUAL<$MAP>3
#ACT
SENDMSG0玩家[<$USERNAME>]在盟重土城捡取了屠龙!
#ELSEACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
EQUAL<$MAP>3检测当前地图编号,3为盟重土城。不同地图显示不同提示消息。
组队捡取共享组队状态下捡取触发队伍提示:
[@PickUpItem1]
#IF
CHECKGROUP
#ACT
GROUPMSG0队员[<$USERNAME>]捡取了屠龙!
#ELSEACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
CHECKGROUP检测玩家是否有队伍,GROUPMSG0发送队伍消息。组队时通知队友,非组队时发送全服公告。
捡取记录日志将捡取信息写入日志文件:
[@PickUpItem1]
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
WRITELINE..\QuestDiary\捡取日志.txt[<$DATETIME>]<$USERNAME>捡取屠龙
WRITELINE将记录写入QuestDiary目录下的捡取日志.txt文件,格式为[时间]角色名捡取物品。便于管理员查询物品流向。
物品绑定触发捡取时自动绑定物品给玩家:
[@PickUpItem1]
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了绑定屠龙!
SetIconFlag11
SetIconFlag11将物品栏第一格物品设置为绑定状态。参数1为物品位置,1为绑定标志。绑定后物品无法交易、丢弃、存仓。
随机奖励触发捡取物品时概率获得额外奖励:
[@PickUpItem1]
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
RANDOM10
#IF
SMALL<$STR(N0)>3
#ACT
GAMEGOLD+100
SENDMSG0幸运降临n外获得100元宝!
RANDOM10生成0-9随机数,SMALL<$STR(N0)>3检测小于3即30%概率。条件成立时GAMEGOLD+100增加元宝。
任务物品检测捡取任务物品触发任务进度更新:
[@PickUpItem100]
#ACT
SENDMSG0玩家[<$USERNAME>]获得了任务物品!
SET[任务进度]1
SENDMSG0任务进度更新!
SET[任务进度]1设置任务进度标记。配合任务脚本检测标记值推进任务流程。
极品装备提示捡取装备时检测极品属性并特别提示:
[@PickUpItem1]
#ACT
GetUserItemValue10P20
#IF
LARGEP205
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了极品屠龙!攻击+<$STR(P20)>
#ELSEACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙。
GetUserItemValue10P20读取物品栏第一格装备的攻击属性值,LARGEP205检测攻击大于5。极品装备发送特别公告,普通装备普通提示。
颜色区分提示不同品质物品使用不同颜色消息:
[@PickUpItem1]
#ACT
SENDMSG1玩家[<$USERNAME>]捡取了普通屠龙!
[@PickUpItem2]
#ACT
SENDMSG4玩家[<$USERNAME>]捡取了稀有屠龙!
[@PickUpItem3]
#ACT
SENDMSG5玩家[<$USERNAME>]捡取了史诗屠龙!
SENDMSG1发送灰色消息,SENDMSG4发送粉色消息,SENDMSG5发送红色消息。通过颜色区分物品稀有度。
数量累计提示捡揉个相同物品时累计提示:
[@PickUpItem1]
#ACT
INCP301
#IF
EQUALP3010
#ACT
SENDMSG0玩家[<$USERNAME>]已累计捡取10把屠龙!
MOVP300
#ELSEACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙,累计<$STR(P30)>把。
INCP301增加计数,EQUALP3010检测达到10把时发送累计公告并重置计数。未达到时显示当前累计数量。
时间分段提示不同时间段捡取显示不同提示:
[@PickUpItem1]
#IF
HOUR6
MIN0
HOUR12
MIN0
#ACT
SENDMSG0玩家[<$USERNAME>]清晨捡取了屠龙!
#IF
HOUR12
MIN0
HOUR18
MIN0
#ACT
SENDMSG0玩家[<$USERNAME>]午后捡取了屠龙!
#ELSEACT
SENDMSG0玩家[<$USERNAME>]夜晚捡取了屠龙!
检测小时与分钟判断时间段,6-12点为清晨,12-18点为午后,其他时间为夜晚。不同时间段使用不同提示文案。
首捡特别提示服务器首次捡取某物品特别公告:
[@PickUpItem1]
#IF
CHECK[全服首捡]0
#ACT
SET[全服首捡]1
SENDMSG0全服首把屠龙被玩家[<$USERNAME>]捡取!
#ELSEACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙。
CHECK[全服首捡]0检测全局标记,0表示未触发过。首次捡取时SET[全服首捡]1设置标记并发送全服首捡公告。后续捡取普通提示。
怪物关联提示捡取特定怪物掉落物品时提示怪物信息:
[@PickUpItem1]
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了赤月恶魔掉落的屠龙!
脚本中直接写入怪物名称。如需动态获取,需配合怪物死亡触发记录变量。
区域限制触发特定坐标区域内捡取才生效:
[@PickUpItem1]
#IF
InRange33032010
#ACT
SENDMSG0玩家[<$USERNAME>]在安全区捡取了屠龙!
#ELSEACT
SENDMSG0玩家[<$USERNAME>]在野外捡取了屠龙!
InRange33032010检测玩家是否在以330320为中心10格范围内。安全区内与野外显示不同提示。
触发效果扩展捡取时附加视觉或声音效果:
[@PickUpItem1]
#ACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙!
PlayEffect13303205
PlayEffect13303205在坐标330320播放1号特效5秒。需在M2Server中预先配置特效编号。
多条件组合检测综合多个条件决定是否触发:
[@PickUpItem1]
#IF
CHECKLEVELEX>35
CHECKJOBWarrior
CHECKGUILD
EQUAL<$MAP>3
CHECKGAMEGOLD>1000
#ACT
SENDMSG0符合条件的战士玩家[<$USERNAME>]捡取了屠龙!
#ELSEACT
SENDMSG0玩家[<$USERNAME>]捡取了屠龙,但不符合特别条件。
同时检测等级大于35、战士职业、有行会、在盟重土城地图、元宝大于1000。全部满足时发送特别提示。
脚本调试方法测试捡取触发脚本时使用GM命令辅助。@ReloadQFunction重载QFunction-0.txt脚本。@ViewP0查看变量P0值。@SetP01设置变量值。@Make屠龙1生成测试物品。捡取后观察M2Server控制台输出,确认脚本执行。修改脚本后及时重载,避免重启服务端。
最终脚本部署在QFunction-0.txt中添加捡取触发脚本段,保存文件。M2Server控制台点击选项-功能设置-其他控制,勾选启用捡取物品触发。重启M2Server或使用@ReloadQFunction命令重载脚本。测试物品捡取,确认触发正常。根据需求调整提示内容、条件限制、变量记录等功能。定期检查日志文件,监控物品捡取情况。

