跳到主要内容

背包投影

背包投影让玩家在云界面画面里搬物品:上面是仓库的格子,下面是自己的背包与快捷栏,物品可以在两边之间拖来拖去。拿在手上的物品会跟着游标走,并显示数量,就像在原版箱子里一样。

背包投影:上面是仓库、下面是玩家背包与快捷栏,游标拿着钻石

有三种用法:

用法适合谁要不要写程序
A. 投影任何仓库箱子末影箱、背包插件、公会或领地仓库不用,改设定文件
B. 云公会仓库装了云公会的服务器不用,直接可用
C. 插件开发者自己写插件要

怎么操作​

操作效果
左键拿起整叠;手上有东西时放下(同种物品叠上去,不同种互换)
右键拿起一半;手上有东西时放下一个
Shift + 左键直接移到另一边(仓库 ↔ 背包)
按住拖到别格再放开放到那一格
  • 拿着的物品跟着游标,显示数量。
  • 关闭画面时手上还拿着东西:放回原来的位置;放不回去就进背包,背包也满了就掉在脚边。不会凭空消失。

用法 A:投影任何仓库箱子​

和 箱子界面转接 一样写 proxy:,只要多加一行 storage: true。

先试试

管理员输入 /cui proxydemo storage,会打开一个示范仓库(标题「雲介面倉庫示範」),CloudUI 立刻把它投影成画面。对应的画面文件是 screens/proxy_storage_demo.yml。

第 1 步:复制范本​

把 screens/proxy_storage_demo.yml 复制一份,例如 screens/enderchest.yml。

第 2 步:改 match​

proxy:
match:
title: ['container.enderchest'] # 原版末影箱
storage: true
grid: items # 仓库格子排进 items
backpack: backpack # 玩家背包排进 backpack(27 格)
hotbar: hotbar # 快捷栏排进 hotbar(9 格)

常见的标题:

仓库match.title
原版末影箱'container.enderchest'
背包插件它的背包标题,例如 '*的背包*'
公会 / 领地仓库仓库箱子的标题,例如 '*仓库*'

标题怎么看、* 怎么用,见 箱子界面转接 · match。

第 3 步:/cui reload,打开仓库​

用原本的方式打开那个仓库(末影箱就是右键末影箱),就会看到投影画面。

三组格子​

范本已经排好,名称要和 proxy 里写的一致:

格子内容格数
items仓库本身,照原格位(第 N 格就是仓库第 N 格)和仓库一样,例如末影箱 9 × 3
backpack玩家背包(背包的第 1~3 行)27
hotbar玩家快捷栏9

storage: true 时默认是 layout: exact、不略过任何物品(仓库里的玻璃片也是玩家的东西)。

格子按钮的动作​

每个格子按钮这样写(范本里已经写好):

hit:
type: button
state: 'on'
hover: proxy/slot_hover.png
hit: [0, 0, 60, 60]
click:
left: ['custom: pick']
right: ['custom: half']
shift-left: ['custom: quick']
release: ['custom: drop']
动作点击作用
custom: pick左键拿起整叠 / 放下
custom: half右键拿一半 / 放一个
custom: quickShift + 左键移到另一边
custom: droprelease(拖到这格放开)放到这一格

格子里的变量和转接一样:{icon}、{name}、{amount}、{state}…,游标停在格子上自动显示物品名称与说明。

原插件的限制照样有效​

每次搬动之前,CloudUI 都会先问原插件(就像玩家在箱子里点了一下):

  • 原插件不准放的物品(例如背包里不能放背包)、锁住的格子,搬动会被取消,物品留在原处。
  • 原插件有自己的存档方式,搬完一样由它存。
按钮数量

一个画面最多 48 个没有 state 的按钮。仓库 + 背包 + 快捷栏动辄 60~90 格,所以每个格子按钮都要加 state: 'on'(范本已经加了),这样悬停框改由服务器绘制,就没有数量上限。

用法 B:云公会仓库​

装了 云公会 时,/cg vault 打开的公会仓库就是背包投影,内建、不用设定。

用法 C:插件开发者​

自己写的插件要做拖放,用 API:

  1. 玩家按下某个格子时,用 CloudUIApi.carry(玩家, 物品) 让物品跟着游标显示(null 拿掉)。
  2. 格子按钮写 release: ['custom: 你的动作'],玩家拖到别格放开时会呼叫你的动作,UiClick 里有放开在哪个按钮、第几格。
  3. 物品实际怎么搬、怎么存,由你的插件负责;carry 只负责显示。

见 开发者 API。

和箱子界面转接的差别​

箱子界面转接背包投影
设定proxy:proxy: + storage: true
点击交回原插件(商店购买、领地设定…)搬物品
排列默认 compact(自动排列)默认 exact(照原格位)
显示玩家背包不显示backpack + hotbar
适合选单、商店、设定面板仓库、末影箱、背包