传奇服务端NPC杀怪任务脚本编写指南

来源: 作者: 点击:
一、脚本文件位置与创建

任务脚本存放于服务端的D:\MirServer\Mir200\Envir\Market_Def目录下,文件名必须与NPC名称一致。例如,在盟重省老兵(NPC代码“盟重老兵”)处创建任务,需在Market_Def目录下创建文本文件,重命名为盟重老兵.txt。

二、基础NPC对话框架

脚本由纯文本构成,以[@main]标签作为NPC的默认对话。打开盟重老兵.txt,写入以下基丛话与任务接取逻辑:
[@main]
你好,勇士。城外近来有大量<半兽人>出没,你能帮我消灭它们吗?\
我需要你带回<10个半兽人牙齿>作为证明。\\
<接受任务/@接受任务>\
<我只是路过/@exit>

[@接受任务]
#IF
check[5]0//检测变量5的值是否为0,用于判断是否首次接取
#ACT
set[5]1//将变量5设为1,标记任务“已接未完成”
SendMsg5任务接取成功:消灭半兽人,收集10个半兽人牙齿。
break

代码解释:check[5]0是任务状态标志,变量5为0表示未接任务,1表示已接但未完成,2表示已完成。SendMsg5是发送个人提示信息。

三、杀怪与物品掉落触发

杀怪计数和物品掉落检测需在QFunction-0.txt脚本中编写。此文件位于D:\MirServer\Mir200\Envir\Market_Def\QFunction-0.txt,负责处理全局事件。

1.杀怪计数
在QFunction-0.txt中添加以下段落,实现杀怪进度记录:
[@KillMon]
#IF
check[5]1//检测是否处于“已接未完成”状态
Random半兽人//检测被杀死的怪物是否为“半兽人”
#ACT
IncN$杀怪计数1//变量N$杀怪计数自增1
SendMsg5进度提示:你已杀死<$STR(N$杀怪计数)>/10只半兽人。
break


2.物品掉落与拾取检测
在同一个QFunction-0.txt文件中,添加物品拾取触发:
[@PickUpItem]
#IF
check[5]1//检测任务状态
checkitem半兽人牙齿1//检测背包中“半兽人牙齿”是否≥1
#ACT
goto@检测任务完成//跳转到任务完成检测段落
break


四、任务完成与交还奖励

在盟重老兵.txt中添加交还任务的对话与奖励逻辑:
[@main]
你好,勇士。城外近来有大量<半兽人>出没,你能帮我消灭它们吗?\
我需要你带回<10个半兽人牙齿>作为证明。\\
<我已经完成了,这是牙齿/@交还任务>\
<我需要更多时间/@exit>

[@交还任务]
#IF
check[5]1//确认任务状态为“已接未完成”
checkitem半兽人牙齿10//检测背包是否有10个半兽人牙齿
#ACT
take半兽人牙齿10//扣除10个任务物品
set[5]2//将任务状态标记为“已完成”
ChangeExp+50000//给予5万经验值
give金条1//奖励1根金条
SendMsg5任务完成:你获得了经验和金条!
break
#ELSEACT
SendMsg5条件不足:你还没有收集到10个半兽人牙齿。
break


五、任务重置与调试

1.重置任务
若任务卡住,可为GM添加重置命令。在QFunction-0.txt中添加:
[@重置任务]
#IF
#ACT
set[5]0
MovN$杀怪计数0
SendMsg5任务状态已重置。
break

GM在游戏中输入@重置任务即可将任务恢复到初始状态。

2.关键注意事项
•变量范围:[5]这类数字变量是全局唯一的,避免在不同任务中重复使用同一变量,否则会导致状态冲突。建议建立文档记录变量用途。

•怪物与物品名称:脚本中的怪物名“半兽人”和物品名“半兽人牙齿”必须与Monster.DB和StdItems.DB数据库中的名称完全一致,包括标点符号。

•脚本重载:修改QFunction-0.txt或NPC脚本后,必须在M2引擎控制台(M2Server)点击“重新加载”->“功能脚本”和“重新加载”->“NPC脚本”,修改才会生效。
[顶部]