# 条件变量符

## 关于

条件/条件变量符允许您通过其他变量符或者权限作为条件来自定义输出。在本插件中主要有 2 个主要用处：

* 显示条件用于显示计分板、Boss条、排布等的必须满足的条件。
* 条件变量符则为判别是否满足条件并控制满足和不满足的输出值。

## 条件类型

### 比较数字

`>=`: 大于等于\
例如: `%ping%>=100` 将会在玩家的延迟大于或者等于 `100` 时满足条件。

`>`: 大于\
例如: `%ping%>100` 将会在玩家的延迟大于 `100` 时满足条件。

`<=`: 小于等于\
例如: `%ping%<=100` 将会在玩家的延迟小于或者等于 `100` 时满足条件。

`<`: 小于\
例如: `%ping%<100` 将会在玩家延迟小于 `100` 时满足条件。

### 文本

`=`: 等于 (必须完全精确，包括颜色符号)\
例如: `%world%=world` 将会在玩家在 `world` 世界时满足。

`!=`: 不等于 (不符合)\
例如: `%world%!=world` 将会在玩家在除了 `world` 外的世界时满足。

`<-`: 包含 (左侧为变量符，右侧为包含的文本)\
例如: `%world%<-lobby-` 将会在名称开头为 `lobby-` (例如 `lobby-1` 等) 的世界时满足。

### 权限

`permission:<值>`: 权限要求\
例如: `permission:my.permission` 将会在玩家拥有`my.permission` 权限时满足。

## 多条件要求

每个条件都可以有一个条件 `范围` ，即一个条件列表。当你拥有超过 1 个条件时，你必须设置它们的条件类型。\
这个值可以在 `type` 配置设置。可选的类型有：

* `AND` - 所有的条件都必须满足。
* `OR` - 只要有一个条件满足即可。

## 条件输出

如果你使用条件作为变量符使用，你可以指定它们的输出值。 `yes` 用于条件满足时的输出，`no` 则为不满足。如果这个条件只是一个显示条件，你可以将这两个选项的值留空或者不设置这两个选项。&#x20;

## 配置

打开 **config.yml** 并找到这一部分:

```
conditions:
  health:
    conditions:
    - '%health%<21'
    - '%health%>15'
    type: AND
    yes: Healthy!
    no: Damaged!
```

`health` 为这个条件的名称。\
`conditions` 为该条件要满足的子条件。\
`type` 为条件类型，决定是所有子条件都要满足还是只需一个满足。\
`yes` & `no` 为变量符输出值。

## 用法

你有 **2** 种方法来使用条件。

一种方法是使用 `%condition:<名称>%`，它将输出根据是否满足该条件而输出该条件的 `yes` 或者 `no` 的值。（如果你是在外部使用该变量符，请参考变量符一节中的外部用法）

另一种方法是将该条件的名称放置在可以放置条件的地方。这包括 Boss条，计分板和布局的显示条件配置，例如:

```
scoreboards:
  MyScoreboard:
    display-condition: MyCondition
```

在这种情况下，yes/no 的配置也未被使用，因此你也不需要配置它们。

## 简写形式

如果你正在尝试可以放置条件的地方使用条件（Boss条，计分板等的显示条件等），你可以使用一个简写形式。

简写形式可以通过在各个条件的中间处使用 `;` 分开以代表 `AND` 条件类型（即所有条件必须满足）。 `OR` 条件类型目前不支持。

示例:

使用前:

```
scoreboards:
  myScoreboard:
    display-condition: myCondition
.
.
.
conditions:
  myCondition:
    conditions:
      - "%my_placeholder%=something"
      - "%money%>1000"
    type: AND
```

使用后:

```
scoreboards:
  myScoreboard:
    display-condition: "%my_placeholder%=something;%player_ping%>1000"
```

## 刷新间隔

条件实际上只是一个变量符，同样它们也必须定期刷新。刷新间隔目前还不可以直接配置。它们基于子条件、yes/no 值等处包含的变量符决定它自身的刷新间隔。权限检查间隔为 1000 毫秒。\
如果该条件只包含基于事件的变量符（即该变量符只在一个事件后才会刷新而不是定时刷新，例如 %world% 和 %server%），刷新间隔为 500 毫秒。\
要配置变量符的刷新间隔，请查看 [优化插件](https://docs.superiormc.cn/tab-wiki/advanced/you-hua-cha-jian) 页面。

## 提示

如果你正在被 `=` 条件判别困扰，请务必注意变量符的输出值和你设置的值必须完全一致（包括颜色代码）。如果你在使用 [变量符输出替换](https://docs.superiormc.cn/tab-wiki/functions/bian-liang-fu-shu-chu-ti-huan)，那么你应该设置被替换后的输出值。\
要查看一个变量符的精确输出（包括颜色代码），请使用指令： `/tab parse <玩家> <变量符>`。
