传奇外传版本新增任务相关脚本命令用法与实例完整讲解

来源: 作者: 点击:
传奇外传在原版基础上扩充了大量任务相关脚本指令,用于实现任务接取、进度记录、任务道具发放、任务状态校验、奖励发放以及任务重置等功能,很多原有引擎基础指令无法实现的任务逻辑,依靠这套新增任务命令可以快速完成,不同版本外传内核在指令细节上存在细微差别,编写脚本前需要核对M2支持的命令清单。

任务标记存储类命令,是外传任务体系最核心的部分,采用人物任务变量保存任务进度,区别于普通人物变量,任务标记不会随角色小退清空,数据持久写入角色存档。ADDQUEST 任务编号 标记值,这条命令用于给角色添加任务标记,标记值可以自定义数字,用来区分任务不同阶段。SETQUEST 任务编号 标记值,用来修改已存在任务标记的数值,切换任务阶段。CHECKQUEST 任务编号 标记值,作为条件判断语句,读取角色身上对应任务编号标记,匹配数值才会执行后续动作。DELQUEST 任务编号,清除指定任务标记,任务完成或者放弃任务时调用,清空进度。

任务状态判断配套命令,CHECKQUESTSTATE 任务编号 状态值,状态0代表未接取,状态1代表进行中,状态2代表已完成,状态3代表任务放弃。使用这条指令可以在NPC对话面板判断任务显示文字,未接取时显示接受任务,进行中显示任务进度,已完成显示领取奖励。CHECKQUESTTIME 任务编号 秒数,用来校验任务时间限制,限时任务场景使用,超过设定秒数任务自动失效。

任务道具相关新增脚本命令,QUESTGIVE 物品名称 数量,发放任务专用道具,通过该命令产出的道具会绑定对应任务编号,角色无法丢弃、交易,防止任务道具流失。QUESTTAKE 物品名称 数量,回收任务道具,校验角色背包内任务道具数量,满足条件后扣除对应道具,不满足则返回提示文字。CHECKQUESTITEM 物品名称 数量,判断角色背包任务道具数量,作为任务下一步的触发条件。

任务计数类指令,用于杀怪计数任务,也是外传任务高频使用功能。ADDQUESTCOUNT 任务编号 计数字段 增加数值,击杀怪物脚本段调用,每击杀一只目标怪物,计数加一。CHECKQUESTCOUNT 任务编号 计数字段 目标数值,判断任务杀怪数量是否达标。SETQUESTCOUNT 任务编号 计数字段 数值,直接重置任务计数,放弃任务时清零杀怪数量。DELQUESTCOUNT 任务编号 计数字段,删除任务计数记录。在怪物死亡[@OnDie]段搭配这条命令,判断击杀者身上的任务标记,怪物匹配任务要求,则增加任务计数。

任务奖励命令,QUESTREWARD 经验值 金币 物品编号,一次性发放任务奖励,同时自动标记任务为已完成状态。可以拆分使用,QUESTREWARDEXP 经验数值,单独发放任务经验,QUESTREWARDGOLD 金币数值,单独发放金币,QUESTREWARDITEM 物品编号 数量,发放任务物品。任务奖励命令自带防重复领取机制,任务标记状态为已完成时,再次点击不会重复发放奖励,不需要额外写多层变量判断。

任务重置与放弃命令,CANCELQUEST 任务编号,玩家在NPC处选择放弃任务,执行该命令,清除任务标记、任务计数,回收任务专属道具,任务状态变更为放弃。RESETQUEST 任务编号,重置任务全部进度,任务状态回到未接取,适合每日任务,角色每天可以重新接取一次。CHECKQUESTDAY 任务编号,判断当日是否已经完成该任务,用来限制每日任务领取次数。

