MCBBS 自定义背景

自定义mcbbs的背景

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         MCBBS 自定义背景
// @namespace    http://fang.blog.miri.site/
// @version      2.4.0
// @icon         https://s2.ax1x.com/2020/02/25/3twNzq.png
// @description  自定义mcbbs的背景
// @author       Mr_Fang
// @match        https://*.mcbbs.net/*
// @grant        none
// ==/UserScript==

(function() {
    // 定义变量
    var storage = window.localStorage;
    var mbg_url = storage.getItem('mbg_url');
    var mbg_opacity = storage.getItem('mbg_opacity');
    var mbg_border_top = storage.getItem('mbg_border_top');
    var mbg_bg_xoffset = storage.getItem('mbg_bg_xoffset');
    var version = "2.4.0"; // 不要动版本号

    // 无法加载jq自动禁用
    if (typeof jQuery == 'undefined') {
        console.error("%cMCBBS 自定义背景脚本已停止运行:\n无法加载jQuery。", "font-weight:bold");
        return false;
    }
    // 在手机版自动禁用
    if (document.getElementsByTagName('meta').viewport) {
        console.error("%cMCBBS 自定义背景脚本已停止运行:\n不支持手机版论坛运行。", "font-weight:bold");
        return false;
    }

    // 更新提醒
    if(storage.getItem('mbg_version') != version){
        showDialog('<style>.alert_info {background-image: none;padding-right: 0px;padding-left: 0px;}</style><div class=""><b>MCBBS 自定义背景已成功从 V'+ storage.getItem('mbg_version') +' 更新至 V'+ version +'</b><hr><p>此次更新内容:</p> <p ><ol style="margin-left: 25px"><li>同步抢先体验版特性</li></ol></div>',
                   'confirm',
                   '<div style="line-height:30px;"><img src="https://s2.ax1x.com/2020/02/25/3twNzq.png" width="20px"> 自定义背景</div>',
                   function() {
            storage["mbg_version"] = version;
        }
                  );
    }

    console.log(" %c MCBBS 自定义背景 %c V"+ version +" ", "color: #fff; background: #f8981d; padding:5px;", "color:#fff; background: #000; padding:5px;");
    console.log(" %c Made by %c 快乐小方 ", "color: #fff; background: #815098; padding:5px;", "color:#fff; background: #000; padding:5px;");


    // 判断透明度是否为空
    if(mbg_opacity == null){
        mbg_opacity = 100;
    }

    // 判断X偏移量是否为空
    if(mbg_bg_xoffset == null){
        mbg_bg_xoffset = 50;    // 默认是居中显示的(50%)
    }

    // 判断此页中是否存个人信息菜单
    if(jq('.user_info_menu_btn').length>0) {
        // 如存在,在个人信息菜单中添加按钮
        jq('.user_info_menu_btn').append('<li><a id="bg_setting">自定义背景</a></li>');
        // 设置窗口
        document.getElementById('bg_setting').addEventListener('click',function(){
            showDialog('<style>.alert_right {background-image: none;padding-right: 0px;padding-left: 0px;}</style><div class=""><b>点击确定保存 刷新后生效</b><hr><p>自定义背景图 <font color="gray">- 请填写图片链接(多行即启用随机显示)</font></p><textarea id="mbg_url_input" style="width: 98%;" rows="5">' + storage.getItem('mbg_url') + '</textarea><p>背景X偏移量 <font color="gray">- 当前' + mbg_bg_xoffset + '%</font></p><input min="0" max="100" type="range" value="' + mbg_bg_xoffset + '" id="mbg_xoffset_input" style="width: 98%;"><div style="margin-top: -8px;"><font>0%</font><font style="float: right;">100%</font></div><p>透明度 <font color="gray">- 当前' + mbg_opacity + '%</font></p><input min="0" max="100" type="range" value="' + mbg_opacity + '" id="mbg_opacity_input" style="width: 98%;"><div style="margin-top: -8px;"><font>0%</font><font style="float: right;">100%</font></div><p>自定义挂件 <font color="gray">- 请填写图片链接(留空或null即不显示)</font></p><input id="mbg_border_top_input" value="'+ storage.getItem('mbg_border_top') +'" style="width: 98%;" ></div>',
                       'right',
                       '<div style="line-height:30px;"><img src="https://s2.ax1x.com/2020/02/25/3twNzq.png" width="20px"> 自定义背景</div>',
                       function() {
                storage["mbg_url"] = document.getElementById("mbg_url_input").value;
                storage["mbg_opacity"] = document.getElementById("mbg_opacity_input").value;
                storage["mbg_bg_xoffset"] = document.getElementById("mbg_xoffset_input").value;
                storage["mbg_border_top"] = document.getElementById("mbg_border_top_input").value;
            },
                       true,
                       {},
                       '<span onclick="showWindow(\'mbg_box\', \'https://www.mcbbs.net/home.php?mod=space&uid=1970274\')" title="点击查看作者"><span style="background: #f8981d; color: #fff; padding: 5px;">MCBBS 自定义背景 </span><span style="background: #000; color: #fff; padding: 5px;"> V2.4</span></span>'
                      );
        })
    }

    //***** 反馈版发帖警告 开始 *****//
    var filename = window.location.href.split("/").slice(window.location.href.split("/").length - 1,window.location.href.split("/").length).toString(String).split(".")[0];
    function GetQueryValue(queryName) {
        var query = decodeURI(window.location.search.substring(1));
        var vars = query.split("&");
        for (var i = 0; i < vars.length; i++) {
            var pair = vars[i].split("=");
            if (pair[0] == queryName) { return pair[1]; }
        }
        return null;
    }
    if(filename == "forum" && GetQueryValue('mod') == "post" && GetQueryValue('action') == "newthread" && GetQueryValue('fid') == "246"){
        showDialog('<style>.alert_right {background-image: none;padding-right: 0px;padding-left: 0px;} .m_c{background: #e74b3c url(https://s1.ax1x.com/2020/05/28/tVeOhQ.jpg) -100px 15px no-repeat; background-size:80%} .m_c .o{ background: #ffffff00;} .alert_right{margin-left: 25%; color: #fff;}</style><font size="4"><b>你正在向反馈与投诉版发布帖子</b></font><p>如果你正在反馈BUG,请先关闭此脚本再次尝试触发BUG。如果你能确定并不是由此脚本引发的BUG,请忽略本提醒。</p>',
                   'right',
                   '<div style="line-height:30px;"><img src="https://s2.ax1x.com/2020/02/25/3twNzq.png" width="20px"> <font color="#fff">来自MCBBS自定义背景脚本的警告</font></div>',
                   {},
                   true,
                   {},
                   '<span onclick="showWindow(\'mbg_box\', \'https://www.mcbbs.net/forum.php?mod=post&action=reply&fid=43&tid=1041361&reppost=18115011&extra=page%3D1&page=1\')" style="color: #fff;" title="点击打开反馈对话框">反馈脚本BUG</span>'
                  );
    }
    //***** 反馈版发帖警告 结束 *****//

    var mbg_urlList = [];
    var bg_css = '';

    // 判断是背景否为空
    if(mbg_url == null || mbg_url == ""){
        // 如果为空直接用mcbbs自己的背景
        mbg_urlList = [''];
    }else{
        // 如果不为空使用自定义背景
        mbg_url = "['" + storage.getItem('mbg_url') + "']";
        var n = mbg_url.split('\n').length - 1;
        for(var l=0;l<n;l++){
            mbg_url = mbg_url.replace('\n',"','");
            //console.log(mbg_url);
        }
        mbg_urlList = eval("(" + mbg_url + ")");
        console.log(mbg_urlList);

        var hsv = mbg_urlList.length; // 获取数组长度
        var ran = Math.floor(Math.random() * hsv); // 取0至数组最大下标值中的随机数(因为floor是向下取整)

        bg_css = 'background-image: url(' + mbg_urlList[ran] + ');';
    }

    // 判断挂件是否为空或“null”
    if(mbg_border_top != null && mbg_border_top != "null"){
        // 这个挂件是论坛自带的,但是被注释掉了
        // 泥潭吉祥物泥猪的路径地址:template/mcbbs/image/muddy_pig_subhero_updated6-19.png
        jq('<img class="mc_top" src="' + mbg_border_top + '" draggable="false"/>').insertBefore(".mc_map_border_top");
    }

    // 在head里添加css
    jq("head").append('<style id="mbg_css">img.mc_top{z-index:99;} #body_fixed_bg {' + bg_css + 'background-position: ' + mbg_bg_xoffset + '%; height: 100%;} div.mc_map_wp,div.mw>div.bm.bw0 { opacity: ' + mbg_opacity/100 + '; transition: opacity 0.5s; -webkit-transition: opacity 0.5s; } div.mc_map_wp:hover,div.mw>div.bm.bw0:hover { opacity: 1; }</style>');

})();