Как я получил ключ к Diablo III Beta. Как я получил ключ к Diablo III Beta Код активации diablo 3

Информация в статье устарела в связи с выходом патча 2.3.0. Теперь с хранителей ключей сразу падают адские устройства .

Дроп с хранителей ключей

Ключ костей

Переходим в акт I и телепортируемся в Гиблые поля. В данной локации живут неприятные рогатые создания или в простонародье Хазра. Тут потребуется найти первого из нужных боссов – Одиг. Распознать его будет несложно, поскольку он использует довольно неприятные заклинания, которые отталкивают игрока на большое расстояние, затем, замедляя и обездвиживая, закидывает огненными шарами и копьями. Особенно большую опасность он будет представлять классам ближнего боя.

Чревоугодия

Направляемся в следующий акт II и телепортируемся в Далгурский оазис. Здесь Вас будет ожидать второй хранитель ключа – Сокар. Найти его можно иным способом, поскольку его выдает собственная аура, замедляющая снаряды. Внимательно смотрите на края своего экрана, чтобы заметить его ауру, тогда Вы точно не ошибетесь.

Войны

Теперь идем в 3 акт. На территории Каменного форта Вас встретит очередной ключник – За’Рит. Он использует неприятные ледяные умения, которые прилично могут отнять у Вас здоровье, при этом сильно замедляя. Также телепортируется во время боя. Однако найти этого «ключника» гораздо легче, чем предыдущих, поскольку эта зона выполнена в коридорном стиле и Вам не придется долго его искать.

Зла

Последний хранитель ключа находится в 4 акте, а именно на первом уровне территории Серебряный Шпиль. Родители прозвали его Некаратом. Он способен отбросить на большое расстояние, поставить в клетку и дебафнуть на снижение получаемого лечения. Лока, как и предыдущая, тоже небольшая и поиск не отберет много времени.

В целом, все ключники убиваются уверенно, особенно в нынешних реалиях, где все классы и их умения были заметно усилены.

29 марта 2012 в 01:17

Как я получил ключ к Diablo III Beta

  • Разработка веб-сайтов ,
  • Программирование

В YouTube роликах ThisIsHorosho с недавних пор стали появляться ключи к Diablo III Beta. В 7-ми минутном ролике на секунду показывается ключ, кто его первый активирует, то и выигрывает. Вот так на стоп кадре выглядит ключ:

Вы подумали о том же, о чем и я?


Всего 10 ключей.

Ключ 1
О первом ключе я не знал и, наверное, никто не знал. Кому-то повезло.

Ключ 2
Ко второму видео был готов самый простой бот, который раз в 10 секунд обновляет страницу с добавленным видео и, если появилось новое видео, то модальное окно в виде алерта сообщает об этом. Выяснилось, что через 4 часа youtube обнаруживает бота и просит его ввести recaptcha, а потом еще каждый час просит ее вводить. Очень не удобно, но я не особо хотел тратить время и писать по-нормальному, так как ожидал, что второй ключ появится как-нибудь по-другому, ну например, хотя бы зелеными буквами. Второй ключ я проморгал, но когда я увидел те же серые цифры и буквы, тем же шрифтом, того же размера, на том же белом фоне и даже размером в те же три строчки, я решил сделать нормального бота.

Ключ 3
К третьему видео бот использовал youtube api, квота на кол-во запросов к которому позволяла сканирование раз в 5 секунд на протяжении 12 часов.

Алгоритм был простой:

Итак, выскочил алерт, сообщающий о выходе нового видео, я залогинился к battle.net, через 10 секунд скачалось видео, еще через 10 появился скриншот с серийным номером:


Я его ввел и… он оказался уже использованым. Анализ ошибок показал, что данные через youtube api обновляются с задержкой до 5 минут! Когда бот обнаружил новое видео, уже было слишком поздно. Кому-то из других ботов или пользователей жмущих F5 повезло.

Ключ 4
К четвертому видео, бот был доработан: сейчас он использует порядка 100 прокси серверов (по 1 потоку на каждый прокси сервер), которые сканируют каждые 5 секунд gdata. Тесты показали, что около 20 прокси просто мгновенно сообщают о выходе нового видео, остальные подтягиваются в течении минуты, это было отлично. В отличии от gdata прямые ссылки появляются сразу для любого IP, поэтому тут без прокси бот просто качает видео в 20 потоков (работало даже в 1000 потоков, youtube оказывается позволяет). Скорость закачки возросла. Алгоритм сканирования был доработан: бот вначале в 4 потока сканирует вторую часть ролика (во всех предыдущих видео серийный ключ появлялся в конце ролика), а потом в 4 потока первую часть. Для надежности шаг сканирования был уменьшен до 500 мс, другие параметры так же были немного ослаблены.

