组队与会话
QR 的多人体验由三块拼成:
| 块 | 一句话 | 来源 |
|---|---|---|
| 队伍(Party) | /qr party 组队(运行时内存),可读 MMOCore 队伍 | 优先用 MMOCore 队伍,缺则用 QR 内置临时队伍 |
| 会话(Session) | bossbar 锚点占用判定、/qr info 计数 | config.yml 的 session + 模板的 session 段 |
| 进入门槛(Entry) | 人数/成长度/职业/花费/冷却的软校验规则 | 模板的 entry 段 |
🔑 架构红线:QR 不算属性/伤害,队伍这里也一样——QR 只负责「谁和谁算一伙、谁能进」,怪的强度仍交 MythicMobs 缩放、成长度读 QinhClass/MMOCore。
注意
当前实现边界(务必先读):本页的 session(进入/退出大标题、限时倒计时 bossbar)与 entry 软校验段是为显式「进入副本」流程预留的配置与规则,当前主线玩法(自然生成的世界结构 + 靠近自动刷怪 + 就近清怪通关)不经过这套进入流程,因此这些字段目前不会主动触发。当前真正生效的多人逻辑是:靠近 48 格内的玩家共同推进刷怪目标、通关/秘境净化时对就近玩家结算(见 刷怪与通关、秘境与钥石)。/qr party 命令可正常组队,成长度/职业判定也实时可读(用于战利品成长缩放、秘境等)。本页 session/entry 字段写了不报错、可作前瞻配置,但别指望它们现在拦人或弹进入标题。
🖼️ [图片占位] 一队三人进入遗迹的瞬间(标题 + 紫色 bossbar) · 建议
assets/session-enter.png
一、会话(Session)
「会话」是一座遗迹正在被一群人探索的运行态预留层——配置项管 bossbar 外观、限时倒计时、以及无人时的清理规则。
注意
如顶部所述,会话的「进入/退出大标题、限时倒计时 bossbar」依赖显式进入流程,当前主线玩法不触发它。下面字段写了不报错,作为前瞻配置与「锚点占用」判定(/qr info、秘境/重复进入互斥)的依据。
1.1 全局配置(config.yml 的 session 段)
session:
enter-radius: 48 # 集结搜索半径:搜索附近锚点 / 判定队友是否到齐的范围(供进入流程用)
bossbar: true # 是否显示遗迹 bossbar
bossbar-color: PURPLE # PINK / BLUE / RED / GREEN / YELLOW / PURPLE / WHITE
bossbar-style: SOLID # SOLID / SEGMENTED_6 / SEGMENTED_10 / SEGMENTED_12 / SEGMENTED_20enter-radius:集结时搜索附近遗迹的半径,队友也需在此范围内才算到齐。注意:config.yml 该项注释里写的「/qr enter」是历史遗留——实际不存在/qr enter命令,当前没有走集结流程的入口。bossbar:bossbar 的全局开关与外观。当前秘境激活(见 秘境与钥石)会用自己的realm.bossbar-*设置显示头顶进度条;本段session.bossbar配的是会话进入流程的 bossbar,随该流程一并预留。
1.2 模板级会话规则(template.yml 的 session 段)
每座遗迹可在自己的 template.yml 覆盖会话行为:
# template.yml 片段
session:
mode: shared-anchor # 会话模式(多人共用同一座实例)
time-limit: 30m # 限时:到点结束会话(写 0 或留空走全局;更像世界结构可设长一些)
cleanup-on-empty: 60s # 全员离开多久后清理这次会话(防空场挂着)| 字段 | 默认 | 说明 |
|---|---|---|
mode | shared-anchor | 多人共享同一座遗迹实例 |
time-limit | 30m | 限时;bossbar 会随之倒计时。设很长则更像「世界结构」而非副本倒计时 |
cleanup-on-empty | 60s | 成员全部离开后,过这么久就结束会话、把锚点还原为休眠态 |
时间写法支持
30s/10m/1h等。
1.3 进入/退出 & 通关提示文案
会话相关玩家可见文案在 lang/<语言>/messages.yml,支持 & 颜色码和占位符:
# lang/zh_cn/messages.yml
messages:
enter-title: "&6⚔ 进入 {ruin}" # 进入大标题({ruin}=遗迹名)——随进入流程预留
enter-subtitle: "&7队伍 {players} 人 · 限时 {time}" # 副标题({players}=人数 {time}=限时)——同上
exit: "&7你已离开遗迹" # 离开提示——随进入流程预留
complete: "&a遗迹探索完成!"
complete-sub: "&7{ruin} 已被征服" # 通关副标题(当前就近玩家可见,已生效)
stage-advance: "&a▶ 阶段达成" # 阶段推进大标题(已生效)
stage-advance-sub: "&7进入:{stage}" # 阶段推进副标题(已生效)注意
enter-title/enter-subtitle/exit 这几条随上面的「进入流程」一并预留,当前不主动弹出;真正会在玩家眼前出现的是 complete-sub/stage-advance*——它们由刷怪通关/阶段推进逻辑对就近 48 格玩家触发(见 刷怪与通关)。
bossbar 的标题在限时模式下设计为显示「遗迹名 - 剩余时间」。颜色/样式见 §1.1。
二、队伍(Party)
「队伍」决定谁和谁算一伙:共享探索进度、共享经验、进门一起被门槛校验。
2.1 队伍来源优先级
QR 不重复造队伍轮子——它优先复用现成的 RPG 队伍:
装了 MMOCore 队伍 ──► 用 MMOCore 队伍(读其在线成员)
否则 ──► 用 QR 内置临时队伍(/qr party ...)成长度/职业判定的来源略有不同:成长度优先 QinhClass → MMOCore → 原版等级;队伍成员优先 MMOCore → QR 内置。详见 Provider 与桥接。
2.2 QR 内置临时队伍命令
当没接外部队伍系统时,用 QR 自带的轻量临时队伍(运行时内存,重启清空):
| 命令 | 权限 | 作用 |
|---|---|---|
/qr party create | qinhruins.use | 创建队伍,自己成为队长 |
/qr party invite <玩家> | qinhruins.use | 队长邀请某人(被邀者需 accept) |
/qr party accept | qinhruins.use | 接受待处理的邀请 |
/qr party leave | qinhruins.use | 离队;队长离队则解散整队 |
/qr party info | qinhruins.use | 查看本队成员 |
规则要点:
- 只有队长能邀请(先
create); - 已在别的队伍的人无法被邀请/加入;
- 队长
leave= 解散整队,全员退出。
单人(没建队/没接外部队伍)时,队伍就是「你自己一个人」,所有共享逻辑照常工作,只是成员只有你。
2.3 共享什么
注意
当前以「就近」而非「队伍」结算:目标计数 / 阶段推进当前是按锚点全局推进的——任何人击杀该遗迹的怪都会推进同一进度,通关大标题、净化战利品、老虎机资格则发给就近(约 48 格内)的玩家,而不是严格按队伍名单。所以即使没组队,靠在一起打同一座遗迹也照样共推进度、共领奖。
/qr party 组的队伍当前主要价值是「把谁和谁标记成一伙」(供未来进入流程 / 外部系统读取),以及接 MMOCore 时复用其队伍成员列表。容器/奖励箱仍按各渠道的 per-player / shared 规则发放,见 战利品系统。
三、进入门槛(Entry)软校验
注意
同样随进入流程预留:entry 段定义的人数/成长度/职业/花费/冷却软校验是为显式「进入副本」流程准备的规则,当前主线玩法不主动跑这套校验(世界结构没有「进门」这一刻)。下面把字段、校验语义、对应文案完整列出,便于你预配、对接,以及理解 /qr save 默认生成的 entry 段含义。
进门前(进入流程触发时)QR 会对到场的这一队人做一组软校验(任一不过则拦下并提示,不扣任何代价)。在模板 template.yml 的 entry 段配置:
# template.yml 片段
entry:
min-players: 1 # 到场人数下限
max-players: 10 # 人数上限(0 或负=不限)
required-classes: [] # 队伍中必须在场的职业(如 [warrior, healer])
min-growth: 0 # 全队每人成长度都需 ≥ 此值
cost: "" # 进入花费(队长付,需经济插件;如 "money:500")
cooldown: 0s # 同一遗迹对队长的进入冷却(如 30m / 1h)| 字段 | 默认 | 校验 | 失败提示(messages.yml) |
|---|---|---|---|
min-players | 1 | 到场人数 ≥ 此值(队友需在 enter-radius 内集结) | party-not-enough(「还需 {n} 名队友」) |
max-players | 10 | 到场人数 ≤ 此值(≤0=不限) | party-too-many(core.yml) |
min-growth | 0 | 每位成员成长度都 ≥ 此值 | growth-too-low(附带不达标者名字) |
required-classes | 空 | 列出的每个职业,队中至少有一人在场 | class-required(「队伍中需要 {class}」) |
cost | 空 | 队长持有足够货币(走 经济桥) | cost-not-enough |
cooldown | 0 | 队长对该遗迹不在冷却中 | anchor-cooldown(附带剩余秒数) |
校验全过后,若该遗迹已被别队占用还会提示 anchor-busy。
注意
这些校验是软门槛:成长度/职业读不到来源(没装 QinhClass/MMOCore)时按「不限制」处理,不会把玩家卡死在门外。required-classes 用的职业 ID 由你接入的职业系统决定。
进入门槛文案
# lang/zh_cn/messages.yml
messages:
party-not-enough: "&e还需 {n} 名队友才能进入"
growth-too-low: "&c你的成长度不足以进入此遗迹"
class-required: "&e队伍中需要 {class} 职业在场"四、按需求快速配置
注意
下表带 session.* / entry.* 的项随「进入流程」预留(见本页顶部说明),当前主线玩法不触发;列出便于预配与对接。带 ✅ 的现在就生效。
| 我想要… | 怎么做 |
|---|---|
| 通关 / 阶段推进有大标题 ✅ | 默认就有;改 messages.complete-sub / messages.stage-advance* |
| 秘境头顶进度条 ✅ | 走秘境:realm.bossbar-*(见 秘境与钥石) |
| 玩家组队一起打 ✅ | /qr party create → invite;或装 MMOCore 复用其队伍 |
| 锁等级/成长度对接来源 ✅ | 装 QinhClass/MMOCore,成长度即实时可读(战利品成长缩放等用得到) |
| 头顶进度/倒计时条(进入流程) | session.bossbar: true + 模板 session.time-limit(预留) |
| 限时挑战(进入流程) | 模板 session.time-limit: 10m(预留) |
| 至少 3 人才能进(进入流程) | 模板 entry.min-players: 3(预留) |
| 队伍里必须有牧师(进入流程) | 模板 entry.required-classes: [healer](预留) |
| 进门收费(进入流程) | 模板 entry.cost: "money:500",装经济插件(预留) |
| 进同一遗迹有冷却(进入流程) | 模板 entry.cooldown: 1h(预留) |
下一步
- 遗迹模板:
entry/session段全字段 - 刷怪与通关:会话期间的目标计数与通关
- Provider 与桥接:成长度/队伍/经济来源优先级
- 命令大全:
/qr party全部子命令