Моментальная лотерея на голоса (исходник)

Темы только для ознакомления. Уроки по использованию старой версии ВКонтакте API и устаревших методов.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Моментальная лотерея на голоса (исходник)

Сообщение Александр »

Моментальная лотерея на голоса
ActionScript 3.0 + PHP.

14.06.2010 Лотерея скорее всего уже не будет работать. Метод addVotes (для начисления выигрыша пользователю) - в списке устаревших методов ВКонтакте API, может некорректно работать или не работать вообще.

Лотерея не будет проверена или одобрена, и по назначению её использовать вы не сможете. В непроверенные приложения пользователи не могут вносить голоса. Проверить работу приложения смогут только администраторы приложения.

На бесплатном хостинге скорее всего не будет работать. Проверьте есть ли на вашем хостинге CURL http://flapps.ru/forum/topic144.html
Если на вашем хостинге есть CURL, но при этом есть и реклама, которая автоматически встраивается в скрипты, то приложение не будет работать корректно.

На дешевых хостингах может возникать ошибка из-за большого различия timestamp с вконтактовским.

Есть смысл читать эту тему и скачивать исходник, только для того чтобы посмотреть как работает моментальная лотерея с использованием методов API для работы с голосами.
Это не самый оптимальный способ работы с голосами. Правильнее было бы не проверять баланс пользователя перед списанием, а сразу попытаться списать голос и дальнейшие действия совершать в зависимости от результата. Но используемый в этом приложении метод, тоже работает.

Для определения выигрыша используется функция генерации случайных чисел. Можно изменить вероятность выигрыша (в процентах).

На сцене текстовое поле result_tf и кнопка btn.
Main.as

Код: Выделить всё

