Состояние игрока
Устанавливайте и сохраняйте прогресс игрока. Прогресс игрока представлен в виде полей, которые явно задаются в панели управления.
Свойства игрока
Свойства игрока FREE:
- JavaScript
- Unity
// ID
gp.player.id;
// Очки
gp.player.score;
// Имя
gp.player.name;
// Ссылка на аватар
gp.player.avatar;
// Заглушка — пустой ли игрок или данные в нём отличаются умолчательных
gp.player.isStub;
// Поля игрока
gp.player.fields;
// ID
GP_Player.GetID();
// Очки
GP_Player.GetScore();
// Имя
GP_Player.GetName();
// Ссылка на аватар
GP_Player.GetAvatarUrl();
// Заглушка — пустой ли игрок или данные в нём отличаются умолчательных
GP_Player.IsStub();
Методы работы с состоянием игрока FREE:
- JavaScript
- Unity
// Получить значение поля 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();
// Получить значение поля key
GP_Player.GetInt("gold");
// Установить значение поля key на value, значение приводится к типу
GP_Player.Set("gold", 100);
// Добавить значение value к полю key
GP_Player.Add("gold", 10);
// Инвертировать состояние поля key
GP_Player.Toggle("vip");
// Проверить есть ли поле key и оно не пустое (не 0, '', false, null, undefined)
GP_Player.Has("vip");
// Сбросить состояние игрока на умолчательное
GP_Player.ResetPlayer();
// Удалить игрока — сбросить поля и очистить ID
GP_Player.Remove();
События игрока:
- JavaScript
- Unity
// Подписаться на любое изменения состояния игрока
gp.player.on('change', () => {});
//Подписка на событие
private void OnEnable()
{
GP_Player.OnPlayerChange += OnPlayerChange;
}
//Отписка от события
private void OnDisable()
{
GP_Player.OnPlayerChange -= OnPlayerChange;
}
//Обработка события
private void OnPlayerChange()
{
Debug.Log("Player Change");
}
Граничные значения полей
Методы работы с граничными значениями игрока, только для полей с заданным ограничением (подробнее) FREE:
- JavaScript
- Unity
// Минимальное значение поля 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);
// Минимальное значение поля key:min
GP_Player.GetMinValue("energy");
GP_Player.GetInt("energy:min"); // аналог
// Установить значение
GP_Player.Set("energy:min", 0);
// Максимальное значение поля key:max
GP_Player.GetMaxValue("energy");
GP_Player.GetInt("energy:max"); // аналог
// Установить значение
GP_Player.Set("energy:max", 100);
События граничных значений:
- JavaScript
- Unity
// Подписаться на событие достижения максимального значения
gp.player.on('field:maximum', ({ field }) => {});
// Подписаться на событие достижения минимального значения
gp.player.on('field:minimum', ({ field }) => {});
//Подписка на события
private void OnEnable()
{
GP_Player.OnFieldMaximum += OnFieldMaximum;
GP_Player.OnFieldMinimum += OnFieldMinimum;
}
//Отписка от событий
private void OnDisable()
{
GP_Player.OnFieldMaximum -= OnFieldMaximum;
GP_Player.OnFieldMinimum -= OnFieldMinimum;
}
private void OnFieldMaximum(PlayerFetchFieldsData field)
{
Debug.Log($"Field {field.name} Maximum");
}
private void OnFieldMinimum(PlayerFetchFieldsData field)
{
Debug.Log($"Field {field.name} Minimum");
}
Автоначисляемые значения полей
Методы работы с автоначисляемыми переменными, только для полей с заданным интервалом автообновления (подробнее) FREE:
- JavaScript
- Unity
// Значение интервала автообновления поля в секундах, 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');
// Значение интервала автообновления поля в секундах, key:incrementInterval
GP_Player.GetInt("energy:incrementInterval");
// Установить значение
GP_Player.Set("energy:incrementInterval", 5 * 60);
// На какое количество увеличивается поле при автообновлении key:incrementValue
GP_Player.GetInt("energy:incrementValue");
// Установить значение
GP_Player.Set("energy:incrementValue", 5);
// Время последнего автообновления поля, строка ISO 8601, key:timestamp
GP_Player.GetString("energy:timestamp");
// Установить значение
GP_Player.Set("energy:timestamp", "2021-04-27T17:13:02.815Z");
// Сколько осталось времени до следующего автообновления в секундах, key:secondsLeft
// Только чтение
GP_Player.GetInt("energy:secondsLeft");
// Сколько осталось времени до достижения предельного значения поля в секундах, key:secondsLeftTotal
// Только чтение
GP_Player.GetInt("energy:secondsLeftTotal");
События автообновлений:
- JavaScript
- Unity
// Подписаться на событие начисления переменной
gp.player.on('field:increment', ({ field, oldValue, newValue }) => {});
//Подписка на событие
private void OnEnable()
{
GP_Player.OnFieldIncrement += OnFieldIncrement;
}
//Отписка от события
private void OnDisable()
{
GP_Player.OnFieldIncrement -= OnFieldIncrement;
}
private void OnFieldIncrement(PlayerFetchFieldsData field)
{
Debug.Log($"Field {field.name} Increment");
}
Статистика игрока
FREEВы можете получить информацию о количестве дней и времени, проведенных в игре.
- JavaScript
- Unity
// Количество дней в игре
gp.player.stats.activeDays;
// Количество дней в игре подряд
gp.player.stats.activeDaysConsecutive;
// Количество секунд, проведенных в игре сегодня
gp.player.stats.playtimeToday;
// Количество секунд, проведенных в игре за все время
gp.player.stats.playtimeAll;
public void PlayerStats()
{
// Количество дней в игре
Debug.Log("Active Days:" + GP_Player.GetActiveDays());
// Количество дней в игре подряд
Debug.Log("Active Days Consecutive:" + GP_Player.GetActiveDaysConsecutive());
// Количество секунд, проведенных в игре сегодня
Debug.Log("Playtime Today:" + GP_Player.GetPlaytimeToday());
// Количество секунд, проведенных в игре за все время
Debug.Log("Playtime All:" + GP_Player.GetPlaytimeAll());
}
Поля игрока
Поля игрока задаются в панели, они описывают состояние игрока и хранят в себе следующие свойства:
- JavaScript
- Unity
/**
* Имя поля, переведенное на текущий язык
* @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;
public class PlayerFetchFieldsData
{
/**
* Имя поля, переведенное на текущий язык
*/
public string name;
/**
* Уникальный ключ поля
*/
public string key;
/**
* Тип поля
* stats — Числовые поля — показатели игрока
* data — Строковые поля — данные игрока
* flags — Булевые поля — флаги игрока
* service — Служебные поля — ID, тестовый, активный, удаленный и т.п.
* accounts — Аккаунты — vkId, yandexId, okId и т.п.
*/
public string type;
// Умолчательное значение поля
public string defaultValue; // string | bool | number
/**
* Важное поле для игрока
* если нужно решить кого оставить, можно показать эти поля
*/
public bool important;
/**
* Публичное поле игрока
* будет видно всем игрокам при поиске игроков
*/
public bool public;
/**
* Возможные варианты значений для поля,
* если не указаны, то поле принимает любое значение
*/
public Variants[] variants;
/**
* Лимиты для поля,
* Может быть пустым
*/
public FieldLimits limits;
/**
* Интервал автоначисления,
* Может быть пустым
*/
public IntervalIncrement intervalIncrement;
}
Варианты полей можно задать в панели. Свойства варианта:
- JavaScript
- Unity
/**
* Имя варианта, переведенное на текущий язык
* @type {string}
*/
fieldVariant.name;
/**
* Уникальное значение варианта
* @type {string | number | boolean}
*/
fieldVariant.value;
public class Variants
{
//Имя варианта, переведенное на текущий язык
public string name;
//Уникальное значение варианта
public string value; // string | number
}
Лимиты поля можно задать в панели. Свойства лимита поля:
- JavaScript
- Unity
/**
* Нижний предел поля
* @type {number}
*/
limit.min;
/**
* Верхний предел поля
* @type {number}
*/
limit.max;
/**
* Может ли поле быть установлено вручную больше допустимого предела
* @type {boolean}
*/
limit.couldGoOverLimit;
public class Limits
{
// Нижний предел поля
public number min;
// Верхний предел поля
public number max;
// Может ли поле быть установлено вручную больше допустимого предела
public number max;
}
Интервал автоначисления поля можно задать в панели. Свойства интервала автоначисления поля:
- JavaScript
- Unity
/**
* Интервал начисления, секунды
* @type {number}
*/
intervalIncrement.interval;
/**
* Значение, которое нужно начислить
* @type {number}
*/
intervalIncrement.increment;
public class IntervalIncrement
{
// Интервал начисления, секунды
public number interval;
// Значение, которое нужно начислить
public number increment;
}
Список полей доступен напрямую в игроке FREE:
- JavaScript
- Unity
gp.player.fields;
Получается через метод GP_Player.FetchFields()
Методы работы с полями FREE:
- JavaScript
- Unity
// Получить поле по ключу 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]
Желаем вам успехов!