Detecta ataque inimigo e desvia tropas 5 segundos antes do impacto, retornando-as depois (apenas para fins educacionais)
// ==UserScript==
// @name Grepolis Attack Detector and Troop Evacuator
// @namespace http://tampermonkey.net/
// @version 0.2
// @description Detecta ataque inimigo e desvia tropas 5 segundos antes do impacto, retornando-as depois (apenas para fins educacionais)
// @author li-mousin
// @match https://*.grepolis.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// ID da cidade de destino para desviar as tropas
const targetCityId = '67890'; // Substitua pelo ID real da cidade de destino
// Função para criar e adicionar o botão na interface do Grepolis
function createButton() {
let btn = document.createElement("button");
btn.innerHTML = "Iniciar Detecção de Ataques";
btn.style.position = "fixed";
btn.style.bottom = "10px";
btn.style.left = "10px";
btn.style.zIndex = 1000;
document.body.appendChild(btn);
btn.addEventListener("click", function() {
monitorAttacks();
});
}
// Função para obter o ID da cidade atual a partir da URL
function getCurrentCityId() {
const urlParams = new URLSearchParams(window.location.search);
return urlParams.get('town_id');
}
// Função para monitorar ataques
function monitorAttacks() {
setInterval(() => {
const incomingAttacks = document.querySelectorAll('.incoming_attack'); // Substitua com o seletor correto
incomingAttacks.forEach(attack => {
const arrivalTime = new Date(attack.dataset.arrivalTime); // Substitua com a forma correta de obter o horário de chegada
const currentTime = new Date();
const timeToImpact = arrivalTime - currentTime;
if (timeToImpact > 0 && timeToImpact <= 5000) {
evacuateTroops();
}
});
}, 1000); // Verifica a cada segundo
}
// Função para desviar tropas
function evacuateTroops() {
const currentCityId = getCurrentCityId();
if (!currentCityId) {
alert("ID da cidade atual não encontrado!");
return;
}
console.log(`Desviando tropas da cidade ${currentCityId} para a cidade ${targetCityId}`);
// Obtendo todas as tropas disponíveis
const troops = document.querySelectorAll('.unit_input');
// Selecionando todas as tropas
troops.forEach(troop => {
troop.value = troop.max;
});
// Simulando o envio de tropas como apoio (essa parte precisa ser ajustada de acordo com a API real do Grepolis)
document.querySelector('#send_command .btn_send').click();
console.log(`Tropas enviadas de ${currentCityId} para ${targetCityId}`);
// Esperar um tempo antes de cancelar o apoio (substitua '10000' com o tempo apropriado em milissegundos para retorno)
setTimeout(() => {
// Cancelar o apoio e retornar tropas
cancelSupportAndReturnTroops();
}, 10000);
}
// Função para cancelar o apoio e retornar as tropas
function cancelSupportAndReturnTroops() {
const supportCommands = document.querySelectorAll('.support_command_cancel .btn_cancel'); // Substitua com o seletor correto para cancelar apoios
supportCommands.forEach(btn => {
btn.click();
});
console.log('Apoio cancelado e tropas retornando.');
}
// Esperar até que a página esteja completamente carregada
window.addEventListener('load', function() {
createButton();
});
})();