Greasy Fork

Greasy Fork is available in English.

🎇🎇🎇防沉迷减点料🎇🎇🎇

[❤️哪都能用] 已支持4366,37,9377,游戏狗,u7u9,7724,17yy,qq空间部分游戏,07073,7k7k,4399 [⚡️更加快速] 0.99秒急速减料 [😱别怕大人] 大人来了就按"大人键" [✔️高可用率] 持续更新更靠谱 [⭕健康提醒] 每隔一段时间提醒用户休息, 防止用户沉迷游戏无法自拔 [🕶 手动减料] 防沉迷减料不成功? 对着防沉迷弹窗按快捷键 [🥬一键净化] 去除花里胡哨的玩意 👍👍👍 热烈庆祝 GreasyFork 总安装量破千 👏👏👏

当前为 2022-04-04 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         🎇🎇🎇防沉迷减点料🎇🎇🎇

// @description  [❤️哪都能用] 已支持4366,37,9377,游戏狗,u7u9,7724,17yy,qq空间部分游戏,07073,7k7k,4399 [⚡️更加快速] 0.99秒急速减料 [😱别怕大人] 大人来了就按"大人键" [✔️高可用率] 持续更新更靠谱 [⭕健康提醒] 每隔一段时间提醒用户休息, 防止用户沉迷游戏无法自拔 [🕶 手动减料] 防沉迷减料不成功? 对着防沉迷弹窗按快捷键 [🥬一键净化] 去除花里胡哨的玩意 👍👍👍 热烈庆祝 GreasyFork 总安装量破千 👏👏👏

// @namespace    https://fcmsb250.github.io/
// @version      4.7.2
// @icon         https://fcmsb250.github.io/favicon.ico
// @author       mininb666 http://greasyfork.icu/zh-CN/users/822325-mininb666 / dsy4567 https://github.com/dsy4567
// @run-at       document-start
// @require      https://code.jquery.com/jquery-3.6.0.min.js

// @include      *://h5.07073.*/*

// @include      *://*.4399.*/*
// @include      *://*.*4399.*/*
// @include      *://*.4399*.*/*
// @include      *://*.iwan4399.*/*
// @include      *://*.aiwan4399.*/*
// @include      *://*.zxwyouxi.*/*

// @include      *://*.7k7k.*/*

// @include      *://gameapp.qq.com/*

// @include      *://*.17yy.*/*

// @include      *://*.7724.*/*

// @include      *://*.u7u9.*/*

// @include      *://*.gamedog.*/*

// @include      *://*.9377.*/*

// @include      *://*.37.*/*

// @include      *://*.4366.*/*

// @grant        GM_addStyle
// @grant        GM_getValue
// @grant        GM_info
// @grant        GM_notification
// @grant        GM_openInTab
// @grant        GM_registerMenuCommand
// @grant        GM_setValue
// @grant        GM_unregisterMenuCommand
// @grant        unsafeWindow

// @homepageURL  https://fcmsb250.github.io/
// @supportURL   https://github.com/dsy4567/Fucking-Anti-Indulgence/

// ==/UserScript==

// NO CTRL+C OR CTRL+V
// NO CTRL+C OR CTRL+V
// NO CTRL+C OR CTRL+V

/**
 *  ________ ___  ___  ________  ___  __            ___  _________
 * |\  _____\\  \|\  \|\   ____\|\  \|\  \         |\  \|\___   ___\     |
 * \ \  \__/\ \  \\\  \ \  \___|\ \  \/  /|_       \ \  \|___ \  \_|     |
 *  \ \   __\\ \  \\\  \ \  \    \ \   ___  \       \ \  \   \ \  \      |
 *   \ \  \_| \ \  \\\  \ \  \____\ \  \\ \  \       \ \  \   \ \  \     |
 *    \ \__\   \ \_______\ \_______\ \__\\ \__\       \ \__\   \ \__\   \|/
 *     \|__|    \|_______|\|_______|\|__| \|__|        \|__|    \|__|    v
 *
 * ________________________________________________________________
 * |                                                              |
 * |                       未成年限制登录提醒                     |
 * |                                                              |
 * |您使用的是未成年账号,仅周五、周六、周日及法定节假日晚上8:00- |
 * |9:00可以游戏!当前已被限制!                                  |
 * |                                                              |
 * |            ______________________________________            |
 * |            |           下次可玩游戏时段         |            |
 * |            |                                    |            |
 * |            |         本周五晚上8:00-9:00        |            |
 * |            |____________________________________|            |
 * |                                                              |
 * |温馨提示:                                                    |
 * |1.如果身份信息有误,请点击》》申请修改《《                    |
 * |2.如果您身份信息已经变动,可点击》》刷新身份《《              |
 * |                ____________    ____________                  |
 * |                |          |    |          |                  |
 * |                | 更换账号 |    |   确定   |                  |
 * |                |__________|    |__________|                  |
 * |______________________________________________________________|
 */

