🏠 Home 

MoD mode

try to manage the world!


Install this script?
// ==UserScript==
// @name         MoD mode
// @namespace    http://tampermonkey.net/
// @version      2024-05-25
// @description  try to manage the world!
// @author       You
// @match        https://www.erepublik.com/en
// @icon         https://www.google.com/s2/favicons?sz=64&domain=erepublik.com
// @grant        none
// ==/UserScript==
(function() {
'use strict';
// Define the list
const _token = csrfToken;
const dateTime = SERVER_DATA.serverTime.dateTime;
let message = `*Philippines TW* \n`;
var list = [{
war_id: 205525,
id: 639847,
country_id: 49,
region: 465
}, {
war_id: 205903,
id: 639992,
country_id: 81,
region: 464
}, {
war_id: 206105,
id: 640137,
country_id: 10,
region: 270
}, {
war_id: 209808,
id: 639948,
country_id: 59,
region: 510
}, {
war_id: 211305,
id: 639829,
country_id: 24,
region: 50
}, {
war_id: 211391,
id: 639907,
country_id: 31,
region: 704
}, {
war_id: 212392,
id: 640151,
country_id: 15,
region: 171
}, {
war_id: 213683,
id: 639924,
country_id: 168,
region: 750
}, {
war_id: 213982,
id: 639720,
country_id: 54,
region: 271
}, {
war_id: 213988,
id: 639668,
country_id: 164,
region: 728
}, {
war_id: 214058,
id: 640024,
country_id: 82,
region: 724
}, {
war_id: 214111,
id: 640346,
country_id: 77,
region: 641
}, {
war_id: 214188,
id: 641830,
country_id: 169,
region: 178
}, {
war_id: 214656,
id: 652852,
country_id: 165,
region: 749
}];
mainFunction();
async function mainFunction() {
createDivElement('scan', 'sidebar', 'SCANNING ALL BATTLE');
createDivElement('list', 'sidebar', '');
const fetchTime = getCurrentUnixTimestamp();
const fetchlist = await fetchData(`https://www.erepublik.com/en/military/campaignsJson/list?${fetchTime}`);
for (let item of list) {
let country = fetchlist.countries[item.country_id].name;
// Call the function to check if war ID exists
let r###lt = await isWarIdExist(fetchlist, item.war_id); // Ensure to await the r###lt
let exists = r###lt.exists;
let battleData = r###lt.battle;
console.log(r###lt);
if (exists) {
const region = battleData.region.name;
const defC = fetchlist.countries[battleData.def.id].name;
const defP = battleData.def.points;
const invC = fetchlist.countries[battleData.inv.id].name;
const invP = battleData.inv.points;
console.log(region);
message += `\n*${region}*\n🛡: ${defC} : ${defP} Points \n🗡: ${invC} : ${invP} Points\n`;
} else {
const battleId = item.id;
const payload = payloadList(battleId, _token);
const url = `https://www.erepublik.com/en/military/battle-console`
const list = await PostRequest(payload, url);
console.log(list.list[0].r###lt);
const r###lt = list.list[0].r###lt;
const outcome = r###lt.outcome;
const winner = r###lt.winner;
if (outcome === "defense" && winner === "Philippines") {
const ready = await checkRegionExistence(fetchlist, item.region);
let rta =  `*not ready*`;
if(ready){
rta = `*ready*`;
}
const endTime = r###lt.end;
var times = compareTime(dateTime, endTime);
console.log("Difference between dateTime and r###ltEnd:", times);
message += `\nAttack *${country}* - auto in ${times}\n [${item.war_id}](https://www.erepublik.com/en/wars/show/${item.war_id}) ${rta}\n`;
const linkText = `Attack ${country} - auto in ${times}`;
const linkUrl = `https://www.erepublik.com/en/wars/show/${item.war_id}`;
displayLinkInHtml('list', linkText, linkUrl);
} else {
message += `\nWaiting attack from *${country}*\n`;
}
await delay(3000);
console.log("War ID", item.war_id, "does not exist in battles.");
}
console.log("------------------------");
}
sendMessage(message);
createDivElement('send', 'sidebar', 'DATA SENT TO CHANNEL');
}
// Function to check if a war_id exists in fetchlist.battles
function isWarIdExist(fetchlist, warId) {
for (let battleId in fetchlist.battles) {
if (fetchlist.battles.hasOwnProperty(battleId)) {
if (fetchlist.battles[battleId].war_id === warId) {
return {
exists: true,
battle: fetchlist.battles[battleId]
};
}
}
}
return {
exists: false,
battle: null
};
}
function checkRegionExistence(object, regionId) {
// Iterate over battles object
for (const battleId in object.battles) {
const battle = object.battles[battleId];
// Check if region id matches
if (battle.region && battle.region.id === regionId) {
// If region id exists, return false
return false;
}
}
// If region id doesn't exist, return true
return true;
}
// Function to get current UNIX timestamp
function getCurrentUnixTimestamp() {
const currentTime = new Date();
const unixTimestamp = Math.floor(currentTime.getTime() / 1000); // Convert milliseconds to seconds
return unixTimestamp;
}
// Function to introduce a delay
function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
function createDivElement(divId, parentId, textContent) {
const parentElement = document.querySelector(`.${parentId}`);
if (parentElement) {
const newDiv = document.createElement('div');
newDiv.id = divId;
newDiv.textContent = textContent;
parentElement.appendChild(newDiv);
} else {
console.error(`Parent element with class '${parentId}' not found.`);
}
}
// Function to display any value in HTML
function displayValueInHtml(elementId, value) {
const element = document.getElementById(elementId);
if (element) {
element.textContent = `${element.textContent} ${value}`;
} else {
console.error(`Element with ID '${elementId}' not found.`);
}
}
function displayLinkInHtml(containerId, linkText, linkUrl) {
const containerElement = document.getElementById(containerId);
if (containerElement) {
const linkElement = document.createElement('a');
linkElement.href = linkUrl;
linkElement.target = '_blank';
linkElement.textContent = linkText;
containerElement.appendChild(linkElement);
containerElement.appendChild(document.createElement('br'));
} else {
console.error(`Container element with ID '${containerId}' not found.`);
}
}
// Function to fetch data from a URL
async function fetchData(url) {
try {
const response = await fetch(url);
if (!response.ok) {
throw new Error(`HTTP error! Status: ${response.status}`);
}
const data = await response.json();
return data;
} catch (error) {
throw new Error(`Failed to fetch data from ${url}: ${error.message}`);
}
}
async function PostRequest(payload, url) {
try {
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded"
},
body: Object.keys(payload)
.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(payload[key])}`)
.join('&')
});
const responseData = await response.json();
return responseData;
} catch (error) {
console.error("Error:", error);
return null;
}
}
// Function to construct the payload from variables
function payloadList(battleId, _token) {
const action = "warList";
const Page = 1;
return {
battleId,
action,
Page,
_token
};
}
function compareTime(dateTime, r###ltEnd) {
// Convert dateTime and r###ltEnd to Unix timestamps
var dateTimeUnix = (new Date(dateTime)).getTime() / 1000;
var r###ltEndUnix = (new Date(r###ltEnd)).getTime() / 1000;
// If r###ltEnd is earlier than dateTime, add 24 hours to r###ltEnd
if (r###ltEndUnix < dateTimeUnix) {
r###ltEndUnix += 24 * 3600; // 24 hours in seconds
}
// Calculate the difference in seconds
var differenceInSeconds = Math.abs(dateTimeUnix - r###ltEndUnix);
// Convert difference to HH:MM:SS format
var hours = Math.floor(differenceInSeconds / 3600);
var minutes = Math.floor((differenceInSeconds % 3600) / 60);
var seconds = Math.floor(differenceInSeconds % 60);
// Format the difference as HH:MM:SS
var formattedDifference = hours.toString().padStart(2, '0') + ":" +
minutes.toString().padStart(2, '0') + ":" +
seconds.toString().padStart(2, '0');
return formattedDifference;
}
function sendMessage(message) {
var botToken = '6423448975:AAGmYbAXaC0rTuIDH-2SoNXhjPLdjayX35c';
var chatId = '-1002078934269';
var apiUrl = 'https://api.telegram.org/bot' + botToken + '/sendMessage?chat_id=' + chatId + '&text=' + encodeURIComponent(message) + '&parse_mode=markdown&disable_web_page_preview=true';
// Make the HTTP request
fetch(apiUrl)
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
}
})();