package {    import flash.events.*;    import flash.display.*;    import flash.net.*;    import flash.text.TextField;     public class Main extends Sprite {        public function Main():void {            btn.addEventListener(MouseEvent.CLICK,btnClick);        }                function btnClick(e:MouseEvent):void {            var params:Object=LoaderInfo(root.loaderInfo).parameters;            var loader:URLLoader = new URLLoader();            var request:URLRequest=new URLRequest("http://flapps.ru/example/loto.php");// адрес вашего скрипта            request.method=URLRequestMethod.POST;                        result_tf.text='Ждите...';                        var vars:URLVariables = new URLVariables();            vars['auth_key']=params['auth_key'];            vars['viewer_id']=params['viewer_id'];             request.data=vars;            loader.addEventListener(HTTPStatusEvent.HTTP_STATUS,onError);            loader.addEventListener(Event.COMPLETE,onComplete);            loader.load(request);        }         function onComplete(event:Event):void {            var loader:URLLoader=event.target as URLLoader;            if (loader!=null) {                result_tf.text=loader.data;            } else {                result_tf.text='Ошибка!';            }                   }                private function onError(event:Event):void {            result_tf.text = 'Ошибка! Попробуйте позже.';        }            }}

loto.php

Код: Выделить всё

require('VkApi.class.php'); // в архиве с исходником $app_id = '1676336';                    // id приложения$api_secret = 'qwertyuiopasdfghjklzxc';         // Защищенный ключ с вкладки "Платежи"  $probability = 25;                  // % вероятность выигрыша function get_url($query) {    $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, $query);    curl_setopt($ch, CURLOPT_HEADER, 0);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);    curl_setopt($ch, CURLOPT_TIMEOUT, 10);    return curl_exec($ch);    curl_close($ch);} $auth_key  = $_POST['auth_key'];  // auth_key из FlashVars приложения$viewer_id = $_POST['viewer_id']; // id просматривающего приложение$uid = $viewer_id; // Рассчитываем ключ авторизации$real_key = md5($app_id."_".$viewer_id."_".$api_secret); if ($auth_key == $real_key){// Узнаём баланс приложения$api = new VkApiNode($app_id, $api_secret);$query = $api->getAppBalance();$app_balance = new SimpleXMLElement(get_url($query)); if ($app_balance->balance >= 100) {         // если на балансе приложения есть хотя бы 1 голос     // Узнаём баланс пользователя    $api = new VkApiNode($app_id, $api_secret);    $query = $api->getBalance($uid);    $user_balance = new SimpleXMLElement(get_url($query));     if ($user_balance->balance >=100) {                     // если на счету пользователя не меньше 1 голоса    // Списываем со счета пользователя голос        $votes = 100;                       // количество голосов (1 голос = 100)        $query = $api->withdrawVotes($uid, $votes);         get_url($query);         $rand = rand(1,100);                    // генерация случайного числа от 1 до 100        if ($rand <= $probability) {                // если случайное число в пределах вероятности            // Выигрыш            // Добавляем на счет пользователя голоса            $votes = 200;                   // количество голосов (1 голос = 100)            $query = $api->addVotes($uid, $votes);              get_url($query);            echo 'Вы выиграли!';        }        else {        // Проигрыш            echo 'Вы проиграли...';        }    }    else {        echo 'На вашем счету должно быть не менее 1 голоса!';    }}   else    echo 'На балансе приложения нет голосов. Игра невозможна!';}?>

Установка приложения

Серверная часть
1. Заменяем в файле "loto.php" $app_id и $api_secret на ваши данные.
2. По желанию, можно изменить $probability - вероятность выигрыша в процентах.
3. Загружаем "VkApi.class.php" и "loto.php" в корневой каталог или создаем новую папку на сервере. Эти два файла должны быть в одной папке.
4. Загружаем crossdomain.xml в корневой каталог сайта, даже если "VkApi.class.php" и "loto.php" загружены в другую папку.

Приложение
1. В Main.as заменяем "http://flapps.ru/example/loto.php" на адрес вашего скрипта.
2. Загружаем в контакт.
3. Пополняем баланс приложения минимум на 1 голос. Вкладка "Платежи".
4. Пополняем свой баланс в приложении минимум на 1 голос.
5. Если приложение ещё не включено, то включаем. Редактирование -> Состояние: Приложение включено и видно всем.
6. Всё готово.

Исходник http://flapps.ru/example/loto.rar
Аватара пользователя
112
Модератор
Модератор
Сообщения: 2215
Зарегистрирован: 02 фев 2010, 21:53

Re: Моментальная лотерея на голоса (исходник)

Сообщение 112 »

огр спс за урок лотерею и не одобрят но скрипты пригодяться
Marik
FL Team
FL Team
Сообщения: 27
Зарегистрирован: 18 янв 2010, 21:41

Re: Моментальная лотерея на голоса (исходник)

Сообщение Marik »

спасибо большое, сейчас потестим :D
husky2
Сообщения: 7
Зарегистрирован: 23 мар 2010, 23:19

Re: Моментальная лотерея на голоса (исходник)

Сообщение husky2 »

Что то не работает =((( Если нажимаю играть с страницы администрации пишет :"Ошибка! Попробуйте позже."
А с стороннего акка только ждите и всё, ничего не происходит

P.S. приложение ОДОБРЕННО
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Моментальная лотерея на голоса (исходник)

Сообщение Александр »

husky2
Если пишет "Ошибка! Попробуйте позже.", то вероятно запрос не прошел. Проверь взаимодействие приложения с сервером, используя сниффер.
Fireboy
Сообщения: 11
Зарегистрирован: 27 мар 2010, 16:48

Re: Моментальная лотерея на голоса (исходник)

Сообщение Fireboy »

А у меня вообще вылазиет ошибка <br />
<b>Parse error</b>: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in <b>/home3/тратата/тратата/www/VkApi.class.php</b> on line <b>25</b><br />


Понял что в пхп чёт не правильно написано...взял пхп файлик прям из архива и на сервер...в 25 строке ошибку не нашёл. Помогите разобраться в чём дело?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Моментальная лотерея на голоса (исходник)

Сообщение Александр »

Fireboy
Другие приложения или скрипты, использующие методы API требующие наличия стороннего сервера, работают на твоём хостинге?
Fireboy
Сообщения: 11
Зарегистрирован: 27 мар 2010, 16:48

Re: Моментальная лотерея на голоса (исходник)

Сообщение Fireboy »

Да нет! в том то и дело!
Fireboy
Сообщения: 11
Зарегистрирован: 27 мар 2010, 16:48

Re: Моментальная лотерея на голоса (исходник)

Сообщение Fireboy »

Александр жду Вашей помощи! :ugeek:
husky2
Сообщения: 7
Зарегистрирован: 23 мар 2010, 23:19

Re: Моментальная лотерея на голоса (исходник)

Сообщение husky2 »

Народ а что надо использовать на месте стороннего сервера??? Можно ли использовать для этого "Opera Unite Web Server" (Веб сервер встроенный в браузер Опера), если нет предложите программу, буду благодарен.
Ответить