An open API service indexing awesome lists of open source software.

https://github.com/megalanthus/defold-gamepush

GamePush is the GamePush SDK implementation for the Defold game engine.
https://github.com/megalanthus/defold-gamepush

Last synced: 4 months ago
JSON representation

GamePush is the GamePush SDK implementation for the Defold game engine.

Awesome Lists containing this project

README

        


GamePush Logo

# GamePush for Defold

[GamePush](https://gamepush.com/?r=NDU=) (ранее GameScore) расширение для движка [Defold](https://defold.com) (для
версии Defold >= 1.8.0). GamePush это сервис для удобной публикации HTML5 игр на разных платформах с одним SDK. Сервисом
поддерживается локальная отладка игры.

**Внимание! Если используется версия Defold >= 1.4.0 и < 1.8.0 используйте версию
плагина [v1.1.5](https://github.com/megalanthus/defold-gamepush/releases/tag/v1.1.5)**

- [Установка](#installation)
- [Инициализация](#initialize)
- [API](#api)
- [Вызов нативных методов платформы](#native-sdk)
- [Заглушка для других платформ, отличных от html](#mock)
- [Заглушка для нативных вызовов](#mock-native)

## Установка

Вы можете использовать его в своем собственном проекте, добавив этот проект в
качестве [зависимости библиотеки Defold](https://defold.com/manuals/libraries/).

## Инициализация

В файл game.project необходимо добавить раздел gamepush и указать id и token игры, остальные параметры можно опустить:

```
[gamepush]
id = идентификатор игры
token = токен
description = There are not enough words to describe the awesomeness of the game
image = /img/ogimage.png
```

Дополнительные параметры: [(doc)](https://docs.gamepush.com/docs/social-actions)

Для начала необходимо инициализировать SDK с помощью метода init:

```lua
local gamepush = require("gamepush.gamepush")

gamepush.init(function(success)
if success then
-- инициализация прошла успешно
else
-- ошибка инициализации
end
end)
```

Для подписки на событие необходимо определить соответсвующий метод таблицы callbacks:

```lua
local gamepush = require("gamepush.gamepush")

local function ads_start()
-- выключаем звук
end

local function ads_close(success)
-- включаем звук
end

local function ads_reward()
-- подкидываем золотишка игроку
end

-- функции событий можно назначить до инициализации SDK
gamepush.ads.callbacks.start = ads_start
gamepush.ads.callbacks.close = ads_close
gamepush.ads.callbacks.rewarded_reward = ads_reward
-- инициализация SDK
gamepush.init(function(success)
if success then
-- показываем прелоадер
gamepush.ads.show_preloader(function(result)
-- реклама закрыта, можно что-то делать
end)
-- что то делаем еще

-- показываем рекламу за вознаграждение
gamepush.ads.show_rewarded_video()

-- показываем рекламу за вознаграждение с использованием колбека
gamepush.ads.show_rewarded_video(function(result)
if result then
-- подкидываем игроку кристаллов
end
end)
else
-- ошибка инициализации
end
end)
```

## API

| GamePush JS SDK | GamePush Lua API |
|---------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Инициализация** [(doc)](https://docs.gamepush.com/docs/get-start/getting-started#sdk-initialization) | |
| `window.onGPInit` | `init(callback)`
Инициализация модуля
callback(result): функция обратного вызова |
| **Общие возможности** [(doc)](docs.gamepush.com/docs/get-start/common-features) | |
| **Язык** [(doc)](https://docs.gamepush.com/docs/get-start/common-features#language) | |
| `gp.language` | `language()`
Выбранный язык в формате ISO 639-1 |
| `gp.changeLanguage(languagecode)` | `changelanguage(languagecode)`
Устанавливает язык в формате ISO 639-1
languagecode: код языка |
| Константы языков: | `languages`
ENGLISH
RUSSIAN
FRENCH
ITALIAN
GERMAN
SPANISH
CHINESE
PORTUGUESE
KOREAN
JAPANESE
TURKISH
ARAB
HINDI
INDONESIAN |
| **Системная информация** [(doc)](https://docs.gamepush.com/docs/get-start/common-features#system-information) | |
| `gp.isMobile` | `is_mobile()`
Мобильное устройство? |
| `gp.isPortrait` | `is_portrait()`
Режим экрана: портретный/альбомный? |
| `gp.isDev` | `is_dev()`
В разработке? |
| `gp.isAllowedOrigin` | `is_allowed_origin()`
Хост игры в доверенных источниках? |
| --- | `get_plugin_version()`
Возвращает версию плагина |
| **Серверное время** [(doc)](https://docs.gamepush.com/docs/get-start/common-features#server-time) | |
| `gp.serverTime` | `get_server_time()`
Возвращает серверное время в формате ISO 8601 |
| **Пауза** [(doc)](https://docs.gamepush.com/docs/get-start/common-features#pause) | |
| `gp.isPaused` | `is_paused()`
На паузе? |
| `gp.pause()` | `pause()`
Поставить на паузу |
| `gp.resume()` | `resume()`
Возобновить |
| События: | |
| `gp.on('change:orientation', (isPortrait) => {})` | `callbacks.change_orientation(isPortrait)`
Событие смены ориентации экрана |
| `gp.on('pause', () => {})` | `callbacks.pause()`
Поставили на паузу |
| `gp.on('resume', () => {})` | `callbacks.resume()`
Возобновили игру |
| `gp.on('event:connect', () => {})` | `callbacks.event_connect()`
Уведомление о других окнах |
| **Фоновое изображение игры** [(doc)](https://docs.gamepush.com/docs/get-start/common-features#set-background-image) | |
| `gp.setBackground(parameters)` | `set_background(parameters)`
Установить фоновое изображение игры
parameters: таблица с параметрами |
| **Старт игры** [(doc)](https://docs.gamepush.com/docs/get-start/common-features#start-game) | |
| `gp.gameStart()` | `game_start()`
Старт игры |
| `gp.isGameStarted()` | `is_game_started()`
Запущена ли игра (загрузка завершена) |
| **Геймплей** [(doc)](https://docs.gamepush.com/docs/get-start/common-features#gameplay) | |
| `gp.gameplayStart()` | `gameplay_start()`
Запуск геймплея |
| `gp.gameplayStop()` | `gameplay_stop()`
Завершение геймплея |
| `gp.isGameplay()` | `is_game_play()`
Геймплей запущен? |
| **Приложение** [(doc)](https://docs.gamepush.com/docs/get-start/application) | |
| `gp.app.title` | `app.title()`
Название игры |
| `gp.app.description` | `app.description()`
Описание |
| `gp.app.image` | `app.image()`
Изображение |
| `gp.app.url` | `app.url()`
Адрес |
| **Отзывы** [(doc)](https://docs.gamepush.com/docs/application/reviews) | |
| `gp.app.requestReview()` | `app.request_review()`
Предложить игроку оставить отзыв на игру |
| `gp.app.canRequestReview` | `app.can_request_review()`
Проверить поддержку возможности оставить отзыв на игру |
| `gp.app.isAlreadyReviewed` | `app.is_already_reviewed()`
Проверить был ли оставлен отзыв |
| **Ярлык / Избранное** [(doc)](https://docs.gamepush.com/docs/application/shortcut) | |
| `gp.app.addShortcut()` | `app.add_shortcut()`
Предложить игроку создать ярлык или добавить игру в избранное |
| `gp.app.canAddShortcut` | `app.can_add_shortcut()`
Проверить поддержку возможности создать ярлык или добавить игру в избранное |
| **Платформа** [(doc)](https://docs.gamepush.com/docs/get-start/platform) | |
| `gp.platform.type` | `platform.type()`
Тип платформы |
| `gp.platform.hasIntegratedAuth` | `platform.has_integrated_auth()`
Возможность авторизации |
| `gp.platform.isExternalLinksAllowed` | `platform.is_external_links_allowed()`
Возможность размещать внешние ссылки |
| `gp.platform.isSecretCodeAuthAvailable` | `platform.is_secret_code_auth_available()`
Доступен секретный код авторизации |
| `gp.platform.getNativeSDK()` | `platform.call_native_sdk(method, parameters, callback)`
Вызывает нативный метод для платформы [подобнее](#native_sdk)
method: метод или поле объекта нативной платформы
parameters: параметры вызываемого метода
callback: функция обратного вызова |
| Константы платформ: | NONE
CRAZY_GAMES
GAME_DISTRIBUTION
GAME_MONETIZE
OK
SMARTMARKET
VK
YANDEX
GAMEPIX
POKI
VK_PLAY
WG_PLAYGROUND |
| **Игрок** [(doc)](https://docs.gamepush.com/docs/player) | |
| **Менеджер игрока** [(doc)](https://docs.gamepush.com/docs/player/player-manager) | |
| `gp.player.isLoggedIn` | `player.is_logged_in()`
Игрок авторизован |
| `gp.player.hasAnyCredentials` | `player.has_any_credentials()`
Игрок использует один из способов входа (кука, авторизация, секретный код) |
| `gp.player.isLoggedInByPlatform` | `player.is_logged_in_by_platform()`
Игрок авторизован на платформе |
| `gp.player.sync()`
`gp.player.sync({ override: true })` | `player.sync(parameters, callback)`
Синхронизирует игрока
parameters = {override = boolean или nil, silent = boolean или nil} или nil
callback(): функция обратного вызова или nil |
| `gp.player.load()` | `player.load(callback)`
Принудительная загрузка игрока, с перезаписью локального
callback(): функция обратного вызова или nil |
| `gp.player.login()` | `player.login(callback)`
Вход игрока
callback(result): функция обратного вызова или nil |
| `gp.player.fetchFields()` | `player.fetch_fields(callback)`
Получить список полей игрока
callback(): функция обратного вызова или nil |
| **Состояние игрока** [(doc)](https://docs.gamepush.com/docs/player/player-state) | |
| `gp.player.id` | `player.id()`
ID игрока |
| `gp.player.score` | `player.score()`
Очки игрока |
| `gp.player.name` | `player.name()`
Имя игрока |
| `gp.player.avatar` | `player.avatar()`
Ссылка на аватар игрока |
| `gp.player.isStub` | `player.is_stub()`
Заглушка - пустой ли игрок или данные в нём отличаются умолчательных |
| `gp.player.fields` | `player.fields()`
Поля игрока |
| `gp.player.get(key)` | `player.get(key)`
Получить значение поля key
key = string |
| `gp.player.set(key, value)` | `player.set(key, value)`
Установить значение поля key
key = string
value = string, number или boolean |
| `gp.player.add(key, value)` | `player.add(key, value)`
Добавить значение к полю key
key = string
value = string, number или boolean |
| `gp.player.toggle(key)` | `player.toggle(key)`
Инвертировать состояние поля key
key = string
value = string, number или boolean |
| `gp.player.has(key)` | `player.has(key)`
Проверить есть ли поле key и оно не пустое (не 0, '', false, null, undefined)
key = string |
| `gp.player.toJSON()` | `player.to_json()`
Возвращает состояние игрока объектом (таблицей) |
| `gp.player.fromJSON(parameters)` | `player.from_json(parameters)`
Устанавливает состояние игрока из объекта (таблицы)
parameters = {key = value, key2 = value2} |
| `gp.player.reset()` | `player.reset()`
Сбрасывает состояние игрока на умолчательное |
| `gp.player.remove()` | `player.remove()`
Удаляет игрока — сбрасывает поля и очищает ID |
| `gp.player.getField(key)` | `player.get_field(key)`
Получить поле по ключу key
key = string |
| `gp.player.getFieldName(key)` | `player.get_field_name(key)`
Получить переведенное имя поля по ключу key
key = string |
| `gp.player.getFieldVariantName(key, value)` | `player.get_field_variant_name(key, value)`
Получить переведенное имя варианта поля (enum) по ключу key и его значению value
key = string
value = string |
| **Статистика игрока** [(doc)](https://docs.gamepush.com/docs/player/player-state/#player-statistics) | |
| `gp.player.stats.activeDays` | `player.stats.active_days()`
Количество дней в игре |
| `gp.player.stats.activeDaysConsecutive` | `player.stats.active_days_consecutive()`
Количество дней в игре подряд |
| `gp.player.stats.playtimeToday` | `player.stats.playtime_today()`
Количество секунд, проведенных в игре сегодня |
| `gp.player.stats.playtimeAll` | `player.stats.playtime_all()`
Количество секунд, проведенных в игре за все время |
| **Данные игрока** [(doc)](https://docs.gamepush.com/docs/player/players-data) | |
| `gp.players.fetch(parameters)` | `players.fetch(parameters, callback)`
Получить данные игроков
parameters = таблица с идентификаторами игроков
callback(result): функция обратного вызова |
| События: | |
| `gp.player.on('sync', (success) => {})` | `player.callbacks.sync(success)`
Синхронизация игрока |
| `gp.player.on('load', (success) => {})` | `player.callbacks.load(success)`
Загрузка игрока |
| `gp.player.on('login', (success) => {})` | `player.callbacks.login(success)`
Вход игрока |
| `gp.player.on('fetchFields', (success) => {})` | `player.callbacks.fetch_fields(success)`
Получение полей игрока |
| `gp.player.on('change', () => {})` | `player.callbacks.change()`
Изменение полей игрока |
| **Покупки** [(doc)](https://docs.gamepush.com/docs/purchases) | |
| **Платежи** [(doc)](https://docs.gamepush.com/docs/purchases/payments) | |
| `gp.payments.isAvailable` | `payments.is_available()`
Проверка поддержки платежей на платформе |
| `gp.payments.products` | `payments.products()`
Список продуктов
возвращает таблицу с продуктами |
| `gp.payments.purchases` | `payments.purchases()`
Список покупок
возвращает таблицу с покупками |
| `gp.payments.purchase(parameters)` | `payments.purchase(parameters, callback)`
Покупка продукта
parameters: таблица параметров
callback(result): функция обратного вызова или nil |
| `gp.payments.consume(parameters)` | `payments.consume(parameters, callback)`
Использование продукта
parameters: таблица параметров
callback(result): функция обратного вызова или nil |
| `gp.payments.has(product)` | `payments.has(product)`
Проверка наличия покупки
product: id или tag продукта |
| `gp.payments.fetchProducts()` | `payments.fetch_products(callback)`
Получение списка продуктов
callback(result): функция обратного вызова |
| События: | |
| `gp.payments.on('purchase', (result) => {})` | `payments.callbacks.purchase(result)`
Покупка продукта |
| `gp.payments.on('error:purchase', (error) => {})` | `payments.callbacks.error_purchase(error)`
Ошибка покупки продукта |
| `gp.payments.on('consume', (result) => {})` | `payments.callbacks.consume(result)`
Использование продукта |
| `gp.payments.on('error:consume', (error) => {})` | `payments.callbacks.error_consume(error)`
Ошибка использования продукта |
| `gp.payments.on('fetchProducts', (result) => {})` | `payments.callbacks.fetch_products(result)`
Получение списка продуктов |
| `gp.payments.on('error:fetchProducts', (error) => {})` | `payments.callbacks.error_fetch_products(error)`
Ошибка получения списка продуктов |
| **Подписки** [(doc)](https://docs.gamepush.com/docs/purchases/subscriptions) | |
| `gp.payments.isSubscriptionsAvailable` | `payments.is_subscriptions_available()`
Проверка поддержки подписки на платформе |
| `gp.payments.subscribe(parameters)` | `payments.subscribe(parameters, callback)`
Подписка
parameters: таблица параметров
callback(result): функция обратного вызова или nil |
| `gp.payments.unsubscribe(parameters)` | `payments.unsubscribe(parameters, callback)`
Отмена подписки
parameters: таблица параметров
callback(result): функция обратного вызова или nil |
| События: | |
| `gp.payments.on('subscribe', (result) => {})` | `payments.callbacks.subscribe(result)`
Подписка |
| `gp.payments.on('error:subscribe', (error) => {})` | `payments.callbacks.error_subscribe(error)`
Ошибка подписки |
| `gp.payments.on('unsubscribe', (result) => {})` | `payments.callbacks.unsubscribe(result)`
Отмена подписки |
| `gp.payments.on('error:unsubscribe', (error) => {})` | `payments.callbacks.error_unsubscribe(error)`
Ошибка отмены подписки |
| **Таблицы лидеров** [(doc)](https://docs.gamepush.com/docs/leaderboards) | |
| **Таблица лидеров** [(doc)](https://docs.gamepush.com/docs/leaderboards/leaderboard) | |
| `gp.leaderboard.open()`
`gp.leaderboard.open(parameters)` | `leaderboard.open(parameters)`
Показать таблицу лидеров во внутриигровом оверлее, parameters: таблица параметров вывода или nil |
| `gp.leaderboard.fetch()`
`gp.leaderboard.fetch(parameters)` | `leaderboard.fetch(parameters, callback)`
Получить таблицу лидеров
parameters: таблица параметров вывода или nil
callback(leaders): функция обратного вызова |
| **Рейтинг игрока** [(doc)](https://docs.gamepush.com/docs/leaderboards/player-rating) | |
| `gp.leaderboard.fetchPlayerRating()`
`gp.leaderboard.fetchPlayerRating(parameters)` | `leaderboard.fetch_player_rating(parameters, callback)`
Получить рейтинг игрока
parameters: таблица параметров вывода или nil
callback(leaders): функция обратного вызова |
| **Изолированная таблица лидеров** [(doc)](https://docs.gamepush.com/docs/leaderboards/scoped-leaderboard) | |
| `gp.leaderboard.openScoped(parameters)` | `leaderboard.open_scoped(parameters, callback)`
Показать изолированную таблицу лидеров во внутриигровом оверлее, parameters: таблица параметров вывода или nil
callback(result): функция обратного вызова |
| `gp.leaderboard.fetchScoped(parameters)` | `leaderboard.fetch_scoped(parameters, callback)`
Получить изолированную таблицу лидеров
parameters: таблица параметров вывода или nil
callback(leaders): функция обратного вызова |
| `gp.leaderboard.publishRecord(parameters)` | `leaderboard.publish_record(parameters, callback)`
Публикация рекорда игрока в изолированную таблицу
parameters: таблица с параметрами и рекордом для записи
callback(result): функция обратного вызова |
| **Получение рейтинга игрока** [(doc)](https://docs.gamepush.com/docs/leaderboards/player-scoped-rating) | |
| `gp.leaderboard.fetchPlayerRatingScoped(parameters)` | `leaderboard.fetch_player_rating_scoped(parameters, callback)`
Получить рейтинг игрока в изолированной таблице
parameters: таблица параметров вывода
callback(leaders): функция обратного вызова |
| **Каналы** [(doc)](https://docs.gamepush.com/docs/channels) | |
| **Управление каналами** [(doc)](https://docs.gamepush.com/docs/channels/manage-channels) | |
| `gp.channels.createChannel(parameters, callback)` | `channels.create_channel(parameters, callback)`
Создать канал
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.updateChannel(parameters, callback)` | `channels.update_channel(parameters, callback)`
Обновить канал
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.deleteChannel(parameters, callback)` | `channels.delete_channel(parameters, callback)`
Удалить канал
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchChannel(parameters, callback)` | `channels.fetch_channel(parameters, callback)`
Получить информацию о канале по ID
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchChannels(parameters, callback)` | `channels.fetch_channels(parameters, callback)`
Получить список каналов
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchMoreChannels(parameters, callback)` | `channels.fetch_channels(parameters, callback)`
Подгрузить список каналов
parameters: таблица параметров
callback(result): функция обратного вызова |
| События: | |
| `gp.channels.on('createChannel', (channel) => {})` | `channels.callbacks.create_channel(channel)`
Канал создан |
| `gp.channels.on('error:createChannel', (error) => {})` | `channels.callbacks.error_create_channel(error)`
Ошибка создания канала |
| `gp.channels.on('updateChannel', (channel) => {})` | `channels.callbacks.update_channel(channel)`
Канал обновлен |
| `gp.channels.on('error:updateChannel', (error) => {})` | `channels.callbacks.error_update_channel(error)`
Ошибка обновления канала |
| `gp.channels.on('event:updateChannel', (channel) => {})` | `channels.callbacks.event_update_channel(channel)`
Уведомление об изменении канала |
| `gp.channels.on('deleteChannel', () => {})` | `channels.callbacks.delete_channel()`
Канал удален |
| `gp.channels.on('error:deleteChannel', (error) => {})` | `channels.callbacks.error_delete_channel(error)`
Ошибка удаления канала |
| `gp.channels.on('event:deleteChannel', (channel) => {})` | `channels.callbacks.event_delete_channel(channel)`
Уведомление об удаления канала |
| `gp.channels.on('fetchChannel', (channel) => {})` | `channels.callbacks.fetch_channel(channel)`
Получена информация о канале |
| `gp.channels.on('error:fetchChannel', (error) => {})` | `channels.callbacks.error_fetch_channel(error)`
Ошибка получения информации о канале |
| `gp.channels.on('fetchChannels', (result) => {})` | `channels.callbacks.fetch_channels(result)`
Получен список каналов |
| `gp.channels.on('error:fetchChannels', (error) => {})` | `channels.callbacks.error_fetch_channels(error)`
Ошибка получения списка каналов |
| `gp.channels.on('fetchMoreChannels', (result) => {})` | `channels.callbacks.fetch_more_channel(result)`
Подгружен список каналов |
| `gp.channels.on('error:fetchMoreChannels', (error) => {})` | `channels.callbacks.error_fetch_more_channel(error)`
Ошибка подгрузки списка каналов |
| **Готовые чаты** [(doc)](https://docs.gamepush.com/docs/channels/ready-chats) | |
| `gp.channels.openChat(parameters)` | `channels.open_chat(parameters)`
Вызов окна чата
parameters: таблица параметров |
| `gp.channels.isMainChatEnabled` | `payments.is_main_chat_enabled()`
Проверка возможности показать главный чат |
| `gp.channels.mainChatId` | `payments.main_chat_id()`
Получить ID главного чата |
| События: | |
| `gp.channels.on('openChat', () => {})` | `channels.callbacks.open_chat()`
Открыли чат |
| `gp.channels.on('closeChat', () => {})` | `channels.callbacks.close_chat()`
Закрыли чат |
| `gp.channels.on('error:openChat', (error) => {})` | `channels.callbacks.error_open_chat(result)`
Не удалось открыть чат |
| **Участники** [(doc)](https://docs.gamepush.com/docs/channels/members) | |
| `gp.channels.join(parameters, callback)` | `channels.join(parameters, callback)`
Запрос на вступление в публичный канал
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.cancelJoin(parameters, callback)` | `channels.cancel_join(parameters, callback)`
Отмена запроса на вступление
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.leave(parameters, callback)` | `channels.leave(parameters, callback)`
Выход из канала
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.kick(parameters, callback)` | `channels.kick(parameters, callback)`
Исключение участника из канала
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchMembers(parameters, callback)` | `channels.fetch_members(parameters, callback)`
Получить участников
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchMoreMembers(parameters, callback)` | `channels.fetch_more_members(parameters, callback)`
Подгрузить участников
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.mute(parameters, callback)` | `channels.mute(parameters, callback)`
Мьют игрока в канале
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.unmute(parameters, callback)` | `channels.unmute(parameters, callback)`
Отменить мьют игрока
parameters: таблица параметров
callback(result): функция обратного вызова |
| События: | |
| `gp.channels.on('join', (result) => {})` | `channels.callbacks.join(result)`
Успешно вступил или подал заявку на вступление |
| `gp.channels.on('error:join', (error) => {})` | `channels.callbacks.error_join(error)`
Ошибка вступления в канал |
| `gp.channels.on('event:join', (result) => {})` | `channels.callbacks.event_join(result)`
Уведомление о вступлении в канал |
| `gp.channels.on('event:joinRequest', (result) => {})` | `channels.callbacks.event_join_request(result)`
Уведомление о том, что новый игрок пытается вступить в канал |
| `gp.channels.on('cancelJoin', (result) => {})` | `channels.callbacks.cancel_join(result)`
Отмена заявки на вступление |
| `gp.channels.on('error:cancelJoin', (error) => {})` | `channels.callbacks.error_cancel_join(error)`
Ошибка отмены заявки на вступление |
| `gp.channels.on('event:cancelJoin', (result) => {})` | `channels.callbacks.event_cancel_join(result)`
Уведомление об отмене заявки на вступление |
| `gp.channels.on('leave', (result) => {})` | `channels.callbacks.leave(result)`
Успешно покинул канал |
| `gp.channels.on('error:leave', (error) => {})` | `channels.callbacks.error_leave(error)`
Ошибка при попытке покинуть канал |
| `gp.channels.on('event:leave', (result) => {})` | `channels.callbacks.event_leave(result)`
Уведомление о том, что игрок покинул канал |
| `gp.channels.on('kick', (result) => {})` | `channels.callbacks.kick(result)`
Успешно исключен |
| `gp.channels.on('error:kick', (error) => {})` | `channels.callbacks.error_kick(error)`
Ошибка при исключении участника из канала |
| `gp.channels.on('fetchMembers', (result) => {})` | `channels.callbacks.fetch_members(result)`
Получен список участников |
| `gp.channels.on('error:fetchMembers', (error) => {})` | `channels.callbacks.error_fetch_members(error)`
Ошибка получения списка участников |
| `gp.channels.on('fetchMoreMembers', (result) => {})` | `channels.callbacks.fetch_more_members(result)`
Подгружен список участников |
| `gp.channels.on('error:fetchMoreMembers', (error) => {})` | `channels.callbacks.error_fetch_more_members(error)`
Ошибка подгрузки списка участников |
| `gp.channels.on('mute', (result) => {})` | `channels.callbacks.mute(result)`
Успешный мьют игрока |
| `gp.channels.on('error:mute', (error) => {})` | `channels.callbacks.error_mute(error)`
Ошибка мьюта игрока |
| `gp.channels.on('event:mute', (error) => {})` | `channels.callbacks.event_mute(error)`
Уведомление о мьюте игрока |
| `gp.channels.on('unmute', (result) => {})` | `channels.callbacks.unmute(result)`
Успешная отмена мьюта игрока |
| `gp.channels.on('error:unmute', (error) => {})` | `channels.callbacks.error_unmute(error)`
Ошибка отмены мьюта игрока |
| `gp.channels.on('event:unmute', (error) => {})` | `channels.callbacks.event_unmute(error)`
Уведомление об отмене мьюта игрока |
| **Приглашения** [(doc)](https://docs.gamepush.com/docs/channels/invites) | |
| `gp.channels.sendInvite(parameters, callback)` | `channels.send_invite(parameters, callback)`
Отправка приглашения
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.cancelInvite(parameters, callback)` | `channels.cancel_invite(parameters, callback)`
Отмена приглашения
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.acceptInvite(parameters, callback)` | `channels.accept_invite(parameters, callback)`
Принять приглашение
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.rejectInvite(parameters, callback)` | `channels.reject_invite(parameters, callback)`
Отклонить приглашение
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchInvites(parameters, callback)` | `channels.fetch_invites(parameters, callback)`
Получить список приглашений игрока в каналы
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchMoreInvites(parameters, callback)` | `channels.fetch_more_invites(parameters, callback)`
Подгрузить список приглашений игрока в каналы
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchChannelInvites(parameters, callback)` | `channels.fetch_channel_invites(parameters, callback)`
Получить список отправленных приглашений из канала
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchMoreChannelInvites(parameters, callback)` | `channels.fetch_more_channel_invites(parameters, callback)`
Подгрузить список отправленных приглашений из канала
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchSentInvites(parameters, callback)` | `channels.fetch_sent_invites(parameters, callback)`
Получить список разосланных приглашений игрокам в каналы
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchMoreSentInvites(parameters, callback)` | `channels.fetch_more_sent_invites(parameters, callback)`
Подгрузить список разосланных приглашений игрокам в каналы
parameters: таблица параметров
callback(result): функция обратного вызова |
| События: | |
| `gp.channels.on('sendInvite', (result) => {})` | `channels.callbacks.send_invite(result)`
Приглашение отправлено |
| `gp.channels.on('error:sendInvite', (error) => {})` | `channels.callbacks.error_send_invite(error)`
Ошибка отправки приглашения |
| `gp.channels.on('event:invite', (result) => {})` | `channels.callbacks.event_invite(result)`
Уведомление о приглашении игрока |
| `gp.channels.on('cancelInvite', (result) => {})` | `channels.callbacks.cancel_invite(result)`
Отмена приглашения |
| `gp.channels.on('error:cancelInvite', (error) => {})` | `channels.callbacks.error_cancel_invite(error)`
Ошибка отмены приглашения |
| `gp.channels.on('event:cancelInvite', (result) => {})` | `channels.callbacks.event_cancel_invite(result)`
Уведомление об отмене приглашения |
| `gp.channels.on('acceptInvite', (result) => {})` | `channels.callbacks.accept_invite(result)`
Успешно принято приглашение |
| `gp.channels.on('error:acceptInvite', (error) => {})` | `channels.callbacks.error_accept_invite(error)`
Ошибка принятия приглашения |
| `gp.channels.on('rejectInvite', (result) => {})` | `channels.callbacks.reject_invite(result)`
Приглашение отклонено |
| `gp.channels.on('error:rejectInvite', (error) => {})` | `channels.callbacks.error_reject_invite(error)`
Ошибка отклонения приглашения |
| `gp.channels.on('event:rejectInvite', (result) => {})` | `channels.callbacks.event_reject_invite(result)`
Уведомление об отклонении приглашения |
| `gp.channels.on('fetchInvites', (result) => {})` | `channels.callbacks.fetch_invites(result)`
Получен список приглашений |
| `gp.channels.on('error:fetchInvites', (error) => {})` | `channels.callbacks.error_fetch_invites(error)`
Ошибка получения списка приглашений |
| `gp.channels.on('fetchMoreInvites', (result) => {})` | `channels.callbacks.fetch_more_invites(result)`
Подгружен список приглашений |
| `gp.channels.on('error:fetchMoreInvites', (error) => {})` | `channels.callbacks.error_fetch_more_invites(error)`
Ошибка подгрузки списка приглашений |
| `gp.channels.on('fetchChannelInvites', (result) => {})` | `channels.callbacks.fetch_channel_invites(result)`
Получен список отправленных приглашений |
| `gp.channels.on('error:fetchChannelInvites', (error) => {})` | `channels.callbacks.error_fetch_channel_invites(error)`
Ошибка получения списка отправленных приглашений |
| `gp.channels.on('fetchMoreChannelInvites', (result) => {})` | `channels.callbacks.fetch_more_channel_invites(result)`
Подгружен список отправленных приглашений |
| `gp.channels.on('error:fetchMoreChannelInvites', (error) => {})` | `channels.callbacks.error_fetch_more_channel_invites(error)`
Ошибка подгрузки списка отправленных приглашений |
| `gp.channels.on('fetchSentInvites', (result) => {})` | `channels.callbacks.fetch_sent_invites(result)`
Получен список разосланных приглашений |
| `gp.channels.on('error:fetchSentInvites', (error) => {})` | `channels.callbacks.error_fetch_sent_invites(error)`
Ошибка получения списка разосланных приглашений |
| `gp.channels.on('fetchMoreSentInvites', (result) => {})` | `channels.callbacks.fetch_more_sent_invites(result)`
Подгружен список разосланных приглашений |
| `gp.channels.on('error:fetchMoreSentInvites', (error) => {})` | `channels.callbacks.error_fetch_more_sent_invites(error)`
Ошибка подгрузки списка разосланных приглашений |
| **Запросы** [(doc)](https://docs.gamepush.com/docs/channels/requests) | |
| `gp.channels.acceptJoinRequest(parameters, callback)` | `channels.accept_join_request(parameters, callback)`
Принять запрос на вступление
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.rejectJoinRequest(parameters, callback)` | `channels.reject_join_request(parameters, callback)`
Отклонить запрос на вступление
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchJoinRequests(parameters, callback)` | `channels.fetch_join_requests(parameters, callback)`
Получить список входящих запросов на вступление в выбранном канале
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchMoreJoinRequests(parameters, callback)` | `channels.fetch_more_join_requests(parameters, callback)`
Подгрузить список входящих запросов на вступление в выбранном канале
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchSentJoinRequests(parameters, callback)` | `channels.fetch_sent_join_requests(parameters, callback)`
Получить список разосланных запросов игроком на вступление
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchMoreSentJoinRequests(parameters, callback)` | `channels.fetch_more_sent_join_requests(parameters, callback)`
Подгрузить список разосланных запросов игроком на вступление
parameters: таблица параметров
callback(result): функция обратного вызова |
| События: | |
| `gp.channels.on('acceptJoinRequest', (result) => {})` | `channels.callbacks.accept_join_request(result)`
Успешно принят запрос на вступление |
| `gp.channels.on('error:acceptJoinRequest', (error) => {})` | `channels.callbacks.error_accept_join_request(error)`
Ошибка принятия запроса на вступление |
| `gp.channels.on('rejectJoinRequest', (result) => {})` | `channels.callbacks.reject_join_request(result)`
Успешно отклонен запрос на вступление |
| `gp.channels.on('error:rejectJoinRequest', (error) => {})` | `channels.callbacks.error_reject_join_request(error)`
Ошибка отклонения запроса на вступление |
| `gp.channels.on('event:rejectJoinRequest', (result) => {})` | `channels.callbacks.event_reject_join_request(result)`
Уведомление об отклонении запроса на вступление |
| `gp.channels.on('fetchJoinRequests', (result) => {})` | `channels.callbacks.fetch_join_requests(result)`
Успешно получен список входящих запросов на вступление |
| `gp.channels.on('error:fetchJoinRequests', (error) => {})` | `channels.callbacks.error_fetch_join_requests(error)`
Ошибка получения списка входящих запросов на вступление |
| `gp.channels.on('fetchMoreJoinRequests', (result) => {})` | `channels.callbacks.fetch_more_join_requests(result)`
Успешно подгружен список входящих запросов на вступление |
| `gp.channels.on('error:fetchMoreJoinRequests', (error) => {})` | `channels.callbacks.error_fetch_more_join_requests(error)`
Ошибка подгрузки списка входящих запросов на вступление |
| `gp.channels.on('fetchSentJoinRequests', (result) => {})` | `channels.callbacks.fetch_sent_join_requests(result)`
Успешно получен список разосланных запросов игроком на вступление |
| `gp.channels.on('error:fetchSentJoinRequests', (error) => {})` | `channels.callbacks.error_fetch_sent_join_requests(error)`
Ошибка получения списка разосланных запросов игроком на вступление |
| `gp.channels.on('fetchMoreSentJoinRequests', (result) => {})` | `channels.callbacks.fetch_more_sent_join_requests(result)`
Успешно подгружен список разосланных запросов игроком на вступление |
| `gp.channels.on('error:fetchMoreSentJoinRequests', (error) => {})` | `channels.callbacks.error_fetch_more_sent_join_requests(error)`
Ошибка подгрузки списка разосланных запросов игроком на вступление |
| **Сообщения** [(doc)](https://docs.gamepush.com/docs/channels/messages) | |
| `gp.channels.sendMessage(parameters, callback)` | `channels.send_message(parameters, callback)`
Отправка сообщения
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.sendPersonalMessage(parameters, callback)` | `channels.send_personal_message(parameters, callback)`
Отправка личного сообщения
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.sendFeedMessage(parameters, callback)` | `channels.send_feed_message(parameters, callback)`
Отправка сообщения в фид
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.editMessage(parameters, callback)` | `channels.edit_message(parameters, callback)`
Изменение сообщения
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.deleteMessage(parameters, callback)` | `channels.delete_message(parameters, callback)`
Удаление сообщения
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchMessages(parameters, callback)` | `channels.fetch_messages(parameters, callback)`
Получить список сообщений в выбранном канале
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchPersonalMessages(parameters, callback)` | `channels.fetch_personal_messages(parameters, callback)`
Получить список личных сообщений с другим игроком
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchFeedMessages(parameters, callback)` | `channels.fetch_feed_messages(parameters, callback)`
Получить список сообщений в фиде игрока
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchMoreMessages(parameters, callback)` | `channels.fetch_more_messages(parameters, callback)`
Подгрузить список сообщений в выбранном канале
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchMorePersonalMessages(parameters, callback)` | `channels.fetch_more_personal_messages(parameters, callback)`
Подгрузить список личных сообщений с другим игроком
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.channels.fetchMoreFeedMessages(parameters, callback)` | `channels.fetch_more_feed_messages(parameters, callback)`
Подгрузить список сообщений в фиде игрока
parameters: таблица параметров
callback(result): функция обратного вызова |
| События: | |
| `gp.channels.on('sendMessage', (result) => {})` | `channels.callbacks.send_message(result)`
Успешная отправка сообщения |
| `gp.channels.on('error:sendMessage', (error) => {})` | `channels.callbacks.error_send_message(error)`
Ошибка отправки сообщения |
| `gp.channels.on('event:message', (result) => {})` | `channels.callbacks.event_messaget(result)`
Уведомление о новом сообщении |
| `gp.channels.on('editMessage', (result) => {})` | `channels.callbacks.edit_message(result)`
Успешное изменение сообщения |
| `gp.channels.on('error:editMessage', (error) => {})` | `channels.callbacks.error_edit_message(error)`
Ошибка изменения сообщения |
| `gp.channels.on('event:editMessage', (result) => {})` | `channels.callbacks.event_edit_message(result)`
Уведомление об изменении сообщения |
| `gp.channels.on('deleteMessage', (result) => {})` | `channels.callbacks.delete_message(result)`
Успешное удаление сообщения |
| `gp.channels.on('error:deleteMessage', (error) => {})` | `channels.callbacks.error_delete_message(error)`
Ошибка удаления сообщения |
| `gp.channels.on('event:deleteMessage', (result) => {})` | `channels.callbacks.event_delete_message(result)`
Уведомление об удалении сообщения |
| `gp.channels.on('fetchMessages', (result) => {})` | `channels.callbacks.fetch_messages(result)`
Успешное получение списка сообщений |
| `gp.channels.on('error:fetchMessages', (error) => {})` | `channels.callbacks.error_fetch_messages(error)`
Ошибка получения списка сообщений |
| `gp.channels.on('fetchMoreMessages', (result) => {})` | `channels.callbacks.fetch_more_messages(result)`
Успешная подгрузка списка сообщений |
| `gp.channels.on('error:fetchMoreMessages', (error) => {})` | `channels.callbacks.error_fetch_more_messages(error)`
Ошибка подгрузки списка сообщений |
| **Реклама** [(doc)](https://docs.gamepush.com/docs/advertising) | |
| `gp.ads.isAdblockEnabled` | `ads.is_adblock_enabled()`
Проверка включенного AdBlock |
| `gp.ads.isStickyAvailable` | `ads.is_sticky_available()`
Проверка доступности баннера |
| `gp.ads.isFullscreenAvailable` | `ads.is_fullscreen_available()`
Проверка доступности полноэкранной рекламы |
| `gp.ads.isRewardedAvailable` | `ads.is_rewarded_available()`
Проверка доступности рекламы за вознаграждение |
| `gp.ads.isPreloaderAvailable` | `ads.is_preloader_available()`
Проверка доступности preload рекламы |
| `gp.ads.isStickyPlaying` | `ads.is_sticky_playing()`
Проверка воспроизведения баннера |
| `gp.ads.isFullscreenPlaying` | `ads.is_fullscreen_playing()`
Проверка воспроизведения полноэкранной рекламы |
| `gp.ads.isRewardedPlaying` | `ads.is_rewarded_playing()`
Проверка воспроизведения рекламы за вознаграждение |
| `gp.ads.isPreloaderPlaying` | `ads.is_preloader_playing()`
Проверка воспроизведения preload рекламы |
| `gp.ads.isCountdownOverlayEnabled` | `ads.is_countdown_overlay_enabled()`
Включен оверлей обратного отсчета перед показом фулскрин рекламы |
| `gp.ads.isRewardedFailedOverlayEnabled` | `ads.is_rewarded_failed_overlay_enabled()`
Включен оверлей при неудачном показе rewarded video |
| `gp.ads.canShowFullscreenBeforeGamePlay` | `ads.can_show_fullscreen_before_gameplay()`
Можно ли на площадке показывать фулскрин рекламу перед началом геймплея |
| `gp.ads.showFullscreen(parameters)` | `ads.show_fullscreen(callback, parameters)`
Показывает полноэкранную рекламу
callback(result) функция обратного вызова или nil
parameters: таблица параметров или nil |
| `gp.ads.showPreloader()` | `ads.show_preloader(callback)`
Показывает баннерную рекламу (preloader)
callback(result) функция обратного вызова или nil |
| `gp.ads.showRewardedVideo(parameters)` | `ads.show_rewarded_video(callback, parameters)`
Показывает рекламу за вознаграждение
callback(result) функция обратного вызова или nil
parameters: таблица параметров или nil |
| `gp.ads.showSticky()` | `ads.show_sticky(callback)`
Показывает баннер
callback(result) функция обратного вызова или nil |
| `gp.ads.refreshSticky()` | `ads.refresh_sticky(callback)`
Принудительное обновление баннера
callback(result) функция обратного вызова или nil |
| `gp.ads.closeSticky()` | `ads.close_sticky(callback)`
Закрывает баннер
callback() функция обратного вызова или nil |
| События: | |
| `gp.ads.on('start', () => {})` | `ads.callbacks.start()`
Показ рекламы |
| `gp.ads.on('close', (success) => {})` | `ads.callbacks.close(success)`
Закрытие рекламы |
| `gp.ads.on('fullscreen:start', () => {})` | `ads.callbacks.fullscreen_start()`
Показ полноэкранной рекламы |
| `gp.ads.on('fullscreen:close', (success) => {})` | `ads.callbacks.fullscreen_close(success)`
Закрытие полноэкранной рекламы |
| `gp.ads.on('preloader:start', () => {})` | `ads.callbacks.preloader_start()`
Показ preloader рекламы |
| `gp.ads.on('preloader:close', (success) => {})` | `ads.callbacks.preloader_close(success)`
Закрытие preloader рекламы |
| `gp.ads.on('rewarded:start', () => {})` | `ads.callbacks.rewarded_start()`
Показ рекламы за вознаграждение |
| `gp.ads.on('rewarded:close', (success) => {})` | `ads.callbacks.rewarded_close(success)`
Закрытие рекламы за вознаграждение |
| `gp.ads.on('rewarded:reward', () => {})` | `ads.callbacks.rewarded_reward()`
Получение награды за просмотр рекламы |
| `gp.ads.on('sticky:start', () => {})` | `ads.callbacks.sticky_start()`
Показ sticky баннера |
| `gp.ads.on('sticky:render', () => {})` | `ads.callbacks.sticky_render()`
Рендер sticky баннера |
| `gp.ads.on('sticky:refresh', () => {})` | `ads.callbacks.sticky_refresh()`
Обновление sticky баннера |
| `gp.ads.on('sticky:close', () => {})` | `ads.callbacks.sticky_close()`
Закрытие sticky баннера |
| **События** [(doc)](https://docs.gamepush.com/docs/events) | |
| `gp.events.join(parameters)` | `events.join(parameters, callback)`
Принять участие в событии
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.events.list` | `events.list()`
Список событий
возвращает таблицу с событиями |
| `gp.events.activeList` | `events.active_list()`
Список активных событий игрока
возвращает таблицу с событиями |
| `gp.events.getEvent()` | `events.get_event()`
Получение информации о событии
возвращает таблицу с информацией о событии |
| `gp.events.has(id_or_tag)` | `events.has(id_or_tag)`
Событие активно
id_or_tag: тег или идентификатор события |
| `gp.events.isJoined(id_or_tag)` | `events.is_joined(id_or_tag)`
Игрок участвует в событии
id_or_tag: тег или идентификатор события |
| События: | |
| `gp.events.on('join', (event) => {})` | `events.callbacks.join(event)`
Игрок присоединился к событию |
| `gp.events.on('error:join', (error) => {})` | `events.callbacks.error_join(error)`
Не удалось вступить в событие |
| **Награды** [(doc)](https://docs.gamepush.com/docs/rewards) | |
| `gp.rewards.give(parameters)` | `rewards.give(parameters, callback)`
Выдать награду
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.rewards.accept(parameters)` | `rewards.accept(parameters, callback)`
Принять награду
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.rewards.list` | `rewards.list()`
Список наград
возвращает таблицу с наградами |
| `gp.rewards.givenList` | `rewards.given_list()`
Список выданных наград
возвращает таблицу с выданными наградами |
| `gp.rewards.getReward()` | `rewards.get_reward()`
Получение информации о награде
возвращает таблицу с информацией о награде |
| `gp.rewards.has(id_or_tag)` | `rewards.has(id_or_tag)`
Проверка выдачи награды
id_or_tag: тег или идентификатор награды |
| `gp.rewards.hasAccepted(id_or_tag)` | `rewards.has_accepted(id_or_tag)`
Проверка принятия награды
id_or_tag: тег или идентификатор награды |
| `gp.rewards.hasUnaccepted(id_or_tag)` | `rewards.has_unaccepted(id_or_tag)`
Награда выдана, но не получена
id_or_tag: тег или идентификатор награды |
| События: | |
| `gp.rewards.on('give', (reward) => {})` | `rewards.callbacks.give(reward)`
Награда выдана |
| `gp.rewards.on('error:give', (error) => {})` | `rewards.callbacks.error_give(error)`
Не удалось выдать награду |
| `gp.rewards.on('accept', (reward) => {})` | `rewards.callbacks.accept(reward)`
Награда принята |
| `gp.rewards.on('error:accept', (error) => {})` | `rewards.callbacks.error_accept(error)`
Не удалось принять наград |
| **Планировщики наград** [(doc)](https://docs.gamepush.com/docs/schedulers) | |
| `gp.schedulers.claimDay(idOrTag, day)` | `schedulers.claim_day(id_or_tag, day, callback)`
Принять награду за день
id_or_tag: тег или идентификатор планировщика
day: день
callback(result): функция обратного вызова |
| `gp.schedulers.claimDayAdditional(idOrTag, day, triggerIdOrTag)` | `schedulers.claim_day(id_or_tag, day, trigger_id_or_tag, callback)`
Принять награду за день
id_or_tag: тег или идентификатор планировщика
day: день
trigger_id_or_tag: тег или идентификатор триггера
callback(result): функция обратного вызова |
| `gp.schedulers.claimAllDay(idOrTag, day)` | `schedulers.claim_all_day(id_or_tag, day, callback)`
Принять награду за день за все активности
id_or_tag: тег или идентификатор планировщика
day: день
callback(result): функция обратного вызова |
| `gp.schedulers.claimAllDays(idOrTag)` | `schedulers.claim_all_days(id_or_tag, callback)`
Принять награду за все выполненные дни
id_or_tag: тег или идентификатор планировщика
callback(result): функция обратного вызова |
| `gp.schedulers.list` | `schedulers.list()`
Список планировщиков
возвращает таблицу с планировщиками |
| `gp.schedulers.activeList` | `schedulers.active_list()`
Список активных планировщиков игрока
возвращает таблицу с планировщиками |
| `gp.schedulers.getScheduler(idOrTag)` | `schedulers.get_scheduler(id_or_tag)`
Получение информации о планировщике
id_or_tag: тег или идентификатор планировщика |
| `gp.schedulers.getSchedulerDay(idOrTag, day)` | `schedulers.get_scheduler_day(id_or_tag, day)`
Получение информации о дне планировщика
id_or_tag: тег или идентификатор планировщика
day: день |
| `gp.schedulers.getSchedulerCurrentDay(idOrTag)` | `schedulers.get_scheduler_current_day(id_or_tag)`
Получение информации о текущем дне планировщика
id_or_tag: тег или идентификатор планировщика |
| `gp.schedulers.isRegistered(idOrTag)` | `schedulers.is_registered(id_or_tag)`
Игрок участвует в планировщике
id_or_tag: тег или идентификатор планировщика |
| `gp.schedulers.isTodayRewardClaimed(idOrTag)` | `schedulers.is_today_reward_claimed(id_or_tag)`
Сегодня принята награда
id_or_tag: тег или идентификатор планировщика |
| `gp.schedulers.canClaimDay(idOrTag, day)` | `schedulers.can_claim_day(id_or_tag, day)`
Можно забрать награду за день
id_or_tag: тег или идентификатор планировщика
day: день |
| `gp.schedulers.canClaimDayAdditional(idOrTag, day, triggerIdOrTag)` | `schedulers.can_claim_day_additional(id_or_tag, day, trigger_id_or_tag)`
Можно забрать награду за дополнительную активность за день
id_or_tag: тег или идентификатор планировщика
day: день
trigger_id_or_tag: тег или идентификатор триггера |
| `gp.schedulers.canClaimAllDay(idOrTag, day)` | `schedulers.can_claim_all_day(id_or_tag, day)`
Можно забрать награду за все активности за день
id_or_tag: тег или идентификатор планировщика
day: день |
| События: | |
| `gp.schedulers.on('claimDay', (scheduler) => {})` | `schedulers.callbacks.claim_day(scheduler)`
Награда за день принята |
| `gp.schedulers.on('error:claimDay', (error) => {})` | `schedulers.callbacks.error_claim_day(error)`
Не удалось принять награду за день |
| `gp.schedulers.on('claimDayAdditional', (scheduler) => {})` | `schedulers.callbacks.claim_day_additional(scheduler)`
Награда за день за дополнительную активность принята |
| `gp.schedulers.on('error:claimDayAdditional', (error) => {})` | `schedulers.callbacks.error_claim_day_additional(error)`
Не удалось принять награду за день за дополнительную активность |
| `gp.schedulers.on('claimAllDay', (scheduler) => {})` | `schedulers.callbacks.claim_all_day(scheduler)`
Награда за день за все активности принята |
| `gp.schedulers.on('error:claimAllDay', (error) => {})` | `schedulers.callbacks.error_claim_all_day(error)`
Не удалось принять награду за день за все активности |
| `gp.schedulers.on('claimAllDays', (scheduler) => {})` | `schedulers.callbacks.claim_all_days(scheduler)`
Награда за все дни принята |
| `gp.schedulers.on('error:claimAllDays', (error) => {})` | `schedulers.callbacks.error_claim_all_days(error)`
Не удалось принять награду за все дни |
| `gp.schedulers.on('join', (scheduler) => {})` | `schedulers.callbacks.join(scheduler)`
Игрок присоединился к событию |
| `gp.schedulers.on('error:join', (error) => {})` | `schedulers.callbacks.error_join(error)`
Не удалось вступить в событие |
| **Триггеры** [(doc)](https://docs.gamepush.com/docs/triggers) | |
| `gp.triggers.claim(parameters)` | `triggers.claim(parameters, callback)`
Получить награду за триггер
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.triggers.list` | `triggers.list()`
Список триггеров
возвращает таблицу с триггерами |
| `gp.triggers.activatedList` | `triggers.activated_list()`
Список активированных триггеров
возвращает таблицу с триггерами |
| `gp.triggers.getTrigger(id_or_tag)` | `triggers.get_trigger(id_or_tag)`
Получение информации о награде
id_or_tag: тег или идентификатор триггера |
| `gp.triggers.isActivated(id_or_tag)` | `triggers.is_activated(id_or_tag)`
Триггер активирован
id_or_tag: тег или идентификатор триггера |
| `gp.triggers.isClaimed(id_or_tag)` | `triggers.is_claimed(id_or_tag)`
Награда начислена
id_or_tag: тег или идентификатор триггера |
| События: | |
| `gp.triggers.on('activate', (trigger) => {})` | `triggers.callbacks.activate(trigger)`
Триггер активирован |
| `gp.triggers.on('claim', (trigger) => {})` | `triggers.callbacks.claim(trigger)`
Награда начислена |
| `gp.triggers.on('error:claim', (error) => {})` | `triggers.callbacks.error_claim(error)`
Ошибка начисления награды |
| **Достижения** [(doc)](https://docs.gamepush.com/docs/achievements) | |
| `gp.achievements.groupsList` | `achievements.groups_list()`
Список групп достижений
возвращает таблицу с достижениями |
| `gp.achievements.list` | `achievements.list()`
Список достижений
возвращает таблицу с достижениями |
| `gp.achievements.unlockedList` | `achievements.unlocked_list()`
Список разблокированных достижений
возвращает таблицу с достижениями |
| `gp.achievements.unlock(parameters)` | `achievements.unlock(parameters, callback)`
Разблокировать достижение
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.achievements.setProgress(parameters)` | `achievements.set_progress(parameters, callback)`
Установить прогресс в достижении
parameters: таблица параметров
callback(result): функция обратного вызова |
| `gp.achievements.has(id_or_tag)` | `achievements.has(id_or_tag)`
Проверить есть ли у игрока достижение
id_or_tag: тег или идентификатор достижения |
| `gp.achievements.getProgress(id_or_tag)` | `achievements.get_progress(id_or_tag)`
Получить прогресс достижения
id_or_tag: тег или идентификатор достижения |
| `gp.achievements.open()` | `achievements.open(callback)`
Открыть достижения в оверлее
callback: функция обратного вызова при открытии окна достижений |
| `gp.achievements.fetch()` | `achievements.fetch(callback)`
Запросить достижения
callback(achievements): функция обратного вызова |
| Константы редкости достижений: | `achievements.rare`
COMMON
UNCOMMON
RARE
EPIC
LEGENDARY
MYTHIC |
| События: | |
| `gp.achievements.on('unlock', (achievement) => {})` | `achievements.callbacks.unlock(achievement)`
Разблокировка достижения |
| `gp.achievements.on('error:unlock', (error) => {})` | `achievements.callbacks.error_unlock(error)`
Ошибка разблокировки достижения |
| `gp.achievements.on('progress', (achievement) => {})` | `achievements.callbacks.progress(achievement)`
Изменен прогресс в достижении |
| `gp.achievements.on('error:progress', (error) => {})` | `achievements.callbacks.error_progress(error)`
Ошибка при изменении прогресса |
| `gp.achievements.on('open', () => {})` | `achievements.callbacks.open()`
Открытие списка достижений в оверлее |
| `gp.achievements.on('close', () => {})` | `achievements.callbacks.close()`
Закрытие списка достижений |
| `gp.achievements.on('fetch', (result) => {})` | `achievements.callbacks.fetch(result)`
Получение списка достижений |
| `gp.achievements.on('error:fetch', (error) => {})` | `achievements.callbacks.error_fetch(error)`
Ошибка получения списка достижений |
| **Социальные действия** [(doc)](https://docs.gamepush.com/docs/social-actions) | |
| `gp.socials.isSupportsShare` | `socials.is_supports_share()`
Поддерживается ли шаринг |
| `gp.socials.isSupportsNativeShare` | `socials.is_supports_native_share()`
Проверка поддержки нативного шаринга |
| `gp.socials.share(parameters)` | `socials.share(parameters)`
Поделиться
parameters: таблица с параметрами или nil |
| `gp.socials.isSupportsNativePosts` | `socials.is_supports_native_posts()`
Поддерживается ли нативный постинг |
| `gp.socials.post(parameters)` | `socials.post(parameters)`
Опубликовать пост
parameters: таблица с параметрами или nil |
| `gp.socials.isSupportsNativeInvite` | `socials.is_supports_native_invite()`
Проверка поддержки нативных инвайтов |
| `gp.socials.invite(parameters)` | `socials.invite(parameters)`
Пригласить друзей
parameters: таблица с параметрами или nil |
| `gp.socials.canJoinCommunity` | `socials.can_join_community()`
Можно ли приглашать в сообщество на текущей платформе |
| `gp.socials.isSupportsNativeCommunityJoin` | `socials.is_supports_native_community_join()`
Поддерживается ли нативное вступление в сообщество |
| `gp.socials.joinCommunity()` | `socials.join_community()`
Вступить в сообщество |
| `gp.socials.makeShareUrl(parameters)` | `socials.make_share_url(parameters)`
Создать ссылку для шаринга
parameters: таблица параметров |
| `gp.socials.getShareParam(parameter)` | `socials.get_share_param(parameter)`
Считать параметры при заходе по ссылке
parameter: параметр |
| **Игровые переменные** [(doc)](https://docs.gamepush.com/docs/game-variables) | |
| `gp.variables.fetch()` | `variables.fetch(callback)`
Запросить переменные
callback(): функция обратного вызова или nil |
| `gp.variables.get(variable)` | `variables.get(variable)`
Получить значение переменной
variable: название запрашиваемой переменной |
| `gp.variables.has(variable)` | `variables.has(variable)`
Проверить существование переменной
variable: название переменной |
| `gp.variables.type(variable)` | `variables.type(variable)`
Получить тип переменной
variable: название переменной |
| Константы типов переменной: | `variables.types`
DATA
STATS
FLAG
DOC_HTML
IMAGE
FILE |
| События: | |
| `gp.variables.on('fetch', () => {})` | `variables.callbacks.fetch()`
Получение переменных |
| `gp.variables.on('error:fetch', (error) => {})` | `variables.callbacks.error_fetch(error)`
Ошибка получения переменных |
| **Подборки игр** [(doc)](https://docs.gamepush.com/docs/games-collections) | |
| `gp.gamesCollections.open(parameters)` | `games_collections.open(parameters, callback)`
Открыть оверлей с играми
parameters: таблица параметров
callback(): Функция обратного вызова или nil |
| `gp.gamesCollections.fetch(parameters)` | `games_collections.fetch(parameters, callback)`
Получить коллекцию игр
parameters: таблица параметров
callback(result): Функция обратного вызова или nil |
| События: | |
| `gp.gamesCollections.on('open', () => {})` | `games_collections.callbacks.open()`
Открыт оверлей с играми |
| `gp.gamesCollections.on('close', () => {})` | `games_collections.callbacks.close()`
Закрыт оверлей с играми |
| `gp.gamesCollections.on('fetch', (result) => {})` | `games_collections.callbacks.fetch(result)`
Получение коллекции игр |
| `gp.gamesCollections.on('error:fetch', (error) => {})` | `games_collections.callbacks.error_fetch(error)`
Ошибка получения коллекции игр |
| **Изображения** [(doc)](https://docs.gamepush.com/docs/images) | |
| `gp.images.upload(parameters)` | `images.upload(parameters, callback)`
Загрузить изображение
parameters: таблица с параметрами
callback(image): функция обратного вызова или nil |
| `gp.images.uploadUrl(parameters)` | `images.upload_url(parameters, callback)`
Загрузить изображение по URL
parameters: таблица с параметрами
callback(image): функция обратного вызова или nil |
| `gp.images.chooseFile()` | `images.choice_file(callback)`
Выбрать файл
callback(image): функция обратного вызова или nil |
| `gp.images.fetch(parameters)` | `images.fetch(parameters, callback)`
Получить изображения<
parameters: таблица с параметрами
callback(image): функция обратного вызова или nil |
| `gp.images.fetchMore(parameters)` | `images.fetch_more(parameters, callback)`
Получить еще изображений<
parameters: таблица с параметрами
callback(image): функция обратного вызова или nil |
| `gp.images.resize(url, width, height, crop)` | `images.resize(uri, width, height, crop)`
Изменить размер изображения<
uri: адрес изображения
width: требуемая ширина изображения
height: требуемая высота изображения
crop: обрезка изображения
Функция возвращает ссылку на обрезанное изображение. |
| `gp.images.canUpload()` | `images.can_upload()`
Проверяет, можно ли загружать изображения |
| События: | |
| `gp.images.on('upload', (image) => {})` | `images.callbacks.upload(image)`
Загрузка изображения |
| `gp.images.on('error:upload', (error) => {})` | `images.callbacks.error_upload(error)`
Ошибка загрузки изображения |
| `gp.images.on('choose', (result) => {})` | `images.callbacks.choose(result)`
Выбор изображения |
| `gp.images.on('error:choose', (error) => {})` | `images.callbacks.error_choose(error)`
Ошибка выбора изображения |
| `gp.images.on('fetch', (result) => {})` | `images.callbacks.fetch(result)`
Получение изображения |
| `gp.images.on('error:fetch', (error) => {})` | `images.callbacks.error_fetch(error)`
Ошибка получения изображения |
| `gp.images.on('fetchMore', (result) => {})` | `images.callbacks.fetch_more(result)`
Получение следующей партии изображений |
| `gp.images.on('error:fetchMore', (error) => {})` | `images.callbacks.error_fetch_more(error)`
Ошибка получения следующей партии изображении |
| **Файлы** [(doc)](https://docs.gamepush.com/docs/files) | |
| `gp.files.upload(parameters)` | `files.upload(parameters, callback)`
Загрузить файл
parameters: таблица с параметрами
callback(result): функция обратного вызова или nil |
| `gp.files.uploadUrl(parameters)` | `files.upload_url(parameters, callback)`
Загрузить файл по URL
parameters: таблица с параметрами
callback(result): функция обратного вызова или nil |
| `gp.files.uploadContent(parameters)` | `files.upload_content(parameters, callback)`
Загрузить контент
parameters: таблица с параметрами
callback(result): функция обратного вызова или nil |
| `gp.files.loadContent(url)` | `files.load_content(url, callback)`
Получить контент
url: адрес файла
callback(result): функция обратного вызова или nil |
| `gp.files.chooseFile(accept)` | `files.choose_file(accept, callback)`
Выбрать файл
accept: тип файла
callback(result): функция обратного вызова или nil |
| `gp.files.fetch(parameters)` | `files.fetch(parameters, callback)`
Получить файлы
parameters: таблица с параметрами
callback(result): функция обратного вызова или nil |
| `gp.files.fetchMore(parameters)` | `files.fetch_more(parameters, callback)`
Получить файлы
parameters: таблица с параметрами
callback(result): функция обратного вызова или nil |
| `gp.files.canUpload()` | `files.can_upload()`
Проверяет, можно ли загружать файлы |
| События: | |
| `gp.files.on('upload', (result) => {})` | `files.callbacks.upload(result)`
Загрузка файла |
| `gp.files.on('error:upload', (error) => {})` | `files.callbacks.error_upload(result)`
Ошибка загрузки файла |
| `gp.files.on('loadContent', (result) => {})` | `files.callbacks.load_content(result)`
Контент получен |
| `gp.files.on('error:loadContent', (error) => {})` | `files.callbacks.error_load_content(result)`
Ошибка получения контента |
| `gp.files.on('choose', (result) => {})` | `files.callbacks.choose(result)`
Файл выбран |
| `gp.files.on('error:choose', (error) => {})` | `files.callbacks.error_choose(result)`
Ошибка выбора файла |
| `gp.files.on('fetch', (result) => {})` | `files.callbacks.fetch(result)`
Успешное получение файлов |
| `gp.files.on('error:fetch', (error) => {})` | `files.callbacks.error_fetch(result)`
Ошибка при получении файлов |
| `gp.files.on('fetchMore', (result) => {})` | `files.callbacks.fetch_more(result)`
Успешная подгрузка файлов |
| `gp.files.on('error:fetchMore', (error) => {})` | `files.callbacks.error_fetch_more(result)`
Ошибка при подгрузке файлов |
| **Документы** [(doc)](https://docs.gamepush.com/docs/documents) | |
| `gp.documents.open(parameters)` | `documents.open(parameters)`
Открыть политику конфиденциальности
parameters: таблица с параметрами |
| `gp.documents.fetch(parameters)` | `documents.fetch(parameters, callback)`
Получить политику конфиденциальности
parameters: таблица с параметрами
callback(result): функция обратного вызова или nil |
| События: | |
| `gp.documents.on('open', () => {})` | `documents.callbacks.open()`
Открыта политика конфиденциальности |
| `gp.documents.on('close', () => {})` | `documents.callbacks.close()`
Закрыта политика конфиденциальности |
| `gp.documents.on('fetch', (document) => {})` | `documents.callbacks.fetch(document)`
Получение политики конфиденциальности |
| `gp.documents.on('error:fetch', (error) => {})` | `documents.callbacks.error_fetch(error)`
Ошибка получения политики конфиденциальности |
| **Аналитика** [(doc)](https://docs.gamepush.com/docs/analytics) | |
| `gp.analytics.hit(url)` | `analytics.hit(url)`
Посещение или просмотр страницы |
| `gp.analytics.goal(event, value)` | `analytics.goal(event, value)`
Отправка достижения цели |
| **Полный экран** [(doc)](https://docs.gamepush.com/docs/fullscreen) | |
| `gp.fullscreen.open()` | `fullscreen.open()`
Войти в полноэкранный режим |
| `gp.fullscreen.close()` | `fullscreen.close()`
Выйти из полноэкранного режима |
| `gp.fullscreen.toggle()` | `fullscreen.toggle()`
Переключить полноэкранный режим |
| События: | |
| `gp.fullscreen.on('open', () => {})` | `fullscreen.callbacks.open()`
Вход в полноэкранный режим |
| `gp.fullscreen.on('close', () => {})` | `fullscreen.callbacks.close()`
Выход из полноэкранного режима |
| `gp.fullscreen.on('change', () => {})` | `fullscreen.callbacks.change()`
Переключение полноэкранного режима |
| **Логи** [(doc)](https://docs.gamepush.com/docs/devtools/#logs) | |
| `gp.logger.info()` | `logger.info(...)`
Тост с информацией |
| `gp.logger.warn()` | `logger.warn(...)`
Тост с предупреждением |
| `gp.logger.error()` | `logger.error(...)`
Тост с ошибкой |
| `gp.logger.log()` | `logger.log(...)`
Лог в консоль |

## Вызов нативных методов платформы

Для вызова нативного метода, получения объекта или поля предназначена
функция `call_native_sdk(method, parameters, callback)`.

- method: строка, путь до метода, объекта или поля разделенного точками. Если указан путь до объекта или поля объекта,
то parameters и callback будет проигнорирован.
- parameters: параметр вызываемого метода (string, number, boolean, table). Если необходимо передать несколько
параметров, то параметры необходимо поместить в массив (таблицу). Порядок параметров определяется индексом
массива. **Не поддерживается передача функций в качестве параметров!**
- callback: функция обратного вызова, необходимо указывать, если нативный метод возвращает промис. Если callback == nil,
то функция возвращает результат, иначе nil.

**Результат возвращаемый функцией формируется по правилам:**

1. Параметр method ссылается на объект или поле объекта:

- Если результат string, number, boolean или объект, то возвращаются полученные данные.
- В случае если произошло исключение, то данные об ошибке возвращаются в виде таблицы {error = "error description"}.

2. Параметр method ссылается на функцию:

- Если результат string, number, boolean или объект, то возвращаются полученные данные.
- В случае если произошло исключение, или промис завершился ошибкой, то данные об ошибке возвращаются в виде таблицы
{error = "error description"}.

callback(result): result - результат выполнения промиса, если промис завершился ошибкой, то result = {error = "error
description"}.

### Расширенные действия с промисами

Бывают ситуации, когда промис возвращает объект с функциями, которые может потребоваться выполнить позже. Для этих
ситуаций предусмотрен механизм сохранения объекта на уровне JS и дальнейшего его использования при следующих вызовах
API.

В этих случаях формат параметра `method` для функции `call_native_sdk` может принимать вид:

- `var=path1.path2.path3`: объект path1.path2.path3 будет сохранен в переменную var
- `var:method`: вызов метода из ранее сохраненного объекта
- `var2=var:method2`: вызов метода (необходимо что-бы он был промисом) из ранее сохраненного объекта и сохранение
результата в переменной var2

### Примеры различных вариантов вызова

| Запрос к СДК | Тип | Вызов функции и результат |
|----------------------------------|-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| environment | object | call_native_sdk("environment")
table |
| environment.i18n.lang | string | call_native_sdk("environment.i18n.lang")
string |
| env | undefined | call_native_sdk("env")
{error = 'Field or function "env" not found!'} |
| player.getUniqueID() | function | call_native_sdk("player.getUniqueID")
string |
| feedback.canReview() | function | call_native_sdk("feedback.canReview", nil, callback)
nil
После завершения промиса будет вызван callback. |
| getLeaderboards().then(lb => {}) | function | call_native_sdk("lb=getLeaderboards", nil, callback)
nil
После завершения промиса будет вызван callback.
Результат будет сохранен в переменной JS. |
| lb.setLeaderboardScore() | function | call_native_sdk("lb:setLeaderboardScore")
После завершения промиса будет вызван callback.
При вызове функции будет обращение к ранее сохраненной переменной JS, если она не найдена функция вернет {error = "The 'lb' object has not been previously saved!"} |

### Пример нативной работы с платформой Yandex:

```lua
local gamepush = require("gamepush.gamepush")

gamepush.init(function(result)
if result then
-- Получить переменные окружения Яндекса, эквивалент ysdk.environment
local environment = gamepush.platform.call_native_sdk("environment")

-- Получить язык интерфейса Яндекс.Игр в формате ISO 639-1, эквивалент ysdk.environment.i18n.lang
local language = gamepush.platform.call_native_sdk("environment.i18n.lang")

-- Получить таблицы лидеров, эквивалент ysdk.getLeaderboards()
-- промис возвращает объект, сохраним его в переменную lb
gamepush.platform.call_native_sdk("lb=getLeaderboards", nil, function(leaderboards)
pprint(leaderboards)
-- Запись нового рекорда, эквивалент lb.setLeaderboardScore('leaderboard2021', 120);
-- будем обращаться к переменной lb
gamepush.platform.call_native_sdk("lb:setLeaderboardScore", { "leaderboard2021", 120 })
-- Получить данные таблицы лидеров, эквивалент lb.getLeaderboardEntries('leaderboard2021')
gamepush.platform.call_native_sdk("lb:getLeaderboardEntries", "leaderboard2021", nil, function(result)
pprint(result)
end)

-- Получить данные таблицы лидеров с параметрами
-- эквивалент lb.getLeaderboardEntries('leaderboard2021', {quantityTop: 10, includeUser: true, quantityAround: 3})
local parameters = {
"leaderboard2021",
{ quantityTop = 10, includeUser = true, quantityAround = 3 }
}
gamepush.platform.call_native_sdk("lb:getLeaderboardEntries", parameters, function(result)
pprint(result)
end)
end)
end
end)
```

Представленный выше код эквивалентен коду JS:

```js
YaGames
.init()
.then(ysdk => {
// Получить переменные окружения Яндекса
let environment = ysdk.environment;

// Получить язык интерфейса Яндекс.Игр в формате ISO 639-1
let language = ysdk.environment.i18n.lang;

// Получить таблицы лидеров
ysdk.getLeaderboards().then(function (lb) {
console.log(lb);
// Запись нового рекорда
lb.setLeaderboardScore('leaderboard2021', 120);
// Получить данные таблицы лидеров
lb.getLeaderboardEntries('leaderboard2021').then(function (result) {
console.log(result);
});

// Получить данные таблицы лидеров с параметрами
let parameters = {quantityTop: 10, includeUser: true, quantityAround: 3};
lb.getLeaderboardEntries('leaderboard2021', parameters).then(function (result) {
console.log(result);
});
});
});
```

## Заглушка для других платформ, отличных от html

Для платформ отличных от html предусмотрены заглушки для удобства отладки.

При использовании функций:

- player.get(key)
- player.set(key, value)
- player.add(key, value)
- player.toggle(key)
- player.has(key)
- player.to_json()
- player.from_json(player)

данные будут сохраняться/считываться с помощью sys.save()/sys.load() локально в/из файла "gamepush.dat" (можно
поменять)

```lua
local mock_api = require("gamepush.mock_api")

-- установим имя для файла локального хранилища данных
mock_api.file_storage = "my_storage.dat"

-- установка параметров "заглушек"
mock_api["player.name"] = "my player name"
mock_api["player.id"] = 625
mock_api["player.score"] = 500
```

Каждая функция-заглушка GamePush API может быть представлена данными или функцией выполняющее действие и/или
возвращающая данные. Любые функции/данные можно переопределять для удобства работы/отладки.

## Заглушка для нативных вызовов

Заглушки для нативных вызовов выделены в отдельный модуль, чтобы его подключить используйте функцию `set_native_api`

```lua
--native_api.lua
local M = {}

M["environment"] = {
app = {
id = "app_id"
},
browser = {
lang = "ru"
},
i18n = {
lang = "ru",
tld = "ru"
}
}

return M
```

```lua
local mock = require("gamepush.mock")
local native_api = require("native_api")
local gamepush = require("gamepush.gamepush")

-- Устанавливаем заглушку для нативных функций
mock.set_native_api(native_api)
-- Обращаемся к нативной функции
local result = gamepush.platform.call_native_sdk("environment")
pprint(result)
```