// ==UserScript== // @name Steam-AutoCraft // @version 1.6.1 // @description AutoCraft Steam Community Badges // @author 10101000 // @include /^https?:\/\/steamcommunity\.com\/+(id\/+[A-Za-z0-9$-_.+!*'(),]+|profiles\/+[0-9]+)\/+(badges\/?|gamecards\/+[0-9]+\/?).*$/ // @copyright 2016 10101000 // @grant none // ==/UserScript== // Vars var badgesPageURL = '/badges/'; var badgeCraftLimit = ''; var canCraftBadge = 0; var craftRefreshTimeoutmsDef = 2000; var craftRefreshTimeoutms = craftRefreshTimeoutmsDef; var gamecardHref = ''; var gamecardHrefLinks = ''; var gameIdBlackList = ''; var isBadgesPage = 0; var isGameCardsPage = 0; var pageRefreshTimeoutmsDef = 10000; var pageRefreshTimeoutms = pageRefreshTimeoutmsDef; var redirect = 0; var skipCraft = 0; var steamAutoCraftVersion = '1.6.1'; // Badges var badgeLinks = jQuery('.badge_details_set_favorite'); // Badges progress var badgeProgressTasks = jQuery('.badge_progress_tasks'); // Gamecards var invLinks = jQuery('.gamecards_inventorylink'); // Gamecard progress var badgeProgress = jQuery('.gamecard_badge_progress'); // Run jQuery(document).ready(function(){ // Check settings checkSettings(); // Determine current page if (invLinks.length >= 1) { isGameCardsPage = 1; } else if ((badgeLinks.length >= 1) && (invLinks.length <= 0)) { isBadgesPage = 1; } // Check for badges to craft if (jQuery('.badge_craft_button').length >= 1){ if ((badgeProgressTasks.length >= 1) || (badgeProgress.length >= 1)){ canCraftBadge = 1; } } // Badge page logic if (isBadgesPage === 1) { window.sessionStorage.badgesPageURL = window.location.href; if (window.sessionStorage.craftRecursive) { if (canCraftBadge === 0) { delete window.sessionStorage.craftRecursive; } } } // Gamecard page logic if (isGameCardsPage === 1) { if ((canCraftBadge === 0) && (window.sessionStorage.craftRecursive)) { delete window.sessionStorage.autoCraftState; if(window.localStorage.badgeCraftLimit) { if(!window.sessionStorage.craftCount) { window.sessionStorage.craftCount = 0; } window.sessionStorage.craftCount = +window.sessionStorage.craftCount + 1; } if(window.sessionStorage.badgesPageURL) { badgesPageURL = window.sessionStorage.badgesPageURL; } delete window.sessionStorage.badgesPageURL; // If all badges have been crafted, load badges page window.location.href = badgesPageURL; } } // Detect conflict with userscript if (jQuery('#autocraft').length >= 1) { var steamAutoCraftConflictError = 'Conflict detected, please remove or disable either the Steam-AutoCraft extension or the userscript.'; alert(steamAutoCraftConflictError); throw new Error(steamAutoCraftConflictError); } // Check blacklist and add button jQuery.when(checkBlacklist()).done( function() { addButton(); }); // Disable reset button when applicable if ((pageRefreshTimeoutms === pageRefreshTimeoutmsDef) && (craftRefreshTimeoutms === craftRefreshTimeoutmsDef) && (!gameIdBlackList)) { jQuery('#autocraft_button_reset').addClass('btn_disabled'); jQuery('#autocraft_button_reset').prop('disabled',true); } else { jQuery('#autocraft_button_reset').removeClass('btn_disabled'); } // Start autoCraft if ((canCraftBadge === 1) && ((window.sessionStorage.autoCraftState) || (window.sessionStorage.craftRecursive))) { if ((window.localStorage.badgeCraftLimit) && (window.sessionStorage.craftCount)) { if (+window.sessionStorage.craftCount >= +window.localStorage.badgeCraftLimit) { delete window.sessionStorage.craftRecursive; delete window.sessionStorage.craftCount; redirect = 0; skipCraft = 1; } } if (redirect === 1) { window.location.href = gamecardHref; } jQuery.when(checkBlacklist()).done( function() { if (skipCraft === 0) { craftBadge(); } }); } }); function addButton() { // Set HTML vars var settingsDiv = `