database
Глобальная таблица database — хранилище «ключ → значение», которое переживает перезапуск скрипта, чита и игры. Чтение и запись — как у обычной таблицы: database.key, database[key] = value.
Правила#
- Ключ — только строка.
database[1]— ошибкаstring expected. - Хранилище общее для всех скриптов: одинаковый ключ в двух скриптах — одно и то же значение.
- Изменения сохраняются через несколько секунд после записи и при выгрузке чита.
- Отсутствующий ключ читается как
nil.
Давайте ключам префикс с именем своего скрипта (
"my_script.counter"), чтобы не перезаписать данные другого скрипта.
database[key]#
Читает значение.
| Параметр | Тип | Описание |
|---|---|---|
key |
string |
ключ |
Возвращает: сохранённое значение или nil.
Прочитанная таблица — новая копия. Изменения в ней не сохраняются, пока вы не присвоите её обратно:
database[key] = t.
local KEY = "my_script.stats"
local stats = database[KEY] or { runs = 0 }
stats.runs = stats.runs + 1
database[KEY] = stats -- без этой строки изменение потеряется
print("Скрипт запущен ", stats.runs, " раз")
database[key] = value#
Записывает значение.
| Параметр | Тип | Описание |
|---|---|---|
key |
string |
ключ |
value |
any |
значение (см. таблицу) |
| Значение | Что сохранится |
|---|---|
nil |
nil (ключ читается как nil) |
boolean, string |
как есть |
| целое число | целое |
| дробное число | дробное |
таблица с ключами 1..n без дыр |
массив |
| другая таблица | словарь |
функция, userdata, cdata (vector, color, 64-битные числа) |
nil |
| таблица глубже 16 уровней | nil |
Метатаблицы не сохраняются.
Возвращает: ничего.
-- Сохраняем цвет как таблицу чисел: сам color сохранить нельзя
local col = color(255, 128, 0, 255)
database["my_script.color"] = { col.r, col.g, col.b, col.a }
local t = database["my_script.color"]
local restored = color(t[1], t[2], t[3], t[4])
print(restored) --> Color(255, 128, 0, 255)