Korea
本帖最后由 Korea 于 2021-2-4 18:25 编辑


某黑弟弟开发了某个任务插件,但是由于他的联邦总统身份不允许他编写相关的教程

于是为了能更好的将该插件发扬光大,本教程贴诞生了


催更@黑



目录

1.安装与下载
2.命令大全
3.编写对话
4.编写任务
5.写法格式
6.进阶教程


请点击查看第二页



2021.12 数据,可能有更多内容

某黑弟弟开发了某个任务插件,但是由于他的联邦总统身份不允许他编写相关的教程
于是为了能更好的将该插件发扬光大,本教程贴诞生了


催更@黑


目录
1.安装与下载2.命令大全3.编写对话4.编写任务5.写法格式6.进阶教程


请点击查看第二页





安装与下载


请上原贴下载 点击前往有能力的麻烦还请给黑弟弟一个评分
安装流程:将下载好的jar文件丢到服务端plugins文件夹内然后重启服务器即可


命令大全


代码:

  1. 主命令:/cq   ;该命令可以查看大多数常用指令,这里就不一一赘述了

  2. 子命令:
  3. /ct ;该命令可以使用插件的各种调试功能,比如获取坐标之类的,请自行尝试
  4. /ci ;插件的物品库
  5. /cb ;用来创建或打开任务编辑器的,一般我都是用来查看各种动作的标准格式,建议手写,编辑器挺绕的
  6. /cbd ;用来创建或打开对话编辑器的,一般我都是用来查看各种动作的标准格式,建议手写,编辑器挺绕的
  7. 比较常用的指令就这些了,其他的有疑问可以在下方回复提出
  8. 如果指令跟其他插件冲突了可以使用指令/cronus:<命令>



编写对话


这里才是本教程的核心部分,所以请各位一定要仔细阅读和理解
直接上模板讲解吧

代码:


  1. #这个是你的对话ID
  2. 主线_0:
  3. #显示模式选择,可用选项CRONUS_MENU(箱子)CRONUS_DEMO(对话),建议用CRONUS_MENU
  4. theme: CRONUS_MENU
  5. #你对话的标题栏文字
  6. title: '&0✎ 请点击下方选项进行选择'
  7. #你写的这个对话绑定的NPC
  8. target: 'citizens=0'
  9. #这里不要改,这里有点类似括号的开头,用来分选项的优先级,看不懂就无视这句话
  10. dialog:
  11.     #显示的物品ID
  12.     item: PLAYER_HEAD
  13.     #物品上显示的信息
  14.     text:
  15.     - '&a蜜莉雅:'
  16.     - ''
  17.     - '&7镇子里的怪物真令人感到害怕'
  18.     #选项
  19.     reply:
  20.     #选项显示的物品ID,AIR代表不显示
  21.     - item: AIR
  22.    #物品显示的信息
  23.    text:
  24.    - '&a1:'
  25.    #显示的条件,ALL_MATCH代表要完成所有条件,ANY_MATCH则代表只要满足任意一条
  26.    condition:
  27.   ==: ALL_MATCH
  28.   predicate:
  29.   #条件
  30.   - 'func {player.val:a1} = 0'
  31.    #满足条件后显示的选项
  32.    condition-dialog:
  33.     item: WRITABLE_BOOK:0
  34.     text:
  35.     - '&e主线1-1 &a&l!'
  36.     - '&d巨石平乱'
  37.     - ''
  38.     - '&7点击开始任务'
  39.     dialog:
  40.   item: BOOK
  41.   text:
  42.   - '&a蜜莉雅:'
  43.   - ''
  44.   - '&7您就是传说中的勇者大人吗?'
  45.   - '&7您终于来拯救这个堕落的世界了!'
  46.   - '&7霍尔大人那边急需您的帮助'
  47.   - '&7您快去看看吧!'
  48.   reply:
  49.   - item: paper
  50.     text:
  51.     - '&a点击开始任务'
  52.     #点击之后执行的动作
  53.     effect:
  54.     #接受任务 主线-0-2
  55.     - quest.accept 主线-0-2
  56.     #为玩家添加永久变量val player.val. 变量名字 = 数值,这个变量名字随便你取,不要重复就行
  57.     #上面条件就是用这个来判断是否显示的,比如a1的时候可以显示哪些选项,以此类推
  58.     - player.val.a1 = 1
  59.    ###########################这个案例是更多平级选项###################################
  60.    #注意这个- item: 要和上面第一个齐平,不同数量的空格就代表不同的级别
  61.    - item: AIR
  62.    #物品显示的信息
  63.    text:
  64.    - '&a1:'
  65.    #显示的条件,ALL_MATCH代表要完成所有条件,ANY_MATCH则代表只要满足任意一条
  66.    condition:
  67.   ==: ALL_MATCH
  68.   predicate:
  69.   #条件
  70.   - 'func {player.val:a1} = 0'
  71.    #满足条件后显示的选项
  72.    condition-dialog:
  73.     item: WRITABLE_BOOK:0
  74.     text:
  75.     - '&e主线1-1 &a&l!'
  76.     - '&d巨石平乱'
  77.     - ''
  78.     - '&7点击开始任务'
  79.     dialog:
  80.   item: BOOK
  81.   text:
  82.   - '&a蜜莉雅:'
  83.   - ''
  84.   - '&7您就是传说中的勇者大人吗?'
  85.   - '&7您终于来拯救这个堕落的世界了!'
  86.   - '&7霍尔大人那边急需您的帮助'
  87.   - '&7您快去看看吧!'
  88.   reply:
  89.   - item: paper
  90.     text:
  91.     - '&a点击开始任务'
  92.     #点击之后执行的动作
  93.     effect:
  94.     #接受任务 主线-0-2
  95.     - quest.accept 主线-0-2
  96.     #为玩家添加永久变量val player.val. 变量名字 = 数值,这个变量名字随便你取,不要重复就行
  97.     #上面条件就是用这个来判断是否显示的,比如a1的时候可以显示哪些选项,以此类推
  98.     - player.val.a1 = 1
  99. #打开该对话时执行的事件
  100. open:
  101. - 'send.sound ITEM_ARMOR_EQUIP_LEATHER-1-1'
  102. #关闭对话执行的事件
  103. close:
  104. - 'send.title &r|慢走|10|20|10'

