网易BUFF价格比例插件---CSGO版

try to take over the world! --Written by Pronax

目前为 2020-10-25 提交的版本。查看 最新版本

// ==UserScript==
// @name         网易BUFF价格比例插件---CSGO版
// @namespace    http://pronax.wtf/
// @version      2020.10.25
// @description  try to take over the world! --Written by Pronax
// @copyright    2020, Pronax
// @author       Pronax
// @license MIT
// @match        https://buff.163.com/market/goods*
// @match        https://buff.163.com/market/?game=csgo*
// @grant        GM_addStyle
// ==/UserScript==

(function() {
    'use strict';

    var gradient_color_high = "80,39,255";      // 最大值渐变色,比例越接近最大值(默认是1)会越趋近这个颜色,格式:['r','g','b'] 或者 "r,g,b"
    var gradient_color_low = "255,30,30";       // 最小值渐变色,比例越接近最小值(默认是0.63)会越趋近这个颜色,格式:['r','g','b'] 或者 "r,g,b"
    const min_range = 0.63;                     // 比例取值最小范围,小于等于这个值的比例会直接渲染成最小值渐变色
    const needSort = false;                     // 是否自动按比例从低到高排序   需要:true 不需要:false

    if(!Array.isArray(gradient_color_high)){
        gradient_color_high = gradient_color_high.split(",");
    }
    if(!Array.isArray(gradient_color_low)){
        gradient_color_low = gradient_color_low.split(",");
    }

    GM_addStyle("#sort_scale{display:inline-block;padding:0 6px 0 16px;cursor:pointer;height:32px;margin-left:10px;line-height:32px;text-align:center;border-radius:4px;min-width:60px;border:1px solid #45536c;color:#63779b;vertical-align:middle}#sort_scale.enabled{background:#45536c;color:#fff}");

    // 保留2位小数
    function roundToTwo(num,status){
        return status?Math.round((num*100)+0.5)/100:Math.round((num*100))/100;
    }

    function gradient(max,min,f){
        if(typeof max==="string"){
            max *= 1;
        }
        if(typeof min==="string"){
            min *= 1;
        }
        if(f>=1||f<=min_range){
            f = f>=1?1:0;
        }else{
            f = (f-min_range)/(1-min_range);
        }
        return max>=min?f*(max-min)+min:(1-f)*(min-max)+max;
    }

    window.pronax_buff_scale_plugin_load = function (){
        // 检测商品是否加载完成
        if ($("#market-selling-list").length == 0) {
            setTimeout(pronax_buff_scale_plugin_load, 100);
            return;
        }
        let price_list = $(".f_Strong");
        let isLogined = price_list[0].getAttribute("id")=="navbar-cash-amount";
        let temp_price = price_list[isLogined?1:0].childNodes[1].innerText+$(price_list[isLogined?1:0].childNodes[2]).text();
        let basic_price = roundToTwo(temp_price/1.15,true);
        for (let i = isLogined?2:1; i < price_list.length; i++) {
            let seller_price = price_list[i].innerText.slice(1);
            let scale = roundToTwo(seller_price/basic_price);
            if(i==(isLogined?2:1)){
                $(".f_Strong .hide-usd")[0].innerText = basic_price;
                let red = gradient(gradient_color_high[0],gradient_color_low[0],scale);
                let green = gradient(gradient_color_high[1],gradient_color_low[1],scale);
                let blue = gradient(gradient_color_high[2],gradient_color_low[2],scale);
                if($(".good_scale").length==0){
                    $(price_list[isLogined?1:0]).append($("<big class='good_scale' style='color: rgb("+red+" "+green+" "+blue+");margin-left: 6px'>"+scale+"</big>"));
                }else{
                    $(".good_scale").text(scale);
                }
            }
            $(price_list[i].parentNode).next().append($("<b>"+scale+"</b>"));
        }
    }

    window.buff_list_scale_plugin_load = function (){
        // 检测商品是否加载完成
        if ($("#j_list_card>.card_csgo>li").length == 0) {
            setTimeout(buff_list_scale_plugin_load, 100);
            return;
        }
        var goods = $("#j_list_card>.card_csgo>li");
        var status = goods.length;
        for(let i=0;i<goods.length;i++){
            let target = $(goods[i]).find("p>strong.f_Strong")[0];
            let buff_price = target.innerText.slice(2);
            let url = $(goods[i]).children("a")[0].href;
            $.ajax({
                url: url,
                method: "get",
                success: function (data) {
                    status--;
                    let steam_price = $(data).find(".detail-summ .f_Strong>span.custom-currency")[0].getAttribute('data-price');
                    let scale = roundToTwo(buff_price/(steam_price/1.15),true);
                    let red = gradient(gradient_color_high[0],gradient_color_low[0],scale);
                    let green = gradient(gradient_color_high[1],gradient_color_low[1],scale);
                    let blue = gradient(gradient_color_high[2],gradient_color_low[2],scale);
                    $(target).append($('<strong class="f_Strong price_scale" style="color: rgb('+red+' '+green+' '+blue+');margin-left: 10px;">'+scale+'</strong>'));
                    $(goods[i]).attr("data-sort",scale);
                    if(needSort&&status==0){
                        $("#sort_scale").click();
                    }
                },
                error: function (msg) {
                    console.log(msg);
                }
            });
        }
    }

    if(location.pathname === "/market/goods"){
        $(document).ajaxSuccess(function (event,status,header,result){
            if(header.url.slice(0,28)==="/api/market/goods/sell_order"){
                $("#sort_scale").removeClass();
                pronax_buff_scale_plugin_load();
            }
        });
    }else if(location.pathname === "/market/"){
        $(".w-OrderGroup").after($('<div id="sort_scale"><span>比例<i class="icon icon_order"></i></span></div>'));
        $("#sort_scale").click(function(){
            let btn = this;
            let flag = $(this).hasClass("w-Order_asc");
            if($(this).hasClass("enabled")){
                $(this).toggleClass("w-Order_asc w-Order_des");
            }else{
                $(this).addClass("enabled").addClass("w-Order_asc");
            }
            $(".card_csgo>li").sort(function(a, b) {
                let av = $(a).attr("data-sort")-0;
                let bv = $(b).attr("data-sort")-0;
                if (av>bv) {
                    return flag?-1:1;
                } else if (av<bv) {
                    return flag?1:-1;
                }
                return 0;
            }).appendTo(".card_csgo");
        });
        $(document).ajaxSuccess(function (event,status,header,result){
            if(header.url.slice(0,11)==="/api/market"){
                $("#sort_scale").removeClass();
                buff_list_scale_plugin_load();
            }
        });
    }

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址