Greasy Fork

Greasy Fork is available in English.

mine

自动挖矿机器人

当前为 2021-10-14 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         mine
// @namespace    http://tampermonkey.net/
// @version      0.0.0.6
// @description  自动挖矿机器人
// @author       LaoTie
// @match        https://www.element3ds.com/plugin.php?id=yw_mine:front&mod=mineDetail&mineId=*
// @match        https://www.element3ds.com/plugin.php?id=yinxingfei_zzza:yinxingfei_zzza_hall
// @grant        GM_setValue
// @grant        GM_getValue
// ==/UserScript==

(async function () {
    'use strict';
    await workupdate();
    await kaikuang();
    await lingqu();
    await YaoAction();
    var timer = setInterval(async function () {
        location.reload();
    }, 3600000)
})();

async function kaikuang() {
    var ele = jQuery('.yun_mine_control.clearfix a')[0]
    var attr = ele.attributes[1];
    if (attr.value.indexOf('background-color:#696969;') < 0 && ele.innerText == '开始挖矿') {
        ele.click();
        await sleep(500);
        jQuery('.tps-bottom a')[0].click();
        await sleep(500);
        jQuery('.yunw_button.clearfix a').click();
        await sleep(500)
        jQuery('#enter').click();
    }
}

async function workupdate() {
    var ele = jQuery('.yun_mine_control.clearfix a')[2]
    var minerCount = jQuery('.yun_user_record .icon-miner')[0].innerText.trim();
    if (ele.innerText == '矿工管理' && minerCount > 0) { //派遣
        ele.click();
        await sleep(500);
        var canSendMiner = jQuery('.yunw_text .clearfix')[1].innerText.replace('*可派遣人数:', '');
        canSendMiner = canSendMiner.replace('人', '');
        if (canSendMiner > 0) {
            jQuery('.yunw_label_radio label input')[0].click();
            await sleep(500);
            jQuery('.yunw_label_input').val(canSendMiner);
            await sleep(500)
            jQuery('.yunw_button input')[0].click();
            await sleep(500)
            jQuery('#enter').click();
        } else {
            jQuery('.yunw_title div span').click();
        }
    }
}

async function lingqu() {
    let list = await findele('.yun_user_ore')
    if (list.length > 0) {
        for (let i = 0; i < list.length; i++) {
            if (list[i].children.length > 0) {
                for (let j = 0; j < list[i].children.length; j++) {
                    if (list[i].children[j].children[0].innerHTML > 0 && list[i].children[j].children[1].attributes[1].value.indexOf('plugin.php?id=yw_mine:front&mod=myStore&act=callback_input&oreId=0') < 0) {
                        let name = list[i].children[j].children[1].innerHTML
                        let cminfo = {};
                        cminfo.name = name;
                        cminfo.ele = list[i].children[j].children[1];
                        await getMine(cminfo);
                        await sleep(3000);
                    }
                }
            }
        }
    }
}

//执行领取和出售的确认操作
async function getMine(ele) {
    console.log(ele.name);
    ele.ele.click();
    console.log(Date.parse(new Date()));
    await sleep(3000);
    console.log(Date.parse(new Date()));
    let buts = jQuery('#yunform .yunw_button input');
    if (buts.length > 0) {
        console.log(buts[0].value);
        buts[0].click();
        await sleep(1000)
        jQuery('#enter').click();
    }
    console.log('getMine:结束了');
}

async function YaoAction() {
    var date = localStorage.getItem('yaoyiyao');
    console.log('date:', date);
    console.log(dateFormat('YYYY-mm-dd', new Date()));
    if (date != dateFormat('YYYY-mm-dd', new Date())) {
        localStorage.setItem('yaoyiyao', dateFormat('YYYY-mm-dd', new Date()))
        jQuery('.zzza_hall_bottom_right_yjan_left a').click();
        await sleep(500);
        jQuery('.tps-bottom a')[0].click();
        await sleep(500);
        jQuery('#zzza_go').click();
    }
}

async function findele(cls) {
    let list = [];
    jQuery(cls).each(function (i, e) {
        list.push(e);
    })
    return list;
}

//等待时间
function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}
//获取地址参数
function getQuery(name) {
    var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
    var r = window.location.search.substr(1).match(reg);
    if (r != null) {
        return unescape(r[2]);
    }
    return null;
}

function GM_setObject(name, value) {
    if (value instanceof Object) {
        // 使用 JSON.stringify 将值转换为文本。
        GM_setValue(name, JSON.stringify(value));
    }
}

function GM_getObject(name, undefined) {
    try {
        return JSON.parse(GM_getValue(name, '') || '{}');
    } catch (e) {
        // 如果抓取的数据有误报错就直接返回默认值。
        return undefined;
    }
};

function dateFormat(fmt, date) {
    let ret;
    const opt = {
        "Y+": date.getFullYear().toString(),        // 年
        "m+": (date.getMonth() + 1).toString(),     // 月
        "d+": date.getDate().toString(),            // 日
        "H+": date.getHours().toString(),           // 时
        "M+": date.getMinutes().toString(),         // 分
        "S+": date.getSeconds().toString()          // 秒
        // 有其他格式化字符需求可以继续添加,必须转化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        };
    };
    return fmt;
}