//script src="/sdk.js" /script //script ysdk = null; debug = false; _sdk_initialized = function() {} function init_sdk(params) { YaGames.init(params) .then((_sdk) => { ysdk = _sdk; _sdk_initialized(JSON.stringify(ysdk.environment)); ysdk.features.LoadingAPI?.ready(); }) .catch(console.error); } // разметка геймплея function game_start() { ysdk.features.GameplayAPI?.start() } function game_stop() { ysdk.features.GameplayAPI?.stop() } // реклама _show_fullscreen_banner_on_open = function(){}; _show_fullscreen_banner_on_close = function(){}; _show_fullscreen_banner_on_error = function(){}; _show_fullscreen_banner_on_offline = function(){}; function show_fullscreen_banner() { ysdk.adv.showFullscreenAdv({ callbacks: { onOpen: () => { _show_fullscreen_banner_on_open("Реклама открылась"); }, onClose: function(wasShown) { _show_fullscreen_banner_on_close(wasShown); }, onError: function(error) { _show_fullscreen_banner_on_error("Произошла ошибка %s" % error); }, onOffline: () => { _show_fullscreen_banner_on_offline("Нет доступа к сети"); } } }) } _show_rewarded_video_on_open = function(){}; _show_rewarded_video_on_close = function(){}; _show_rewarded_video_on_rewarded = function(){}; _show_rewarded_video_on_error = function(){}; function show_rewarded_video() { ysdk.adv.showRewardedVideo({ callbacks: { onOpen: () => { _show_rewarded_video_on_open("Rewarded video открыто"); }, onClose: () => { _show_rewarded_video_on_close("Rewarded video закрыто"); }, onRewarded: () => { _show_rewarded_video_on_rewarded("Награда за просмотр видео выдана"); }, onError: (error) => { _show_rewarded_video_on_error(error); } } }) } // игрок var player; _player_initialized = function() {} function init_player(scopes) { ysdk.getPlayer({"scopes":scopes}).then(_player => { player = _player; _player_initialized(JSON.stringify(player)); // return player; }).catch(err => { console.log("Ошибка при инициализации объекта Player."); }); } _open_auth_dialog = function() {} function open_auth_dialog(scopes) { if (player.getMode() === 'lite') { // Игрок не авторизован. ysdk.auth.openAuthDialog().then(() => { // Игрок успешно авторизован. _open_auth_dialog(true); init_player(scopes).catch(err => { console.log("Ошибка при инициализации объекта Player."); }); }).catch(() => { // Игрок не авторизован. _open_auth_dialog(false); }); } else { _open_auth_dialog(true); } } // Возможно, надо писать setData({data}). Надо проверять _save_data_result = function(){} function save_data(data, flush) { data = JSON.parse(data); player.setData(data, flush).then((result) => { if (debug) { console.log('Data saved with result: ", result, ". Data: ', data, ". Flush: ", flush); } _save_data_result(result); }); } _save_stats_result = function(){} function save_stats(stats) { stats = JSON.parse(stats); player.setStats(stats).then((result) => { if (debug) { console.log('Stats saved with result: ', result, '. Stats: ', stats); } _save_stats_result(result); }); } _load_data_callback = function(){} function load_data(keys = "") { if (keys == "") { player.getData().then((result) => { if (debug) { console.log("All data loaded: ", result); } _load_data_callback(JSON.stringify(result)); }); } else { keys = JSON.parse(keys); player.getData(keys).then((result) => { if (debug) { console.log("Data loaded: ", result); } _load_data_callback(JSON.stringify(result)); }); } } _load_stats_callback = function(){} function load_stats(keys = "") { if (keys == "") { player.getStats().then((result) => { if (debug) { console.log("All stats loaded: ", result); } _load_stats_callback(JSON.stringify(result)); }); } else { keys = JSON.parse(keys); player.getStats(keys).then((result) => { if (debug) { console.log("Stats loaded: ", result); } _load_stats_callback(JSON.stringify(result)); }); } } // лидерборды var lb; _init_leaderboard = function() {} function init_leaderboard() { ysdk.getLeaderboards() .then(_lb => { lb = _lb; _init_leaderboard() }); } _get_leaderboard_description_return = function() {} function get_leaderboard_description(leaderboard_name) { ysdk.getLeaderboards() .then(lb => lb.getLeaderboardDescription(leaderboard_name)) .then(res => _get_leaderboard_description_return(JSON.stringify(res))); } function set_leaderboard_score(lb_name, score, extra_data) { ysdk.getLeaderboards() .then(lb => { if (extra_data == "") { lb.setLeaderboardScore(lb_name, score); // Без extraData } else lb.setLeaderboardScore(lb_name, score, extra_data); // С extraData }); } _get_leaderboard_player_entry_return = function() {} function get_leaderboard_player_entry(lb_name) { if (ysdk.isAvailableMethod('leaderboards.getLeaderboardPlayerEntry')) { ysdk.getLeaderboards() .then(lb => lb.getLeaderboardPlayerEntry(lb_name)) .then(res => _get_leaderboard_player_entry_return(JSON.stringify(res))) .catch(err => { if (err.code === 'LEADERBOARD_PLAYER_NOT_PRESENT') { // Срабатывает, если у игрока нет записи в лидерборде. _get_leaderboard_player_entry_return("0"); } }); } else { // Метод недоступен для пользователя _get_leaderboard_player_entry_return("-1"); } } _get_leaderboard_entries_answer = function() {} function get_leaderboard_entries(lb_name, top = 10, include_user = false, around = 3) { ysdk.getLeaderboards() .then(lb => { if (top == 10 && include_user == false) { // С использованием всех значений по умолчанию. lb.getLeaderboardEntries(lb_name) .then(res => { if (debug) { console.log(res); } _get_leaderboard_entries_answer(JSON.stringify(res)); }); } else if (top != 10 && include_user == false) { lb.getLeaderboardEntries(lb_name, { "quantityTop": top }) .then(res => { if (debug) { console.log(res); } _get_leaderboard_entries_answer(JSON.stringify(res)); }); } else { lb.getLeaderboardEntries(lb_name, { "quantityTop": top, "includeUser": include_user, "quantityAround": around }) .then(res => { if (debug) { console.log(res); } _get_leaderboard_entries_answer(JSON.stringify(res)); }); } }); } ///script