"use strict";
var D = new Date();

// if (self == top) {
//     if (
//         GM_getValue("版本") != GM_info.script.version &&
//         GM_info.script.version == "4.5.5.1fgfgfg"
//     ) {
//         GM_notification(
//             "快看看有什么新功能吧",
//             "🔥🔥🔥防沉迷减点料🔥🔥🔥 更新完毕",
//             "",
//             () => {
//                 GM_openInTab(
//                     "http://greasyfork.icu/zh-CN/scripts/437233-%E9%98%B2%E6%B2%89%E8%BF%B7%E5%8A%A0%E7%82%B9%E6%96%99"
//                 );
//             }
//         );
//     }
// }

function 改变值(值, 默认值, 回调) {
    if (GM_getValue(值, 默认值) == "1") {
        GM_setValue(值, "0");
    } else if (GM_getValue(值, 默认值) == "0") {
        GM_setValue(值, "1");
    } else {
        GM_setValue(值, 默认值);
    }
    if (回调) {
        回调();
    }
}
function 初始化值(值, 默认值, 回调) {
    if (GM_getValue(值, "天知道是啥") == "天知道是啥") {
        GM_setValue(值, 默认值);
    }
    if (回调) {
        回调();
    }
}
function 检测状态(值) {
    if (GM_getValue(值) == "1") {
        return "✅已启用 ";
    } else if (GM_getValue(值) == "0") {
        return "❌已停用 ";
    } else {
        return "⚠️配置错误 ";
    }
}
function qs(选择器) {
    return document.querySelector(选择器);
}
function qsa(选择器) {
    return document.querySelectorAll(选择器);
}

GM_setValue("版本", GM_info.script.version);
初始化值("安装日期", String(Math.floor(D.getTime() / 1000 / 60 / 60 / 24)));
初始化值("已提建议", "0");
初始化值("停用快捷键", "0");
初始化值("停用提醒", "0");
初始化值("净化脚本", "0");
// 初始化值("自动保存游戏真实地址", "1");
// 初始化值("一堆游戏真实地址", [null]);

if (GM_getValue("净化脚本") == "1") {
    GM_notification = () => {};
}

var 玩了几分钟 = 0;
var 用了多少天 = Math.ceil(D.getTime() / 1000 / 60 / 60 / 24) - Number(GM_getValue("安装日期"));
var 减料成功 = 0;
var 一个弹窗的样式 = { remove: () => {} };
var 最后一个菜单id = 0;

// 即将推出的游戏真实地址管理器
// var 游戏真实地址管理器已准备好 = 0;
// var 游戏真实地址管理器;
// var 一堆游戏真实地址管理器元素;
// var 一堆游戏真实地址 = GM_getValue("一堆游戏真实地址", [null]);
// var 游戏真实地址; // 在游戏真实地址管理器中显示
// var 真实地址; // 指定在游戏真实地址管理器中显示的内容
// var 关闭;
// var 要删除的真实地址;
// var 确定;
// var 开关;
// var 状态;
// var 说明;

const 网址 = location.href;
const 脚本信息 = JSON.stringify({
    浏览器: navigator.userAgent,
    脚本能更新: GM_info.scriptWillUpdate,
    脚本版本: GM_info.script.version,
    脚本更新地址: GM_info.script.updateURL,
    脚本管理器: GM_info.scriptHandler,
    脚本管理器版本: GM_info.version,
    用多久: 用了多少天,
});
const 开发者配置 = {
    启用调试: 0,
    始终处于游戏状态: 0,
    输出减料时间: 0,
    禁用自动防沉迷减料: 0,
    在控制台使用脚本变量函数和GM: 0,
};

var 一堆伞兵玩意 = [
    "#addiv",
    "#anti-indulge",
    "#anti-indulge-prompt",
    "#Anti_mask",
    "#Anti_open",
    "#chCoverDiv",
    "#codepop6",
    "#cover",
    "#div_dialog",
    "#easyDialogBox",
    "#fcmIframe",
    "#Guide",
    "#loginCertify",
    "#messageBox",
    "#overlay",
    "#page_wallpaper > div.xiaowei.xiaowei-orange > div.xw-left > div.xw-game > div.xw-top > div > div",
    "#pop2",
    "#pusher",
    "#shadow",
    "#swfdiv > div.box",
    "#tc100",
    "#yx_log",

    ".codegs",
    ".cmMask",
    ".fixedModal",
    ".mask",
    ".play_load",
    ".popup-c",
    ".realName",
    ".sdkDialog",
    ".toolDialog",
    ".ui-forbidden",
    ".webtipss",

    "body > div.show_box.popup_bg",
];

