Расширение Chrome для обмена карточками в Steam
Пост для тех, кто активно обменивается карточками
На выходных написал расширение для Chrome, чтобы облегчить процесс обмена карточками на trade-форумах
https://chrome.google.com/webstore/detail/steam-card-exchang...
Как оно работает
На странице значка какой-нибудь игры у вас есть 2 одинаковые карточки и нет каких-нибудь других карточек. Вы идёте на trade-форум, там нет нужного для вас предложения обмена. Вы вручную пишете текст в виде
[H] Card1 [W] Card2, Card3, Card4
Когда вам нужно это сделать только один раз, то вручную ещё можно всё это сделать, но когда у вас этот процесс идёт постоянно и не один раз, то становится утомительно. И здесь в помощь (писал в первую очередь для себя) приходит расширение: на странице значка кликаете на иконку расширения в браузере и получаете готовый текст, который потом можно вставить на trade-форуме и создать новую тему.
Например, для игры Plague Inc: Evolved я кликаю на расширение и на выбор получаю 2 варианта текста для обмена:
1) 📱✔ [H] Fungus [W] Bacteria, Virus, Parasite, Prion, Nano-Virus
2) 📱✔ [H] 3 [W] 1, 2, 4, 5, 6
Копирую текст и создаю тему на trade-форуме.
Feedback
Принимаю баг-репорты, делал для себя и вроде всё работает (на самом деле нет, иногда приходится жать F5, чтобы информация о картах подхватилась корректно). Принимаю пожелания по улучшению, но по скорости реализации не могу обещать ничего.
P.S.: Сейчас расширение требует разрешения на просмотр данных всех сайтов, я это поправлю в течение суток, если кто параноик, то тут исходный код, где можно посмотреть, что расширение ничего не крадёт
https://github.com/HawkeyePierce89/Steam-card-exchange-assis...
Дроп карт с рекомендаций steam
Переходим на страницу рекомендаций >> https://store.steampowered.com/explore
Открываем консоль (chrome) ctrl + shift + J
Сам скрипт
______________________________________________________________________________________________________
var DiscoveryQueueModal, GenerateQueue = function( queueNumber )
{
if( DiscoveryQueueModal )
{
DiscoveryQueueModal.Dismiss();
}
DiscoveryQueueModal = ShowBlockingWaitDialog( 'Generating the queue...', 'Generating new discovery queue #' + ++queueNumber );
jQuery.post( 'https://store.steampowered.com/explore/generatenewdiscoveryq...', { sessionid: g_sessionID, queuetype: 0 } ).done( function( data )
{
var requests = [], done = 0, errorShown;
for( var i = 0; i < data.queue.length; i++ )
{
var request = jQuery.post( 'https://store.steampowered.com/app/10', { appid_to_clear_from_queue: data.queue[ i ], sessionid: g_sessionID } );
request.done( function()
{
if( errorShown )
{
return;
}
DiscoveryQueueModal.Dismiss();
DiscoveryQueueModal = ShowBlockingWaitDialog( 'Exploring the queue...', 'Request ' + ++done + ' of ' + data.queue.length );
} );
request.fail( function()
{
errorShown = true;
setTimeout( () => GenerateQueue( queueNumber - 1 ), 1000 );
DiscoveryQueueModal.Dismiss();
DiscoveryQueueModal = ShowConfirmDialog( 'Error', 'Failed to clear queue item #' + ++done + '. Trying again in a second.', 'Try again' );
} );
requests.push( request );
}
jQuery.when.apply( jQuery, requests ).done( function()
{
DiscoveryQueueModal.Dismiss();
if( queueNumber < 3 )
{
GenerateQueue( queueNumber );
}
else
{
DiscoveryQueueModal = ShowConfirmDialog( 'Done', 'Queue has been explored ' + queueNumber + ' times', 'Reload the page' ).done( function() {
ShowBlockingWaitDialog( 'Reloading the page' );
window.location.reload();
});
}
} );
} ).fail( function()
{
setTimeout( () => GenerateQueue( queueNumber - 1 ), 1000 );
DiscoveryQueueModal.Dismiss();
DiscoveryQueueModal = ShowBlockingWaitDialog( 'Error', 'Failed to generate new queue #' + queueNumber + '. Trying again in a second.' );
} );
};
var buttonContainer = document.createElement( 'div' );
buttonContainer.className = 'discovery_queue_customize_ctn';
buttonContainer.innerHTML = '<div class="btnv6_blue_hoverfade btn_medium" id="js-cheat-queue"><span>Cheat the queue</span></div><span>Discover the queue three times to get the sale cards</span>';
var container = document.querySelector( '.discovery_queue_customize_ctn' );
container.parentNode.insertBefore( buttonContainer, container );
var button = document.getElementById( 'js-cheat-queue' );
button.addEventListener( 'click', function( )
{
GenerateQueue( 0 );
}, false );
______________________________________________________________________________________________________
Вставляем скрипт + Enter.
Жмем на кнопку
Юзерсприт для автосбора ежедневных карточек
В связи с распродажей хочу поделиться своим юзерскриптом для сбора ежедневных карточек за просмотр своей Discovery Queue.
Что умеет:
1. Переходить на следующую игру в списке
2. Завершать один список и начинать другой (только в случае если новый список дает карточку, иначе останавливается).
Что не умеет:
1. Автопроходить запрос возраста. Его надо ввести только 1 раз, а значит не такая большая проблема, а вот воспроизвести и протестировать на боте - сложно.
2. Не проходить уже начатую очередь, если она не даст карточки (потому что узнать об этом в середине очереди нельзя). То есть если хотите действительно пройти и посмотреть игры - придется отключать скрипт.
Установить через Tampermonkey, зайти на Steam Explore страницу, дальше скрипт сделает все сам, повторять каждый день на время распродажи. По ссылке чуть более подробная инфа, там же и исходники - посмотреть что ничего лишнего скрипт не делает.
Скрипт мой, тег моё.
PS В ближайшие несколько часов вероятно сервера стима будут гореть - периодически переход на новую страницу кидает 500, придется обновлять вручную.
PPS Сам не писатель, сам читатель, поправьте если что не так сделал.
Soda Dungeon
Jack's Gang
Раздача игры: https://www.indiegala.com/crackerjack#giveaway
1. Авторизуемся.
2. Ищем блок с нашей игрой, закрываем предложение лайкнуть их страницы Facebook и Twitter.
3. Вступаем в их группу Steam: https://steamcommunity.com/groups/indiegala
4. Нажимаем на кнопку "Claim Free Copy"
5. Подтверждаем капчу и получаем ссылку на свою библиотеку на e-mail, в которой ищем нашу заветную игру.
Игра в Steam: http://store.steampowered.com/app/607270/Jacks_Gang/
КК - Есть.