吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3706|回复: 5
收起左侧

[其他转载] JavaScript学习之纯js编写原神抽卡分析,带注释

[复制链接]
harglo 发表于 2021-7-10 15:11
效果图:
edf054ed181dc429ace13ce8a59f7ed.png
2f93ab9b6e09d611079dc5c49a8ec3a.png
[JavaScript] 纯文本查看 复制代码
javascript: (function() {
    function f() {
        var fourStar=0;     //四星数量
        var fiveStar=0;     //五星数量
        var final=0;        //最后一页抽了多少次
        var total=0;        //总共多少抽
        var flagGolden=0;   //找到五星后置为1
        var c=0;            //第一次到达五星的抽奖次数,用于判断已经有多少抽未出五星
        var flag=0;         //记录抽到五星前的抽奖数量。
        var p=0;            //前一页页数
        //计算:
        function count() {
            var tempFour=0;     //记录每一页的四星数量
            var tempFive=0;     //记录每一页的五星数量
            var page = document.evaluate('//span[@class="page-item"]/text()',document).iterateNext();//当前页页数
            //判断已经有多少抽未出五星:
            var golden=document.evaluate('//div[@class="log-item-row"]',document);
            var node = golden;
            if(flagGolden==0){
                while (node){
                    node=golden.iterateNext(); //枚举下一个元素
                    if(node!=null){
                        c++;
                        if(node.innerHTML.indexOf("item_5") != -1){     //有item_5证明有五星
                            flagGolden=1;
                            flag=c-1;       //记录已经有多少抽未出五星
                        }
                    }
                }
            }
            //记录四星数量:
            var xPathResult = document.evaluate('//span[contains(@class, "item_4")]',document);
            var node1 = xPathResult;
            while (node1){
                node1=xPathResult.iterateNext(); //枚举下一个元素
                if(node1!=null){
                    tempFour++;
                }
            }
            fourStar=fourStar+tempFour;
            //记录五星数量:
            var five=document.evaluate('//span[contains(@class, "item_5")]',document);
            var node2=five;
            while (node2){
                node2=five.iterateNext(); //枚举下一个元素
                if(node2!=null){
                    tempFive++;
                }
            }
            fiveStar=fiveStar+tempFive;
            console.log("第"+page.textContent+"页");
            console.log("四星数量为:"+fourStar);
            console.log("五星数量为:"+fiveStar);
            //点击下一页:
            function find() {
                if(document.evaluate('//*[@id="J_page_wrapper"]/span[3]',document)){//其实这个元素是一直存在的
                    if(Number(page.textContent)>p){     //所以通过页数判断,是否要点击下一页,但这样会在最后一页计算两次
                        p=Number(page.textContent);
                        document.evaluate('//*[@id="J_page_wrapper"]/span[3]',document).iterateNext().click();//点击下一页
                        setTimeout(count,1000);     //设置延时,统计太快会计算有误
                    }else {
                        //统计最后一页抽了多少次:
                        var finish=document.evaluate('//div[@class="log-item-row"]',document);
                        var node3 = finish;
                        while (node3){
                            node3=finish.iterateNext(); //枚举下一个元素
                            if(node3!=null){
                                final++;    //记录最后一页的抽卡数量。
                            }
                        }
                        total=6*(Number(page.textContent)-1)+final;     //总抽卡数量。
                        console.log("近6个月总共"+String(total)+"抽");
                        console.log("四星数量为:"+String(fourStar-tempFour));    //-tempFour因为最后一页会计算两次
                        console.log("五星数量为:"+String(fiveStar-tempFive));    //-tempFive因为最后一页会计算两次
                        console.log("已经"+String(flag)+"抽未出五星");
                        alert("近6个月总共"+String(total)+"抽\n"+"四星数量为:"+String(fourStar-tempFour)+"个\n"+"五星数量为:"+String(fiveStar-tempFive)+"个\n"+"已经"+String(flag)+"抽未出金");
                    }
                }
            }
            find();
        }
        count();
    }
    //设置按钮:
    var d1 = document.getElementsByClassName('type-select-container')[0];
    var d2 = document.createElement('div');
    d2.style.cssText = "border: .02rem solid #b5b2ae;border-radius: .05rem;color: #757575;background-color: #dbd7d3;width:150px;height:63.6px;position:relative;left:35px;font-size: .22rem;text-align:center;line-height:63.6px;cursor: pointer;";
    d2.setAttribute("title","要先定位到抽奖列表的第一页");
    d1.appendChild(d2);
    var t2=document.createTextNode("开始抽卡分析");
    d2.appendChild(t2);
    d2.onclick=f;
})();

免费评分

参与人数 2吾爱币 +6 热心值 +2 收起 理由
苏紫方璇 + 5 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yjn866y + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

pangiggs 发表于 2021-7-10 16:01
学习了,谢谢分享
yjn866y 发表于 2021-7-10 19:56
胆小鬼灬 发表于 2021-7-15 15:11
我家有条大大狗 发表于 2021-8-26 12:08
非洲人不配使用,常驻73发,up池67发愣是没出一个黄......
k99999999 发表于 2021-8-26 15:02
学习了 ~涨姿势了~
寒流溯雪灬 发表于 2021-8-26 17:02
感谢楼主,抽卡当娱乐了哈哈哈哈
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表