function 更新菜单() {
    const 一堆菜单 = [
        ["❤️您已尽情欢乐" + 用了多少天 + "天", undefined, undefined, 1],
        ["❤️游戏时间: " + 玩了几分钟 + "分钟,请合理安排游戏时间", undefined, undefined, 1],

        [
            "👉再次减料按 alt +  鼠标中键",
            () => {
                减料();
                普通减料();
            },
            undefined,
        ],
        [
            "👉大人来了按 shift + 鼠标中键 (解除请再次减料)",
            () => {
                大人来了();
            },
            undefined,
        ],
        [
            "👉手动减料对着防沉迷按 shift + alt + 鼠标右键",
            () => {
                alert("手动减料对着防沉迷按 shift + alt + 鼠标右键");
            },
            undefined,
        ],
        [
            检测状态("停用快捷键") + " 停用快捷键",
            () => {
                改变值("停用快捷键", "0", () => {
                    更新菜单();
                });
            },
            undefined,
        ],
        [
            检测状态("净化脚本") + " 净化脚本",
            () => {
                改变值("净化脚本", "0", () => {
                    location.reload();
                });
            },
            undefined,
        ],
        // ["🌐管理已保存的游戏真实地址", 管理游戏真实地址, undefined],
        // [
        //     "👍给个好评/📝反馈问题",
        //     () => {
        //         GM_openInTab("http://greasyfork.icu/zh-CN/scripts/437233/feedback");
        //     },
        //     undefined,
        // ],
        [
            "⛔解决访问错误",
            () => {
                location.href = 网址;
            },
            undefined,
        ],
    ];
    最后一个菜单id = 一堆菜单.length;

    // TM
    for (
        let 菜单id = 最后一个菜单id - 一堆菜单.length * 2;
        菜单id < 最后一个菜单id + 一堆菜单.length * 2;
        菜单id++
    ) {
        GM_unregisterMenuCommand(菜单id);
    }

    // VM
    一堆菜单.forEach((菜单) => {
        GM_unregisterMenuCommand(菜单[0]);
    });
    GM_unregisterMenuCommand("✅ 停用快捷键");
    GM_unregisterMenuCommand("❌ 停用快捷键");
    GM_unregisterMenuCommand("✅ 停用健康游戏提醒");
    GM_unregisterMenuCommand("❌ 停用健康游戏提醒");
    GM_unregisterMenuCommand("❤️游戏时间: " + (玩了几分钟 - 1) + "分钟,请合理安排游戏时间");

    一堆菜单.forEach((菜单) => {
        const 菜单名 = 菜单[0];
        const 函数 = 菜单[1];
        const 快捷键 = 菜单[2];
        const 需要净化 = 菜单[3];

        if (GM_getValue("净化脚本") == "1" && 需要净化) {
            return;
        }
        最后一个菜单id = GM_registerMenuCommand(菜单名, 函数, 快捷键);
    });
}

