查看: 5|回复: 0

传奇单机版任务脚本怎么写?三段式结构搞定接任务→记进度→发奖励全流程

62

主题

40

回帖

340

积分

二百VIP

积分
340
发表于 3 小时前 | 显示全部楼层 |阅读模式
二百论坛
本站支持代销互换开区传奇版本、欢迎广大GM、技术、一条龙等传奇业界好友合作、联系业务QQ:1531850810

QQ交流群①:323634742(推荐 )QQ交流群②:764544814(推荐)

本站提供的传奇版本 由于来源不同 精力有限 无法100%测试 如需使用本传奇版本请切记

下载传奇版本后 先解压 再杀毒 更新官方引擎 最后再配置登陆器 避免被非法木马插件利用


传奇单机版任务脚本怎么写?三段式结构一套搞定,接任务→记进度→发奖励全流程

论坛里有不少人问过这个:翎风引擎传奇单机版能不能做任务系统?能做,但很多人写到一半发现不对——接任务触发了,进度记录乱,最后奖励发不出去或者重复发。

根子在于,大部分人写任务脚本是一个NPC、一段脚本硬写到底,没有结构。今天分享一套真正能用的三段式写法,接任务、进度记录、完成奖励,三块代码分开,逻辑清晰,改起来也方便。

为什么任务脚本容易翻车?

翎风引擎脚本没有内置的"任务系统"模块,任务完全靠变量和条件组合手写。常见翻车场景:


  • 接任务没有状态标记,玩家反复点NPC重复接任务
  • 进度靠判断背包里的道具数量,但道具可以扔掉,导致任务永远完不成
  • 完成奖励发放后没有清标记,玩家可以无限领奖
  • 多步骤任务只写一个脚本,条件判断越写越乱,改一处崩一片


三段式结构解决的就是这些问题。

第一段:接任务NPC脚本

文件:QFunction-0.txt(或单独的NPC脚本文件)

接任务的核心逻辑:判断变量→接受任务→设状态。
  1. @main
  2. #ACT
  3. GOTO @check_status
  4. @check_status
  5. ; 用 TASK_QUEST1 变量记录任务状态
  6. ; 0=未接 1=进行中 2=已完成
  7. #IFVAR TASK_QUEST1 = 0
  8. SAY 接任务前要跟NPC对话
  9. MENU 接受任务 @accept
  10. MENU 以后再说 @bye
  11. GOTO @bye
  12. #IFVAR TASK_QUEST1 = 1
  13. SAY 任务还没完成,加油!
  14. SAY 记得收集10个炎晶原矿
  15. GOTO @bye
  16. #IFVAR TASK_QUEST1 = 2
  17. SAY 任务已完成,感谢你!
  18. GOTO @bye
  19. @accept
  20. SETVAR TASK_QUEST1 1
  21. SAY 好的!去帮我收集10个炎晶原矿,收集完再来找我。
  22. GOTO @bye
  23. @bye
  24. SAY 祝你好运!
复制代码

关键点说明:

SETVAR TASK_QUEST1 1 把任务状态设为1(进行中),下次玩家点NPC就走 #IFVAR 判断,不会重复接任务。

变量名建议用全大写+下划线命名,比如 TASK_QUEST1、KILL_BOSS_CNT,方便和其他脚本变量区分。

第二段:进度记录逻辑

进度记录有两种常见方案:

方案A:道具计数法(适合收集任务)

在任务目标道具的来源脚本(比如怪物死亡脚本)里写:
  1. @MonsterDead
  2. ; 怪物死亡时检查是否触发掉落事件
  3. #IFVAR TASK_QUEST1 = 1
  4. ; 任务进行中,记录击杀数
  5. ADDVAR KILL_炎晶_CNT 1
  6. ; 可选:给玩家提示
  7. SENDMSG %NAME% 已收集 %KILL_炎晶_CNT%/10 个炎晶原矿
复制代码

然后在提交任务时判断计数是否达标。

方案B:变量计数法(适合击杀任务)

在 MonsterDead 事件里累加计数变量,提交时检查:
  1. @check_complete
  2. #IFVAR TASK_QUEST1 = 1
  3. #IFVAR KILL_炎晶_CNT >= 10
  4. GOTO @complete
  5. SAY 还没收集够,继续努力!
  6. GOTO @bye
复制代码

注意:道具被丢弃不影响变量计数,这是变量方案比道具数量判断更稳定的原因。

第三段:完成奖励NPC脚本

完成任务的核心逻辑:验证进度→发奖励→重置状态。
  1. @complete
  2. ; 验证条件满足
  3. #IFVAR KILL_炎晶_CNT >= 10
  4. ; 发奖励
  5. GIVE %NAME% 100000 金币
  6. GIVE %NAME% 传奇装备-烈焰战甲 1
  7. ; 重置任务变量,防止重复领奖
  8. SETVAR TASK_QUEST1 2
  9. SETVAR KILL_炎晶_CNT 0
  10. SAY 太棒了!这是你应得的奖励,炎晶战甲已存入背包。
  11. SAY 背包满了记得清理一下,物品掉地上就消失了。
  12. GOTO @bye
复制代码

SETVAR TASK_QUEST1 2 必须写,这是防止重复领奖的关键。设成2之后,玩家再点提交NPC就走"任务已完成"分支,不会再次触发 @complete。

三段式完整结构

阶段文件/位置核心逻辑
接任务接任务NPC脚本判断变量状态 → SETVAR状态=1
进度记录怪物死亡/道具使用脚本ADDVAR计数 → 可选SENDMSG提示
提交完成提交任务NPC脚本验证计数 → GIVE奖励 → SETVAR状态=2


常见踩坑4个

坑1:变量名大小写不一致

翎风引擎变量区分大小写。TASK_QUEST1 和 task_quest1 是两个不同的变量。接任务设的是 TASK_QUEST1,提交检查的是 task_quest1,永远不会匹配。

统一用全大写,能避开这个坑。

坑2:ADDVAR累加了但条件没触发

翎风引擎 #IFVAR 的 >= 写法要注意语法,部分版本不支持,只支持 = 和比较。

解决方案:把10这个数值写成等于判断,或者用 DECVAR 逆向减法(从10减到0,减到0触发完成)。

坑3:变量名和全局事件变量撞名

翎风引擎的玩家变量是每个角色独立的,但如果变量名和全局事件变量撞名,会有冲突。

建议任务变量加前缀,比如 ROLE_QUEST_1、ROLE_KILL_CNT,避免和全局脚本变量冲突。

坑4:接任务和提交任务写在同一个NPC脚本里逻辑混乱

建议接任务和提交任务用两个NPC(或同一个NPC但不同 @标签入口),逻辑分开,好维护。

---

这套三段式是翎风引擎传奇单机版任务脚本的基础结构,从简单的收集任务到多步骤连锁任务,都能在这个框架上扩展。

写复杂任务链时,把 TASK_QUEST1 的值区间拓展:1=接任务、2=完成第一步、3=完成第二步、4=全部完成,用不同值控制不同步骤的显示和判断,同样适用。
二百论坛
免责声明:

1、本论坛资源均来源于网络

2、如下载使用,自行杀毒

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

QQ| 手机版|小黑屋|二百版本库 |网站地图

免责声明:本站所有资源皆来自于互联网.请在下载使用内24小时内删除! 如果侵犯了您的权益,请至邮箱: (1531850810@qq.com), 我们会及时删除侵权内容。

Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5

关于我们 | 联系方式 | 隐私政策