Y8 API (JS) помогите

6 posts (showing 1-6)
JagaJaga

Market Level 0Community Level 0
13 posts

Вопрос по api id.net

Кто-нибудь мог бы написать как извлекать сохранения с сервера?

У них в документации написано:
Submit User Data:

var data = { money: 10, weapon: 'bazooka' };
ID.api('user_data/submit', 'POST', {key: 'test', value: JSON.stringify(data)}, function(response){
    console.log(response);
});

Retrieve User Data:

ID.api('user_data/retrieve', 'POST', {key: 'test'}, function(response){
  try {
     console.log(res.jsondata);
     var data = JSON.parse(res.jsondata);
     } catch(e) {
       console.log(e);
  }
});

Запускал со своего сайта и с upload.id.net.

------

В консоли ошибка мол "res не определён". что ещё за "res.jsondata"? Откуда он берётся?

И вообще, может есть где-нибудь нормальное и подробное руководство по встраиванию этого апи?

-----

Оказалось что просто надо было вместо "res.jsondata" написать "response.jsondata"

Но теперь не получается отправить данные в таблицу лидеров.

А при попытке открыть таблицу лидеров на миг появляется форма и сразу пропадает((

Заранее спасибо.

posted 2016-07-16T09:42:16-07:00 | edited 2016-07-16T15:19:04-07:00
eazylow

Market Level 0Community Level 2
0 posts

Там у них есть пара багов в js API. Напишу, как все исправить, как до компьютера доберусь.

P.S. Если тут есть кто из id.net/y8.com, могу помочь улучшить API.

posted 2016-07-17T00:16:07-07:00
eazylow

Market Level 0Community Level 2
0 posts

В общем, на той странице, где Вы открываете high scores нужно вписать

[java]
setInterval(function() {
    $(window).focus();
}, 100);[/java]

 Потому что после того, как нажимаешь на крестик в iframe, он выключается, но фокуса на canvas нет. И, если после этого кликнуть куда-нибудь на canvas, то снова откроется фрейм с high scores. Это jquery, но он вроде обязательно подключается для нормального функционирования api. И это костыли, но все-же... (если знаете, как сфокусировать один раз после закрытия фрейма, то поделитесь Smile )

Что касается пропадания high scores, причина может быть и в Вашем коде, но в общем это делается так:

Сначала логинимся

[as3]
var fnCallback = function(response){
   if (response.status == "ok") { 
      ID.GameAPI.init('тут app id', null, function(data, response){});
   }
}

ID.getLoginStatus(fnCallback);[/as3]

 И только потом открываем high scores

[as3]
ID.GameAPI.Leaderboards.list({"table":"highscores", "mode":"alltime"});[/as3]

 А сохранять вот так:

[as3]
ID.GameAPI.Leaderboards.save({"table":"имя таблицы", "points":"тут поинты"}, function(response){});[/as3]

 Я логинился в каждом js файле, который обращался к api.

И все это надо делать не в update цикле.

P.S. не претендую на изящность кода ни в коем случае, но у меня это работает :)

posted 2016-07-18T14:08:02-07:00
JagaJaga

Market Level 0Community Level 0
13 posts

On Jul 18, 2016, eazylow said:

В общем, на той странице, где Вы открываете high scores нужно вписать

[java]
setInterval(function() {
    $(window).focus();
}, 100);[/java]

 Потому что после того, как нажимаешь на крестик в iframe, он выключается, но фокуса на canvas нет. И, если после этого кликнуть куда-нибудь на canvas, то снова откроется фрейм с high scores. Это jquery, но он вроде обязательно подключается для нормального функционирования api. И это костыли, но все-же... (если знаете, как сфокусировать один раз после закрытия фрейма, то поделитесь Smile )

Что касается пропадания high scores, причина может быть и в Вашем коде, но в общем это делается так:

Сначала логинимся

[as3]
var fnCallback = function(response){
   if (response.status == "ok") { 
      ID.GameAPI.init('тут app id', null, function(data, response){});
   }
}

ID.getLoginStatus(fnCallback);[/as3]

 И только потом открываем high scores

[as3]
ID.GameAPI.Leaderboards.list({"table":"highscores", "mode":"alltime"});[/as3]

 А сохранять вот так:

[as3]
ID.GameAPI.Leaderboards.save({"table":"имя таблицы", "points":"тут поинты"}, function(response){});[/as3]

 Я логинился в каждом js файле, который обращался к api.

И все это надо делать не в update цикле.

P.S. не претендую на изящность кода ни в коем случае, но у меня это работает :)

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

Проблема осталась, открывается окно лидербордов, проходит секунда и окно исчезает. 

Id приложения добавлено в id.net. В чем проблема ума не приложу(((

---

Как сделать без jquery? 

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

setInterval(function() {
    $(window).focus();
}, 100);

И дело ещё в том, что когда запускается игра, я проверяю залогинен ли пользователь, и если нет,
то открывается форма для регистрации и вот она же не пропадает, так значит и лидерборды не должны
исчезать сразу после появления.

---

Мой метод выглядит так:

var Leaderboards_open = function(){
   ID.GameAPI.Leaderboards.list({"table":"bestbuilders", "mode":"alltime"});
   setInterval(function(){window.focus(); }, 1000);

};

posted 2016-07-29T19:22:24-07:00 | edited 2016-07-29T19:44:25-07:00
eazylow

Market Level 0Community Level 2
0 posts

Уберите эту строку:

setInterval(function(){window.focus(); }, 1000);

Напишите, если проблема с автоматическим закрытием high scores решилась.

И заодно проверьте, появляется ли заново эта таблица после её выключения и клика в любую область canvas'a.

posted 2016-07-30T03:22:23-07:00
JagaJaga

Market Level 0Community Level 0
13 posts

Всё так же, проблема осталась. Таблица не появляется, после её произвольного закрытия и нажатии в любой области. К тому же такая проблема не только с игрой. Я протестировал на upload.id.net, загрузив index.html в котором просто прописаны нужные функции авторизации и прочего. Так вот проблема сохраняется.

posted 2016-07-30T07:11:01-07:00