传奇捡取物品触发提示脚本编写教程

来源: 作者: 点击:
触发原理与脚本位置 捡取物品触发功能通过QFunction-0.txt脚本文件实现。当玩家捡取地面物品时,系统自动检测该物品是否在触发列表中,若存在则执行对应脚本段。触发脚本位于Mir200\Envir\MapQuest_def\QFunction-0.txt文件中,使用[@PickUpItemX]格式定义,X为物品数据库中StdIndex字段数值。M2Server选项-功能设置-其他控制中需开启捡取物品触发功能。

基础触发脚本结构 最简单的捡取触发脚本示例:

[@PickUpItem1]
#ACT
SENDMSG 0 玩家[<$USERNAME>]捡取了屠龙!

物品数据库中StdIndex为1的物品被捡取时,发送全服公告。SENDMSG 0表示发送全服黄色公告,<$USERNAME>为玩家角色名变量。脚本必须放在QFunction-0.txt文件中,物品StdIndex需与脚本段编号对应。

多物品触发设置 多个物品共享同一触发脚本时使用范围检测:

[@PickUpItem1]
[@PickUpItem2]
[@PickUpItem3]
#ACT
SENDMSG 0 玩家[<$USERNAME>]捡取了高级武器!

物品StdIndex为1、2、3时均执行相同脚本。也可使用条件判断区分不同物品:

[@PickUpItem1]
#ACT
MOV P0 1
GOTO @PickUpCheck

[@PickUpItem2]
#ACT
MOV P0 2
GOTO @PickUpCheck

[@PickUpCheck]
#IF
EQUAL P0 1
#ACT
SENDMSG 0 玩家[<$USERNAME>]捡取了屠龙!
#IF
EQUAL P0 2
#ACT
SENDMSG 0 玩家[<$USERNAME>]捡取了开天!

MOV P0 1将物品标识存入变量,GOTO跳转到公共处理段,EQUAL P0 1判断具体物品。

条件判断与限制 添加捡取条件限制,如等级、职业、地图等:

[@PickUpItem1]
#IF
CHECKLEVELEX < 40
#ACT
SENDMSG 0 玩家[<$USERNAME>]等级不足40,无法捡取屠龙!
TAKE 屠龙 1
#ELSEACT
SENDMSG 0 玩家[<$USERNAME>]成功捡取屠龙!

CHECKLEVELEX < 40检测玩家等级小于40,条件成立时TAKE 屠龙 1收回物品并发送提示。等级足够时发送成功消息。

职业限制脚本 限制特定职业捡取物品:

[@PickUpItem1]
#IF
CHECKJOB Warrior
#ACT
SENDMSG 0 战士玩家[<$USERNAME>]捡取了屠龙!
#ELSEACT
SENDMSG 0 非战士玩家试图捡取屠龙!
TAKE 屠龙 1

CHECKJOB Warrior检测战士职业,非战士职业捡取时收回物品。CHECKJOB Wizard检测法师,CHECKJOB Taoist检测道士。

时间间隔控制 防止频繁捡取触发,添加时间间隔检测:

[@PickUpItem1]
#IF
CHECK [捡取冷却] 1
#ACT
SENDMSG 0 捡取过于频繁,请稍后再试。
TAKE 屠龙 1
BREAK
#ELSEACT
SET [捡取冷却] 1
DelayCall 5000 @重置冷却
SENDMSG 0 玩家[<$USERNAME>]捡取了屠龙!

[@重置冷却]
#ACT
SET [捡取冷却] 0

CHECK [捡取冷却] 1检测冷却标记,SET [捡取冷却] 1设置标记,DelayCall 5000五秒后执行@重置冷却段清除标记。BREAK终止脚本执行。

变量记录与统计 记录玩家捡取特定物品数量:

[@PickUpItem1]
#ACT
INC P10 1
SENDMSG 0 玩家[<$USERNAME>]第<$STR(P10)>次捡取屠龙!

INC P10 1增加捡取计数,<$STR(P10)>显示当前次数。P10为个人变量,角色下线后仍保存。