Итак, выскочил алерт, сообщающий о выходе нового видео. Не успел я зайти в battle.net как уже скачалось видео (10 секунд) и появился скриншот с серийным номером:

Я порадовался, что учел возможность его появления в две строчки. Трясущимися руками я его кое-как написал и активировал! На все ушло секунд 20. Очень повезло со сканированием, алгоритм практически сразу показал серийный номер при том, что полное сканирование продолжалось 30 секунд. В этом ролике, как оказалось, было два ключа, которые показались последовательно, я ввел второй. Поздравляю того, кто активировал первый!

Осталось еще 5 ключей
Можно доработать алгоритм: запускать сканирование вместе с началом старта скачивания, алгоритм усложнится, но выигрышь будет секунд 10. Можно еще сделать распознование серийного номера и его автоматический ввод в battle.net. Тогда ключик можно будет ввести даже за 5 секунд.

Все писалось на Java, используя HttpComponents (http-протокол) и VLCj (обработка видео)

P.S. Diablo III клевая

UPDATE
Интересно было писать самого бота, поэтому затраченные 20 часов я расцениваю как время потраченное на развлечение, а не как 20 часов, за которые можно было бы заработать гораздо больше денег, чем стоит сам ключ. В свободное время я отдыхаю или изучаю что-то новое, а не работаю, а тут приятное с полезным. Игру еще не прошел.

Алгоритм
Алгоритм определения серийника я специально сразу не стал указывать по двум причинам. Узнав абсолютно точный алгоритм, авторы ThisIsHorosho быстро сделают ключ нераспознаваемым, и я окажу медвежью услугу тем, кто тоже пишет бота. Хотя допускаю, что таких людей нет, но как то же, судя по комментариям, за 3 минуты вводят серийники, неужели жмут F5 во время ожидания…

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

  1. Берем картинку из кадра и сохраняем ее с размером 640x320, VLCj позволяет сохранять картинки с любым разрешением, даже, если видео имеет другое. Все точки, близкие к цвету текста делаем черными, все остальное белое. В итоге получаем черно белые картинки. Пару таких картинок вставлены в эту статью.
  2. Для каждого скриншота считаем статистику белых и черных точек. Фоном объявляем те, где количество белых точек больше 92%, в тестах хватало и 94%, но это с запасом. На кадрах с фоном ищем серийник.
  3. Из кадра с краев отступаем по 30 пикселей, так как серийник появляется ближе к центру, а с края - никогда. Оставшееся поле разбиваем на квадраты 20x20, в каждом из которых считаем количество черных точек
  4. Квадраты с количеством черных точек от 10% до 60% объявляем квадратами с буквами - это уже с учетом того, что буква может только на половину попасть в квадрат и с некоторым запасом.
  5. Кадры, на которых есть непрерывная последовательность из как минимум 6 квадратов с буквами по горизонтали и в 3 квадрата по вертикали, объявляем кадрами с серийным номером. Сохраняем их в папку.

В итоге, появляются только картинки с текстом похожим на серийный номер:

На практике их не много появляется, так что найти из них нужный не составляет труда.

Работа с VLCj
Работа с VLCj очень простая. Вначале я прочитал документацию www.capricasoftware.co.uk/vlcj/tutorial1.php , потом немного поигрался с классом MediaPlayer, но он как-то глючил, в общем я остановился на вызове прямых функций из библиотеки LibVlc - оно и быстрее и безглючнее.

Вначале создаем библиотеку
LibVlc libvlc = LibVlcFactory.factory().create();

Потом создаем массив из 8 штук AnalyzerThread (типа Runnable) (каждому 1/8 часть времени видео), которые передаем в Executors.newFixedThreadPool(4) в таком порядке: 4, 5, 6, 7, 0, 1, 2, 3. Т.е. вначале будет сканироваться вторая часть видео, а потом первая. В каждом AnalyzerThread такой код:

