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

Триггеры API

Интеграция триггеров через SDK. Методы работы.

Список методов

Действия:

Свойства:

Проверки:

События:

Типы:

  • Trigger - поля тригггера.

Правила работы с триггерами

Как происходит активация триггера:

  • Игрок заходит в игру или сохраняется.
  • На сервере проверяется выполнение условий.
  • SDK получает ответ от сервера и уведомляет разработчика.
  • Отправляется уведомление об активации триггера.
  • Когда награда выдана:
  • Отправляется уведомление о выдаче награды.
  • Отправляется уведомление о получении награды.
  • Отправляется уведомление о получении достижения.
  • Отправляется уведомление о начислении покупки.

Как происходит выдача наград триггера:

  • Если включена автоматическая выдача награды, то при выполнении условий игроку выдаются награды, покупки или достижения.
  • Если стоит ручная выдача, то необходимо вызвать метод gp.triggers.claim() в любое время, чтобы получить все награды триггера.
  • При ручной выдаче наград происходит запрос на сохранение игрока, на сервере начисляются все награды и изменяются переменные игрока.

Так как консистентность данных и выдача бонусов обеспечиваются нами, нет необходимости участвовать в процессе на уровне кода.

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

Действия

Получить награду

+Lazy Sync Request

Чтобы получить награду за триггер, вам необходимо передать ID или тег триггера.

// По ID
gp.triggers.claim({ id: '646929f98abe970f54fb6274' });
// По Тегу
gp.triggers.claim({ tag: 'LEVEL_10' });

Метод возвращает триггер, статус активации, подтверждения награды:

const { trigger, isActivated, isClaimed } = await gp.triggers.claim({ tag: 'LEVEL_10' });

Свойства

Список триггеров

FREE

Вам доступен весь список триггеров сразу при запуске игры. См. поля триггера.

gp.triggers.list.forEach((trigger) => {
// trigger.id
// trigger.tag
// trigger.isAutoClaim
// trigger.description
// trigger.conditions
// trigger.bonuses
});

Список активированных триггеров

FREE

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

gp.triggers.activatedList.forEach((triggerId) => {
// Строковый ID триггера

// Получение триггера по ID
const { trigger, isActivated, isClaimed } = gp.triggers.getTrigger(triggerId);
});

Получение информации о триггере

FREE

Метод возвращает триггер и статус активации:

// По ID
const { trigger, isActivated, isClaimed } = gp.triggers.getTrigger('646929f98abe970f54fb6274');
// По Тегу
const { trigger, isActivated, isClaimed } = gp.triggers.getTrigger('LEVEl_10');

// Триггера может не существовать, убедитесь, что он есть
if (trigger) {
console.info(trigger.id, isActivated, isClaimed);
}

Проверки

Триггер активирован

gp.triggers.isActivated(idOrTag) FREE

// По ID
const isActivated = gp.triggers.isActivated('646929f98abe970f54fb6274');
// По Тегу
const isActivated = gp.triggers.isActivated('LEVEl_10');

// Проверка
if (isActivated) {
// триггер LEVEl_10 активирован
}

Награда начислена

gp.triggers.isClaimed(idOrTag) FREE

// По ID
const isClaimed = gp.triggers.isClaimed('646929f98abe970f54fb6274');
// По Тегу
const isClaimed = gp.triggers.isClaimed('LEVEl_10');

// Проверка
if (isClaimed) {
// Награда за триггер LEVEl_10 начислена
}

События

Триггер активирован

Коллбек возвращает триггер:

gp.triggers.on('activate', ({ trigger }) => {
// доступна информация о триггере
});

Награда начислена

Коллбек возвращает триггер:

gp.triggers.on('claim', ({ trigger }) => {
// доступна информация о триггере
});

Ошибка начисления награды

Коллбек возвращает ошибку. См. коды ошибок:

gp.triggers.on('error:claim', (err) => {
// проверьте код ошибки
});

Типы

Поля триггера

ПолеТипОписаниеПример
idstringID триггера646929f98abe970f54fb6274
tagstringТег для помощи при выборе. Вы можете использовать его вместо IDLEVEL_10
descriptionstringОписание триггераДостигните 10 уровня
isAutoClaimbooleanНаграда принимается автоматически при активации триггераtrue
conditionsCondition[][]Список условий триггера[]
bonusesBonus[]Список бонусов[]

Поля условия

ПолеТипОписаниеПример
typeConditionTypeТип условияPLAYER_FIELD
keystringКлюч переменной для сравненияlevel
operatorConditionOperatorТип оператора сравненияEQ
valuenumber[] / string[] / boolean[]Проверяемое значение, через ИЛИ[10,20]

Пример полной структуры условий:

// Условия через И по полям игрока

// player.level >= 10
const playerLevelGte10: Condition = {
type: 'PLAYER_FIELD',
key: 'level',
operator: 'GTE',
value: [10],
};

// player.class === 'rouge' || player.class === 'mage'
const playerRogueOrMage: Condition = {
type: 'PLAYER_FIELD',
key: 'class',
operator: 'EQ',
value: ['rogue', 'mage'],
};

// player.level >= 10 && (player.class === 'rouge' || player.class === 'mage')
const playerANDConditions: Condition[] = [playerLevelGte10, playerRogueOrMage];

// Условия через И по статистике игрока
// playerStats.activeDays >= 5
const activeDaysGTE5: Condition = {
type: 'PLAYER_STAT',
key: 'activeDays',
operator: 'GTE',
value: [5],
};

// playerStats.playtimeAll >= 36000
const playtimeAllGTE360000: Condition = {
type: 'PLAYER_STAT',
key: 'playtimeAll',
operator: 'GTE',
value: [36000],
};

// playerStats.activeDays >= 5 && playerStats.playtimeAll >= 36000
const playerStatsANDConditions: Condition[] = [activeDaysGTE5, playtimeAllGTE360000];

// Условия через ИЛИ
// Триггер активируется, если пройдут И условия по полям, или И условия по статистике
const triggerORConditions: Condition[][] = [playerANDConditions, playerStatsANDConditions];

Типы условий

ConditionType

ТипОписание
PLAYER_FIELDПроверка поля игрока
PLAYER_STATПроверка статистики игрока
ENTITY_STATПроверка статистики из внешних модулей, например статистика в эвенте или планировщике

Типы операторов сравнения

ConditionOperator

ТипОписание
EQ== равно
NE!= не равно
GT> больше
LT< меньше
GTE>= больше либо равно
LTE<= меньше либо равно

Поля бонуса

Bonus

ПолеТипОписаниеПример
typeBonusTypeТип бонусаREWARD
idnumberID бонуса1122

Пример структур бонусов:

const bonuses: Bonus[] = [
{
type: 'REWARD',
id: 941,
},
{
type: 'PRODUCT',
id: 31,
},
];

Типы бонусов

BonusType

ТипОписание
REWARDНаграда
ACHIEVEMENTДостижение
PRODUCTПокупка

Коды ошибок

ОшибкаОписание ошибки
trigger_not_foundТриггер с таким ID или тегом не найден
trigger_not_activatedТриггер не активирован
trigger_already_claimedНаграда уже получена
undefinedНепредвиденная ошибка (смотрите консоль)

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

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

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

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

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