Данное расширение больше не будет поддерживаться, переходите на расширение GamePush
GameScore расширение для движка Defold. GameScore это сервис для удобной публикации HTML5 игр на разных платформах с одним SDK. Сервисом поддерживается локальная отладка игры.
- Установка
- Инициализация
- API
- Вызов нативных методов платформы
- Заглушка для других платформ, отличных от html
- Заглушка для нативных вызовов
Вы можете использовать его в своем собственном проекте, добавив этот проект в качестве зависимости библиотеки Defold.
В файл game.project необходимо добавить раздел gamescore и указать id и token игры, остальные параметры можно опустить:
[gamescore]
id = идентификатор игры
token = токен
description = There are not enough words to describe the awesomeness of the game
image = /img/ogimage.png
Дополнительные параметры: (doc)
Для начала необходимо инициализировать SDK с помощью метода init:
local gamescore = require("gamescore.gamescore")
gamescore.init(function(success)
if success then
-- инициализация прошла успешно
else
-- ошибка инициализации
end
end)
Для подписки на событие необходимо определить соответсвующий метод таблицы callbacks:
local gamescore = require("gamescore.gamescore")
local function ads_start()
-- выключаем звук
end
local function ads_end(success)
-- включаем звук
end
local function ads_reward()
-- подкидываем золотишка игроку
end
-- функции событий можно назначить до инициализации SDK
gamescore.callbacks.ads_start = ads_start
gamescore.callbacks.ads_end = ads_end
gamescore.callbacks.ads_rewarded_reward = ads_reward
-- инициализация SDK
gamescore.init(function(success)
if success then
-- показываем прелоадер
gamescore.ads_show_preloader(function(result)
-- реклама закрыта, можно что-то делать
end)
-- что то делаем еще
-- показываем рекламу за вознаграждение
gamescore.ads_show_rewarded_video()
-- показываем рекламу за вознаграждение с использованием колбека
gamescore.ads_show_rewarded_video(function(result)
if result then
-- подкидываем игроку кристаллов
end
end)
else
-- ошибка инициализации
end
end)
GameScore JS SDK | GameScore Lua API |
---|---|
Инициализация (doc) | |
window.onGSInit |
init(callback) Инициализация модуля после инициализации будет вызвана функция callback(success) с результатом |
Язык (doc) | |
gs.language |
language() Выбранный язык в формате ISO 639-1 |
gs.changeLanguage(languagecode) |
changelanguage(languagecode) Устанавливает язык в формате ISO 639-1 languagecode = string |
Приложение (doc) | |
gs.app |
app() Возвращает таблицу с информацией о приложении: title: Заголовок description: Описание image: Изображение url: URL на платформе |
Платформа (doc) | |
gs.platform |
platform() Возвращает таблицу с информацией о платформе: type: Тип платформы, например YANDEX, VK hasIntegratedAuth: Возможность авторизации isExternalLinksAllowed: Возможность размещать внешние ссылки |
Константы платформ: | PLATFORM_CRAZY_GAMES PLATFORM_GAME_DISTRIBUTION PLATFORM_GAME_MONETIZE PLATFORM_OK PLATFORM_VK PLATFORM_YANDEX |
gs.getNativeSDK() |
call_native_sdk(method, parameters, callback) Вызывает нативный метод для платформы подобнее method: метод или поле объекта нативной платформы parameters: параметры вызываемого метода callback: функция обратного вызова |
Разное | |
gs.isDev |
is_dev() В разработке? |
gs.isMobile |
is_mobile() Мобильное устройство? |
gs.serverTime |
get_server_time() Возвращает серверное время |
--- | get_plugin_version() Возвращает версию плагина |
Реклама (doc) | |
gs.ads |
ads() Возвращает таблицу с информацией о менеджере рекламы: isAdblockEnabled: Включен ли адблок isStickyAvailable, isFullscreenAvailable, isRewardedAvailable, isPreloaderAvailable: Доступен ли баннер isStickyPlaying, isFullscreenPlaying, isRewardedPlaying, isPreloaderPlaying: Играет ли сейчас реклама |
gs.ads.showFullscreen() |
ads_show_fullscreen(callback) Показывает полноэкранную рекламу callback(result) функция обратного вызова или nil |
gs.ads.showPreloader() |
ads_show_preloader(callback) Показывает баннерную рекламу (preloader) callback(result) функция обратного вызова или nil |
gs.ads.showRewardedVideo() |
ads_show_rewarded_video(callback) Показывает рекламу за вознаграждение callback(result) функция обратного вызова или nil |
gs.ads.showSticky() |
ads_show_sticky(callback) Показывает баннер callback(result) функция обратного вызова или nil |
gs.ads.refreshSticky() |
ads_refresh_sticky(callback) Принудительное обновление баннера callback(result) функция обратного вызова или nil |
gs.ads.closeSticky() |
ads_close_sticky(callback) Закрывает баннер callback() функция обратного вызова или nil |
События: | |
gs.ads.on('start', () => {}) |
callbacks.ads_start() Показ рекламы |
gs.ads.on('close', (success) => {}) |
callbacks.ads_close(success) Закрытие рекламы |
gs.ads.on('fullscreen:start', () => {}) |
callbacks.ads_fullscreen_start() Показ полноэкранной рекламы |
gs.ads.on('fullscreen:close', (success) => {}) |
callbacks.ads_fullscreen_close(success) Закрытие полноэкранной рекламы |
gs.ads.on('preloader:start', () => {}) |
callbacks.ads_preloader_start() Показ preloader рекламы |
gs.ads.on('preloader:close', (success) => {}) |
callbacks.ads_preloader_close(success) Закрытие preloader рекламы |
gs.ads.on('rewarded:start', () => {}) |
callbacks.ads_rewarded_start() Показ рекламы за вознаграждение |
gs.ads.on('rewarded:close', (success) => {}) |
callbacks.ads_rewarded_close(success) Закрытие рекламы за вознаграждение |
gs.ads.on('rewarded:reward', () => {}) |
callbacks.ads_rewarded_reward() Получение награды за просмотр рекламы |
gs.ads.on('sticky:start', () => {}) |
callbacks.ads_sticky_start() Показ sticky баннера |
gs.ads.on('sticky:render', () => {}) |
callbacks.ads_sticky_render() Рендер sticky баннера |
gs.ads.on('sticky:refresh', () => {}) |
callbacks.ads_sticky_refresh() Обновление sticky баннера |
gs.ads.on('sticky:close', () => {}) |
callbacks.ads_sticky_close() Закрытие sticky баннера |
Игрок (doc) | |
gs.player |
player() Возвращает таблицу с информацией об игроке: isLoggedIn: Игрок авторизован hasAnyCredentials: Игрок использует один из способов входа id: Идентификатор игрока score: Очки name: Имя avatar: Ссылка на аватар isStub: Заглушка — пустой ли игрок или данные в нём отличаются умолчательных fields: Поля игрока (doc) |
gs.player.sync() gs.player.sync({ override: true }) |
player_sync(parameters, callback) Синхронизирует игрока parameters = {override = boolean или nil, silent = boolean или nil} или nil callback(): функция обратного вызова или nil |
gs.player.load() |
player_load(callback) Принудительная загрузка игрока, с перезаписью локального callback(): функция обратного вызова или nil |
gs.player.login() |
player_login(callback) Вход игрока callback(result): функция обратного вызова или nil |
gs.player.fetchFields() |
player_fetch_fields(callback) Получить список полей игрока callback(): функция обратного вызова или nil |
gs.player.get(key) |
player_get(key) Получить значение поля key key = string |
gs.player.set(key, value) |
player_set(key, value) Установить значение поля key key = string value = string, number или boolean |
gs.player.add(key, value) |
player_add(key, value) Добавить значение к полю key key = string value = string, number или boolean |
gs.player.toggle(key) |
player_toggle(key) Инвертировать состояние поля key key = string value = string, number или boolean |
gs.player.has(key) |
player_has(key) Проверить есть ли поле key и оно не пустое (не 0, '', false, null, undefined) key = string |
gs.player.toJSON() |
player_to_json() Возвращает состояние игрока объектом (таблицей) |
gs.player.fromJSON() |
player_from_json(player) Устанавливает состояние игрока из объекта (таблицы) player = {key = value, key2 = value2} |
gs.player.reset() |
player_reset() Сбрасывает состояние игрока на умолчательное |
gs.player.remove() |
player_remove() Удаляет игрока — сбрасывает поля и очищает ID |
gs.player.getField(key) |
player_get_field(key) Получить поле по ключу key key = string |
gs.player.getFieldName(key) |
player_get_field_name(key) Получить переведенное имя поля по ключу key key = string |
gs.player.getFieldVariantName(key, value) |
player_get_field_variant_name(key, value) Получить переведенное имя варианта поля (enum) по ключу key и его значению value key = string value = string |
События: | |
gs.player.on('sync', (success) => {}) |
callbacks.player_sync(success) Синхронизация игрока |
gs.player.on('load', (success) => {}) |
callbacks.player_load(success) Загрузка игрока |
gs.player.on('login', (success) => {}) |
callbacks.player_login(success) Вход игрока |
gs.player.on('fetchFields', (success) => {}) |
callbacks.player_fetch_fields(success) Получение полей игрока |
gs.player.on('change', () => {}) |
callbacks.player_change() Изменение полей игрока |
Таблица лидеров (doc) | |
gs.leaderboard.open() gs.leaderboard.open(parameters) |
leaderboard_open(parameters) Показать таблицу лидеров во внутриигровом оверлее, parameters таблица параметров вывода или nil |
gs.leaderboard.fetch() gs.leaderboard.fetch(parameters) |
leaderboard_fetch(parameters, callback) Получить таблицу лидеров parameters: таблица параметров вывода или nil callback(leaders): функция обратного вызова |
gs.leaderboard.fetchPlayerRating() gs.leaderboard.fetchPlayerRating(parameters) |
leaderboard_fetch_player_rating(parameters, callback) Получить рейтинг игрока parameters: таблица параметров вывода или nil callback(leaders): функция обратного вызова |
Изолированная таблица лидеров (doc) | |
gs.leaderboard.openScoped(parameters) |
leaderboard_open_scoped(parameters, callback) Показать изолированную таблицу лидеров во внутриигровом оверлее, parameters таблица параметров вывода или nil callback(result): функция обратного вызова |
gs.leaderboard.fetchScoped(parameters) |
leaderboard_fetch_scoped(parameters, callback) Получить изолированную таблицу лидеров parameters: таблица параметров вывода или nil callback(leaders): функция обратного вызова |
gs.leaderboard.publishRecord(parameters) |
leaderboard_publish_record(parameters, callback) Публикация рекорда игрока в изолированную таблицу parameters: таблица с параметрами и рекордом для записи callback(result): функция обратного вызова |
gs.leaderboard.fetchPlayerRatingScoped(parameters) |
leaderboard_fetch_player_rating_scoped(parameters, callback) Получить рейтинг игрока в изолированной таблице parameters: таблица параметров вывода callback(leaders): функция обратного вызова |
Достижения (doc) | |
gs.achievements.unlock(achievement) |
achievements_unlock(achievement, callback) Разблокировать достижение achievement: id или tag достижения callback(result): функция обратного вызова |
gs.achievements.open() |
achievements_open(callback) Открыть достижения в оверлее callback: функция обратного вызова при открытии окна достижений |
gs.achievements.fetch() |
achievements_fetch(callback) Запросить достижения callback(achievements): функция обратного вызова |
События: | |
gs.achievements.on('unlock', (achievement) => {}) |
callbacks.achievements_unlock(achievement) Разблокировка достижения |
gs.achievements.on('error:unlock', (error) => {}) |
callbacks.achievements_unlock_error(error) Ошибка разблокировки достижения |
gs.achievements.on('open', () => {}) |
callbacks.achievements_open() Открытие списка достижений в оверлее |
gs.achievements.on('close', () => {}) |
callbacks.achievements_close() Закрытие списка достижений |
gs.achievements.on('fetch', (result) => {}) |
callbacks.achievements_fetch(result) Получение списка достижений |
gs.achievements.on('error:fetch', (error) => {}) |
callbacks.achievements_fetch_error(error) Ошибка получения списка достижений |
Платежи (doc) | |
gs.payments.isAvailable |
payments_is_available() Проверка поддержки платежей на платформе |
gs.payments.purchase(product) |
payments_purchase(product, callback) Покупка продукта product = number или string, id или tag продукта callback(result): функция обратного вызова или nil |
gs.payments.consume(product) |
payments_consume(product, callback) Использование продукта product = number или string, id или tag продукта callback(result): функция обратного вызова или nil |
gs.payments.has(product) |
payments_has(product) Проверка наличия покупки product: id или tag продукта |
События: | |
gs.payments.on('purchase', (result) => {}) |
callbacks.payments_purchase(result) Покупка продукта |
gs.payments.on('error:purchase', (error) => {}) |
callbacks.payments_purchase_error(error) Ошибка покупки продукта |
gs.payments.on('consume', (result) => {}) |
callbacks.payments_consume(result) Использование продукта |
gs.payments.on('error:consume', (error) => {}) |
callbacks.payments_consume_error(error) Ошибка использования продукта |
gs.payments.on('fetchProducts', (result) => {}) |
callbacks.payments_fetch_products(result) Получение списка продуктов |
gs.payments.on('error:fetchProducts', (error) => {}) |
callbacks.payments_fetch_products_error(error) Ошибка получения списка продуктов |
Социальные действия (doc) | |
gs.socials |
socials() Возвращает таблицу с информацией о возможных социальных действиях isSupportsNativeShare: поддерживается ли нативный шаринг isSupportsNativePosts: поддерживается ли нативный постинг isSupportsNativeInvite: поддерживаются ли нативные инвайты canJoinCommunity: можно ли приглашать в сообщество на текущей платформе isSupportsNativeCommunityJoin: поддерживается ли нативное вступление в сообщество |
gs.socials.share(parameters) |
socials_share(parameters) Поделиться parameters: таблица с параметрами или nil |
gs.socials.post(parameters) |
socials_post(parameters) Опубликовать пост parameters: таблица с параметрами или nil |
gs.socials.invite(parameters) |
socials_invite(parameters) Пригласить друзей parameters: таблица с параметрами или nil |
gs.socials.joinCommunity() |
socials_join_community() Вступить в сообщество |
Игровые переменные (doc) | |
gs.variables.fetch() |
game_variables_fetch(callback) Запросить переменные callback(): функция обратного вызова или nil |
gs.variables.get(variable) |
game_variables_get(variable) Получить значение переменной variable: название запрашиваемой переменной |
gs.variables.has(variable) |
game_variables_has(variable) Проверить существование переменной variable: название переменной |
gs.variables.type(variable) |
game_variables_get_type(variable) Получить тип переменной variable: название переменной |
Константы типов переменной: | VARIABLE_DATA или VARIABLE_STRING: строка VARIABLE_STATS или VARIABLE_NUMBER: число VARIABLE_FLAG или VARIABLE_BOOLEAN: флаг VARIABLE_HTML: текст в формате html VARIABLE_IMAGE: ссылка на изображение VARIABLE_FILE: ссылка на файл |
События: | |
gs.variables.on('fetch', () => {}) |
callbacks.game_variables_fetch() Получение переменных |
gs.variables.on('error:fetch', (error) => {}) |
callbacks.game_variables_fetch_error(error) Ошибка получения переменных |
Подборки игр (doc) | |
gs.gamesCollections.open(collection) |
games_collections_open(collection, callback) Открыть оверлей с играми collection = number или string, id или tag коллекции или nil callback(): Функция обратного вызова или nil |
gs.gamesCollections.fetch(collection) |
games_collections_fetch(collection, callback) Получить коллекцию игр collection = number или string, id или tag коллекции или nil callback(result): Функция обратного вызова или nil |
События: | |
gs.gamesCollections.on('open', () => {}) |
callbacks.games_collections_open() Открыт оверлей с играми |
gs.gamesCollections.on('close', () => {}) |
callbacks.games_collections_close() Закрыт оверлей с играми |
gs.gamesCollections.on('fetch', (result) => {}) |
callbacks.games_collections_fetch(result) Получение коллекции игр |
gs.gamesCollections.on('error:fetch', (error) => {}) |
callbacks.games_collections_fetch_error(error) Ошибка получения коллекции игр |
Изображения (doc) | |
gs.images.upload(parameters) |
images_upload(parameters, callback) Загрузить изображение parameters: таблица с параметрами callback(image): функция обратного вызова или nil |
gs.images.uploadUrl(parameters) |
images_upload_url(parameters, callback) Загрузить изображение по URL parameters: таблица с параметрами callback(image): функция обратного вызова или nil |
gs.images.chooseFile() |
images_choice_file(callback) Выбрать файл callback(image): функция обратного вызова или nil |
gs.images.fetch(parameters) |
images_fetch(parameters, callback) Получить изображения< parameters: таблица с параметрами callback(image): функция обратного вызова или nil |
gs.images.fetchMore(parameters) |
images_fetch_more(parameters, callback) Получить еще изображений< parameters: таблица с параметрами callback(image): функция обратного вызова или nil |
gs.images.resize(url, width, height, crop) |
images_resize(uri, width, height, crop) Изменить размер изображения< uri: адрес изображения width: требуемая ширина изображения height: требуемая высота изображения crop: обрезка изображения Функция возвращает ссылку на обрезанное изображение. |
gs.images.canUpload() |
images_can_upload() Проверяет, можно ли загружать изображения |
События: | |
gs.images.on('upload', (image) => {}) |
callbacks.images_upload(image) Загрузка изображения |
gs.images.on('error:upload', (error) => {}) |
callbacks.images_upload_error(error) Ошибка загрузки изображения |
gs.images.on('choose', (result) => {}) |
callbacks.images_choose(result) Выбор изображения |
gs.images.on('error:choose', (error) => {}) |
callbacks.images_choose_error(error) Ошибка выбора изображения |
gs.images.on('fetch', (result) => {}) |
callbacks.images_fetch(result) Получение изображения |
gs.images.on('error:fetch', (error) => {}) |
callbacks.images_fetch_error(error) Ошибка получения изображения |
gs.images.on('fetchMore', (result) => {}) |
callbacks.images_fetch_more(result) Получение следующей партии изображений |
gs.images.on('error:fetchMore', (error) => {}) |
callbacks.images_fetch_more_error(error) Ошибка получения следующей партии изображении |
Файлы (doc) | |
gs.files.upload(parameters) |
files_upload(parameters, callback) Загрузить файл parameters: таблица с параметрами callback(result): функция обратного вызова или nil |
gs.files.uploadUrl(parameters) |
files_upload_url(parameters, callback) Загрузить файл по URL parameters: таблица с параметрами callback(result): функция обратного вызова или nil |
gs.files.uploadContent(parameters) |
files_upload_content(parameters, callback) Загрузить контент parameters: таблица с параметрами callback(result): функция обратного вызова или nil |
gs.files.loadContent(url) |
files_load_content(url, callback) Получить контент url: адрес файла callback(result): функция обратного вызова или nil |
gs.files.chooseFile(accept) |
files_choose_file(accept, callback) Выбрать файл accept: тип файла callback(result): функция обратного вызова или nil |
gs.files.fetch(parameters) |
files_fetch(parameters, callback) Получить файлы parameters: таблица с параметрами callback(result): функция обратного вызова или nil |
gs.files.fetchMore(parameters) |
files_fetch_more(parameters, callback) Получить файлы parameters: таблица с параметрами callback(result): функция обратного вызова или nil |
gs.files.canUpload() |
files_can_upload() Проверяет, можно ли загружать файлы |
События: | |
gs.files.on('upload', (result) => {}) |
callbacks.files_upload(result) Загрузка файла |
gs.files.on('error:upload', (error) => {}) |
callbacks.files_upload_error(result) Ошибка загрузки файла |
gs.files.on('loadContent', (result) => {}) |
callbacks.files_load_content(result) Контент получен |
gs.files.on('error:loadContent', (error) => {}) |
callbacks.files_load_content_error(result) Ошибка получения контента |
gs.files.on('choose', (result) => {}) |
callbacks.files_choose(result) Файл выбран |
gs.files.on('error:choose', (error) => {}) |
callbacks.files_choose_error(result) Ошибка выбора файла |
gs.files.on('fetch', (result) => {}) |
callbacks.files_fetch(result) Успешное получение файлов |
gs.files.on('error:fetch', (error) => {}) |
callbacks.files_fetch_error(result) Ошибка при получении файлов |
gs.files.on('fetchMore', (result) => {}) |
callbacks.files_fetch_more(result) Успешная подгрузка файлов |
gs.files.on('error:fetchMore', (error) => {}) |
callbacks.files_fetch_more_error(result) Ошибка при подгрузке файлов |
Документы (doc) | |
gs.documents.open(parameters) |
documents_open(parameters) Открыть политику конфиденциальности parameters: таблица с параметрами |
gs.documents.fetch(parameters) |
documents_fetch(parameters, callback) Получить политику конфиденциальности parameters: таблица с параметрами callback(result): функция обратного вызова или nil |
События: | |
gs.documents.on('open', () => {}) |
callbacks.documents_open() Открыта политика конфиденциальности |
gs.documents.on('close', () => {}) |
callbacks.documents_close() Закрыта политика конфиденциальности |
gs.documents.on('fetch', (document) => {}) |
callbacks.documents_fetch(document) Получение политики конфиденциальности |
gs.documents.on('error:fetch', (error) => {}) |
callbacks.documents_fetch_error(error) Ошибка получения политики конфиденциальности |
Аналитика (doc) | |
gs.analytics.hit(url) |
analytics_hit(url) Посещение или просмотр страницы |
gs.analytics.goal(event, value) |
analytics_goal(event, value) Отправка достижения цели |
Полный экран (doc) | |
gs.fullscreen.open() |
fullscreen_open() Войти в полноэкранный режим |
gs.fullscreen.close() |
fullscreen_close() Выйти из полноэкранного режима |
gs.fullscreen.toggle() |
fullscreen_toggle() Переключить полноэкранный режим |
События: | |
gs.fullscreen.on('open', () => {}) |
callbacks.fullscreen_open() Вход в полноэкранный режим |
gs.fullscreen.on('close', () => {}) |
callbacks.fullscreen_close() Выход из полноэкранного режима |
gs.fullscreen.on('change', () => {}) |
callbacks.fullscreen_change() Переключение полноэкранного режима |
Для вызова нативного метода, получения объекта или поля предназначена
функция call_native_sdk(method, parameters, callback)
.
- method: строка, путь до метода, объекта или поля разделенного точками. Если указан путь до объекта или поля объекта, то parameters и callback будет проигнорирован.
- parameters: параметр вызываемого метода (string, number, boolean, table). Если необходимо передать несколько параметров, то параметры необходимо поместить в массив (таблицу). Порядок параметров определяется индексом массива. Не поддерживается передача функций в качестве параметров!
- callback: функция обратного вызова, необходимо указывать, если нативный метод возвращает промис. Если callback == nil, то функция возвращает результат, иначе nil.
Результат возвращаемый функцией формируется по правилам:
- Параметр method ссылается на объект или поле объекта:
- Если результат string, number или boolean то возвращается таблица с результатом {value = result}.
- Если результат object, то возвращается таблица.
- В случае если произошло исключение, то данные об ошибке возвращаются в виде таблицы {error = "error description"}.
- Параметр method ссылается на функцию:
- Если результат string, number, boolean, то возвращается таблица с результатом {value = result}.
- Если результат object, то возвращается таблица.
- В случае если произошло исключение, или промис завершился ошибкой, то данные об ошибке возвращаются в виде таблицы {error = "error description"}.
callback(result): result - результат выполнения промиса, если промис завершился ошибкой, то result = {error = "error description"}.
Бывают ситуации, когда промис возвращает объект с функциями, которые может потребоваться выполнить позже. Для этих ситуаций предусмотрен механизм сохранения объекта на уровне JS и дальнейшего его использования при следующих вызовах API.
В этих случаях формат параметра method
для функции call_native_sdk
может примнимать вид:
var=path1.path2.path3
: объект path1.path2.path3 будет сохранен в переменную varvar:method
: вызов метода из ранее сохраненного объектаvar2=var:method2
: вызов метода (необходимо что-бы он был промисом) из ранее сохраненного объекта и сохранение результата в переменной var2
Запрос к СДК | Тип | Вызов функции и результат |
---|---|---|
environment | object | call_native_sdk("environment") table |
environment.i18n.lang | string | call_native_sdk("environment.i18n.lang") {value = string} |
env | undefined | call_native_sdk("env") {error = 'Field or function "env" not found!'} |
player.getUniqueID() | function | call_native_sdk("player.getUniqueID") {value = 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!"} |
local gamescore = require("gamescore.gamescore")
gamescore.init(function(result)
if result then
-- Получить переменные окружения Яндекса, эквивалент ysdk.environment
local environment = gamescore.call_native_sdk("environment")
-- Получить язык интерфейса Яндекс.Игр в формате ISO 639-1, эквивалент ysdk.environment.i18n.lang
local language = gamescore.call_native_sdk("environment.i18n.lang")
-- Получить таблицы лидеров, эквивалент ysdk.getLeaderboards()
-- промис возвращает объект, сохраним его в переменную lb
gamescore.call_native_sdk("lb=getLeaderboards", nil, function(leaderboards)
pprint(leaderboards)
-- Запись нового рекорда, эквивалент lb.setLeaderboardScore('leaderboard2021', 120);
-- будем обращаться к переменной lb
gamescore.call_native_sdk("lb:setLeaderboardScore", { "leaderboard2021", 120 })
-- Получить данные таблицы лидеров, эквивалент lb.getLeaderboardEntries('leaderboard2021')
gamescore.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 }
}
gamescore.call_native_sdk("lb:getLeaderboardEntries", parameters, function(result)
pprint(result)
end)
end)
end
end)
Представленный выше код эквивалентен коду 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 предусмотрены заглушки для удобства отладки.
При использовании функций:
- 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() локально в/из файла "gamescore.dat" (можно поменять)
local mock_api = require("gamescore.mock_api")
-- установим имя для файла локального хранилища данных
mock_api.file_storage = "my_storage.dat"
-- установка параметров "заглушек"
mock_api.player.name = "my player name"
mock_api.player.id = 625
-- или так
mock_api.player = function()
return {
isLoggedIn = false,
hasAnyCredentials = false,
id = 234,
score = 500,
name = "player name",
avatar = "avatar",
isStub = true,
fields = mock_api.fields_data
}
end
Каждая функция-заглушка GameScore API может быть представлена таблицей данных или функцией выполняющее действие и/или возвращающая данные. Любые функции/данные можно переопределять для удобства работы/отладки.
Заглушки для нативных вызовов выделены в отдельный модуль, чтобы его подключить используйте функцию set_native_api
--native_api.lua
local M = {}
M["environment"] = {
app = {
id = "app_id"
},
browser = {
lang = "ru"
},
i18n = {
lang = "ru",
tld = "ru"
}
}
return M
local mock = require("gamescore.mock")
local native_api = require("native_api")
local gamescore = require("gamescore.gamescore")
-- Устанавливаем заглушку для нативных функций
mock.set_native_api(native_api)
-- Обращаемся к нативной функции
local result = gamescore.call_native_sdk("environment")
pprint(result)