System.out.println("Run section " + num); libvlc_media_player_t p_mi = null; libvlc_media_t media = null; try { // prepare //libvlc_instance_t instance = libvlc.libvlc_new(0, new String); libvlc_instance_t instance = libvlc.libvlc_new(2, new String{"--vout", "dummy"}); p_mi = libvlc.libvlc_media_player_new(instance); libvlc.libvlc_audio_toggle_mute(p_mi); media = libvlc.libvlc_media_new_path(instance, fileName); libvlc.libvlc_media_player_set_media(p_mi, media); libvlc.libvlc_media_player_play(p_mi); Thread.sleep(msPlayerWait); libvlc.libvlc_media_player_pause(p_mi); // start snapshoting int block = blockFrom; for (long msTime = msFrom; msTime <= msTo; msTime += msInBlock, block++) { String path = snapshotPath + File.separator + "snap-" + String.format("%03d.png", block); libvlc.libvlc_media_player_set_time(p_mi, msTime); int r = libvlc.libvlc_video_take_snapshot(p_mi, 0, path, picWidth, picHeight); if (r != 0) System.out.println("SNAPSHOT FAILED: block=" + block + ", returnCode=" + r); else analyzeImage(path); } } finally { if (p_mi != null) libvlc.libvlc_media_player_stop(p_mi); if (media != null) libvlc.libvlc_media_release(media); if (p_mi != null) libvlc.libvlc_media_player_release(p_mi); System.out.println("Close section " + num); }

Функция analyzeImage как раз определяет, находится ли на скриншоте ключик или нет, если находится, то сохраняет его в специальную папку.

Дроп с хранителей ключей

Ключ костей

Переходим в акт I и телепортируемся в Гиблые поля. В данной локации живут неприятные рогатые создания или в простонародье Хазра. Тут потребуется найти первого из нужных боссов – Одиг. Распознать его будет несложно, поскольку он использует довольно неприятные заклинания, которые отталкивают игрока на большое расстояние, затем, замедляя и обездвиживая, закидывает огненными шарами и копьями. Особенно большую опасность он будет представлять классам ближнего боя.

Чревоугодия

Направляемся в следующий акт II и телепортируемся в Далгурский оазис. Здесь Вас будет ожидать второй хранитель ключа – Сокар. Найти его можно иным способом, поскольку его выдает собственная аура, замедляющая снаряды. Внимательно смотрите на края своего экрана, чтобы заметить его ауру, тогда Вы точно не ошибетесь.

Войны

Теперь идем в 3 акт. На территории Каменного форта Вас встретит очередной ключник – За’Рит. Он использует неприятные ледяные умения, которые прилично могут отнять у Вас здоровье, при этом сильно замедляя. Также телепортируется во время боя. Однако найти этого «ключника» гораздо легче, чем предыдущих, поскольку эта зона выполнена в коридорном стиле и Вам не придется долго его искать.

Зла

Последний хранитель ключа находится в 4 акте, а именно на первом уровне территории Серебряный Шпиль. Родители прозвали его Некаратом. Он способен отбросить на большое расстояние, поставить в клетку и дебафнуть на снижение получаемого лечения. Лока, как и предыдущая, тоже небольшая и поиск не отберет много времени.

О том как использовать адское устройство и где активировать его вы можете узнать с картинки, нажав на нее.

Для того что бы собрать адское устройство вам понадобится выбить его эскиз и три ключа: разрушения, ненависти и ужаса. А для того чтобы все это могло выпасть на вас ДОЛЖНЫ быть 5 стаков нефалемской доблести , при этом шанс будет равен 5%.

Усилить вероятность выпада ключей можно используя : СМ1-10%, СМ2-20% … СМ10-100%. Таким образом, с СМ10 при убийстви хранителя вы со 100% вероятностью получите ключ.

Учтите, что после использования адское устройство разрушается, а для создания кольца адского пламени вам понадобится от 3-х (СМ10) до 30 штук (СМ1), и не факт что оно будет хорошим.

Перед активацией адское устройство лучше объединится с двумя другими, а то и четырьмя, игроками. Так вы сможете добыть реагенты для кольца адского пламени значительно быстрее, с учетом того что у каждого из вас есть одно устройство и каждый – его использует.

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

В одной созданной игре может быть активировано 3 адских устройства, при этом каждый открытый портал будет вести к разным связкам боссов, которых всего три. С каждой из них может выпасть реагент для создания кольца адского пламени, но это уже другая история.. которая описана в нашем гайде по созданию кольца адского пламени.)