此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/scripts/489910/1343837/FightButtonLibrary.js
您需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
您需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
您需要先安装一款用户样式管理器扩展(如 Stylus)后才能安装此样式。
您需要先安装一款用户样式管理器扩展后才能安装此样式。
您需要先安装一款用户样式管理器扩展后才能安装此样式。
您需要先安装一款用户样式管理器扩展后才能安装此样式。
(我已经安装了用户样式管理器,让我安装!)
// ==UserScript==
// @name FightButtonLibrary
// @namespace http://tampermonkey.net/
// @version 0.19
// @description Library for fight button usage start
// @author h2o
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// @esversion 8
// ==/UserScript==
(function() {
'use strict';
let step={}
// Function to prompt user for API key
function promptForApiKey() {
var apiKey = prompt("Please enter your API key:");
if (apiKey !== null && apiKey !== "") {
GM_setValue("apiKey", apiKey); // Save API key locally
return apiKey;
} else {
alert("API key cannot be empty!");
return null;
}
}
// Function to start the process
function startProcess() {
// Check if API key is already saved
var savedApiKey = GM_getValue("apiKey");
if (!savedApiKey) {
savedApiKey = promptForApiKey();
}
if (savedApiKey) {
// Extract user ID from URL
var url = window.location.href;
var userIdMatch = url.match(/user2ID=(\d+)/);
var userId = userIdMatch ? userIdMatch[1] : null;
if (userId) {
// Define the URL
var apiUrl = "https://api-torn-members.glitch.me/update/";
// Define the query parameters
var query = {
"item": "startFight",
"key": savedApiKey,
"opponent": userId,
};
// Construct the full URL with query parameters
var fullUrl = apiUrl + "?item=" + query.item + "&key=" + query.key +"&opponent=" + query.opponent;
// Send the request
GM_xmlhttpRequest({
method: "GET",
url: fullUrl,
onload: function(response) {
handleResponse(response.responseText); // Handle the response
},
onerror: function(error) {
console.error("Request failed:", error);
}
});
} else {
console.error("User ID not found in URL.");
}
}
}
// Function to handle the response
function handleResponse(responseText) {
step=JSON.parse(responseText);
}
//create and style the button
const coverDiv = createDiv('tornCoverDiv', 'fixed', '25%', '51%', '280px', '140px');
const infoDiv = createDiv('tornInfoDiv', 'fixed', '25%', '82%', '200px', '420px');
// Create and style button element
const newButton = createButton('tornNewButton', 'fixed', coverDiv.style.top, coverDiv.style.left);
//create the divs
function createDiv(id, position, top, left, width, height) {
const div = document.createElement('div');
div.id = id;
div.style.position = position;
div.style.top = top;
div.style.left = left;
div.style.backgroundColor = 'black';
div.style.color = 'white';
div.style.padding = '10px';
div.style.zIndex = '9998';
div.style.width = width;
div.style.height = height;
div.style.textAlign = 'center';
div.style.display = 'none';
document.body.insertBefore(div, document.body.firstChild);
return div;
}
// create the button
function createButton(id, position, top, left) {
const button = document.createElement('button');
button.id = id;
button.classList = 'torn-btn';
button.style.position = position;
button.style.top = top;
button.style.left = left;
button.style.transform = 'translate(75px,120px)';
button.style.width = '170px';
button.style.color = 'white';
button.style.zIndex = '9999';
button.style.display = 'none';
button.textContent = 'WAIT for Counter';
button.disabled = true;
document.body.insertBefore(button, document.body.firstChild);
return button;
}
newButton.addEventListener("click", async () => {
alert(step.warlink)
const url = window.location.href;
const x = url.indexOf("ID=");
const ID = url.substring(x + 3);
await fetch("/loader.php?sid=attackData&mode=json", {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"x-requested-with": "XMLHttpRequest",
},
body: step.warlink,
});
});
// Expose the startProcess function to be called externally
window.updateItemLibrary = {
startProcess: startProcess
};
})();