Уникальные значения
Обзор
Модуль дает возможность регистрировать уникальные значения в рамках всего проекта, которые привязываются к игроку. Изменять и удалять значение может только игрок-владелец. После регистрации ни у одного игрока не может быть такого же уникального значения по тегу.
Примеры уникальных значений:
- Логин / никнейм;
- Название базы / города;
- Предмет в единственном экземпляре.
- Статус владельца выбранного региона.
- И многое многое другое.
Зарегистрировать значение
+1 RequestЧтобы зарегистрировать или обновить уникальное значение нужно передать тег и значение.
- Если значение еще не было зарегистрировано игроком, то оно добавится:
- Если ни у кого нет такого же значения с этим тегом.
- Если значение уже было у игрока с таким тегом, то оно обновится:
- Если ни у кого нет такого же значения с этим тегом.
Размер тега / значения не больше 1 KB.
- JavaScript
- Unity
// Зарегистрировать
gp.uniques.register({ tag: 'login', value: 'Be$t_Devel0per' });
// Обновить по тегу
gp.uniques.register({ tag: 'login', value: 'The_Be$t_Devel0per' });
// Зарегистрировать
GP_Uniques.Register("login", "Be$t_Devel0per");
// Обновить по тегу
GP_Uniques.Register("login", "The_Be$t_Devel0per");
События при регистрации значения
- JavaScript
- Unity
// Зарегистрировано успешно
gp.uniques.on('register', (uniqueValue) => {
// uniqueValue.tag
// uniqueValue.value
});
// Ошибка при регистрации
gp.uniques.on('error:register', (error) => {});
public void Register() => GP_Uniques.Register("login", "The_Be$t_Devel0per", OnRegister, OnRegisterError);
// Зарегистрировано успешно
private void OnRegister(string tag) => Debug.Log("ON REGISTER: SUCCESS: " + tag);
// Ошибка при регистрации
private void OnRegisterError(string err) => Debug.Log("ON REGISTER: ERROR: " + err);
Метод регистрации с promises
- JavaScript
- Unity
const result = await gp.uniques.register({ tag: 'login', value: 'Be$t_Devel0per' });
/**
* Было ли успешно зарегистрировано
* @type {boolean}
*/
result.success;
Не реализовано
Получить значение
FREE- JavaScript
- Unity
// Получить
const value = gp.uniques.get('login'); // string
// Получить
string value = GP_Uniques.Get("login");
Список значений
Весь список уникальных значений, зарегистрированных игроком.
FREE- JavaScript
- Unity
const values = gp.uniques.list;
UniquesData[] uniques = GP_Uniques.List();
foreach(UniquesData data in uniques)
{
Debug.Log($"TAG: {data.tag}, VALUE: {data.value}");
}
Пример содержания:
[
{ tag: 'login', value: 'Be$t_Devel0per' },
{ tag: 'cityName', value: 'Crabifornia' },
{ tag: 'item', value: 'THOUSAND_TRUTHS_SWORD' },
{ tag: 'title', value: 'GAME_LORD' },
];
Проверить значение
+1 RequestЧтобы проверить уникальное значение нужно передать тег и значение. Это может понадобиться при валидации в реальном времени. При этом при попытке зарегистрировать значение все равно значение будет еще раз проверено.
- JavaScript
- Unity
// Проверить
gp.uniques.check({ tag: 'login', value: 'Be$t_Devel0per' });
// Проверить
GP_Uniques.Check("login", "Be$t_Devel0per");
События при проверке значения
- JavaScript
- Unity
// Проверено успешно, совпадений нет
gp.uniques.on('check', (uniqueValue) => {
// uniqueValue.tag
// uniqueValue.value
});
// Ошибка при проверке
gp.uniques.on('error:check', (error) => {});
public void Check() => GP_Uniques.Check("login", "The_Be$t_Devel0per", OnCheck, OnCheckError);
// Проверено успешно, совпадений нет
private void OnCheck(string tag) => Debug.Log("ON CHECK: SUCCESS: " + tag);
// Ошибка при проверке
private void OnCheckError(string err) => Debug.Log("ON CHECK: ERROR: " + err);
Метод проверки с promises
- JavaScript
- Unity
const result = await gp.uniques.check({ tag: 'login', value: 'Be$t_Devel0per' });
/**
* Проверено успешно, совпадений нет
* @type {boolean}
*/
result.success;
Не реализовано
Удалить значение
+1 RequestВы можете освободить ненужное значение для других игроков, чтобы оно снова стало доступно.
- JavaScript
- Unity
// Удалить
gp.uniques.delete({ tag: 'login' });
// Удалить
GP_Uniques.Delete("login");
События при удалении значения
- JavaScript
- Unity
// Удалено успешно
gp.uniques.on('delete', (uniqueValue) => {
// uniqueValue.tag
// uniqueValue.value
});
// Ошибка при удалении
gp.uniques.on('error:delete', (error) => {});
public void Delete() => GP_Uniques.Delete("login", OnDelete, OnDeleteError);
// Удалено успешно
private void OnDelete(string tag) => Debug.Log("ON DELETE: SUCCESS: " + tag);
// Ошибка при удалении
private void OnDeleteError(string err) => Debug.Log("ON DELETE: ERROR: " + err);
Метод проверки с promises
- JavaScript
- Unity
const result = await gp.uniques.delete({ tag: 'login' });
/**
* Удалено успешно
* @type {boolean}
*/
result.success;
Не реализовано
Управление данными
Через панель администратора вы можете добавлять, изменять и удалять уникальные значения в разделе "Уникальные значения" в проекте.

