// ==UserScript== // @name CSGO Market Tool // @namespace https://coding.net/u/sffxzzp // @version 0.72 // @description A script that display float value and stickers of guns in market list. // @author sffxzzp // @match http://steamcommunity.com/market/listings/730/* // @icon http://steamcommunity.com/favicon.ico // @grant GM_xmlhttpRequest // @connect metjm.net // @downloadURL none // ==/UserScript== (function() { function guid() { function S4() { return (((1+Math.random())*0x10000)|0).toString(16).substring(1); } return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4()); } function getFloatValue(listId, guid, itemLink, itemId) { var cButton = document.getElementById(listId).children[4].children[0].children[0].children[0]; if (itemId == "first") { GM_xmlhttpRequest({ method: 'get', url: "http://metjm.net/shared/screenshots-v5.php?cmd=request_new_link&user_uuid="+guid+"&user_client=1&custom_rotation_id=0&use_logo=0&mode=7&resolution=2&forceOpskins=0&inspect_link=" + itemLink, onload: function(response) { var result = JSON.parse(response.responseText); if (result.success===true) { cButton.parentNode.parentNode.parentNode.onclick = function() {}; setTimeout(function(){getFloatValue(listId, guid, itemLink, result.result.screen_id);}, 1000); } else if (result.success===false) { cButton.innerHTML = "查询失败"; } } }); } else { GM_xmlhttpRequest({ method: 'get', url: "http://metjm.net/shared/screenshots-v5.php?cmd=request_screenshot_status&id="+itemId, onload: function(response) { var result = JSON.parse(response.responseText); if (result.success===true) { if (result.result.status==1) { if (result.result.item_floatvalue===0) { cButton.innerHTML = "队列中:第"+result.result.place_in_queue+"位"; setTimeout(function(){getFloatValue(listId, guid, itemLink, itemId);}, 10000); } else if (result.result.item_floatvalue > 0) { cButton.innerHTML = result.result.item_floatvalue; setTimeout(function(){getFloatValue(listId, guid, itemLink, itemId);}, 10000); } } else if (result.result.status==2) { cButton.innerHTML = result.result.item_floatvalue; cButton.parentNode.className="floatvalue_button btn_green_white_innerfade btn_small"; cButton.parentNode.parentNode.parentNode.onclick = function() { window.open(result.result.image_url); }; } } else if (result.success===false) { cButton.innerHTML = "查询失败"; } } }); } } function removeDiv (id) { var del = document.getElementById(id); del.parentNode.removeChild(del); } function addPanel () { var helpContent = "

使用方法较简单,只需要按下「点击查询磨损」按钮即可。

如果想批量查询当前页,按「查询所有物品磨损」。

查询会显示磨损值,此时按钮颜色可能为蓝色或绿色。

蓝色说明截图暂未准备就绪,变为绿色后点击可打开截图。

当插件未加载时,可「重新加载」。

插件运行正常请不要点击「重新加载」按钮。