function 大人来了() {
    console.log("[防沉迷减点料] 大人来了");
    try {
        一个弹窗的样式.remove();
        console.log("[防沉迷减点料] 已去除样式");
    } catch (err) {}

    一个弹窗的样式 = GM_addStyle(
        '*{margin:0;padding:0}ul{list-style:none;}.fl{float:left;}.fr{float:right;}.mysdkDialog{position:absolute;left:50%;top:50vh;margin:-210px 0 0 -309px;width:618px;z-index:20020}.mysdkDialog .myfcmdialog{color:black;position:absolute;left:0;top:0;width:620px;padding-bottom:30px;font-family:"microsoft yahei";font-size:14px;background:#fff;border-radius:8px;}.mysdkDialog .myfcmdialog .close-btn{position:absolute;right:0;top:0;width:40px;height:40px;background-color:red;line-height:40px;cursor:pointer;display:none}.mysdkDialog .myfcmdialog .title{line-height:30px;text-align:center;font-size:22px;font-weight:700;padding:25px 0 0;margin:0 40px;color:#454545;border:0;height:auto;float:none;width:auto;text-indent:0;}.mysdkDialog .myfcmdialog .stitle{text-align:left;line-height:1.6;margin:15px 40px 0;font-size:16px;}.mysdkDialog .myfcmdialog .stitle span{color:#ffa92d;}.mysdkDialog .myfcmdialog .mod-tip{margin:20px 40px 0;background:#F0F0F0;padding:12px 15px;border-radius:4px;color:#333;text-align:left}.mysdkDialog .myfcmdialog .tip-title{font-size:16px;font-weight:400;}.mysdkDialog .myfcmdialog .tip-info{margin-top:5px;line-height:26px;font-size:14px;}.mysdkDialog .myfcmdialog .tip-info li{font-size:16px;line-height:26px}.mysdkDialog .myfcmdialog .tip-info a{color:#FAA61B;text-decoration:underline;margin:0 4px;cursor:pointer;}.mysdkDialog .myfcmdialog .mod-btn{text-align:center;font-size:0;line-height:0;margin:25px 40px 0;}.mysdkDialog .myfcmdialog .mod-btn .btn-fcmprimary{display:inline-block;width:140px;height:38px;line-height:38px;border:1px solid #69bb01;color:#69bb01;font-size:14px;margin:0 15px;border-radius:5px;cursor:pointer;}.mysdkDialog .myfcmdialog .mod-btn .fr,.mysdkDialog .myfcmdialog .mod-btn .fl{width:250px;margin:0;}.mysdkDialog .myfcmdialog .mod-btn .btn-fcmprimary:hover{-webkit-filter:brightness(1);filter:brightness(1)}.mysdkDialog .myfcmdialog .mod-btn .btn-identity{background-color:#69bb01;color:#f8ffef}.fcmIframe{position:absolute;left:50%;top:270px;margin:0 0 0 -309px;width:618px;height:354px;z-index:2019;border:0 none;background-color:#000}.countDown{background:#eee;border-radius:3px;padding:10px;text-align:center;margin:20px 40px 0;font-size:16px;color:#666}.countDown .txt1{font-size:16px;height:28px;line-height:28px;color:#717171;}.countDown .txt2{height:40px;line-height:40px;font-size:26px;font-weight:bold;color:#54ba3d;}.mycmMask{display:none;width:100%;position:absolute;left:0;top:0;background:rgb(0,0,0);}'
    ); // 不知道从哪借(chao)鉴(xi)来的
    let 一个弹窗 = document.createElement("div");
    一个弹窗.className = "mysdkDialog";
    一个弹窗.innerHTML +=
        '<div class="myfcmdialog"><span class="close-btn">关闭</span><h2 class="title">未成年限制登录提醒</h2><div class="stitle">您使用的是未成年账号,仅周五、周六、周日及法定节假日晚上8:00-9:00可以游戏!当前已被限制!</div><div class="countDown" style=""><p class="txt1">下次可玩游戏时段</p><p class="txt2">本周五晚上8:00-9:00</p></div><div class="countDown" style="display:none">当前已限制游戏</div><div class="mod-tip" style=""><h3 class="tip-title">温馨提示:</h3><ul class="tip-info">1.如果身份信息有误,请点击<a href="https://u.4399.com/profile/realname-bizId-1199006632.html" target="_blank">》》申请修改《《</a><br>2.如果您身份信息已经变动,可点击<a target="_self" href="#">》》刷新身份《《</a></ul></div><div class="mod-btn" style=""><span class="btn-fcmprimary">更换账号</span><span class="btn-fcmprimary">确定</span></div></div>';
    // 不知道从哪借(chao)鉴(xi)来的
    document.body.appendChild(一个弹窗);
    let 遮罩 = document.createElement("div");
    遮罩.className = "mycmMask";
    遮罩.style.cssText =
        "height: " + document.body.offsetHeight + "px; z-index: 9999; display: block";
    遮罩.innerHTML = "";
    document.body.appendChild(遮罩);
}

function 检测网址是否包含指定字符串(数组) {
    let 网址包含指定字符串 = false;
    数组.forEach((字符串) => {
        if (网址.includes(字符串)) {
            网址包含指定字符串 = true;
        }
    });
    return 网址包含指定字符串;
}

function 游戏中() {
    if (开发者配置.始终处于游戏状态) {
        return 开发者配置.始终处于游戏状态;
    }
    if (GM_getValue("净化脚本") == "1") {
        return false;
    }

    let 有没有玩游戏 = false;
    if (
        检测网址是否包含指定字符串([
            "szhong.4399.com",
            "iwan4399",
            "sda.4399.com",
            "sxiao.4399.com",
            "zxwyouxi.com",
            "flash.7k7k.com",
            "7k7k.com/swf/",
            "h5.07073.com/gameplay",
            "17yy.com/f/play",
            "4399.com/flash/",
            "web.4399.com/stat/togame.php",
        ])
    ) {
        return true;
    }
    return false;
}

