> 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/storage.md).

# Сохранение данных

Хранение своих данных скрипта между запусками.

Значения настроек Quick сохраняет сам. Для других данных, например счётчика, списка или координат, есть `Storage`. Это файл с парами ключ-значение, у каждого скрипта он свой.

```java
int runs = storage().getInt("runs", 0) + 1;
storage().put("runs", runs).save();

Storage bases = storage("bases");
bases.put("home", List.of("120", "64", "-40")).save();
```

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

* Первые две строки считают число запусков скрипта: читают значение, прибавляют единицу и сразу записывают на диск.
* Затем в отдельный конфиг `bases` сохраняются координаты дома в виде списка.

Файлы лежат в `scripts\.data\<скрипт>\<имя>.txt`. `storage()` без аргументов открывает конфиг с именем `storage`, а `storage(name)` открывает конфиг с указанным именем. Все значения хранятся строками, а числа и списки разбираются при чтении.

## Чтение

| Метод                       | Тип            | Описание                                                          |
| --------------------------- | -------------- | ----------------------------------------------------------------- |
| `name()`                    | `String`       | имя конфига                                                       |
| `has(key)`                  | `boolean`      | есть ли такой ключ                                                |
| `get(key, fallback)`        | `String`       | строка или запасное значение                                      |
| `getInt(key, fallback)`     | `int`          | целое число; запасное значение, если ключа нет или там не число   |
| `getLong(key, fallback)`    | `long`         | длинное целое                                                     |
| `getDouble(key, fallback)`  | `double`       | дробное число                                                     |
| `getBoolean(key, fallback)` | `boolean`      | логическое значение                                               |
| `getList(key)`              | `List<String>` | список, записанный через `put(key, List)`; пустой, если ключа нет |
| `keys()`                    | `List<String>` | все ключи                                                         |

## Запись

| Метод                    | Тип       | Описание                                                   |
| ------------------------ | --------- | ---------------------------------------------------------- |
| `put(key, String)`       | `Storage` | записать строку; `null` удаляет ключ                       |
| `put(key, long)`         | `Storage` | записать целое число                                       |
| `put(key, double)`       | `Storage` | записать дробное число                                     |
| `put(key, boolean)`      | `Storage` | записать логическое значение                               |
| `put(key, List<String>)` | `Storage` | записать список                                            |
| `remove(key)`            | `Storage` | удалить ключ                                               |
| `save()`                 | `Storage` | записать на диск                                           |
| `clear()`                | `Storage` | очистить в памяти; на диске данные пропадут после `save()` |

Методы записи возвращают тот же конфиг, поэтому их обычно вызывают цепочкой: `put(…).put(…).save()`. Без `save()` изменения сохранятся только до перезагрузки скриптов.

## Что сохраняется автоматически

* Значения всех настроек со страницы [Виды настроек](/settings/types.md), по их `id()`. Если настройку планируется переименовать, задайте ей `id("…")`.
* Состояние скрипта, включён он или выключен. После перезагрузки и перезапуска игры оно остаётся тем же.
* Значение `Custom`, если у него вызван `persist(write, read)`.

Всё это записывается при выключении скрипта, при перезагрузке и при выходе из игры.


---

# 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/storage.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.