"; var panelHeader = document.createElement("div"); panelHeader.setAttribute("class", "newmodal_header"); var panelCont = document.createElement("div"); panelCont.setAttribute("class", "newmodal_close"); panelCont.onclick = function () { removeDiv("panel"); removeDiv("panel_background"); }; panelHeader.appendChild(panelCont); panelCont = document.createElement("div"); panelCont.setAttribute("class", "ellipsis"); panelCont.innerHTML = "使用帮助"; panelHeader.appendChild(panelCont); var panelHeaderBorder = document.createElement("div"); panelHeaderBorder.setAttribute("class", "newmodal_header_border"); panelHeaderBorder.appendChild(panelHeader); var panelContBorder = document.createElement("div"); panelContBorder.setAttribute("class", "newmodal_content_border"); panelContBorder.innerHTML = "
"+helpContent+"
"; var newPanel = document.createElement("div"); newPanel.setAttribute("id", "panel"); newPanel.setAttribute("class", "newmodal"); if (window.innerWidth) winWidth = window.innerWidth; else if ((document.body) && (document.body.clientWidth)) winWidth = document.body.clientWidth; if (window.innerHeight) winHeight = window.innerHeight; else if ((document.body) && (document.body.clientHeight)) winHeight = document.body.clientHeight; if (document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth) { winHeight = document.documentElement.clientHeight; winWidth = document.documentElement.clientWidth; } newPanel.setAttribute("style", "position: fixed; z-index: 1000; left: "+(winWidth-788)/2+"px; top: "+(winHeight-258)/2+"px;"); newPanel.appendChild(panelHeaderBorder); newPanel.appendChild(panelContBorder); var panelBack =document.createElement("div"); panelBack.setAttribute("id", "panel_background"); panelBack.setAttribute("class", "newmodal_background"); panelBack.setAttribute("style", "opacity: 0.8;"); document.body.appendChild(newPanel); document.body.appendChild(panelBack); } function addButton () { var oriButtonDiv = document.getElementById('market_buyorder_info').children[0]; var oriButton = document.getElementById('market_commodity_buyrequests'); var newButton = document.createElement("div"); newButton.setAttribute("style", "float: right; padding-right: 10px"); newButton.innerHTML = "重新加载"; newButton.onclick = function () {handlePage();}; oriButtonDiv.insertBefore(newButton, oriButton); newButton = document.createElement("div"); newButton.setAttribute("style", "float: right; padding-right: 10px"); newButton.innerHTML = "使用帮助"; newButton.onclick = function () {addPanel();}; oriButtonDiv.insertBefore(newButton, oriButton); } function addPageCtl () { var oriPageCtl = document.getElementsByClassName('market_paging_summary')[0]; var oriPageDiv = document.getElementById('searchResults_ctn'); var newPageCtl = document.createElement("div"); newPageCtl.setAttribute("style", "float: right; padding-right: 20px"); var newPageInput = document.createElement("input"); newPageInput.setAttribute("class", "filter_search_box market_search_filter_search_box"); newPageInput.setAttribute("style", "width: 20px;"); newPageInput.setAttribute("type", "text"); newPageInput.setAttribute("autocomplete", "off"); newPageCtl.appendChild(newPageInput); var newPageGo = document.createElement("span"); newPageGo.setAttribute("class", "btn_darkblue_white_innerfade btn_small"); newPageGo.onclick = function () { g_oSearchResults.GoToPage( (newPageInput.value-1), true ); setTimeout(function(){reloadScript(document.getElementsByClassName("market_recent_listing_row")[0].id);}, 100); }; newPageGo.innerHTML = " Go! "; newPageCtl.appendChild(newPageGo); oriPageDiv.insertBefore(newPageCtl, oriPageCtl); var newPageSizeInput = document.createElement("input"); newPageSizeInput.setAttribute("class", "filter_search_box market_search_filter_search_box"); newPageSizeInput.setAttribute("style", "width: 30px;"); newPageSizeInput.setAttribute("type", "text"); newPageSizeInput.setAttribute("autocomplete", "off"); var newPageSizeGo = document.createElement("span"); newPageSizeGo.setAttribute("class", "btn_darkblue_white_innerfade btn_small"); newPageSizeGo.onclick = function () { if (g_oSearchResults.m_cPageSize != newPageSizeInput.value && newPageSizeInput.value < 101) { var oldPageSize = g_oSearchResults.m_cPageSize; g_oSearchResults.m_cPageSize = newPageSizeInput.value; g_oSearchResults.m_cMaxPages = Math.ceil(g_oSearchResults.m_cTotalCount / newPageSizeInput.value); g_oSearchResults.GoToPage(g_oSearchResults.m_iCurrentPage, true); setTimeout(function(){reloadScript(oldPageSize);}, 10); } }; newPageSizeGo.innerHTML = " 修改 "; var newPageSizeCtl = document.createElement("div"); newPageSizeCtl.setAttribute("class", "market_pagesize_options"); newPageSizeCtl.setAttribute("style", "margin: 0 0 2em 0; font-size: 12px;"); newPageSizeCtl.innerHTML = "每页显示数: "; newPageSizeCtl.appendChild(newPageSizeInput); newPageSizeCtl.appendChild(newPageSizeGo); document.getElementById('searchResults_ctn').appendChild(newPageSizeCtl); } function addBanner() { var listBanner = document.getElementsByClassName('market_listing_table_header')[0]; var childBanner = document.createElement("span"); var nameBanner = listBanner.children[2]; childBanner.setAttribute("style", "padding-left:4vw;"); nameBanner.appendChild(childBanner); childBanner = document.createElement("a"); childBanner.setAttribute("id", "getAllFloat"); childBanner.setAttribute("class", "floatvalue_button btn_darkblue_white_innerfade btn_small"); childBanner.innerHTML = "查询所有物品磨损"; nameBanner.appendChild(childBanner); childBanner = document.createElement("span"); childBanner.setAttribute("style", "width:20%"); childBanner.setAttribute("class", "market_listing_right_cell market_listing_stickers_buttons market_listing_sticker"); childBanner.innerHTML = "印花"; listBanner.insertBefore(childBanner, nameBanner); childBanner = document.createElement("span"); childBanner.setAttribute("style", "width:15%"); childBanner.setAttribute("class", "market_listing_right_cell market_listing_action_buttons market_listing_wear"); childBanner.innerHTML = "磨损值"; listBanner.insertBefore(childBanner, nameBanner); } function addStyle() { var customstyle = document.createElement("style"); customstyle.innerHTML = '.csgo-stickers-show img:hover{opacity:1;width:96px;margin:-16px -24px -24px -24px;z-index:4;-moz-transition:.2s;-o-transition:.2s;-webkit-transition:.2s;transition:.2s;} .csgo-sticker{width: 48px;opacity: 1;vertical-align: middle;z-index: 3;-moz-transition: .1s; -o-transition: .1s; -webkit-transition: .1s; transition: .1s;}'; document.head.appendChild(customstyle); } function reloadScript(oriId) { var loaded = document.getElementsByClassName("market_listing_wear"); if (typeof(oriId) === "number") { if (document.getElementById('searchResultsRows').getElementsByClassName('market_listing_row').length == oriId) { setTimeout(function(){reloadScript(oriId);}, 200); } else { if (loaded.length === 0) { handlePage(); } } } else { var newId = document.getElementsByClassName("market_recent_listing_row")[0].id; if (newId == oriId) { setTimeout(function(){reloadScript(oriId);}, 200); } else { if (loaded.length === 0) { handlePage(); } } } } function handlePage() { var isHandled = document.getElementsByClassName("market_listing_table_header")[0].children.length; if (isHandled > 3) {return False;} addBanner(); addStyle(); var itemDetails = g_rgAssets[730][2]; var itemLinks = []; var itemStickers = []; var NameTags = []; var reStickers = /(https+:\/\/.+?\.png)/gi; var reStickerDes = /Sticker\:\ (.+?)<\/center>/; var StickerImgs, StickerDes, StickerInfo, lastCount; var i = 0; for (var itemDetail in itemDetails) { itemLinks[i] = itemDetails[itemDetail].actions[0].link.replace("%assetid%", itemDetails[itemDetail].id); itemStickers[i] = '
'; lastCount = itemDetails[itemDetail].descriptions.length - 1; NameTags[i] = itemDetails[itemDetail].hasOwnProperty('fraudwarnings')?itemDetails[itemDetail].fraudwarnings[0]:''; StickerInfo = itemDetails[itemDetail].descriptions[lastCount].value; if (StickerInfo.length > 1) { StickerImgs = StickerInfo.match(reStickers); StickerDes = StickerInfo.match(reStickerDes)[1].split(', '); for (var j=0;j'; } } else { itemStickers[i] += ''; } itemStickers[i] += '
'; i++; } var itemList = document.getElementsByClassName('market_recent_listing_row'); var nameList, clickedButton; var getAllFloat = document.getElementById('getAllFloat'); getAllFloat.onclick = function() { var subButton = document.getElementsByClassName('floatvalue_button'); for (i=1;i<11;i++) { subButton[i].children[0].innerHTML = '磨损查询中…'; getFloatValue(itemList[i-1].id, guid(), encodeURIComponent(itemLinks[i-1]), "first"); } getAllFloat.onclick = function () {}; }; for (i=0;i点击查询磨损'; itemList[i].insertBefore(floatButton, nameList); } var pagelinks = document.getElementsByClassName('market_paging_pagelink'); for (var pagelink in pagelinks) { pagelinks[pagelink].onclick = function() { setTimeout(function(){reloadScript(document.getElementsByClassName("market_recent_listing_row")[0].id);}, 10); }; } var pageButtons = document.getElementsByClassName('pagebtn'); for (var pageButton in pageButtons) { pageButtons[pageButton].onclick = function() { setTimeout(function(){reloadScript(document.getElementsByClassName("market_recent_listing_row")[0].id);}, 10); }; } } addButton(); handlePage(); addPageCtl(); })(); function resize() { if (window.innerWidth) winWidth = window.innerWidth; else if ((document.body) && (document.body.clientWidth)) winWidth = document.body.clientWidth; if (window.innerHeight) winHeight = window.innerHeight; else if ((document.body) && (document.body.clientHeight)) winHeight = document.body.clientHeight; if (document.documentElement && document.documentElement.clientHeight && document.documentElement.clientWidth) { winHeight = document.documentElement.clientHeight; winWidth = document.documentElement.clientWidth; } var newPanel = document.getElementById("panel"); if (newPanel) { newPanel.setAttribute("style", "position: fixed; z-index: 1000; left: "+(winWidth-788)/2+"px; top: "+(winHeight-258)/2+"px;"); } } window.onresize = resize;