编写任务


代码:

  1. 主线-0-5:
  2. # 任务名称
  3. # 用于在任务纵览中显示的简要名称
  4. display: '巨石平乱1-5'

  5. # 任务索引
  6. # 用于在任务纵览或计分板中选择显示的任务
  7. booktag:
  8.     - '主线任务'

  9. # 任务标签
  10. # 如果你使用 Uranus 语法进行任务切换
  11. # 同样可以通过任务标记选择正在执行的任务
  12. # 注意,玩家不可同时接受多重相同标记的任务
  13. label: 'quest_main'

  14. # 任务超时时间(单位:Cronus 时间表达式)
  15. # 指接受任务后有多长时间执行任务
  16. # 超时后任务自动失败
  17. # 如果这个任务没有时间限制,可以填写 never 或 -1
  18. # 如果你想让这个任务在固定的时间结束,可以使用:
  19. # ===========================================================
  20. # day:HH:mm(day:23:59)   = 每日刷新(每日 23点59分)
  21. # week:dd:HH:mm(week:1:23:59)= 每周刷新(每周一 23点59分)
  22. # month:dd:HH:mm(month:1:23:59)= 每月刷新(每月1日 23点59分)
  23. # ===========================================================
  24. timeout: never

  25. # 任务冷却时间(单位:Cronus 时间表达式)
  26. # 如果你不想让玩家再次接受这个任务,可以填写 never 或 -1
  27. cooldown: never

  28. # 任务自动接受
  29. auto-accept: false

  30. # 任务动作
  31. # 如果你省略动作配置则使用插件默认语言文件提示
  32. # ===========================================================
  33. # success  = 任务完成
  34. # failure  = 任务失败或放弃
  35. # accept   = 任务接受
  36. # accept-fail = 任务接受的条件未满足
  37. # cooldown    = 任务冷却期间接受任务
  38. # ===========================================================
  39. action:
  40.     accept:
  41.    - 'send.message &r?我没问题!|&r|10|20|10'
  42.     success:
  43.    - 'command.console say 给与玩家&a{player:name}&f奖励'

  44. # 任务条件
  45. # ===========================================================
  46. # accept= 任务接受所需条件
  47. # failure = 任务失败所需条件(当条件满足时任务自动放弃)
  48. # ==========================================================

  49. # 任务阶段
  50. # 每个任务可以包含多个阶段
  51. # 玩家在完成上一阶段之前无法查看下一阶段的内容
  52. stage:
  53.     # 任务阶段序号
  54.     # 每个序号在玩家接受后不可更改否则将会出现不可预料的错误
  55.     s0:
  56.    # 任务条目
  57.    # 每个任务可以包含多个阶段
  58.    # 玩家可以查看当前任务阶段下的所有任务条目
  59.    task:
  60.   # 任务条目序号
  61.   # 每个序号在玩家接受后不可更改否则将会出现不可预料的错误
  62.   t0:
  63.     # 任务条目类型
  64.     type: location
  65.     data:
  66.    count: 1
  67.    location: rpg,-1002.13,62.0,-1217.58,186.76,27.15 r:2 #r:2代表玩家需要进入该坐标多少范围才会完成该任务

  68.     # 任务条目引导
  69.     # 插件将会创造动态的引导指引玩家前往这里
  70.     guide:
  71.    # 显示距离
  72.    distance: 2.0
  73.    # 目标地点
  74.    target: 'rpg,-1002.13,62.0,-1217.58,186.76,27.15'
  75.    # 引导内容
  76.    text:
  77.   - '&a&l⇧'
  78.   - '&8[&f目标&8]'
  79.   - '距离 {distance}m'

  80.     # 任务条目动作
  81.     # ===========================================================
  82.     # next    = 条目完成(单次)
  83.     # restart = 条目重置
  84.     # ===========================================================

  85.     # 任务条目重置所需条件
  86.     # 当条件满足时任务条目自动重置

  87.     # 任务状态显示内容
  88.     status: '主线任务 - 还书 : {quest.var:t0.count|0}/1'

  89.     # 任务状态接口
  90.     # 当启用 bossbar 时使用下方数字作为进度

  91.    # 任务阶段动作
  92.    # ===========================================================
  93.    # accept   = 阶段开始(任务的首阶段不会执行该动作)
  94.    # success  = 阶段完成
  95.    # failure  = 阶段失败或放弃
  96.    # restart  = 阶段重置
  97.    # ===========================================================

  98.    # 任务阶段重置所需条件
  99.    # 当条件满足时任务阶段自动重置

  100.    # 任务阶段描述
  101.    # 用于在佣兵日志中显示任务的相关信息

  102.    # 任务纵览描述
  103.    # 用于在任务纵览中显示任务信息
  104.    content-global:
  105.   - '{quest.strike:t0}- <hover:{quest.strike:t0}还书|找到拉斐尔>'