function 减料() {
    if (减料成功) {
        return console.log("[防沉迷减点料] 减料被取消");
    }

    let 开始 = new Date().getTime();

    let $full_screen_frame = qs("#full_screen_frame");
    let $app_canvas_frame = qs("#app_canvas_frame");
    let $ifm = qs("#ifm");

    if (网址.includes("4399.com/flash")) {
        // 搞破坏
        if (开发者配置.启用调试) {
            debugger;
        }

        try {
            Object.defineProperty(unsafeWindow, "isLoadingAntiindulgence", {
                value: 0,
                writable: false,
            });
            减料成功 = 1;
        } catch (e) {}
        try {
            Object.defineProperty(unsafeWindow, "isIniframe", {
                value: "", // 原来是Function, 这样做可以使防沉迷报错
                writable: false,
            });
            减料成功 = 1;
        } catch (e) {}
        try {
            Object.defineProperty(unsafeWindow, "getBizid", {
                value: "", // 原来是Function, 这样做可以使防沉迷报错
                writable: false,
            });
            减料成功 = 1;
        } catch (e) {}
    }

    // if (unsafeWindow.Anti_close) {
    //     try {
    //         if (开发者配置.启用调试) {
    //             debugger;
    //         }
    //         console.log("[防沉迷减点料] 尝试4399防沉迷减料");
    //         unsafeWindow.Anti_close();
    //         减料成功 = 1;
    //     } catch (err) {
    //         console.error(err);
    //     }
    // } else
    else if (unsafeWindow.play22 && 网址.includes("7k7k.com")) {
        // 7k7k获取游戏直链1
        try {
            console.log("[防沉迷减点料] 尝试7k7k防沉迷减料");
            if (开发者配置.启用调试) {
                debugger;
            }
            // unsafeWindow.Play24.prototype.playLoading();
            unsafeWindow.play22.playLoading();
            unsafeWindow.play22.playLoading = () => {}; // 防止重复调用
            减料成功 = 1;
            // unsafeWindow.Play24.prototype.playLoading = ()=> {};
        } catch (err) {
            console.error(err);
        }
    } else if ($ifm && 网址.includes("m.7k7k.com/player")) {
        if ($ifm.src != location.href && $ifm.src) {
            // 7k7k获取游戏直链2
            try {
                console.log("[防沉迷减点料] 尝试7k7k手机端防沉迷减料");
                if (开发者配置.启用调试) {
                    debugger;
                }
                减料成功 = 1;
                location.href = $ifm.src;
            } catch (err) {
                console.error(err);
            }
        }
    } else if ($app_canvas_frame) {
        try {
            if ($app_canvas_frame.src && $app_canvas_frame.src != 网址) {
                console.log("[防沉迷减点料] 尝试阻止QQ空间自动跳转1");
                if (开发者配置.启用调试) {
                    debugger;
                }
                减料成功 = 1;
                location.href = $app_canvas_frame.src;
            }
        } catch (err) {
            console.error(err);
        }
    } else if ($full_screen_frame) {
        try {
            if ($full_screen_frame.src && $full_screen_frame.src != 网址) {
                console.log("[防沉迷减点料] 尝试阻止QQ空间自动跳转2");
                if (开发者配置.启用调试) {
                    debugger;
                }
                减料成功 = 1;
                location.href = $full_screen_frame.src;
            }
        } catch (err) {
            console.error(err);
        }
    } else if (网址.includes("//i.7724.com/user/danjilogin?url=")) {
        try {
            console.log("[防沉迷减点料] 尝试7724防沉迷减料");
            location.href = 网址.substring(
                网址.indexOf("danjilogin?url=") + "danjilogin?url=".length
            );
            减料成功 = 1;
        } catch (err) {}
    } else if (网址.includes("wvw.9377.com/game_login.php")) {
        try {
            console.log("[防沉迷减点料] 尝试9377防沉迷减料");
            $.get(网址, (html) => {
                location.href = html.substring(
                    html.indexOf('id="iframe" src="') + 'id="iframe" src="'.length,
                    html.indexOf('" name="mainFrame" scrolling="auto"')
                );
            });
            减料成功 = 1;
        } catch (err) {}
    } else if (网址.includes("game.37.com/play.php")) {
        try {
            console.log("[防沉迷减点料] 尝试37防沉迷减料");
            $.get(网址, (html) => {
                location.href = html.substring(
                    html.indexOf('src="//gameapp.37.com/controller/enter_game.php') +
                        'src="'.length,
                    html.indexOf('" id="mainFrame"')
                );
            });
            减料成功 = 1;
        } catch (err) {}
    } else if (网址.includes("wvw.4366.com/game_login.php")) {
        try {
            console.log("[防沉迷减点料] 尝试4366防沉迷减料");
            $.get(网址, (html) => {
                location.href = html.substring(
                    html.indexOf('align="left" id="iframe" src="') +
                        'align="left" id="iframe" src="'.length,
                    html.indexOf('" name="mainFrame" scrolling="auto"')
                );
            });
            减料成功 = 1;
        } catch (err) {}
    }

    if (开发者配置.输出减料时间) {
        console.log("[防沉迷减点料] 减料结束, 用时" + (new Date().getTime() - 开始) + "ms");
    }
}

