Farmgod and send attack automatically at Loot Assistant at random intervals
当前为
// ==UserScript==
// @name Autofarm V2
// @version 2.1
// @include https://*/game.php*screen=am_farm*
// @namespace https://greasyfork.org/users/1388863
// @description Farmgod and send attack automatically at Loot Assistant at random intervals
// ==/UserScript==
(function () {
'use strict';
// Create toggle button
let button = document.createElement("button");
button.innerText = "Stop";
button.style.position = "fixed";
button.style.bottom = "40px";
button.style.left = "20px";
button.style.padding = "8px 15px";
button.style.fontSize = "14px";
button.style.zIndex = "1000";
button.style.backgroundColor = "#4CAF50";
button.style.color = "white";
button.style.border = "none";
button.style.borderRadius = "5px";
button.style.cursor = "pointer";
document.body.appendChild(button);
// Create countdown box
let countdownPopup = document.createElement("div");
countdownPopup.style.position = "fixed";
countdownPopup.style.bottom = "75px";
countdownPopup.style.left = "20px";
countdownPopup.style.padding = "8px 15px";
countdownPopup.style.fontSize = "14px";
countdownPopup.style.zIndex = "1000";
countdownPopup.style.backgroundColor = "#333";
countdownPopup.style.color = "white";
countdownPopup.style.borderRadius = "5px";
countdownPopup.style.display = "none"; // Initially hidden
document.body.appendChild(countdownPopup);
// Settings button
const settingsBtn = document.createElement('button');
settingsBtn.innerText = 'Settings';
settingsBtn.style.position = 'fixed';
settingsBtn.style.bottom = '110px';
settingsBtn.style.left = '20px';
settingsBtn.style.zIndex = '1000';
settingsBtn.style.backgroundColor = '#555';
settingsBtn.style.color = 'white';
settingsBtn.style.border = 'none';
settingsBtn.style.borderRadius = '5px';
settingsBtn.style.cursor = 'pointer';
document.body.appendChild(settingsBtn);
// Settings popup
const settingsPopup = document.createElement('div');
settingsPopup.style.display = 'none';
settingsPopup.style.position = 'fixed';
settingsPopup.style.bottom = '150px';
settingsPopup.style.left = '20px';
settingsPopup.style.backgroundColor = '#f9f9f9';
settingsPopup.style.padding = '20px';
settingsPopup.style.border = '1px solid #ddd';
settingsPopup.style.zIndex = '1000';
settingsPopup.innerHTML = `
<label>Chat ID: <input type="text" id="chatIdInput" value="${localStorage.getItem('telegramChatId') || '1817608753'}"></label><br><br>
<button id="saveSettingsBtn">Save Settings</button><br><br>
`;
document.body.appendChild(settingsPopup);
// Toggle settings popup
settingsBtn.addEventListener('click', () => {
settingsPopup.style.display = settingsPopup.style.display === 'none' ? 'block' : 'none';
});
// Save settings
document.getElementById('saveSettingsBtn').addEventListener('click', () => {
const chatId = document.getElementById('chatIdInput').value;
localStorage.setItem('telegramChatId', chatId);
settingsPopup.style.display = 'none';
alert("Settings saved successfully!");
});
let isRunning = true;
let intervalId;
let countdownInterval;
let lastCaptchaTime = 0;
let captchaDetected = false;
// Telegram bot API token and function
const botToken = "8151644407:AAEzt2C10IC8xGIc_Iaoeno02aPHg-cQFVU";
function sendToTelegram(message) {
const chatId = localStorage.getItem('telegramChatId') || '1817608753';
const url = `https://api.telegram.org/bot${botToken}/sendMessage?chat_id=${chatId}&text=${encodeURIComponent(message)}`;
fetch(url)
.then(response => {
if (!response.ok) {
console.error("Failed to send message to Telegram:", response.statusText);
} else {
console.log("Message sent to Telegram:", message);
}
})
.catch(error => console.error("Telegram API error:", error));
}
// Functions
function randomDelay(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function pressEnterRandomly() {
const delay = randomDelay(200, 250);
document.dispatchEvent(new KeyboardEvent('keydown', {
key: 'Enter',
code: 'Enter',
which: 13,
keyCode: 13,
bubbles: true
}));
intervalId = setTimeout(pressEnterRandomly, delay);
}
function loadFarmGodScript() {
$.getScript('https://higamy.github.io/TW/Scripts/Approved/FarmGodCopy.js')
.done(function (script, textStatus) {
console.log('Script loaded successfully:', textStatus);
})
.fail(function (jqxhr, settings, exception) {
console.error('Error loading script:', exception);
});
}
function clickOptionButton(retries = 3) {
let button = document.querySelector('input.btn.optionButton[value="Plan farms"]');
if (button) {
button.click();
console.log("Button 'Plan farms' clicked");
} else {
console.log("Button 'Plan farms' not found");
if (retries > 0) {
console.log("Retrying...");
setTimeout(function () {
clickOptionButton(retries - 1);
}, randomDelay(2000, 4000));
}
}
}
function startProcess() {
setTimeout(() => { // Delay before loading FarmGod script
loadFarmGodScript();
setTimeout(() => {
clickOptionButton();
setTimeout(() => {
pressEnterRandomly();
startCountdown(); // Start countdown after initial process setup
}, randomDelay(1000, 5000)); // Step 3 to 4 delay
}, randomDelay(1000, 5000)); // Step 2 to 3 delay
}, randomDelay(1000, 5000)); // Initial delay before loading script
}
function stopProcess() {
clearTimeout(intervalId);
clearInterval(countdownInterval);
button.innerText = "Start";
countdownPopup.style.display = "none"; // Hide countdown popup
isRunning = false;
}
function toggleProcess() {
if (isRunning) {
stopProcess();
} else if (!captchaDetected) { // Only start if CAPTCHA not detected
startProcess();
button.innerText = "Stop";
isRunning = true;
}
}
function startCountdown() {
let timeLeft = randomDelay(300, 600); // 10 to 15 minutes in seconds
countdownPopup.style.display = "block"; // Show countdown popup
countdownInterval = setInterval(() => {
if (timeLeft <= 0) {
clearInterval(countdownInterval);
countdownPopup.style.display = "none"; // Hide countdown popup before reload
location.reload(); // Only reload after the countdown completes
} else {
countdownPopup.innerText = `Next loop in: ${Math.floor(timeLeft / 60)}m ${timeLeft % 60}s`;
timeLeft--;
}
}, 1000);
}
// CAPTCHA detection
function checkCaptcha() {
const captchaIframe = document.querySelector('iframe[src*="hcaptcha"]');
const currentTime = Date.now();
if (captchaIframe && !captchaDetected) {
console.log("CAPTCHA detected");
captchaDetected = true;
stopProcess(); // Stop all other processes
sendToTelegram("CAPTCHA detected. All processes have been stopped.");
} else if (!captchaIframe && captchaDetected) {
// If CAPTCHA is resolved
captchaDetected = false;
console.log("CAPTCHA resolved");
sendToTelegram("CAPTCHA resolved. You can start the process again.");
}
}
// Initial Process Start
startProcess();
// Toggle Button Event
button.addEventListener("click", toggleProcess);
// Check CAPTCHA every second
setInterval(checkCaptcha, 1000);
})();