idelpoe预设天赋

对网页版idelpoe进行天赋预设

目前为 2023-11-03 提交的版本。查看 最新版本

// ==UserScript==
// @name         idelpoe预设天赋
// @namespace    http://yournamespace.com
// @version      0.1.1
// @description  对网页版idelpoe进行天赋预设
// @author       Your Name
// @match        *://*.idlepoe.com/*
// @match        *://idlepoe.com/*
// @match        *://poe.faith.wang/*
// @grant        GM_xmlhttpRequest
// @grant        unsafeWindow
// ==/UserScript==
(function() {
    'use strict';

    // 创建一个变量来跟踪脚本是否启用
    let scriptEnabled = true;

    // 创建一个函数来启用或禁用脚本
    function toggleScript() {
        scriptEnabled = !scriptEnabled;
        if (scriptEnabled) {
            // 启用脚本
            container.style.display = 'block'; // 显示脚本容器
        } else {
            // 禁用脚本
            container.style.display = 'none'; // 隐藏脚本容器
        }
    }

    // 创建一个按钮来启用/禁用脚本
    const toggleButton = document.createElement('button');
    toggleButton.textContent = '启用/禁用脚本';
    toggleButton.style.position = 'fixed';
    toggleButton.style.top = '10px';
    toggleButton.style.right = '10px';

    // 设置按钮的点击事件
    toggleButton.addEventListener('click', toggleScript);

    // 添加按钮到页面
    document.body.appendChild(toggleButton);

    // 创建一个容器用于样式设置
    const container = document.createElement('div');
    container.style.position = 'absolute'; // 使用相对定位
    container.style.top = '35px';
    container.style.left = '10px';
    container.style.zIndex = '99999';

    container.style.width = '400px'; // 设置容器的宽度
    container.style.height = '300px'; // 设置容器的高度

    container.style.textAlign = 'left'; // 设置按钮和输入框居左
    container.style.padding = '10px'; // 添加内边距
    container.style.display = scriptEnabled ? 'block' : 'none'; // 根据脚本启用状态设置显示/隐藏

     // 创建一个下拉选择框用于选择请求方法
    const methodSelect = document.createElement('select');
    methodSelect.id = 'methodSelect';
    methodSelect.style.marginBottom = '10px'; // 设置下拉选择框下边距

    const presetSelect = document.createElement('select');
    presetSelect.id = 'presetSelect';
    presetSelect.innerHTML = `
    <option value="40BD">40级BD</option>
    <option value="50BD">50级BD</option>
    <option value="60BD">60级BD</option>
    <option value="80BD">80级BD</option>
    <option value="90BD">90级BD</option>
    <option value="100BD">100级贵族电打BD</option>`;

    // 创建一个按钮元素(填入预设天赋)
    const fillContentButton = document.createElement('button');
    fillContentButton.textContent = '填充预设内容';



    // 添加选项:POST
    const postOption = document.createElement('option');
    postOption.value = 'POST';
    postOption.textContent = 'POST';
    methodSelect.appendChild(postOption);

     // 添加选项:GET
    const getOption = document.createElement('option');
    getOption.value = 'GET';
    getOption.textContent = 'GET';
    methodSelect.appendChild(getOption);



    // 添加选项:PUT
    const putOption = document.createElement('option');
    putOption.value = 'PUT';
    putOption.textContent = 'PUT';
    methodSelect.appendChild(putOption);

    // 创建一个输入框用于输入请求地址 (不可见)
    const urlInput = document.createElement('input');
    urlInput.type = 'text';
    urlInput.value = 'https://poe.faith.wang/api/skilltree'; // 设置默认请求地址
    urlInput.style.display = 'none'; // 设置输入框不可见

    // 创建一个文本框用于输入请求头(不可见)
    const headersInput = document.createElement('textarea');
    headersInput.style.display = 'none'; // 隐藏整个文本区域
    headersInput.id = 'hiddenHeaders'; // 用于存储请求头内容

    // 创建一个输入框用于输入 Authorization 头部
    const authorizationInput = document.createElement('input');
    authorizationInput.type = 'text';
    authorizationInput.placeholder = '请输入您的token';
    authorizationInput.style.display = 'block'; // 设置为块级元素,使其垂直排列
    authorizationInput.style.marginBottom = '10px'; // 设置输入框下边距

    // 创建一个文本区域用于输入请求内容
    const requestBodyInput = document.createElement('textarea');
    requestBodyInput.placeholder = '请输入天赋树代码';
    requestBodyInput.rows = 5; // 设置文本区域的高度
    requestBodyInput.style.display = 'block'; // 设置为块级元素,使其垂直排列
    requestBodyInput.style.marginBottom = '10px'; // 设置文本区域下边距

     // 添加按钮的点击事件处理程序
    fillContentButton.addEventListener('click', function() {
    // 获取选择的预设值
    let selectedPreset = presetSelect.value;



    // 根据选择的预设值设置请求内容
     if (selectedPreset === '40BD') {
        requestBodyInput.value = '\{"passives":["58833","15144","35179","9009","60532","918","28221","24643","33545","28574","51786","24496","39861","49978","8938","59606","1427","51235","18707","9355","4011","5823","6538","38662","50338","5616","27283","31508","48099","65210","32117","54142","3187","2715","903","1461","49900","5802","3424","36287","20807"]\}';
    } else if (selectedPreset === '50BD') {
        requestBodyInput.value = '\{"passives":["33558","38662","3424","9009","65210","8938","51235","35851","18707","46408","5823","49900","57248","35179","58833","46277","48477","24496","23507","20807","5802","32555","33903","39861","9355","2715","54142","54338","28221","1461","31508","59606","30205","51786","60592","36287","20812","33545","49978","6538","12412","4011","27283","60532","32117","15144","8348","24643","47484","3309","5616","48099","1427","50338","3187","6534","9786","22266","918","19506"]\}';
    } else if (selectedPreset === '60BD') {
        requestBodyInput.value = '预设内容 60级BD';
    }
      else if (selectedPreset === '80BD') {
        requestBodyInput.value = '预设内容 80级BD';
    }
      else if (selectedPreset === '90BD') {
        requestBodyInput.value = '预设内容 90级BD';
    }
      else if (selectedPreset === '100BD') {
        requestBodyInput.value = '\{"passives":["34579","28221","56001","45035","35283","50150","59220","38344","24865","9469","60942","23439","3187","5622","17201","5823","29856","49621","30471","51786","56460","25209","22266","65033","25058","1568","60532","28012","35053","18670","21575","6","10017","54142","28754","5616","21835","42686","15144","15842","50459","33558","4565","24641","2715","34031","1201","903","64878","54338","64024","9009","56509","50338","14056","48477","4011","49978","46408","33903","20807","12720","24643","31508","60002","9355","7085","10763","59151","38664","9877","9786","65502","28574","465","52213","30626","54354","27283","63139","61306","38662","37504","33545","5408","35179","30679","1698","6538","6108","36281","57839","40100","11651","45436","25456","6580","61636","34400","45491","39861","35894","19506","39524","48807","57080","24914","918","9015","30155","22423","42104","24496","43514","32555","6741","12412","3309","37647","61050"]\}';
    }



    });

    // 创建一个按钮用于发送接口测试请求
    const sendRequestButton = document.createElement('button');
    sendRequestButton.textContent = '发送接口请求';
    sendRequestButton.style.display = 'block'; // 设置为块级元素,使其垂直排列

    const { fetch: originalFetch } = window;
    unsafeWindow.fetch = async (...args) => {
    let [resource, config ] = args;
        if(resource === '/api/skilltree'){
        let headers = config.headers['Authorization'];
        // 使用Clipboard API将字符串复制到粘贴板
        authorizationInput.value = headers;
        let body = config.body;
        navigator.clipboard.writeText(body).then(function(){
        console.log("复制请求头信息并打印控制台");});
      }

      let response = await originalFetch(resource, config);

      return response;
    };






    // 设置按钮的样式
    sendRequestButton.style.backgroundColor = 'white';
    sendRequestButton.style.color = 'black';
    sendRequestButton.style.padding = '10px 20px';
    sendRequestButton.style.border = '1px solid black';
    sendRequestButton.style.borderRadius = '5px';
    sendRequestButton.style.cursor = 'pointer';

    // 监听按钮点击事件
    sendRequestButton.addEventListener('click', function() {
        const selectedMethod = methodSelect.value;
        const url = urlInput.value; // 获取默认请求地址
        const authorization = authorizationInput.value; // 获取用户输入的 Authorization 头部内容
        const requestBody = requestBodyInput.value;

        // 构建请求头
        const headers = `content-type: application/json
authority: poe.faith.wang
accept: */*
accept-language: zh-CN,zh;q=0.9
Authorization: ${authorization}`; // 使用用户输入的 Authorization 头部内容

        // 将请求头内容放入隐藏的文本区域,以备后续使用
        document.getElementById('hiddenHeaders').value = headers;

        GM_xmlhttpRequest({
            method: selectedMethod,
            url: url, // 使用默认请求地址
            headers: parseHeaders(headers), // 解析自定义请求头
            data: requestBody,
            onload: function(response) {
                alert('接口响应数据: ' + response.responseText);
            },
            onerror: function(error) {
                alert('请求失败: ' + error.statusText);
            }
        });
    });

    // 将元素按照垂直顺序添加到容器
    container.appendChild(methodSelect);
    container.appendChild(urlInput);
    container.appendChild(headersInput);
    container.appendChild(authorizationInput);
    container.appendChild(requestBodyInput);
    container.appendChild(sendRequestButton);
    container.appendChild(presetSelect);
    container.appendChild(fillContentButton);

    // 将容器添加到页面
    document.body.appendChild(container);

    // 解析自定义请求头
    function parseHeaders(headers) {
        const parsedHeaders = {};
        if (headers) {
            const headerLines = headers.split('\n');
            for (const line of headerLines) {
                const [name, value] = line.split(':');
                if (name && value) {
                    parsedHeaders[name.trim()] = value.trim();
                }
            }
        }
        return parsedHeaders;
    }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址