function 普通减料() {
    try {
        // 简单暴力的减料方式
        for (let 索引 = 0; 索引 < 一堆伞兵玩意.length; 索引++) {
            const element = 一堆伞兵玩意[索引];
            if (qsa(element)[0]) {
                qsa(element).forEach((el) => {
                    el.remove();
                    console.log("[防沉迷减点料] -减料成功- " + element);
                });
            }
        }

        [".mycmMask", ".myfcmdialog", ".mysdkDialog"].forEach((element) => {
            if (qsa(element)[0]) {
                qsa(element).forEach((el) => {
                    el.remove();
                    console.log("[防沉迷减点料] -解除大人来了成功- " + element);
                });
            }
        });

        try {
            一个弹窗的样式.remove();
            console.log("[防沉迷减点料] 已去除样式");
        } catch (err) {}
    } catch (err) {
        console.error(err);
    }
}

function 减点料() {
    // 多来几次以防万一
    if (!开发者配置.禁用自动防沉迷减料) {
        减料();
        for (let i = 1; i < 10; i++) {
            setTimeout(减料, i * 500);
        }
    }
}

// 即将推出的游戏真实地址管理器
// function 准备游戏真实地址管理器() {
//     一堆游戏真实地址管理器元素 = [];

//     游戏真实地址管理器 = document.createElement("div");
//     游戏真实地址管理器.id = "fuckAnti-urls";
//     游戏真实地址管理器.style.cssText =
//         "z-index:99999;background-color:white;color:black;width:100%;height:100vh;position:fixed;top:0;left:0;display:none;";

//     关闭 = document.createElement("span");
//     关闭.onclick = () => {
//         游戏真实地址管理器.style.cssText =
//             "z-index:99999;background-color:white;color:black;width:100%;height:100vh;position:fixed;top:0;left:0;display:none;";
//     };
//     关闭.innerHTML = " 关闭 ";
//     一堆游戏真实地址管理器元素.push(关闭);

//     要删除的真实地址 = document.createElement("input");
//     要删除的真实地址.type = "text";
//     要删除的真实地址.placeholder = "在这里输入要删除的真实地址的id, 以英文逗号分隔";
//     要删除的真实地址.style.width = "512px";
//     一堆游戏真实地址管理器元素.push(要删除的真实地址);

//     确定 = document.createElement("button");
//     确定.onclick = () => {
//         try {
//             let ids = JSON.parse("[" + 要删除的真实地址.value + "]");
//             if (typeof ids[0] != "number") {
//                 return alert("格式不正确, 或id有误");
//             }

//             if (confirm("即将删除id为以下的游戏真实地址, 请确认: " + ids)) {
//                 ids.forEach((东西) => {
//                     if (东西 <= 0) {
//                         return;
//                     }

//                     一堆游戏真实地址.splice(东西, 东西);
//                     GM_setValue("一堆游戏真实地址", 一堆游戏真实地址);
//                     展示游戏真实地址();
//                 });
//             }
//         } catch (e) {
//             alert("格式不正确, 或id有误");
//         }
//     };
//     确定.innerHTML = "->";
//     一堆游戏真实地址管理器元素.push(确定);

//     开关 = document.createElement("button");
//     开关.onclick = () => {
//         改变值("自动保存游戏真实地址", "1");
//         状态.innerHTML = 检测状态("自动保存游戏真实地址") + "<br />";
//     };
//     开关.innerHTML = "启用/禁用自动保存游戏真实地址";
//     一堆游戏真实地址管理器元素.push(开关);

//     状态 = document.createElement("span");
//     状态.innerHTML = 检测状态("自动保存游戏真实地址") + "<br />";
//     一堆游戏真实地址管理器元素.push(状态);

