您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
添加愿望单和添加FOD的代码搜集于https://keylol.com/论坛,https://steamdb.info/freepackages/,并非原创。批量激活的脚本来自于:https://gf.qytechs.cn/zh-CN/scripts/32718-steamredeemkeys。因为两个脚本不兼容,因此进行合并。
当前为
// ==UserScript== // @name Steam添加FOD // @namespace sourcewater // @version 0.39.4 // @description 添加愿望单和添加FOD的代码搜集于https://keylol.com/论坛,https://steamdb.info/freepackages/,并非原创。批量激活的脚本来自于:https://gf.qytechs.cn/zh-CN/scripts/32718-steamredeemkeys。因为两个脚本不兼容,因此进行合并。 // @author sourcewater // @match https://store.steampowered.com/account/registerkey // @grant none // ==/UserScript== (function() { 'use strict'; function getText(f){ return f.toString().replace(/^[^\/]+\/\*!?\s?/, '').replace(/\*\/[^\/]+$/, ''); } let maincontent=document.getElementById("main_content"); let leftcontent=document.getElementsByClassName("leftcol")[0]; let headelement=document.getElementsByTagName("head")[0]; let dselectscriptnode=document.createElement("script"); dselectscriptnode.type="text/javascript"; dselectscriptnode.src="https://steamstore-a.akamaihd.net/public/shared/javascript/dselect.js?v=yT8Q5U2-O4wX&l=schinese"; let steamaccountcss=getText(function(){/* .steamaccount_currencyselect { text-align: right; } .steamaccount_currencyselect .dselect_container { display: inline-block; vertical-align: middle; text-align: left; } .currency_change_confirm_dialog { max-width: 670px; } .currency_change_confirm_dialog p { margin: 24px 0; } .currency_change_confirm_dialog b { color: #67c1f5; font-weight: normal; } .currency_change_option_ctn { vertical-align: top; margin: 0 6%; } .currency_change_option_ctn:first-child { margin-bottom: 12px; } .currency_change_option { font-family: "Motiva Sans", Sans-serif; font-weight: 300; display: block; } .currency_change_option > span { display: block; padding: 9px 19px; } .currency_change_option .country { font-size: 20px; } .currency_change_option .notes { font-size: 13px; line-height: 18px; } .currency_change_option_ctn > p { font-size: 12px; margin: 8px 8px 0 8px; } p.currency_change_confirm_dialog_footer { margin-top: 128px; } .youraccount_updating_shipping_button_row { padding-top: 10px; } #s_s_s_s_free_game_list, #s_s_s_s_free_game_list_failed, #s_s_s_s_free_game_list_owned, #s_s_s_s_free_game_list span, #s_s_s_s_free_game_list_failed span, #s_s_s_s_free_game_list_owned span{ font-weight: bold; display: inline-block; } #s_s_s_s_free_game_list .s_s_s_s_free_game_list_row, #s_s_s_s_free_game_list_failed .s_s_s_s_free_game_list_row, #s_s_s_s_free_game_list_owned .s_s_s_s_free_game_list_row{ margin-top: 7px; white-space: nowrap; } #s_s_s_s_free_game_list .s_s_s_s_free_game_list_index, #s_s_s_s_free_game_list_failed .s_s_s_s_free_game_list_index, #s_s_s_s_free_game_list_owned .s_s_s_s_free_game_list_index{ width: 30px; text-align: right; padding: 0px 5px; border-radius:4px; } #s_s_s_s_free_game_list .s_s_s_s_free_game_list_subid, #s_s_s_s_free_game_list_failed .s_s_s_s_free_game_list_subid, #s_s_s_s_free_game_list_owned .s_s_s_s_free_game_list_subid{ color: #ffffff; background-color: #551414; margin: 0px 3px; width: 70px; text-align: center; padding: 0px 5px; border-radius:4px; } #s_s_s_s_free_game_list .s_s_s_s_free_game_list_status, #s_s_s_s_free_game_list_owned .s_s_s_s_free_game_list_status{ color: #d00; background-color: #aaa; margin: 0px 3px; text-align: center; padding: 0px 5px; border-radius:4px; } #s_s_s_s_free_game_list .s_s_s_s_free_game_list_status{ width: 30px; } #s_s_s_s_free_game_list_owned .s_s_s_s_free_game_list_status{ width: 45px; } #s_s_s_s_free_game_list .s_s_s_s_free_game_list_name, #s_s_s_s_free_game_list_failed .s_s_s_s_free_game_list_status{ margin: 0px 3px; padding: 0px 5px; border-radius:4px; text-align: left; } #s_s_s_s_free_game_list_failed .s_s_s_s_free_game_list_status{ color: #ff7b00; background-color: rgba(255,255,255,0.1); } #s_s_s_s_free_game_list .s_s_s_s_free_game_list_name{ color: #236; background-color: #eeeeee; } */}); let cleardiv=getText(function(){/* <div style="clear: both;"></div><br> */}); let steamaccountcssnode=document.createElement("style"); steamaccountcssnode.type="text/css"; steamaccountcssnode.innerHTML=steamaccountcss; headelement.appendChild(steamaccountcssnode); let changecurrencycontainer=document.createElement("div"); changecurrencycontainer.setAttribute("id","s_s_s_s_change_currency_container"); jQuery.get("//store.steampowered.com/cart",function(result){ let framenode=document.createElement("frame"); framenode.innerHTML=result; let allscripts=framenode.getElementsByTagName("script"); let changecurrencyscript; let ccnodes=framenode.getElementsByClassName("cart_currency_select"); if(ccnodes.length>0){ let changecurrency=ccnodes[0]; changecurrency.style="position:relative;"; changecurrency=changecurrency.parentNode; for(let i=0;i<allscripts.length;++i){ let text=allscripts[i].innerHTML; if(text.match(/OnUserCountryCurrencyChange/)&&text.match(/PresentCountryCurrencyChangeDialog/)){ changecurrencyscript=text; headelement.appendChild(dselectscriptnode); console.log("账单地址与IP不同。"); } } let changecurrencyscriptnode=document.createElement("script"); changecurrencyscriptnode.type="text/javascript"; if(changecurrency){ changecurrencyscriptnode.innerHTML=changecurrencyscript.replace("https://store.steampowered.com/cart/","https://store.steampowered.com/account/registerkey"); headelement.appendChild(changecurrencyscriptnode); document.getElementById("s_s_s_s_change_currency_container").innerHTML=changecurrency.outerHTML; } }else{ console.log("账单地址与IP一致。"); } }); let batchredeemscript=getText(function(){/* var s_s_s_autoDivideNum = 9; var s_s_s_waitingSeconds = 20; var s_s_s_ajaxTimeout = 15; var s_s_s_keyCount = 0; var s_s_s_recvCount = 0; var s_s_s_timer; var s_s_s_allUnusedKeys = []; var s_s_s_failureDetail = { 14: '无效激活码', 15: '重复激活', 53: '次数上限', 13: '地区限制', 9: '已拥有', 24: '缺少主游戏', 36: '需要PS3?', 50: '这是充值码', }; var s_s_s_myTexts = { fail: '失败', success: '成功', network: '网络错误或超时', line: '——', nothing: '', others: '其他错误', unknown: '未知错误', redeeming: '激活中', waiting: '等待中', showUnusedKey: '显示未使用的Key', hideUnusedKey: '隐藏未使用的Key', }; var s_s_s_unusedKeyReasons = [ '次数上限', '地区限制', '已拥有', '缺少主游戏', '其他错误', '未知错误', '网络错误或超时', ]; function s_s_s_redeemKey(key) { jQuery.ajax({ url: 'https://store.steampowered.com/account/ajaxregisterkey/', data: { product_key: key, sessionid: g_sessionID }, type: 'post', dataType: 'json', timeout: 1000 * s_s_s_ajaxTimeout, beforeSend: function(){ if (jQuery('table').is(':hidden')) { jQuery('table').fadeIn(); } }, complete: function() { }, error: function() { s_s_s_tableUpdateKey(key, s_s_s_myTexts.fail, s_s_s_myTexts.network, 0, s_s_s_myTexts.nothing); return; }, success: function(data) { //console.log(data); if (data.success == 1) { s_s_s_tableUpdateKey(key, s_s_s_myTexts.success, s_s_s_myTexts.line, data.purchase_receipt_info.line_items[0].packageid, data.purchase_receipt_info.line_items[0].line_item_description); return; } else if (data.purchase_result_details !== undefined && data.purchase_receipt_info) { if (!data.purchase_receipt_info.line_items[0]) { s_s_s_tableUpdateKey(key, s_s_s_myTexts.fail, s_s_s_failureDetail[data.purchase_result_details] ? s_s_s_failureDetail[data.purchase_result_details] : s_s_s_myTexts.others, 0, s_s_s_myTexts.nothing); } else { s_s_s_tableUpdateKey(key, s_s_s_myTexts.fail, s_s_s_failureDetail[data.purchase_result_details] ? s_s_s_failureDetail[data.purchase_result_details] : s_s_s_myTexts.others, data.purchase_receipt_info.line_items[0].packageid, data.purchase_receipt_info.line_items[0].line_item_description); } return; } tableUpdateKey(key, s_s_s_myTexts.fail, s_s_s_myTexts.nothing, 0, s_s_s_myTexts.nothing); } }); } function s_s_s_setUnusedKeys(key, success, reason, subId, subName) { if (success && s_s_s_allUnusedKeys.includes(key)) { s_s_s_allUnusedKeys = s_s_s_allUnusedKeys.filter(function(keyItem){ return keyItem != key; }); var listObjects = jQuery('li'); for(var i = 0; i < listObjects.length; i++) { var listElement = listObjects[i]; var listObject = jQuery(listElement); if(listElement.innerHTML.includes(key)) { listObject.remove(); } } } else if (!success && !s_s_s_allUnusedKeys.includes(key) && s_s_s_unusedKeyReasons.includes(reason)) { var listObject = jQuery('<li></li>'); listObject.html(key + ' ( ' + reason + (subId != 0 ? (': <code>' + subId + '</code> ' + subName) : '') + ' )'); jQuery('#unusedKeys').append(listObject); s_s_s_allUnusedKeys.push(key); } } function s_s_s_tableInsertKey(key) { s_s_s_keyCount++; var row = jQuery('<tr></tr>'); // number row.append('<td class="nobr">' + s_s_s_keyCount + '</td>'); //key row.append('<td class="nobr"><code>' + key + '</code></td>'); //redeeming... row.append('<td colspan="3">' + s_s_s_myTexts.redeeming + '...</td>'); jQuery('tbody').prepend(row); } function s_s_s_tableWaitKey(key) { s_s_s_keyCount++; var row = jQuery('<tr></tr>'); // number row.append('<td class="nobr">' + s_s_s_keyCount + '</td>'); //key row.append('<td class="nobr"><code>' + key + '</code></td>'); //waiting... row.append('<td colspan="3">' + s_s_s_myTexts.waiting + ' (' + s_s_s_waitingSeconds + '秒)...</td>'); jQuery('tbody').prepend(row); } function s_s_s_tableUpdateKey(key, result, detail, subId, subName) { s_s_s_setUnusedKeys(key, result === s_s_s_myTexts.success, detail, subId, subName); s_s_s_recvCount++; if (s_s_s_recvCount == s_s_s_keyCount) { jQuery('#buttonRedeem').fadeIn(); jQuery('#inputKey').removeAttr('disabled'); } var rowObjects = jQuery('tr'); for (var i = 1; i < rowObjects.length; i++) { var rowElement = rowObjects[i]; var rowObject = jQuery(rowElement); if (rowObject.children()[1].innerHTML.includes(key)&& rowObject.children()[2].innerHTML.includes(s_s_s_myTexts.redeeming)) { rowObject.children()[2].remove(); // result if (result == s_s_s_myTexts.fail) rowObject.append('<td class="nobr" style="color:red">' + result + '</td>'); else rowObject.append('<td class="nobr" style="color:green">' + result + '</td>'); // detail rowObject.append('<td class="nobr">' + detail + '</td>'); // sub if (subId === 0) { rowObject.append('<td>——</td>'); } else { rowObject.append('<td><code>' + subId + '</code> <a href="https://steamdb.info/sub/' + subId + '/" target="_blank">' + subName + '</a></td>'); } break; } } } function s_s_s_getKeysByRE(text) { text = text.trim().toUpperCase(); var reg = new RegExp('([0-9A-Z]{5}-?){2,4}[0-9A-Z]{5}', 'g'); var keys = []; var result = void 0; while (result = reg.exec(text)) { keys.push(result[0]); } return keys; } function s_s_s_startTimer() { s_s_s_timer = setInterval(function() { var flag = false; var nowKey = 0; var rowObjects = jQuery('tr'); for (var i = rowObjects.length - 1; i >= 1; i--) { var rowElement = rowObjects[i]; var rowObject = jQuery(rowElement); if (rowObject.children()[2].innerHTML.includes(s_s_s_myTexts.waiting)) { nowKey++; if (nowKey <= s_s_s_autoDivideNum) { var key = rowObject.children()[1].innerHTML.substring(6); key = key.substring(0, key.indexOf('</code>')); rowObject.children()[2].innerHTML = '<td colspan="3">' + s_s_s_myTexts.redeeming + '...</td>'; s_s_s_redeemKey(key); } else { flag = true; break; } } } if (!flag) { clearInterval(s_s_s_timer); } }, 1000 * s_s_s_waitingSeconds); } function s_s_s_redeemKeys() { var keys = s_s_s_getKeysByRE(jQuery('#inputKey').val().trim()); if (keys.length <= 0) { ShowAlertDialog("失败","没有找到符合格式的key!"); return; } jQuery('#buttonRedeem').fadeOut(); jQuery('#inputKey').attr('disabled', 'disabled'); var nowKey = 0; keys.forEach(function (key) { nowKey++; if (nowKey <= s_s_s_autoDivideNum) { s_s_s_tableInsertKey(key); s_s_s_redeemKey(key); } else { s_s_s_tableWaitKey(key); } }); if (nowKey > s_s_s_autoDivideNum) { s_s_s_startTimer(); } } function s_s_s_toggleUnusedKeyArea() { if (jQuery('#unusedKeyArea').is(':hidden')) { jQuery('#unusedKeyArea').fadeIn(); } else { jQuery('#unusedKeyArea').fadeOut(); } } function s_s_s_showUnusedKey() { s_s_s_toggleUnusedKeyArea(); if (this.innerHTML.includes(s_s_s_myTexts.showUnusedKey)) { this.innerHTML = this.innerHTML.replace(s_s_s_myTexts.showUnusedKey, s_s_s_myTexts.hideUnusedKey); } else { this.innerHTML = this.innerHTML.replace(s_s_s_myTexts.hideUnusedKey, s_s_s_myTexts.showUnusedKey); } } */}); let batchredeemscriptnode=document.createElement("script"); batchredeemscriptnode.innerHTML=batchredeemscript; headelement.appendChild(batchredeemscriptnode); let batchredeemkey=getText(function(){/* <br> <div class="block_content checkout_content_box" style="height:230px;" class="registerkey_input_box_text"> <div>产品代码</div> <div style="float: left;"> <textarea class="form-control" cols="80" rows="10" name="inputKey" id="inputKey" class="registerkey_input_box_text" placeholder="支持批量激活,可以把整个网页文字复制过来 若一次激活的Key的数量超过9个则会自动分批激活(等待20秒)"></textarea> </div> <div class="button_row"> <a tabindex="300" id="buttonRedeem" class="btnv6_blue_hoverfade btn_medium" href="javascript:s_s_s_redeemKeys();" style="margin:10px 0px;"> <span>激活!</span> </a> <a tabindex="300" id="buttonShowUnused" class="btnv6_blue_hoverfade btn_medium" href="javascript:s_s_s_showUnusedKey();" style="margin:10px 0px;"> <span>显示未使用的Key</span> </a> </div> </div> <br> <br> <br> <br> <div class="notice_box_content" id="unusedKeyArea" style="display: none"> <b>未使用的Key:</b><br> <div><ol id="unusedKeys"> </ol></div> </div> <br> <div class="table-responsive table-condensed"> <table class="table table-hover" style="display: none"> <caption><h2>激活记录</h2></caption><thead><th>No.</th><th>Key</th> <th>结果</th><th>详情</th><th>Sub</th></thead><tbody></tbody> </table></div><br><br><br> */}); document.getElementById("registerkey_form").style.display="none"; let keyexamplestext=document.getElementById("registerkey_examples_text"); keyexamplestext.outerHTML=batchredeemkey+keyexamplestext.outerHTML; let outputtablecss = ` table a { color: pink; } td { white-space: nowrap; overflow: hidden; } code { padding:2px 4px; font-size:90%; color:#c7254e; background-color:#f9f2f4; border-radius:3px } .notice_box_content { border: 1px solid #a25024; border-radius: 3px; width: 525px; color: #acb2b8; font-size: 14px; font-family: "Motiva Sans", Sans-serif; font-weight: normal; padding: 15px 15px; margin-bottom: 15px; } .notice_box_content b { font-weight: normal; color: #f47b20; } li { white-space: nowrap; overflow: hidden; } `; let outputtablenode=document.createElement("style"); outputtablenode.type="text/css"; outputtablenode.innerHTML=outputtablecss; headelement.appendChild(outputtablenode); let addtowishlistscript=getText(function(){/* function s_s_s_addtowishlistfunction(){ let args=arguments[0].split(","); if(!args[0].trim().match(/^[\d]+$/)){ ShowAlertDialog("失败","请输入APP ID,多个APP ID用“,”隔开"); return; } let appidlist=new Array(); for(let i=0;i<args.length;++i){ appidlist[i]=args[i].trim(); } let bdialog; let i=0; function addwl(){ AddToWishlist(appidlist[i],'add_to_wishlist_area', 'add_to_wishlist_area_success', 'add_to_wishlist_area_fail','1_5_9__407'); if(document.getElementById("followgame_appid").checked){ jQuery.post( '//store.steampowered.com/explore/followgame/', {sessionid: g_sessionID,appid: appidlist[i] }).done( function() { console.log("followed"); }).fail( function() { console.log("follow failed!"); }); } if(i==(appidlist.length-1)){ if(i!=0) bdialog.Dismiss(); ShowAlertDialog("成功","已经全部添加至愿望单"); return; }else{ if(bdialog) bdialog.Dismiss(); bdialog=ShowBlockingWaitDialog('正在添加...',(i+1)+'/'+appidlist.length); ++i; setTimeout(addwl,500); } } addwl(); } */}); let addtowishlistscriptnode=document.createElement("script"); addtowishlistscriptnode.innerHTML=addtowishlistscript; headelement.appendChild(addtowishlistscriptnode); let addtowishlist=getText(function(){/* <br> <br> <h2>输入APP ID添加锁偏好游戏至愿望单,输入SUB ID在Steam上添加免费产品。多个ID之间用“,”隔开。(<span style="color:#c6d4df;">锁国区的游戏需要切换账单。切换帐单会有点延迟,取决于网速,一开始点不动的话,等一会就能点了。</span>)</h2> <div>输入APP ID</div> <div style="float: left;" class="block_content checkout_content_box"> <input style="width:450px;" name="wishlist_appid" id="wishlist_appid" type="text" class="registerkey_input_box_text" value=""> </div> <div class="button_row"> <a tabindex="300" href="javascript:s_s_s_addtowishlistfunction(document.getElementById('wishlist_appid').value);" class="btnv6_blue_hoverfade btn_medium"> <span>添加至愿望单</span> </a> </div> <div style="clear: both;"></div> <div class="block_content checkout_content_box" style="margin-top:10px"> <input type="checkbox" name="followgame_appid" value="1" id="followgame_appid"> <label for="followgame_appid"> <span>同时关注游戏</span> </label> </div> */}); var addfreescript=getText(function(){/* function s_s_s_addfreefunction(){ let args=arguments[0].split(","); if(!args[0].trim().match(/^[\d]+$/)){ ShowAlertDialog("失败","请输入SUB ID,多个SUB ID用“,”隔开"); return; } let subidlist=new Array(); for(let i=0;i<args.length;++i){ subidlist[i]=args[i].trim(); } if (location.hostname !== 'store.steampowered.com') { alert('请在steam商店运行本代码!'); return; } else if (typeof jQuery !== 'function') { ShowAlertDialog('失败', '脚本需要jQuery库!'); return; } else if (document.getElementById('header_notification_area') === null) { ShowAlertDialog('失败', '你必须处于登录(不可用)状态.'); return; } let freePackages = subidlist;//change here[221306,221459] let freegamelistEle=document.getElementById("s_s_s_s_free_game_list"); let addFreeFailedEle=document.getElementById("s_s_s_s_free_game_list_failed"); let addFreeOwnedEle=document.getElementById("s_s_s_s_free_game_list_owned"); let loaded = 0, total = freePackages.length, modal = ShowBlockingWaitDialog('正在添加...', '请等待所有请求结束。'), count=0,failCount=0,ownedCount=0,i=0; function addfreelicense(){ if(GDynamicStore.s_rgOwnedPackages[freePackages[i]]){ ++loaded; ++ownedCount; if(addFreeOwnedEle.getElementsByClassName("s_s_s_s_free_game_list_row").length==0){ addFreeOwnedEle.innerHTML+=`<span class="s_s_s_s_free_game_list_index">索引</span> <span class="s_s_s_s_free_game_list_subid">SUB ID</span> <span class="s_s_s_s_free_game_list_status">状态</span><br>`; } let freegamelistownedItem=`<span class="s_s_s_s_free_game_list_row"><span class="s_s_s_s_free_game_list_index">${ownedCount}</span> <span class="s_s_s_s_free_game_list_subid"><a target="_blank" href="https://steamdb.info/sub/${freePackages[i]}">${freePackages[i]}</a></span> <span class="s_s_s_s_free_game_list_status">已拥有</span></span><br>`; addFreeOwnedEle.innerHTML+=freegamelistownedItem; modal.Dismiss(); if (loaded === total) { ShowAlertDialog('完成!', '已全部添加完毕。'); } else { modal = ShowBlockingWaitDialog('正在添加...', '载入 ' + loaded + '/' + total); ++i; addfreelicense(); } }else{ jQuery.post( '//store.steampowered.com/checkout/addfreelicense', { action: 'add_to_cart', sessionid: g_sessionID, subid: freePackages[i] }, function(data) { ++loaded; let resultFrame=document.createElement("frame"); resultFrame.innerHTML=data; let afs=resultFrame.getElementsByClassName("add_free_content_success_area"); let errs=resultFrame.getElementsByClassName("error"); if(afs.length>0){ ++count; if(freegamelistEle.getElementsByClassName("s_s_s_s_free_game_list_row").length==0){ freegamelistEle.innerHTML+=`<span class="s_s_s_s_free_game_list_index">索引</span> <span class="s_s_s_s_free_game_list_subid">SUB ID</span> <span class="s_s_s_s_free_game_list_status">状态</span> <span class="s_s_s_s_free_game_list_name">游戏名称</span><br>`; } let addFreeSuccess=afs[0]; let gameName=/([^\n\r]*) 已被绑定至您的 Steam 帐户。/.exec(addFreeSuccess.firstElementChild.innerHTML)[1]; let freegamelistItem=`<span class="s_s_s_s_free_game_list_row"><span class="s_s_s_s_free_game_list_index">${count}</span> <span class="s_s_s_s_free_game_list_subid"><a target="_blank" href="https://steamdb.info/sub/${freePackages[i]}">${freePackages[i]}</a></span> <span class="s_s_s_s_free_game_list_status">成功</span> <span class="s_s_s_s_free_game_list_name">${gameName}</span></span><br>`; freegamelistEle.innerHTML+=freegamelistItem; } if(errs.length>0){ let errMessage=errs[0].innerHTML; ++failCount; if(addFreeFailedEle.getElementsByClassName("s_s_s_s_free_game_list_row").length==0){ addFreeFailedEle.innerHTML+=`<span class="s_s_s_s_free_game_list_index">索引</span> <span class="s_s_s_s_free_game_list_subid">SUB ID</span> <span class="s_s_s_s_free_game_list_status">状态</span><br>`; } let freegamefailedlistItem=`<span class="s_s_s_s_free_game_list_row"><span class="s_s_s_s_free_game_list_index">${failCount}</span> <span class="s_s_s_s_free_game_list_subid"><a target="_blank" href="https://steamdb.info/sub/${freePackages[i]}">${freePackages[i]}</a></span> <span class="s_s_s_s_free_game_list_status">${errMessage}</span></span><br>`; addFreeFailedEle.innerHTML+=freegamefailedlistItem; } modal.Dismiss(); if (loaded === total) { ShowAlertDialog('完成!', '已全部添加完毕。'); } else { modal = ShowBlockingWaitDialog('正在添加...', '载入 ' + loaded + '/' + total); ++i; setTimeout(addfreelicense,200); } } ).fail(function() { ++loaded; modal.Dismiss(); if (loaded === total) { ShowAlertDialog('完成!', '已全部添加完毕。'); } else { modal = ShowBlockingWaitDialog('正在添加...', '载入 ' + loaded + '/' + total); ++i; ++failCount; if(addFreeFailedEle.getElementsByClassName("s_s_s_s_free_game_list_row").length==0){ addFreeFailedEle.innerHTML+=`<span class="s_s_s_s_free_game_list_index">索引</span> <span class="s_s_s_s_free_game_list_subid">SUB ID</span> <span class="s_s_s_s_free_game_list_status">状态</span><br>`; } let freegamefailedlistItem=`<span class="s_s_s_s_free_game_list_row"><span class="s_s_s_s_free_game_list_index">${failCount}</span> <span class="s_s_s_s_free_game_list_subid"><a target="_blank" href="https://steamdb.info/sub/${freePackages[i]}">${freePackages[i]}</a></span> <span class="s_s_s_s_free_game_list_status">发送请求错误!</span></span><br>`; addFreeFailedEle.innerHTML+=freegamefailedlistItem; setTimeout(addfreelicense,200); } }); } } addfreelicense(); } */}); let addfreescriptnode=document.createElement("script"); addfreescriptnode.innerHTML=addfreescript; headelement.appendChild(addfreescriptnode); let addfree=getText(function(){/* <br> <br> <h2>输入SUB ID在Steam上添加免费产品。多个ID之间用“,”隔开。(<span style="color:#c6d4df;">锁国区的游戏需要切换账单。切换帐单会有点延迟,取决于网速,一开始点不动的话,等一会就能点了。</span>)</h2> <div>输入SUB ID</div> <div style="float: left;" class="block_content checkout_content_box"> <input style="width:450px;" name="free_appid" id="free_appid" type="text" class="registerkey_input_box_text" value=""> </div> <div class="button_row"> <a tabindex="300" href="javascript:s_s_s_addfreefunction(document.getElementById('free_appid').value);" class="btnv6_blue_hoverfade btn_medium"> <span>添加免费游戏</span> </a> </div> */}); leftcontent.innerHTML=leftcontent.innerHTML+addfree;//+addtowishlist; leftcontent.appendChild(changecurrencycontainer); let cleardivnode=document.createElement("div"); leftcontent.appendChild(cleardivnode); cleardivnode.outerHTML=cleardiv; let freegamelist=document.createElement("div"); freegamelist.setAttribute("id","s_s_s_s_free_game_list"); freegamelist.innerHTML="<br>"; leftcontent.appendChild(freegamelist); let freegamelistFailed=document.createElement("div"); freegamelistFailed.setAttribute("id","s_s_s_s_free_game_list_failed"); freegamelistFailed.innerHTML="<br>"; leftcontent.appendChild(freegamelistFailed); let freegamelistOwned=document.createElement("div"); freegamelistOwned.setAttribute("id","s_s_s_s_free_game_list_owned"); freegamelistOwned.innerHTML="<br>"; leftcontent.appendChild(freegamelistOwned); leftcontent.innerHTML+="<br><br><br><br><br>"; })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址