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

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

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

// ==UserScript==
// @name         网易BUFF价格比例插件---CSGO版
// @namespace    http://pronax.wtf/
// @version      2020.10.26
// @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 market_color_high = "80,39,255";        // 最大值渐变色,比例越接近最大值(默认是1)会越趋近这个颜色,格式:['r','g','b'] 或者 "r,g,b"
    var market_color_low = "255,30,30";         // 最小值渐变色,比例越接近最小值(默认是0.63)会越趋近这个颜色,格式:['r','g','b'] 或者 "r,g,b"
    // 饰品页面的渐变色
    var goods_color_high = "160,255,197";
    var goods_color_low = "255,45,73";

    const min_range = 0.63;                     // 比例取值最小范围,小于等于这个值的比例会直接渲染成最小值渐变色
    const needSort = false;                     // 是否自动按比例从低到高排序   需要:true 不需要:false

    if(!Array.isArray(market_color_high))market_color_high = market_color_high.split(",");
    if(!Array.isArray(market_color_low))market_color_low = market_color_low.split(",");
    if(!Array.isArray(goods_color_high))goods_color_high = goods_color_high.split(",");
    if(!Array.isArray(goods_color_low))goods_color_low = goods_color_low.split(",");

    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.buff_goods_scale_plugin_load = function (){
        // 检测商品是否加载完成
        if ($("#market-selling-list").length == 0) {
            setTimeout(buff_goods_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]).text().split("(")[0].slice(1);
        console.log(temp_price);
        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(goods_color_high[0],goods_color_low[0],scale);
                let green = gradient(goods_color_high[1],goods_color_low[1],scale);
                let blue = gradient(goods_color_high[2],goods_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;
        }
        $(".list_card li>p>span.l_Right").removeClass("l_Right").addClass("l_Left");
        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(market_color_high[0],market_color_low[0],scale);
                    let green = gradient(market_color_high[1],market_color_low[1],scale);
                    let blue = gradient(market_color_high[2],market_color_low[2],scale);
                    $(target).append($('<strong class="f_Strong price_scale" style="color: rgb('+red+' '+green+' '+blue+');float: right;">'+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();
                buff_goods_scale_plugin_load();
            }
        });
    }else if(location.pathname === "/market/"){
        // 样式
        GM_addStyle("#sort_scale{display:inline-block;padding:0 6px 0 16px;cursor:pointer;height:32px;margin-left:5px;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}.list_card li h3{margin: 8px 12px 9px;}.list_card li>p>span.l_Left{margin-top:inherit}.list_card li>p>strong.f_Strong{display:block;font-size:20px;min-height:20px;}");
        // 下一页按钮
        $(".floatbar>ul").prepend("<li><a id='buff_tool_nextpage'><i class='icon icon_comment_arr' style='transform: rotate(90deg); width: 1.125rem; height: 1.125rem; left: 0.25rem; position: relative;'></i><p style='color:#fff;'>下一页</p></a></li>");
        $("#buff_tool_nextpage").click(function () {
            $(".page-link.next").click();
        }).parent().css("cursor", "pointer");
        // 排序按钮
        $(".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,17)==="/api/market/goods"){
                $("#sort_scale").removeClass();
                buff_list_scale_plugin_load();
            }
        });
    }

})();

QingJ © 2025

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