地图限制触发 特定地图内捡取才触发提示:

[@PickUpItem1]
#IF
EQUAL <$MAP> 3
#ACT
SENDMSG 0 玩家[<$USERNAME>]在盟重土城捡取了屠龙!
#ELSEACT
SENDMSG 0 玩家[<$USERNAME>]捡取了屠龙!

EQUAL <$MAP> 3检测当前地图编号,3为盟重土城。不同地图显示不同提示消息。

组队捡取共享 组队状态下捡取触发队伍提示:

[@PickUpItem1]
#IF
CHECKGROUP
#ACT
GROUPMSG 0 队员[<$USERNAME>]捡取了屠龙!
#ELSEACT
SENDMSG 0 玩家[<$USERNAME>]捡取了屠龙!

CHECKGROUP检测玩家是否有队伍,GROUPMSG 0发送队伍消息。组队时通知队友,非组队时发送全服公告。

捡取记录日志 将捡取信息写入日志文件:

[@PickUpItem1]
#ACT
SENDMSG 0 玩家[<$USERNAME>]捡取了屠龙!
WRITELINE ..\QuestDiary\捡取日志.txt [<$DATETIME>] <$USERNAME> 捡取屠龙

WRITELINE将记录写入QuestDiary目录下的捡取日志.txt文件,格式为[时间] 角色名 捡取物品。便于管理员查询物品流向。

物品绑定触发 捡取时自动绑定物品给玩家:

[@PickUpItem1]
#ACT
SENDMSG 0 玩家[<$USERNAME>]捡取了绑定屠龙!
SetIconFlag 1 1

SetIconFlag 1 1将物品栏第一格物品设置为绑定状态。参数1为物品位置,1为绑定标志。绑定后物品无法交易、丢弃、存仓。

随机奖励触发 捡取物品时概率获得额外奖励:

[@PickUpItem1]
#ACT
SENDMSG 0 玩家[<$USERNAME>]捡取了屠龙!
RANDOM 10
#IF
SMALL <$STR(N0)> 3
#ACT
GAMEGOLD + 100
SENDMSG 0 幸运降临!额外获得100元宝!

RANDOM 10生成0-9随机数,SMALL <$STR(N0)> 3检测小于3即30%概率。条件成立时GAMEGOLD + 100增加元宝。

任务物品检测 捡取任务物品触发任务进度更新:

[@PickUpItem100]
#ACT
SENDMSG 0 玩家[<$USERNAME>]获得了任务物品!
SET [任务进度] 1
SENDMSG 0 任务进度更新!

SET [任务进度] 1设置任务进度标记。配合任务脚本检测标记值推进任务流程。

极品装备提示 捡取装备时检测极品属性并特别提示:

[@PickUpItem1]
#ACT
GetUserItemValue 1 0 P20
#IF
LARGE P20 5
#ACT
SENDMSG 0 玩家[<$USERNAME>]捡取了极品屠龙!攻击+<$STR(P20)>
#ELSEACT
SENDMSG 0 玩家[<$USERNAME>]捡取了屠龙。

GetUserItemValue 1 0 P20读取物品栏第一格装备的攻击属性值,LARGE P20 5检测攻击大于5。极品装备发送特别公告,普通装备普通提示。

颜色区分提示 不同品质物品使用不同颜色消息:

[@PickUpItem1]
#ACT
SENDMSG 1 玩家[<$USERNAME>]捡取了普通屠龙!
[@PickUpItem2]
#ACT
SENDMSG 4 玩家[<$USERNAME>]捡取了稀有屠龙!
[@PickUpItem3]
#ACT
SENDMSG 5 玩家[<$USERNAME>]捡取了史诗屠龙!

SENDMSG 1发送灰色消息,SENDMSG 4发送粉色消息,SENDMSG 5发送红色消息。通过颜色区分物品稀有度。

数量累计提示 捡取多个相同物品时累计提示:

