# 条件变量符

## 关于

条件/条件变量符允许您通过其他变量符或者权限作为条件来自定义输出。在本插件中主要有 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 毫秒。\
要配置变量符的刷新间隔，请查看 [优化插件](/tab-wiki/advanced/you-hua-cha-jian.md) 页面。

## 提示

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.superiormc.cn/tab-wiki/functions/tiao-jian-bian-liang-fu.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