参数讲解


施工中...


常见问题


Q:如何将对话绑定至指定的NPC身上?
A:打开你的对话文件,找到 target: 'citizens=0' ,这就简单易懂了吧,把数字改成你NPC的数字ID即可。


Q:任务与对话相互会有影响吗?
A:你可以将任务与对话看成两个独立的模块,两个模块可以在各自的动作参数里相互调用(套娃),因此可以使用动作来打开对话接受任务之类的
也可以使用指令来进行同样的操作,具体请看对话与任务内的动作模块解答


Cronus插件无非就是对话+任务两个大部分所以本教程将会以这两个功能为核心讲解
比较适合刚上手的小白可以根据教程内的模板自行套用与研究



剩下的之后慢慢补




Korea
本帖最后由 Korea 于 2021-2-4 18:27 编辑





更新记录与问题收集



1.已更新坐标任务示例
更多任务类型等待坏黑进行补齐

最新发现问题:cronus插件将会影响其他插件计分板的显示


LinLei_Baruch
先收藏一波XD

老笛罚
咕咕咕???死格子

fffilm
不知道有没有高版本的

Era丶霜殇
问一下咕咕咕久的楼主,任务的类型有哪些,默认的就给了破坏方块breakblock

Korea
Parker. 发表于 2021-2-4 18:18
问一下咕咕咕久的楼主,任务的类型有哪些,默认的就给了破坏方块breakblock

已更新任务的写法,不过大多都是原版自带的注释,更多的任务类型需要坏黑提供写法