> For the complete documentation index, see [llms.txt](https://docs.quickclient.cc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.quickclient.cc/settings/types.md).

# Виды настроек

Галки, ползунки, списки и другие настройки, которые Quick показывает в меню.

Настройки позволяют менять поведение скрипта из меню. Они объявляются полями класса через фабрики `Script`. В меню настройки появляются под строкой скрипта в порядке создания. Сохранять их вручную не нужно: Quick сам запоминает значения и восстанавливает их при загрузке. Ключом служит `id()`.

```java
private final CheckBox enabled = checkBox("Включено", true);
private final Slider delay = slider(enabled, "Задержка", 200f, 0f, 1000f, 50f).postfix("ms");
private final Selectable mode = selectable("Режим", "Fast", "Fast", "Smooth");
private final ColorPicker color = colorPicker("Цвет", 0xFF5AC8FF);

@Override
public void onTick() {
    if (enabled.value() && mode.is("Fast")) chat(delay.intValue() + " ms");
}
```

## Как это работает

* Ползунок `delay` вложен в галку `enabled`, поэтому в меню он виден, только когда галка включена.
* Второй аргумент `selectable` задаёт вариант по умолчанию, за ним идёт список всех вариантов.
* В `onTick()` значения читаются прямо из полей, без обращения к конфигу.

## Создание

| Метод                                    | Тип           | Описание                                                                    |
| ---------------------------------------- | ------------- | --------------------------------------------------------------------------- |
| `checkBox(name, value)`                  | `CheckBox`    | галка                                                                       |
| `slider(name, value, min, max, step)`    | `Slider`      | ползунок с числом                                                           |
| `selectable(name, selected, options...)` | `Selectable`  | один вариант из списка                                                      |
| `combo(name, options, preselected...)`   | `Combo`       | несколько вариантов из списка; `options` передаётся массивом                |
| `colorPicker(name, argb)`                | `ColorPicker` | цвет `0xAARRGGBB`                                                           |
| `input(name, value, placeholder)`        | `Input`       | поле для текста                                                             |
| `button(name, action)`                   | `Button`      | кнопка                                                                      |
| `hotkey(name, key, action)`              | `Hotkey`      | клавиша с действием; `key` это код GLFW или `Hotkey.UNKNOWN`                |
| `custom(name, height)`                   | `Custom`      | полоса, которую скрипт рисует сам, см. [Свои элементы](/settings/custom.md) |

У каждой фабрики есть вариант, где первым аргументом идёт `parent`. Это галка, внутрь которой кладётся настройка: `slider(enabled, "Задержка", …)`. Вложенная настройка видна, пока родительская галка включена. Родителем может быть только `CheckBox`.

Две настройки с одинаковым именем под одним родителем создать нельзя, в этом случае будет выброшено `IllegalArgumentException`.

## Общие методы

| Метод                    | Тип        | Описание                                                         |
| ------------------------ | ---------- | ---------------------------------------------------------------- |
| `name()`                 | `String`   | имя в меню                                                       |
| `id()`                   | `String`   | ключ в конфиге; по умолчанию берётся из имени                    |
| `id(stableId)`           | `S`        | свой ключ, позволяет переименовать настройку без потери значения |
| `description()`          | `String`   | подсказка под настройкой                                         |
| `description(value)`     | `S`        | задать подсказку                                                 |
| `parent()`               | `CheckBox` | родительская галка или `null`                                    |
| `visible()`              | `boolean`  | видна ли настройка сейчас, с учётом родителя и условия           |
| `visibleWhen(condition)` | `S`        | показывать, только когда условие выполняется                     |

`S` означает тип самой настройки, поэтому вызовы можно объединять в цепочку: `slider(...).postfix("ms").id("delay").description("…")`.

## Галка

| Метод                | Тип        | Описание                        |
| -------------------- | ---------- | ------------------------------- |
| `value()`            | `boolean`  | включена ли галка               |
| `value(next)`        | `CheckBox` | включить или выключить          |
| `toggle()`           | `CheckBox` | переключить                     |
| `onChange(consumer)` | `CheckBox` | вызывается при каждом изменении |

## Ползунок

| Метод                | Тип      | Описание                                 |
| -------------------- | -------- | ---------------------------------------- |
| `value()`            | `float`  | значение, всегда в пределах `min..max`   |
| `intValue()`         | `int`    | значение, округлённое до целого          |
| `value(next)`        | `Slider` | задать; значение за границами обрезается |
| `min()`, `max()`     | `float`  | границы                                  |
| `step()`             | `float`  | шаг при перетаскивании ползунка в меню   |
| `postfix()`          | `String` | единица после числа                      |
| `postfix(unit)`      | `Slider` | задать единицу: `"ms"`, `"%"`, `"t"`     |
| `onChange(consumer)` | `Slider` | вызывается при каждом изменении          |

Шаг действует только в меню. `value(next)` значение не округляет.

## Текст и цвет

| Метод                 | Тип           | Описание                                    |
| --------------------- | ------------- | ------------------------------------------- |
| `input.value()`       | `String`      | текст                                       |
| `input.value(next)`   | `Input`       | задать; `null` превращается в пустую строку |
| `input.placeholder()` | `String`      | подсказка, пока поле пустое                 |
| `input.empty()`       | `boolean`     | пустое ли поле                              |
| `input.onChange(c)`   | `Input`       | вызывается при каждом изменении             |
| `color.value()`       | `int`         | цвет `0xAARRGGBB`                           |
| `color.value(argb)`   | `ColorPicker` | задать цвет                                 |
| `color.onChange(c)`   | `ColorPicker` | вызывается при каждом изменении             |

## Выбор

| Метод                    | Тип            | Описание                                       |
| ------------------------ | -------------- | ---------------------------------------------- |
| `selectable.value()`     | `String`       | выбранный вариант                              |
| `selectable.value(next)` | `Selectable`   | выбрать по имени; неизвестное имя игнорируется |
| `selectable.is(option)`  | `boolean`      | выбран ли этот вариант                         |
| `selectable.options()`   | `List<String>` | все варианты                                   |
| `selectable.onChange(c)` | `Selectable`   | вызывается при каждом изменении                |
| `combo.value()`          | `List<String>` | выбранные варианты в порядке объявления        |
| `combo.has(option)`      | `boolean`      | выбран ли этот вариант                         |
| `combo.set(option, on)`  | `Combo`        | отметить вариант или снять отметку             |
| `combo.options()`        | `List<String>` | все варианты                                   |
| `combo.onChange(c)`      | `Combo`        | вызывается при каждом изменении                |

## Клавиша и кнопка

| Метод              | Тип       | Описание                                   |
| ------------------ | --------- | ------------------------------------------ |
| `hotkey.key()`     | `int`     | код GLFW или `Hotkey.UNKNOWN`              |
| `hotkey.key(code)` | `Hotkey`  | назначить другую клавишу                   |
| `hotkey.bound()`   | `boolean` | назначена ли клавиша                       |
| `button.press()`   | `void`    | выполнить действие; исключения подавляются |

Хоткей срабатывает при нажатии, пока скрипт включён, и Quick сам вызывает его действие. Коды клавиш те же, что у `Keys`, их список на странице [Клавиши и бинды](/actions/keys.md). У кнопки нет значения и слушателя, только действие.

## Из чата

`.script settings <имя>` выводит все настройки скрипта с их id и значениями, а `.script set <имя> <id> <значение>` меняет одну из них. Значение записывается в том же виде, в каком его показывает `settings`: `true`/`false`, число, имя варианта, а для combo варианты через запятую.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.quickclient.cc/settings/types.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
