Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   Таблица рейтинга без стороннего сервера (http://www.flasher.ru/forum/showthread.php?t=135280)

Scorp2008 20.01.2010 00:10

Таблица рейтинга без стороннего сервера
 
Всем привет. :bye:
Ох я и замучался с этим вконтакте, ужас, ни одно апи ещё меня так люто бешено не вводило в тупик. Имеется готовая игра, нужно повесить вконтакте, ну и прикрутить к ней рейтинг вконтактовский. Скачал пример "Тетрис", повыдирал оттуда DataProvider, вставил в игру, оказалось тот на АС2 (а у меня игра АС3), решил скачать пример "Города" и "Чат", скачал, взял оттуда DataProvider, а функции послания и взятия рейтинга взял с Тетриса, и - нифига не работает, при попытке послать рейтинг или принять какие-то ошибки (причём не контактовские)... Вот, подскажите пожалуйста, нужно ли чтобы сделать всего лишь рейтинг заморачиваться со всеми этими DataProvider-ами и ап, или как-то проще это всё реализовать можно? Очень надеюсь на помощь, срочно нужно... :drinks:

udaaff 20.01.2010 00:22

Начните с прочтения документации по методам getHighScores, setUserScore.

Scorp2008 20.01.2010 00:34

Читал я про эти методы, с помощью них и реализовано в Тетрисе, вставил себе - не работает, пытался переделать под ас3. Вы можете привести пример пожалуйста, нигде в инете не найти :( ? И надо ли для рейтинга делать все эти штуки, которые делаются в DataProvider ?

udaaff 20.01.2010 00:41

Цитата:

Вы можете привести пример пожалуйста, нигде в инете не найти ?
http://vkontakte.typing.by/
CommandsSample.rar смотрите и делайте по аналогии. Все должно быть понятно. Библиотеки подключить не забудьте только.

Scorp2008 20.01.2010 00:48

Этот пример совсем отличается от того что я смотрел ранее, никаких ДатаПровидеров, и вообще по-моему рейтинга там нет? :( Неужели так сложно подсказать как оно делается, или там правда так много кода выходит..? Вот функцию к примеру по которой я пытаюсь отослать "очки":
Код AS3:

  public function sendScore(score:Number, onComplete:Function)
  {
    _sendRequest("setUserScore", {params:{score:score}, onComplete:onComplete});
  }

Это с тетриса, может для АС3 в ней чего править надо? они написана в классе DataProvider, вызываю из главного класса, и ошибки.

udaaff 20.01.2010 01:37

Вложений: 1
Я не знаю как в тетрисе что сделано, и не использую ДатаПровайдеры никакие.
Вот пример если хотите: Вложение 23677
Ссылка на библиотеку выше.

Scorp2008 20.01.2010 02:16

А оно не компилируется ваш пример? Что-то там нет никаких файлов кроме as, я не совсем шибко программист, изучаю то что нужно для конкретных целей на данный момент, а тут ещё и сторонние библиотеки, я то без них ещё с вконтактным апи работать не научился.. Но спасибо за помощь, было бы блестяще если бы где-нибудь был примерчик со всем как положено, fla файлик, as файлик, без всяких сторонних фреймворков или чего там :umnik2: ну чтоб нормальным человеческим AS3 языком было написано :) Если таковой отсутствует, то я попроую дальше разбираться, напишу, а там подскажите так али не так я делаю, пожалуйста.

Вроде подразобрался, всё работает, сделал отправку очков и прием, но вот проблема ещё возникла, сейчас у меня топ выводится так:

Код AS3:

                private function onComplete(event:Event):void {
                        if (loader!=null) {
                                externalXML=new XML(loader.data);
                                var bdate = externalXML..user_name;
                                hsm.getChildAt(0).htmlText=bdate;
                                var uname = externalXML..score;
                                hsm.getChildAt(1).htmlText=uname;
                        } else {
                                trace("Error!");
                        }
                }

Вот эта функция возвращает список имен и очков в разные текстовые поля (hsm.getChildAt(0) и hsm.getChildAt(1)), так вот оно возвращает просто список, вопрос в том как мне сделать чтобы напротив каждого имени была какая-то надпись? Ну например "Имя"+"текст" (это я для упрощения, в дальнейшем чтоб каждое имя сделать ссылкой на user_id), я так понимаю нужно как-то циклом ворошить XML, помогите пожалуйста!

Всем спасибо, разобрался :)

alikSmehoff 29.01.2010 18:47

Насколько я понял -- таблица результатов, используемая в getHighScores хранит все результаты конкретного пользователя, а не только тот, что самый лучший, это так?

udaaff 29.01.2010 19:12

Цитата:

Сообщение от alikSmehoff (Сообщение 882838)
Насколько я понял -- таблица результатов, используемая в getHighScores хранит все результаты конкретного пользователя, а не только тот, что самый лучший, это так?

Она не хранит результаты конкретного пользователя, а сохраняет максимальные результаты любых пользователей. Для хранения таблицы рекордов используются глобальные переменные, которые зависят только от api_id.

alikSmehoff 29.01.2010 19:25

Цитата:

Она не хранит результаты конкретного пользователя
Я знаю :)
Вот что я имею ввиду (пример ответа getHighScores):
Код:

<?xml version="1.0" encoding="utf-8"?>
<response list="true">
 <score_info>
  <score>4</score>
  <user_id>123</user_id>
  <user_name>Иван Иванов</user_name>
 </score_info>
 <score_info>
  <score>3</score>
  <user_id>123</user_id>
  <user_name>Иван Иванов</user_name>
 </score_info>
 <score_info>
  <score>1</score>
  <user_id>123</user_id>
  <user_name>Иван Иванов</user_name>
 </score_info>
.....
</response>

В данном случае у Иванова лучший результат 4, но другие его результаты тоже хранятся. Так и должно быть? Короче говоря, этот метод не заменяет предыдущий результат, если он меньше, а добавляет новый?


Часовой пояс GMT +4, время: 16:19.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.