Перейти к основному содержимому

Уникальные значения

Обзор

Модуль дает возможность регистрировать уникальные значения в рамках всего проекта, которые привязываются к игроку. Изменять и удалять значение может только игрок-владелец. После регистрации ни у одного игрока не может быть такого же уникального значения по тегу.

Примеры уникальных значений:

  • Логин / никнейм;
  • Название базы / города;
  • Предмет в единственном экземпляре.
  • Статус владельца выбранного региона.
  • И многое многое другое.

Зарегистрировать значение

+1 Request

Чтобы зарегистрировать или обновить уникальное значение нужно передать тег и значение.

  • Если значение еще не было зарегистрировано игроком, то оно добавится:
    • Если ни у кого нет такого же значения с этим тегом.
  • Если значение уже было у игрока с таким тегом, то оно обновится:
    • Если ни у кого нет такого же значения с этим тегом.
tip

Размер тега / значения не больше 1 KB.

// Зарегистрировать
gp.uniques.register({ tag: 'login', value: 'Be$t_Devel0per' });

// Обновить по тегу
gp.uniques.register({ tag: 'login', value: 'The_Be$t_Devel0per' });

События при регистрации значения

// Зарегистрировано успешно
gp.uniques.on('register', (uniqueValue) => {
// uniqueValue.tag
// uniqueValue.value
});

// Ошибка при регистрации
gp.uniques.on('error:register', (error) => {});

Метод регистрации с promises

const result = await gp.uniques.register({ tag: 'login', value: 'Be$t_Devel0per' });
/**
* Было ли успешно зарегистрировано
* @type {boolean}
*/
result.success;

Получить значение

FREE
// Получить
const value = gp.uniques.get('login'); // string

Список значений

Весь список уникальных значений, зарегистрированных игроком.

FREE
const values = gp.uniques.list;

Пример содержания:

[
{ tag: 'login', value: 'Be$t_Devel0per' },
{ tag: 'cityName', value: 'Crabifornia' },
{ tag: 'item', value: 'THOUSAND_TRUTHS_SWORD' },
{ tag: 'title', value: 'GAME_LORD' },
];

Проверить значение

+1 Request

Чтобы проверить уникальное значение нужно передать тег и значение. Это может понадобиться при валидации в реальном времени. При этом при попытке зарегистрировать значение все равно значение будет еще раз проверено.

// Проверить
gp.uniques.check({ tag: 'login', value: 'Be$t_Devel0per' });

События при проверке значения

// Проверено успешно, совпадений нет
gp.uniques.on('check', (uniqueValue) => {
// uniqueValue.tag
// uniqueValue.value
});

// Ошибка при проверке
gp.uniques.on('error:check', (error) => {});

Метод проверки с promises

const result = await gp.uniques.check({ tag: 'login', value: 'Be$t_Devel0per' });
/**
* Проверено успешно, совпадений нет
* @type {boolean}
*/
result.success;

Удалить значение

+1 Request

Вы можете освободить ненужное значение для других игроков, чтобы оно снова стало доступно.

// Удалить
gp.uniques.delete({ tag: 'login' });

События при удалении значения

// Удалено успешно
gp.uniques.on('delete', (uniqueValue) => {
// uniqueValue.tag
// uniqueValue.value
});

// Ошибка при удалении
gp.uniques.on('error:delete', (error) => {});

Метод проверки с promises

const result = await gp.uniques.delete({ tag: 'login' });
/**
* Удалено успешно
* @type {boolean}
*/
result.success;

Управление данными

Через панель администратора вы можете добавлять, изменять и удалять уникальные значения в разделе "Уникальные значения" в проекте.

В форме добавления вы можете:

  • Указать тег в рамках которого будет создано уникальное значение;
  • Указать уникальное значение (строка);
  • Указать ID игрока-владельца, кому принадлежит значение, 0 - зарезервировать системой.

Цензурирование данных

Если вы хотите оградить игроков он нежелательных слов, вы можете использовать опцию цензурирования значений.

Вы можете выбрать алгоритмы цензурирования:

  • Упрощенный. Мы будем использовать алгоритмы перебора и стемминга, чтобы максимально эффективно валидировать плохие слова.

    • Списки плохих слов на 25 языках. Более 6500 слов;
    • Стемминг на 8 популярных языках. Выделение основы слова, чтобы исключить разные способы написания плохого слова;
    • Валидация ссылок.
  • Цензурирование через ИИ:

    • Используется не перебор, а понимание контекста;
    • Обеспечивает высокое качество распознавания, но и затраты ресурсов так же высоки;
    • Распознавание сложных случаев, например A$_H@LE, 2girls1cup, πздец / 3.14здец и других;
    • Многоязычность, понимание матов и контекстных оскорблений в каждом языке.
tip

За цензурирование взимается дополнительная плата на каждый запрос.

Если используется цензурирование через ИИ: Минимальная стоимость за 1 проверку3 запроса, далее +1 запрос за каждые 20 токенов текста (GPT токены).

Если используется упрощенный фильтр: Дополнительная стоимость за 1 проверку1 запрос.

В панели управления в разделе "Уникальные значения" создайте правило для нужного тега.

В форме добавления вы можете:

  • Указать тег для правил.
  • Настроить цензурирование:
    • Указать контекст значений:
      • Укажите на английском языке для чего предназначен текст, например character name или game chat. Это поможет ИИ понять нарушает ли текст правила. Например, если игрок укажет Унылый Парень как никнейм, то это допустимо, однако если он напишет это в чате, то это может быть оскорблением игроков, однако зависит от полного контекста предложения.
    • Запретить мат и ругательства;
    • Запретить ссылки;
    • Запретить спам;
    • Запретить провокации, которые могут как-то задеть игроков;
    • Указать возрастное ограничение контента.
      • В играх 0+ нежелательно использовать любые плохие слова. В играх 16+ могут быть допустимы легкие ругательства и эвфемизмы без контекста оскорбления, например, капец. В играх 18+ может быть допустим мат, но не в отношении игроков. ИИ руководствуется вашим контекстом, но может посчитать даже в 18+ играх такое слово не уместным в рамках контекста.

Типы данных

Уникальное значение

ПолеТипОписаниеПример
tagstringТег значенияlogin
valuestringЗначение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: [email protected]

Желаем вам успехов!