GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 548|回复: 38
收起左侧

[实用工具] 【梅克军团】全新升级纵享丝滑——批量血液献祭v2.0

  [复制链接] |关注本帖

Lvl. 8

Act of Ultimate Trust『南瓜拿铁』遗留之人的城堡人到中年丹·雷诺斯王者之盾风物长宜Vergil

    本帖最后由 源子 于 2024-11-4 19:41 编辑

    前情提要:血液批量献祭油猴脚本——合理避税,从我做起

    避税的原理不再过多赘述,之前的脚本只是随手写的,有种力大砖飞的美感,也就可能随机吞掉你几次兑换量罢了。另外操作界面还是太复杂了,还要看使用说明才知道怎么用,这样不好不好。@Name   
    本次脚本主要有以下几项改动:
    1、本次的2.0版本不再采用模拟点击的方式,直接在后端提交请求,实现了数量更精准的献祭。
    2、兑换界面与泥潭原页面基本一致,仅将兑换按钮的文本修改成了“批量兑换”,方便区分脚本是否成功运行。
    3、新增了提示文本,方便直观比较税前税后价。
    已知BUG:因为浮点计算的问题,泥潭的计算公式在计算某些数值时会出现误差。例如兑换100旅程,实际应该消耗3500血液,但是泥潭的计算公式错误地计算成了3449。虽然无伤大雅,但是如果管理看到这里的话可以考虑修改一下计算公式,先将税率0.15放大100倍,计算完成后再截位,规避浮点计算,就不会出现这种问题。不过这跟咱的脚本没啥关系,咱们逃税只需要3400。

    使用说明:最好的使用说明就是没有使用说明!看看这个界面,还需要我说明什么吗!只管放心大胆地填,逃税的事就交给脚本去执行!
    万一被抓,逃税是脚本做的,关我周树人什么事?
    PS:楼主的血液量较少,测试量不足,如果使用过程发现有什么BUG,不妨给楼主点个免费的评分补点血,才能更好地修BUG,这不是骗
    赞,真的不是骗赞!

    逃税完成展示:



    用了chatGPT重构了变量名并添加注释,方便有志之士复用,不得不说chatGPT在这方面真挺方便的,让我打那么老长一段变量名那可真是会要老命的
    1. // ==UserScript==
    2. // @name         批量血液献祭2.0
    3. // @namespace    http://tampermonkey.net/
    4. // @version      2.0
    5. // @description  替换原网页功能,批量血液献祭
    6. // @match        https://www.gamemale.com/home.php?mod=spacecp&ac=credit&op=exchange
    7. // @author       源子
    8. // ==/UserScript==

    9. (function() {
    10.     'use strict';

    11.     function showInfo(message) {
    12.         console.log(message); // 输出到控制台
    13.         showError(message);    // 在前端显示消息
    14.     }

    15.     // 获取表单元素
    16.     const form = document.querySelector('#exchangeform'); // 兑换表单
    17.     const submitButton = document.querySelector('#exchangesubmit_btn'); // 提交按钮
    18.     const exchangeAmountInput = document.querySelector('#exchangeamount'); // 兑换数量输入框
    19.     const toCreditsSelect = document.querySelector('#tocredits'); // 目标积分选择框
    20.     const taxPercentDisplay = document.querySelector('#taxpercent'); // 显示原价、含税价和现价的区域
    21.     const exchangedesamountInput = document.querySelector('#exchangedesamount'); // 现价显示框

    22.     const TAX_RATE = 0.15; // 税率为 15%

    23.     // 禁用网页自带的 exchangecalcredit 计算逻辑
    24.     exchangeAmountInput.removeAttribute('onkeyup');
    25.     toCreditsSelect.removeAttribute('onchange');

    26.     // 设置提交按钮文本为“批量兑换”
    27.     if (submitButton) {
    28.         const buttonText = submitButton.querySelector('em');
    29.         if (buttonText) {
    30.             buttonText.textContent = "批量兑换";
    31.         }
    32.     }

    33.     // 更新显示原价、含税价和现价的函数
    34.     function updatePriceDisplay() {
    35.         const exchangeAmount = parseInt(exchangeAmountInput.value) || 1;
    36.         const selectedOption = toCreditsSelect.options[toCreditsSelect.selectedIndex];
    37.         const ratio = parseFloat(selectedOption.getAttribute('ratio'));

    38.         const originalPrice = exchangeAmount * ratio; // 原价
    39.         const taxIncludedUnitPrice = Math.floor(ratio * (1 + TAX_RATE)); // 含税单价取整
    40.         const finalPrice = Math.floor(originalPrice * (1 + TAX_RATE)); // 含税总价
    41.         const roundedTotalPrice = taxIncludedUnitPrice * exchangeAmount; // 现价:含税单价的整数部分乘数量

    42.         // 更新税率显示区域,显示原价、 泥潭含税价和逃税价
    43.         taxPercentDisplay.textContent = `原价: ${originalPrice}, 泥潭含税价: ${finalPrice}, 逃税价: ${roundedTotalPrice}`;
    44.         exchangedesamountInput.value = roundedTotalPrice;
    45.     }

    46.     // 添加监听器以在输入和选择变化时更新价格显示
    47.     exchangeAmountInput.addEventListener('input', updatePriceDisplay);
    48.     toCreditsSelect.addEventListener('change', updatePriceDisplay);

    49.     // 替换提交按钮行为
    50.     function replaceSubmitButton() {
    51.         if (submitButton) {
    52.             submitButton.onclick = (event) => {
    53.                 event.preventDefault(); // 阻止默认提交
    54.                 submitFormMultipleTimes(); // 调用自定义的提交函数
    55.             };
    56.             showInfo("兑换功能已升级为批量兑换");
    57.         } else {
    58.             console.warn("未找到提交按钮,检查选择器是否正确");
    59.         }
    60.     }

    61.     // 多次提交
    62.     async function submitFormMultipleTimes() {
    63.         const repeatCount = parseInt(exchangeAmountInput.value) || 1;
    64.         const actionUrl = form.action;
    65.         const headers = {
    66.             "User-Agent": "Mozilla/5.0",
    67.             "Cookie": document.cookie
    68.         };
    69.         const exchangeAmount = parseInt(exchangeAmountInput.value) || 1;
    70.         const totalExchangeAmount = exchangeAmount * repeatCount; // 总兑换量
    71.         let successCount = 0; // 初始化成功次数计数器

    72.         for (let i = 0; i < repeatCount; i++) {
    73.             try {
    74.                 const formData = new FormData(form);
    75.                 formData.set('exchangeamount', 1); // 每次提交的 exchangeamount 值设为 1

    76.                 const response = await fetch(actionUrl, {
    77.                     method: 'POST',
    78.                     headers: headers,
    79.                     body: formData,
    80.                 });
    81.                 if (!response.ok) {
    82.                     console.error(`兑换失败:第${i + 1}次`);
    83.                 } else {
    84.                     successCount++; // 增加成功计数
    85.                     showInfo(`兑换成功:第${i + 1}次`);
    86.                 }
    87.             } catch (error) {
    88.                 console.error(`兑换错误:第${i + 1}次`, error);
    89.             }
    90.         }

    91.         // 延时 1 秒提示兑换总量、成功次数并刷新页面
    92.         setTimeout(() => {
    93.             alert(`兑换完成!成功次数/兑换量:${successCount}/${repeatCount},获得${toCreditsSelect.options[toCreditsSelect.selectedIndex].getAttribute('title')}:${successCount},消耗血液:${exchangedesamountInput.value}`);
    94.             location.reload();
    95.         }, 1000); // 延时 1 秒
    96.     }


    97.     // 初始化替换按钮
    98.     replaceSubmitButton();
    99.     // 初始化价格显示
    100.     updatePriceDisplay();

    101. })();
    复制代码

    最后附上一个乞讨用的附件,走过路过不要错过~



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x

    评分

    参与人数 11血液 +14 追随 +11 堕落 +3 收起 理由
    KarKiv + 1
    咸鱼鱼 + 3 + 1 + 1
    ONOTOU + 3 + 1
    投鞭断流 + 1
    夏漏光微 + 1 赞一个!
    青魂 + 1
    lhbb5874 + 1 很给力!
    M小黑 + 1
    我们一起学狗叫 + 1 很给力!
    1017186309 + 1

    查看全部评分

    回复

    使用道具 举报

    Lvl. 10 max

    GM活动员

    不曾寄出的信件小小舞台漂洋小船『随时随地开启!』冒险用指南针破损的旧书丛林的鸟飞走了雪王的心脏人鱼之泪幽灵竹筒

      回复

      使用道具 举报

      库伦 (起源)索尔·奥丁森霍格沃兹特快列车光子之海森林鹿达拉然瑞雪兆丰年,生灵万物新史莱哲林

        回复

        使用道具 举报

        辐射:新维加斯特殊-家园卫士Ⓛ崭新的白袜牧羊人枕套幽灵

          回复

          使用道具 举报

          收到情书变骚喷雾千杯不醉捡到了肥皂史莱哲林我的天使GM吸血伯爵吃饱金币的Doge阿拉喵?神灯和你一起飞行的皮卡丘

            回复

            使用道具 举报

            『南瓜拿铁』擎天柱(Peterbilt389)龙腾世纪:审判劫掠核芯『灰域来音』大黄蜂(ChevroletCamaro)幸运女神的微笑『逆境中的幸运女神』『住在GM村』

              很好用,一点一点旅程兑换起来确实更划算……首先我得有那么多血液ヘ(;´Д`ヘ)所以我选择靠勋章回帖加旅程
              回复

              使用道具 举报

              金牌矿工『南瓜拿铁』召唤古代战士『逆境中的幸运女神』幸运女神的微笑冒险专用绳索无尽的怀表Forever Titanic『钟楼盐水棒冰』小小安全帽

                回复

                使用道具 举报

                诺克提斯·路西斯·伽拉姆远行特殊-家园卫士Ⓡ『逆境中的幸运女神』特殊-家园卫士Ⓛ刀锋女王 - 归宿最终幻想XIV最终幻想XVI

                  回复

                  使用道具 举报

                  启示录旧日支配者—克苏鲁山村贞子可怖的眼球

                    回复

                    使用道具 举报

                    『南瓜拿铁』幸运女神的微笑天灾骑士瑞文戴尔刀锋女王 - 归宿普隆普特·阿金塔姆安杜因·乌瑞恩“腐败女神”玛莲妮亚骑兽之子不朽之恋

                      回复

                      使用道具 举报

                      百相千面-晦永远的克叔業火死鬥实现梦想官复原职虚空之海的鲸Zootopia幸运女神的微笑『逆境中的幸运女神』御医神兔

                        回复

                        使用道具 举报

                        泰比里厄斯肥皂铁牛诺克提斯·路西斯·伽拉姆吃饱金币的Doge亚瑟‧摩根自由克里斯·埃文斯艾吉奥远行

                          回复

                          使用道具 举报

                          『南瓜拿铁』魔眼护符骑兽之子召唤古代战士近地夜航元气菠菜人烈焰天使弓龙血指环『灰域来音』

                            回复

                            使用道具 举报

                            性感男神GM人到中年卡洛斯·奥利维拉史莱姆牧场霍格沃兹魔法学校Forever Titanic爬行植物Ⓛ爬行植物Ⓡ『南瓜拿铁』

                              回复

                              使用道具 举报

                              爬行植物Ⓡ猩红魔鹫爬行植物Ⓛ守护者三角头不朽之恋

                                回复

                                使用道具 举报

                                『南瓜拿铁』驯化红龙幼崽森林羊男牧羊人【新手友好】昆進龙腾世纪:审判瑞雪兆丰年,生灵万物新

                                  回复

                                  使用道具 举报

                                  爬行植物Ⓡ『南瓜拿铁』爬行植物Ⓛ丹雀衔五穗,人间始丰登人到中年玄生万物风物长宜近地夜航

                                    回复

                                    使用道具 举报

                                    瑞雪兆丰年,生灵万物新山猫图腾猎鹰图腾眼镜蛇图腾

                                      回复

                                      使用道具 举报

                                      『南瓜拿铁』新手蛋

                                        回复

                                        使用道具 举报

                                        20x43 隐形➀吃饱金币的Doge冒险用指南针金牌矿工小小安全帽小小舞台阿拉喵?神灯双向圣杯:焕然意志『梦旅存根』

                                          回复

                                          使用道具 举报

                                          您需要登录后才可以回帖 登录 | 立即注册

                                          本版积分规则

                                          文字版|手机版|小黑屋|GameMale

                                          GMT+8, 2024-11-5 17:29 , Processed in 0.138298 second(s), 145 queries , Redis On.

                                          Copyright © 2013-2024 GameMale

                                          All Rights Reserved.

                                          快速回复 返回列表