В форме добавления вы можете:
- Указать тег в рамках которого будет создано уникальное значение;
- Указать уникальное значение (строка);
- Указать ID игрока-владельца, кому принадлежит значение,
0- зарезервировать системой.
Цензурирование данных
Если вы хотите оградить игроков он нежелательных слов, вы можете использовать опцию цензурирования значений.
Вы можете выбрать алгоритмы цензурирования:
Упрощенный. Мы будем использовать алгоритмы перебора и стемминга, чтобы максимально эффективно валидировать плохие слова.
- Списки плохих слов на 25 языках. Более 6500 слов;
- Стемминг на 8 популярных языках. Выделение основы слова, чтобы исключить разные способы написания плохого слова;
- Валидация ссылок.
Цензурирование через ИИ:
- Используется не перебор, а понимание контекста;
- Обеспечивает высокое качество распознавания, но и затраты ресурсов также высоки;
- Распознавание сложных случаев, например
A$_H@LE,2girls1cup,πздец / 3.14здеци других; - Многоязычность, понимание матов и контекстных оскорблений в каждом языке.
За цензурирование взимается дополнительная плата на каждый запрос.
Если используется цензурирование через ИИ: Минимальная стоимость за 1 проверку — 3 запроса, далее +1 запрос за каждые 20 токенов текста (GPT токены).
Если используется упрощенный фильтр: Дополнительная стоимость за 1 проверку — 1 запрос.
В панели управления в разделе "Уникальные значения" создайте правило для нужного тега.

В форме добавления вы можете:
- Указать тег для правил.
- Настроить цензурирование:
- Указать контекст значений:
- Укажите на английском языке для чего предназначен текст, например
character nameилиgame chat. Это поможет ИИ понять нарушает ли текст правила. Например, если игрок укажетУнылый Паренькак никнейм, то это допустимо, однако если он напишет это в чате, то это может быть оскорблением игроков, однако зависит от полного контекста предложения.
- Укажите на английском языке для чего предназначен текст, например
- Запретить мат и ругательства;
- Запретить ссылки;
- Запретить спам;
- Запретить провокации, которые могут как-то задеть игроков;
- Указать возрастное ограничение контента.
- В играх 0+ нежелательно использовать любые плохие слова. В играх 16+ могут быть допустимы легкие ругательства и эвфемизмы без контекста оскорбления, например,
капец. В играх 18+ может быть допустим мат, но не в отношении игроков. ИИ руководствуется вашим контекстом, но может посчитать даже в 18+ играх такое слово не уместным в рамках контекста.
- В играх 0+ нежелательно использовать любые плохие слова. В играх 16+ могут быть допустимы легкие ругательства и эвфемизмы без контекста оскорбления, например,
- Указать контекст значений:
Типы данных
Уникальное значение
| Поле | Тип | Описание | Пример |
|---|---|---|---|
tag | string | Тег значения | login |
value | string | Значение | Be$t_Devel0per |
Коды ошибок
| Ошибка | Описание ошибки |
|---|---|
| player_not_found | Игрок не найден |
| empty_tag | Передан пустой тег значения |
| unique_value_not_found | Значение с таким тегом не найдено |
| already_exists | Значение уже занято |
| size_limit_exceeded | Ограничение по размеру превышено |
| bad_value_filter_censor | Значение не прошло проверку цензуры |
| undefined | Непредвиденная ошибка (смотрите консоль) |
Оставайтесь на связи
С другими разделами документации вы можете ознакомиться здесь. Для начала работы вы можете ознакомиться с нашими туториалами.
Сообщество GamePush в Telegram: @gs_community.
Для ваших обращений e-mail: official@gamepush.com
Желаем вам успехов!