NPC任务对话脚本实例,写一个杀怪任务NPC逻辑。
[@main]
#IF
CHECKQUESTSTATE 1001 0
#ACT
MESSAGE 你可以接取消灭狼妖任务。
#SAY
你愿意帮我消灭狼妖吗?\
<接受任务/@acceptquest>
#ELSEIF
CHECKQUESTSTATE 1001 1
CHECKQUESTCOUNT 1001 killnum 20
#ACT
MESSAGE 狼妖击杀数量已经达标,可以领取奖励。
#SAY
你已经收集足够狼妖材料,可以领取奖励。\
<领取奖励/@getquestaward>
#ELSEIF
CHECKQUESTSTATE 1001 1
#ACT
MESSAGE 当前任务进行中,继续击杀狼妖。
#SAY
任务进行中,需要击杀狼妖20只。\
<放弃任务/@cancelquest>
#ELSEIF
CHECKQUESTSTATE 1001 2
#ACT
#SAY
该任务你已经完成。
[@acceptquest]
#IF
CHECKQUESTSTATE 1001 0
#ACT
SETQUESTSTATE 1001 1
ADDQUEST 1001 1
ADDQUESTCOUNT 1001 killnum 0
QUESTGIVE 任务收集袋 1
SENDMSG 7 任务已接取,前往击杀狼妖。
[@getquestaward]
#IF
CHECKQUESTSTATE 1001 1
CHECKQUESTCOUNT 1001 killnum 20
#ACT
QUESTREWARD 100000 5000 102
SETQUESTSTATE 1001 2
DELQUEST 1001
DELQUESTCOUNT 1001 killnum
SENDMSG 7 任务奖励领取成功。
[@cancelquest]
#IF
CHECKQUESTSTATE 1001 1
#ACT
CANCELQUEST 1001
SENDMSG 7 任务已经放弃,进度全部清空。

怪物死亡触发,实现杀怪计数。
[@OnDie]
#IF
ISADMIN < 1
CHECKQUESTSTATE 1001 1
CHECKHITMONNAME 狼妖
#ACT
ADDQUESTCOUNT 1001 killnum 1
SENDMSG 7 狼妖击杀进度:<$QUESTCOUNT(1001,killnum)>/20

任务命令使用注意事项,任务编号不能重复,每一个独立任务分配唯一编号,编号冲突会造成任务标记错乱。任务标记保存在人物存档,大量任务长期留存标记会增加存档体积,任务完成后及时执行DELQUEST清理数据。任务专用道具和普通道具区分,普通TAKE命令无法回收QUESTGIVE产出的绑定任务道具,必须使用QUESTTAKE。

部分外传版本引擎,任务计数字段名称区分大小写,脚本内字段名称前后保持一致,否则读取不到计数数值。限时任务搭配CHECKQUESTTIME,任务到期自动调用CANCELQUEST,强制清空任务进度。每日任务使用CHECKQUESTDAY,跨凌晨自动重置任务状态,角色第二天可以重新接取。

编写任务脚本时,分步测试,先测试任务接取,确认任务标记、任务状态正常写入。测试杀怪计数,击杀目标怪物,查看任务计数是否正常累加。任务奖励领取环节,多次点击NPC,校验是否存在重复领取奖励。放弃任务测试,确认标记、计数、任务道具全部清理干净。

常见故障排查,NPC无法接取任务,核对任务编号是否重复,M2控制台查看是否支持外传新增任务指令。杀怪计数不增加,检查怪物死亡段触发条件,确认击杀者判断、怪物名称匹配无误。奖励重复领取,优先使用自带QUESTREWARD命令,自带状态锁,手动写变量奖励容易出现漏洞。任务道具无法删除,这类道具为任务绑定道具,只能通过QUESTTAKE或者放弃任务自动回收,普通删除道具指令不生效。

利用这套任务脚本命令,可以搭建主线连环任务、支线单次任务、每日循环任务、杀怪收集道具任务、护送任务等多种类型。连环任务通过上一个任务完成标记作为下一个任务接取条件,CHECKQUESTSTATE判断前置任务状态,完成前置任务,NPC才会开放下一环任务对话。多分支任务设置不同任务标记数值,根据标记跳转不同对话脚本段,实现任务选择分支。

部分外传版本还附带任务弹窗命令,QUESTPOPUP 文字内容,接取任务时弹出任务提示窗口,展示任务目标与背景说明。QUESTTIP 提示文字,在角色屏幕显示任务追踪文字,实时展示当前任务进度,方便玩家查看剩余击杀数量或者收集道具数量。这类界面类任务命令按需启用,过多弹窗提示会影响操作体验。

整套任务脚本体系依托外传新增任务命令,相比旧版引擎依靠人物变量模拟任务的写法,代码结构简洁,数据稳定,自带任务状态管理机制,减少大量自定义变量的编写工作,降低脚本出错概率。所有任务数据由引擎单独管理,和普通人物变量相互隔离,修改人物变量不会影响任务标记,调试和维护更加方便。