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

Состояние игрока

Устанавливайте и сохраняйте прогресс игрока. Прогресс игрока представлен в виде полей, которые явно задаются в панели управления.

Свойства игрока

Свойства игрока FREE:

// ID
gp.player.id;
// Очки
gp.player.score;
// Имя
gp.player.name;
// Ссылка на аватар
gp.player.avatar;
// Заглушка — пустой ли игрок или данные в нём отличаются умолчательных
gp.player.isStub;
// Поля игрока
gp.player.fields;

Методы работы с состоянием игрока FREE:

// Получить значение поля key
gp.player.get('gold');
// Установить значение поля key на value, значение приводится к типу
gp.player.set('class', 'warrior');
// Добавить значение value к полю key
gp.player.add('gold', 50);
// Инвертировать состояние поля key
gp.player.toggle('vip');
// Проверить есть ли поле key и оно не пустое (не 0, '', false, null, undefined)
gp.player.has('vip');

// Вернуть состояние игрока объектом
gp.player.toJSON();
// Установить состояние из объекта
gp.player.fromJSON({
name: 'test player',
score: 4522,
gold: 100,
vip: false,
class: 'warrior',
});

// Сбросить состояние игрока на умолчательное
gp.player.reset();
// Удалить игрока — сбросить поля и очистить ID
gp.player.remove();

События игрока:

// Подписаться на любое изменения состояния игрока
gp.player.on('change', () => {});

Граничные значения полей

Методы работы с граничными значениями игрока, только для полей с заданным ограничением (подробнее) FREE:

// Минимальное значение поля key:min
gp.player.getMinValue('energy');
gp.player.get('energy:min'); // аналог
// Установить значение
gp.player.set('energy:min', 0);

// Максимальное значение поля key:max
gp.player.getMaxValue('energy');
gp.player.get('energy:max'); // аналог
// Установить значение
gp.player.set('energy:max', 100);

События граничных значений:

// Подписаться на событие достижения максимального значения
gp.player.on('field:maximum', ({ field }) => {});

// Подписаться на событие достижения минимального значения
gp.player.on('field:minimum', ({ field }) => {});

Автоначисляемые значения полей

Методы работы с автоначисляемыми переменными, только для полей с заданным интервалом автообновления (подробнее) FREE:

// Значение интервала автообновления поля в секундах, key:incrementInterval
gp.player.get('energy:incrementInterval');
// Установить значение
gp.player.set('energy:incrementInterval', 5 * 60);

// На какое количество увеличивается поле при автообновлении key:incrementValue
gp.player.get('energy:incrementValue');
// Установить значение
gp.player.set('energy:incrementValue', 5);

// Время последнего автообновления поля, строка ISO 8601, key:timestamp
gp.player.get('energy:timestamp');
// Установить значение
gp.player.set('energy:timestamp', '2021-04-27T17:13:02.815Z');

// Сколько осталось времени до следующего автообновления в секундах, key:secondsLeft
// Только чтение
gp.player.get('energy:secondsLeft');

// Сколько осталось времени до достижения предельного значения поля в секундах, key:secondsLeftTotal
// Только чтение
gp.player.get('energy:secondsLeftTotal');

События автообновлений:

// Подписаться на событие начисления переменной
gp.player.on('field:increment', ({ field, oldValue, newValue }) => {});

Статистика игрока

FREE

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

// Количество дней в игре
gp.player.stats.activeDays;

// Количество дней в игре подряд
gp.player.stats.activeDaysConsecutive;

// Количество секунд, проведенных в игре сегодня
gp.player.stats.playtimeToday;

// Количество секунд, проведенных в игре за все время
gp.player.stats.playtimeAll;

Поля игрока

Поля игрока задаются в панели, они описывают состояние игрока и хранят в себе следующие свойства:

/**
* Имя поля, переведенное на текущий язык
* @type {string}
*/
field.name;

/**
* Уникальный ключ поля
* @type {string}
*/
field.key;

/**
* Тип поля
* @type {'stats' | 'data' | 'flag' | 'service' | 'accounts'}
* stats — Числовые поля — показатели игрока
* data — Строковые поля — данные игрока
* flags — Булевые поля — флаги игрока
* service — Служебные поля — ID, тестовый, активный, удаленный и т.п.
* accounts — Аккаунты — vkId, yandexId, okId и т.п.
*/
field.type;

/**
* Важное поле для игрока
* если нужно решить кого оставить, можно показать эти поля
* @type {boolean}
*/
field.important;

/**
* Публичное поле игрока
* будет видно всем игрокам при поиске игроков
* @type {boolean}
*/
field.public;

/**
* Умолчательное значение поля
* @type {string | number | boolean}
*/
field.default;

/**
* Возможные варианты значений для поля,
* если не указаны, то поле принимает любое значение
* @type {ModelFieldVariant[]}
*/
field.variants;

/**
* Лимиты для поля,
* Может быть пустым
* @type {FieldLimits | null}
*/
field.limits;

/**
* Интервал автоначисления,
* Может быть пустым
* @type {IntervalIncrement | null}
*/
field.intervalIncrement;

Варианты полей можно задать в панели. Свойства варианта:

/**
* Имя варианта, переведенное на текущий язык
* @type {string}
*/
fieldVariant.name;

/**
* Уникальное значение варианта
* @type {string | number | boolean}
*/
fieldVariant.value;

Лимиты поля можно задать в панели. Свойства лимита поля:

/**
* Нижний предел поля
* @type {number}
*/
limit.min;

/**
* Верхний предел поля
* @type {number}
*/
limit.max;

/**
* Может ли поле быть установлено вручную больше допустимого предела
* @type {boolean}
*/
limit.couldGoOverLimit;

Интервал автоначисления поля можно задать в панели. Свойства интервала автоначисления поля:

/**
* Интервал начисления, секунды
* @type {number}
*/
intervalIncrement.interval;

/**
* Значение, которое нужно начислить
* @type {number}
*/
intervalIncrement.increment;

Список полей доступен напрямую в игроке FREE:

gp.player.fields;

Методы работы с полями FREE:

// Получить поле по ключу key
gp.player.getField('gold');
// Получить переведенное имя поля по ключу key
gp.player.getFieldName('score');
// Получить переведенное имя варианта поля по ключу key и его значению value
gp.player.getFieldVariantName('rank', 2);

Оставайтесь на связи

С другими разделами документации вы можете ознакомиться здесь. Для начала работы вы можете ознакомиться с нашими туториалами.

Сообщество GamePush в Telegram: @gs_community.

Для ваших обращений e-mail: [email protected]

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