//     说明 = document.createElement("span");
//     说明.innerHTML =
//         "这是一个有助于为那些在防沉迷规定时间外开始游戏时没有加载游戏(无法直接获取游戏真实地址, 且直接去除防沉迷弹窗无效)的游戏平台的防沉迷减料的工具, 使用该功能需要在游戏平台登录账号并完成实名认证(防沉迷规定必须实名后才能游戏, 不用管你是不是未成年), 之后当您在防沉迷规定的时间内开始游戏后, 脚本将自动保存游戏真实地址以供日后随时开玩<br />该功能不会记录带参数( ? 和 & )的真实链接(比如页游)<br />该功能仅支持 h5 游戏<br />该功能目前仅支持7724小游戏, 将来会添加更多游戏平台<br />游戏专业户请定期清理数据或慎用此功能, 因为数据过多会带来性能问题<br />以下是已保存的数据<br />";
//     一堆游戏真实地址管理器元素.push(说明);

//     游戏真实地址 = document.createElement("span");
//     一堆游戏真实地址管理器元素.push(游戏真实地址);

//     一堆游戏真实地址管理器元素.forEach((元素) => {
//         游戏真实地址管理器.appendChild(元素);
//     });
//     document.body.appendChild(游戏真实地址管理器);
//     游戏真实地址管理器已准备好 = 1;
// }

// function 展示游戏真实地址() {
//     console.log("[防沉迷减点料] 一堆游戏真实地址: ", 一堆游戏真实地址);
//     let id = 0;
//     真实地址 = "";

//     一堆游戏真实地址.forEach((东西) => {
//         if (东西 == null) {
//             return id++;
//         }

//         真实地址 +=
//             "<br />id: " +
//             id +
//             " | 游戏标题: " +
//             东西.游戏标题 +
//             " | 原地址: " +
//             东西.原地址 +
//             " | 真实地址: " +
//             东西.真实地址 +
//             "<br />";
//         id++;
//     });

//     if (真实地址 == "") {
//         真实地址 = "啥都没有";
//     }
//     游戏真实地址.innerHTML = 真实地址;
// }

// function 管理游戏真实地址() {
//     if (!游戏真实地址管理器已准备好) {
//         return alert("游戏真实地址管理器未准备好, 请稍后再试");
//     }

//     展示游戏真实地址();
//     游戏真实地址管理器.style.cssText =
//         "z-index:99999;background-color:white;color:black;width:100%;height:100vh;position:fixed;top:0;left:0;";
// }

// function 保存和打开游戏真实地址() {
//     let 当前游戏已保存真实地址 = 0;

//     let 规则 = [{ 名称: "7724小游戏", iframe选择器: "" }];
//     规则.forEach((_规则) => {
//         try {
//             let url = document.querySelector("iframe" + _规则.iframe选择器).src;
//             if (url || url != location.href) {
//                 一堆游戏真实地址.push({
//                     游戏标题: document.title,
//                     原地址: location.origin + location.pathname,
//                     真实地址: url,
//                 });
//                 GM_setValue("一堆游戏真实地址", 一堆游戏真实地址);
//             }
//         } catch (e) {}
//     });
// }

// 加样式表
if (!开发者配置.禁用自动防沉迷减料) {
    let css = "";
    for (let 索引 = 0; 索引 < 一堆伞兵玩意.length; 索引++) {
        const element = 一堆伞兵玩意[索引];
        css += element + ",";
    }
    css += `#ctmdfcm {
                display: none !important;
                min-width: 0 !important;
                width: 0 !important;
                max-width: 0 !important;
                min-height: 0 !important;
                height: 0 !important;
                max-height: 0 !important;
                z-index: -999 !important;
                font-size: 0 !important;
                overflow: hidden !important;
            }`;
    GM_addStyle(css);
    console.log("[防沉迷减点料] 加样式表成功");
}

//判断是否在iframe中
if (self == top) {
    // 一些无关紧要的代码
    setTimeout(() => {
        // 烦人的提醒
        if (GM_getValue("净化脚本") != "1") {
            if (用了多少天 >= 3 && GM_getValue("已提建议") == "0") {
                GM_setValue("已提建议", "1");
                GM_notification(
                    "请给我提点建议,帮助这个脚本变得更好",
                    "🔥🔥🔥防沉迷减点料🔥🔥🔥 用的怎样?",
                    "",
                    () => {
                        GM_openInTab("http://greasyfork.icu/zh-CN/scripts/437233/feedback");
                    }
                );
            }

            if (游戏中()) {
                for (let i = 0.5; i < 5; i = i + 0.5) {
                    setTimeout(() => {
                        GM_notification(
                            "你已经玩了" + i + "个小时,防沉迷那个啥虽好,但也要适度游戏,休息一下吧",
                            "健康游戏提示"
                        );
                    }, i * 60 * 60 * 1000);
                }
                setInterval(() => {
                    玩了几分钟 += 1;
                    更新菜单(); // 更新游戏时间
                }, 60 * 1000);
            } else {
                玩了几分钟 = "未在游戏";
            }
        }
        更新菜单();
    }, 1);
}

