公会仓库
公会仓库是所有成员共用的箱子,物品以完整的物品资料保存(附魔、名称、自定义物品数据都会保留)。
/cg vault [页]
或主页的「公会仓库」(打开第 1 页)。需要 vault 职位权限(默认所有职位都有)。
装了云界面 CloudUI 时,仓库改用全屏画面:上面是仓库、下面是自己的背包,直接拖曳物品,并有「整理仓库」「放入同类」,见 云界面公会。
设定
| 位置 | 键 | 默认 | 说明 |
|---|---|---|---|
config.yml | vault.enabled | true | 是否开放仓库;false 时主页不显示仓库按钮 |
config.yml | vault.rows | 6 | 每页几排(1 ~ 6) |
config.yml | levels.<等级>.vault-pages | 1 ~ 6 | 这个等级的公会有几页;0 = 不能使用(提示「公會等級還不夠開啟倉庫」) |
仓库的标题在 messages.yml 的 vault-title(默认 '&8公會倉庫 {page}/{pages}')。
一页一把锁,不会复制物品
同一页同一时间只有一位成员能打开,这把锁放在数据库里,所有子服共用:
| 情况 | 结果 |
|---|---|
| 别人正在用这一页(包括别的子服上的人) | 提示「這頁倉庫有其他成員正在使用(可能在其他子服),請稍後再試」 |
| 同一个人连点、或关掉马上再开 | 每次打开都使用新的锁代号,正在向数据库要锁时的重复点击会被忽略,拿不到还没存回的那一把锁 |
| 打开期间 | 每 20 秒延长一次锁 |
| 关闭仓库 | 存回内容并解锁 |
| 子服当机 | 锁在 60 秒后自动失效;这个子服重开时也会放掉自己留下的锁 |
| 锁已经不是自己的(例如服务器卡住或数据库中断超过 60 秒,锁过期后被别人拿走) | 仓库被关闭,提示「倉庫連線中斷,已經關閉(這次的變更沒有存入)」——宁可不存,也不盖掉别人在这期间的变更。这次放进去的物品会退还给玩家(背包满了掉在脚下);玩家已经离线时,物品资料会写在控制台警告里,方便管理员补发 |
打开仓库的人离开公会、被踢、失去 vault 权限 | 仓库被关闭并存回 |
| 关服 | 所有开着的仓库存回后再关 |
所以两个人不可能 同时拿到同一份物品,跨服也一样。
跨服时 server-name 不能重复
锁的持有者以「子服名称 + 玩家 + 每次打开的代号」记录,子服重开时会放掉以自己名称开头的锁。多个子服共用 MySQL 时,每个子服的 sync.server-name(或自动代号)必须不同,否则重开某个子服时可能放掉另一个子服正在使用的锁。见 跨服设置。
其他规则
- 一页的资料读不出来(损坏)时不会打开,控制台会写出是哪个公会的第几页,玩家看到「發生錯誤」。
- 把
vault.rows改小以后,放不下的物品会放进这一页的空格;还放不下就交给打开的人(背包满了掉在脚下)。 - 公会降级或改小
vault-pages后,超出页数的资料仍然保存在数据库里,升回来就能再打开。 - 解散公会会删除仓库里的所有物品,无法复原。