跳到主要内容

清单画面

传送选单、服务器导览、活动列表这类「分类 → 一页几行 → 选中看详情 → 点了执行指令」的画面,只要在画面文件里写 list: 资料,再用 grid 排出标签与清单行即可,不用写代码。默认的 teleport.yml 就是范例。

资料​

list:
tabs-grid: tabs # 放分类标签的 grid 元素 ID(选填,没有分类就不写)
rows-grid: rows # 放清单行的 grid 元素 ID(必填)
rows: 4 # 每页几行(要和 rows 格子的数量一致)
tabs:
area: # 分类 ID
name: 地区传送 # 分类的栏位,名称可自取
accent: '#8FD8EA'
entries:
spawn: # 项目 ID
name: 回城
icon: 'vanilla:PAPER'
desc: 回到主城的出生点
commands: ['spawn'] # 以玩家身份执行
lake:
name: 森语湖畔
icon: 'vanilla:PAPER'
desc: 静谧的湖畔,适合垂钓
console: ['tp {player} 147 116 -41'] # 以控制台执行
dungeon:
name: 副本传送
accent: '#E9A66B'
entries:
fort:
name: 山寨
lv: 建议等级 1
desc: 山中的一处寨子
console: ['tp {player} 10000 50 10000']
  • 分类与项目底下除了 entries、commands、console 以外的栏位都可以自己取名(name、desc、lv…),画面上用键名读出来。
  • 执行项目时先关闭选单,再依序执行 commands(玩家身份)与 console(控制台),{player} 换成玩家名称。

画面上的键名​

清单行(rows-grid 的格子里)​

在清单行的 cell 里直接写栏位名称,每一格会自动对应到该页的第 N 个项目:

键名内容
{name}、{desc}…这一行项目的栏位;项目没有这个栏位时用所在分类的同名栏位
{state}这一格没有项目时是 empty(配合 states: {empty: ''} 隐藏底图)
{hit}这一格没有项目时是 hidden
{has-栏位}该栏位空白或是 0 时是 hidden,用在 visible: 或 state:
item: '{icon}'项目的图示(栏位里写物品写法)

选中的项目​

游标移到某一行就会选中它(不必点),用来显示右侧的详情:

键名内容
{sel.栏位}选中项目的栏位,例如 {sel.name}、{sel.desc};item: '{sel.icon}' 显示它的图示
{sel.tab}选中项目所在分类的 name

还没选中时显示本页第一个项目。

分类与页码​

键名内容
{tab.栏位}目前分类的栏位,例如 {tab.name}、{tab.accent}(可以当 tint 或 color)
{page} / {pages}目前页数 / 总页数
{prev} / {next}没有上一页 / 下一页时是 hidden,用在翻页按钮的 state:

分类标签(tabs-grid 的格子里):

键名内容
{name}、{accent}…这一格分类的栏位
{state}目前分类是 active,其他是空白
{mark}目前分类是空白,其他是 hidden(选中标记)
{namecolor}目前分类是它的 accent,其他是 #E2EEF4
{count}这个分类有几个项目

按钮动作​

清单画面用这几个 custom 动作:

动作放在哪作用
custom: tab分类标签格子的按钮切换到这一格的分类(回到第 1 页)
custom: prev / custom: next翻页按钮上一页 / 下一页
custom: row清单行格子的按钮执行这一行的项目
custom: go详情区的「前往」按钮执行选中的项目
tabs:
type: grid
x: 120
y: 200
columns: 2
step: [260, 0]
cell:
tab:
type: button
image: list/tab.png
hover: list/tab_hover.png
state: '{state}'
states: {active: list/tab_active.png}
hit: [0, 0, 240, 60]
click:
left: ['custom: tab']
label:
type: text
text: '{name}'
color: '{namecolor}'
x: 120
y: 18
align: center