// 快捷键
document.addEventListener(
    "mousedown",
    function (e) {
        if (GM_getValue("停用快捷键") == "0") {
            if (e.button == 1 && e.shiftKey && !e.altKey) {
                大人来了();
            }
            if (e.button == 2 && e.shiftKey && e.altKey) {
                let el = document.elementFromPoint(e.x, e.y);
                console.log(
                    "[防沉迷减点料] -手动减料成功- ." +
                        el.className +
                        " #" +
                        el.id +
                        " <" +
                        el.tagName +
                        ">"
                );
                el.style.display = "none";
            }
            if (e.button == 1 && e.altKey && !e.shiftKey) {
                减料成功 = 0;
                减料();
                普通减料();
            }
        }
    },
    true
);

addEventListener("load", () => {
    减点料();

    setTimeout(() => {
        // 以防万一
        qsa("canvas").forEach((element) => {
            element.addEventListener(
                "mousedown",
                function (e) {
                    if (GM_getValue("停用快捷键") == "0") {
                        if (e.button == 1 && e.shiftKey) {
                            大人来了();
                        }
                        if (e.button == 1 && e.altKey) {
                            减料成功 = 0;
                            减料();
                        }
                    }
                },
                true
            );
        });
    }, 5000);

    if (location.href.includes("ptlogin.4399.com")) {
        setTimeout(() => {
            if (document.querySelector(".ptlogin_btn")) {
                document.querySelector(".ptlogin_btn").addEventListener("mouseup", () => {
                    alert("请在稍后刷新网页");
                });
            }
        }, 1000);
    }

    // 准备游戏真实地址管理器();
});

减点料();

if (开发者配置.在控制台使用脚本变量函数和GM) {
    unsafeWindow.更新在控制台使用的脚本变量函数和GM = () => {
        // GM_*
        unsafeWindow._GM_addStyle = GM_addStyle;
        unsafeWindow._GM_getValue = GM_getValue;
        unsafeWindow._GM_info = GM_info;
        unsafeWindow._GM_notification = GM_notification;
        unsafeWindow._GM_openInTab = GM_openInTab;
        unsafeWindow._GM_registerMenuCommand = GM_registerMenuCommand;
        unsafeWindow._GM_setValue = GM_setValue;
        unsafeWindow._GM_unregisterMenuCommand = GM_unregisterMenuCommand;

        // 普通变量
        unsafeWindow._D = D;
        unsafeWindow._最后一个菜单id = 最后一个菜单id;
        unsafeWindow._玩了几分钟 = 玩了几分钟;
        unsafeWindow._用了多少天 = 用了多少天;
        unsafeWindow._减料成功 = 减料成功;
        unsafeWindow._脚本信息 = 脚本信息;
        unsafeWindow._开发者配置 = 开发者配置;
        unsafeWindow._一堆伞兵玩意 = 一堆伞兵玩意;

        // 自定函数
        unsafeWindow._改变值 = 改变值;
        unsafeWindow._初始化值 = 初始化值;
        unsafeWindow._检测状态 = 检测状态;
        unsafeWindow._更新菜单 = 更新菜单;
        unsafeWindow._大人来了 = 大人来了;
        unsafeWindow._检测网址是否包含指定字符串 = 检测网址是否包含指定字符串;
        unsafeWindow._游戏中 = 游戏中;
        unsafeWindow._减料 = 减料;
        unsafeWindow._普通减料 = 普通减料;
        unsafeWindow._减点料 = 减点料;
        unsafeWindow._一个弹窗的样式 = 一个弹窗的样式;
    };
    unsafeWindow.更新在控制台使用的脚本变量函数和GM();
}

console.log("[防沉迷减点料] " + 网址 + "\n\n脚本信息: ", 脚本信息, "\n\n开发者配置: ", 开发者配置);

console.log(
    "[防沉迷减点料] 脚本执行完毕, 用时" + (new Date().getTime() - D.getTime()) + "ms ",
    网址
);