[@PickUpItem1]
#ACT
INC P30 1
#IF
EQUAL P30 10
#ACT
SENDMSG 0 玩家[<$USERNAME>]已累计捡取10把屠龙!
MOV P30 0
#ELSEACT
SENDMSG 0 玩家[<$USERNAME>]捡取了屠龙,累计<$STR(P30)>把。

INC P30 1增加计数,EQUAL P30 10检测达到10把时发送累计公告并重置计数。未达到时显示当前累计数量。

时间分段提示 不同时间段捡取显示不同提示:

[@PickUpItem1]
#IF
HOUR 6
MIN 0
HOUR 12
MIN 0
#ACT
SENDMSG 0 玩家[<$USERNAME>]清晨捡取了屠龙!
#IF
HOUR 12
MIN 0
HOUR 18
MIN 0
#ACT
SENDMSG 0 玩家[<$USERNAME>]午后捡取了屠龙!
#ELSEACT
SENDMSG 0 玩家[<$USERNAME>]夜晚捡取了屠龙!

检测小时与分钟判断时间段,6-12点为清晨,12-18点为午后,其他时间为夜晚。不同时间段使用不同提示文案。

首捡特别提示 服务器首次捡取某物品特别公告:

[@PickUpItem1]
#IF
CHECK [全服首捡] 0
#ACT
SET [全服首捡] 1
SENDMSG 0 全服首把屠龙被玩家[<$USERNAME>]捡取!
#ELSEACT
SENDMSG 0 玩家[<$USERNAME>]捡取了屠龙。

CHECK [全服首捡] 0检测全局标记,0表示未触发过。首次捡取时SET [全服首捡] 1设置标记并发送全服首捡公告。后续捡取普通提示。

怪物关联提示 捡取特定怪物掉落物品时提示怪物信息:

[@PickUpItem1]
#ACT
SENDMSG 0 玩家[<$USERNAME>]捡取了赤月恶魔掉落的屠龙!

脚本中直接写入怪物名称。如需动态获取,需配合怪物死亡触发记录变量。

区域限制触发 特定坐标区域内捡取才生效:

[@PickUpItem1]
#IF
InRange 330 320 10
#ACT
SENDMSG 0 玩家[<$USERNAME>]在安全区捡取了屠龙!
#ELSEACT
SENDMSG 0 玩家[<$USERNAME>]在野外捡取了屠龙!

InRange 330 320 10检测玩家是否在以330,320为中心10格范围内。安全区内与野外显示不同提示。

触发效果扩展 捡取时附加视觉或声音效果:

[@PickUpItem1]
#ACT
SENDMSG 0 玩家[<$USERNAME>]捡取了屠龙!
PlayEffect 1 330 320 5

PlayEffect 1 330 320 5在坐标330,320播放1号特效5秒。需在M2Server中预先配置特效编号。

多条件组合检测 综合多个条件决定是否触发:

[@PickUpItem1]
#IF
CHECKLEVELEX > 35
CHECKJOB Warrior
CHECKGUILD
EQUAL <$MAP> 3
CHECKGAMEGOLD > 1000
#ACT
SENDMSG 0 符合条件的战士玩家[<$USERNAME>]捡取了屠龙!
#ELSEACT
SENDMSG 0 玩家[<$USERNAME>]捡取了屠龙,但不符合特别条件。

同时检测等级大于35、战士职业、有行会、在盟重土城地图、元宝大于1000。全部满足时发送特别提示。

脚本调试方法 测试捡取触发脚本时使用GM命令辅助。@ReloadQFunction重载QFunction-0.txt脚本。@ViewP0查看变量P0值。@SetP0 1设置变量值。@Make 屠龙 1生成测试物品。捡取后观察M2Server控制台输出,确认脚本执行。修改脚本后及时重载,避免重启服务端。

最终脚本部署 在QFunction-0.txt中添加捡取触发脚本段,保存文件。M2Server控制台点击选项-功能设置-其他控制,勾选启用捡取物品触发。重启M2Server或使用@ReloadQFunction命令重载脚本。测试物品捡取,确认触发正常。根据需求调整提示内容、条件限制、变量记录等功能。定期检查日志文件,监控物品捡取情况。