您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Infiltrace, modifikace
// ==UserScript== // @name Webgame - Infiltrace // @version 2024-2-11 // @description Infiltrace, modifikace // @author yS // @match *://*.webgame.cz/wg/index.php?p=rozvedka&s=viewspye* // @match *://webgame.cz/wg/index.php?p=rozvedka&s=viewspye* // @icon https://www.google.com/s2/favicons?sz=64&domain=webgame.cz // @grant none // @namespace https://greasyfork.org/users/1005892 // ==/UserScript== const DATA_SEPARATOR = "<br>"; modifyTable(); function modifyTable() { let table_summary = document.getElementById("spy-message-summary"); let info_type = getInfoType(table_summary); if (info_type == null) { console.log("Nezměněný typ infiltrace"); return; } let table_detail = document.getElementById("spy-message-detail"); let prestiz = getPrestiz(table_summary); let header_row = table_detail.children[0].children[0]; let data_row = table_detail.children[0].children[1]; addColumnInfo(header_row, data_row, prestiz, info_type); if (info_type == 0) { // vlada addArmyData(data_row); } } function getInfoType(table_summary) { let text = table_summary.querySelector(".r").innerText; text = text.split("infiltrovat"); if (text.length < 1) { return null; } text = text[1].split("\n"); if (text.length < 1) { return null; } text = text[0].trim(); if (text == "vládu") { return 0; } if (text == "generální štáb") { return 1; } return null; } function getPrestiz(table_summary) { let column = table_summary.rows[0].children[1]; let index = 12; let prestiz, text; let pruchodu = 50; do { pruchodu--; text = column.childNodes[index++]; if (text.nodeName != '#text') { continue; } prestiz = parseInt(text.textContent); } while ((isNaN(prestiz) || prestiz < 40000) && pruchodu > 0); return prestiz; } function addHeaderColumn(row, column_name) { let header = document.createElement("th"); header.innerHTML = column_name; header.colSpan = 2; row.appendChild(header); } function createColumn(class_name_1, class_name_2, text) { let column = document.createElement("td"); column.innerHTML = text; column.classList.add(class_name_1); column.classList.add(class_name_2); return column; } function addColumnInfo(header_row, data_row, prestiz, info_type) { addHeaderColumn(header_row, "Přehled"); let left_column_content = ""; let right_column_content = ""; let format = new Intl.NumberFormat(); // ARMADA ZACATEK let army_data = data_row.children[1].innerHTML.split(DATA_SEPARATOR); let prestiz_per_unit = [1, 5, 3.5, 3.5, 2.7]; let army_prestiz = 0; let mechy_podil = 0; for (let i = 0; i < 5; i++) { army_prestiz = army_prestiz + parseInt(army_data[i]) * prestiz_per_unit[i]; if (i == 4) { mechy_podil = parseInt(army_data[i]) * prestiz_per_unit[i]; } } left_column_content = left_column_content + "Armáda prestiž" + DATA_SEPARATOR + "Podíl prestiže" + DATA_SEPARATOR + DATA_SEPARATOR; right_column_content = right_column_content + format.format(Math.round(army_prestiz)) + DATA_SEPARATOR + (Math.round(army_prestiz / prestiz * 1000) / 10) + "%" + DATA_SEPARATOR + DATA_SEPARATOR; // ARMADA KONEC // MECHY % ZACATEK left_column_content = left_column_content + "Mechy %" + DATA_SEPARATOR + DATA_SEPARATOR; right_column_content = right_column_content + Math.round(mechy_podil / army_prestiz * 1000) / 10 + "%" + DATA_SEPARATOR + DATA_SEPARATOR; // MECHY % KONEC if (info_type == 0) { let uzemi_data = processUzemiInfo(data_row, army_data, left_column_content, right_column_content, format, prestiz); left_column_content = uzemi_data[0]; right_column_content = uzemi_data[1]; let uzemi_prestiz = uzemi_data[2]; let uzemi = uzemi_data[3]; let techy_data = processTechy(data_row, left_column_content, right_column_content, format, prestiz); left_column_content = techy_data[0]; right_column_content = techy_data[1]; let technologie_count = techy_data[2]; let ukrast_na_operaci = techy_data[3]; // MRTVA PRESTIZ ZACATEK let mrtva_prestiz = 0; mrtva_prestiz = prestiz - army_prestiz - uzemi_prestiz - technologie_count; left_column_content = left_column_content + "Mrtvá prestiž" + DATA_SEPARATOR + "Procent" + DATA_SEPARATOR + DATA_SEPARATOR; right_column_content = right_column_content + format.format(Math.round(mrtva_prestiz)) + DATA_SEPARATOR + (Math.round(mrtva_prestiz / prestiz * 1000) / 10) + "%" + DATA_SEPARATOR + DATA_SEPARATOR; let rozvedka_prestiz = (uzemi + 2000) / 4 * 15; left_column_content = left_column_content + "Na R kartičku" + DATA_SEPARATOR + DATA_SEPARATOR; right_column_content = right_column_content + format.format(Math.round(rozvedka_prestiz)) + DATA_SEPARATOR + DATA_SEPARATOR; // MRTVA PRESTIZ KONEC // KRADEZ TECHU ZACATEK left_column_content = left_column_content + "Techy krádež" + DATA_SEPARATOR; right_column_content = right_column_content + format.format(Math.floor(ukrast_na_operaci)) + DATA_SEPARATOR; // KRADEZ TECHU KONEC } let column = createColumn("rname", "l", left_column_content); data_row.appendChild(column); column = createColumn("rdata", "r", right_column_content); data_row.appendChild(column); } /** * @param data_row * @param army_data * @param left_column_content * @param right_column_content * @param format * @param prestiz * * @return array [left_column_content, right_column_content, uzemi_prestiz, uzemi] */ function processUzemiInfo(data_row, army_data, left_column_content, right_column_content, format, prestiz) { let budovy_data = data_row.children[3].innerHTML.split(DATA_SEPARATOR); let uzemi = parseInt(army_data[9]); let uzemi_prestiz = uzemi * 15; uzemi_prestiz = uzemi_prestiz + (uzemi - parseInt(budovy_data[11]) - parseInt(budovy_data[12])) * 5; // budovy uzemi_prestiz = uzemi_prestiz + parseInt(budovy_data[12]) * 2; // ruiny left_column_content = left_column_content + "Území" + DATA_SEPARATOR + "Procent" + DATA_SEPARATOR + DATA_SEPARATOR; right_column_content = right_column_content + format.format(uzemi_prestiz) + DATA_SEPARATOR + (Math.round(uzemi_prestiz / prestiz * 1000) / 10) + "%" + DATA_SEPARATOR + DATA_SEPARATOR; return [left_column_content, right_column_content, uzemi_prestiz, uzemi]; } /** * @param data_row * @param left_column_content * @param right_column_content * @param format * @param prestiz * * @return array [left_column_content, right_column_content, technologie_count, ukrast_na_operaci] */ function processTechy(data_row, left_column_content, right_column_content, format, prestiz) { let technologie_data = data_row.children[5].innerHTML.split(DATA_SEPARATOR); let technologie_count = 0; let pokryto_techu = 2 * parseInt(technologie_data[10]); let ukrast_na_operaci = 0; for (let i = 0; i < technologie_data.length; i++) { let technologie = parseInt(technologie_data[i]); technologie_count = technologie_count + technologie; if (technologie > pokryto_techu) { ukrast_na_operaci = ukrast_na_operaci + (technologie - pokryto_techu) * 0.05 + pokryto_techu * 0.002; } else { ukrast_na_operaci = ukrast_na_operaci + technologie * 0.002; } } left_column_content = left_column_content + "Technologie" + DATA_SEPARATOR + "Procent" + DATA_SEPARATOR + DATA_SEPARATOR; right_column_content = right_column_content + format.format(technologie_count) + DATA_SEPARATOR + (Math.round(technologie_count / prestiz * 1000) / 10) + "%" + DATA_SEPARATOR + DATA_SEPARATOR; return [left_column_content, right_column_content, technologie_count, ukrast_na_operaci]; } function addArmyData(data_row) { let format = new Intl.NumberFormat(); // ARMADA ZACATEK let army_data = data_row.children[1].innerHTML.split(DATA_SEPARATOR); let utok_per_unit = [1, 6, 6, 0, 2]; let obrana_per_unit = [1, 4, 0, 6, 3]; let utok_total = 0, obrana_total = 0; for (let i = 0; i < 5; i++) { utok_total = utok_total + parseInt(army_data[i]) * utok_per_unit[i]; obrana_total = obrana_total + parseInt(army_data[i]) * obrana_per_unit[i]; } // ARMADA KONEC data_row.children[0].innerHTML += DATA_SEPARATOR + DATA_SEPARATOR + "<b>Armáda</b>" + DATA_SEPARATOR + "U základ" + DATA_SEPARATOR + "O základ"; data_row.children[1].innerHTML += DATA_SEPARATOR + DATA_SEPARATOR + DATA_SEPARATOR + format.format(utok_total) + DATA_SEPARATOR + format.format(obrana_total); }