Может скрипты покажешь?
На
(() => {
console.clear();
const output = [];
const skills = [
"Навесы","Дриблинг","Голова","ДУ","Удар","Опека","Пас","Пенальти",
"Штрафные","Угловые","Отбор","Техника","ВыборПоз","Работа","Скорость",
"Мощь","Выносл","ВидПоля","КМ","Лид","ВПВрат","Реакция","ВыходВрат","РукиВрат"
];
const header = ["Имя","Позиция","Возраст","Талант","Физа","Форма","Мораль"];
skills.forEach(skill => {
header.push(skill);
header.push(skill + " ур.");
header.push(skill + " Сост.");
header.push(skill + " пр.");
});
output.push(header.join("\t"));
const splitPercent = (text) => {
if (!text) return ["", "", 0];
const beforeSpace = text.split(" ")[0] || "";
const match = text.match(/\((.*?)\)/);
let progressRaw = match ? match[1] : "";
const progressNumber = parseFloat(
progressRaw.replace("+", "").replace("%", "")
) || 0;
const formattedBefore = beforeSpace
.replace("%", "")
.replace(/\./g, ",");
const formattedProgress = progressRaw
.replace("+", "")
.replace("%", "")
.replace(/\./g, ",");
return [formattedBefore, formattedProgress, progressNumber];
};
const formatNumber = (num) =>
num.toString().replace(/\./g, ",");
for (let i = 1; i <= 4; i++) {
const container = document.querySelector(`#increase_${i}`);
if (!container) continue;
const tables = container.querySelectorAll("table.main_table");
tables.forEach(table => {
const rows = table.querySelectorAll("tr");
let currentRow = [];
rows.forEach(row => {
const headCell = row.querySelector("td.main_table_head");
if (headCell) {
if (currentRow.length) {
output.push(currentRow.join("\t"));
}
const innerTable = headCell.querySelector("table");
const firstTextCell = innerTable?.querySelector("tr td:first-child");
if (firstTextCell) {
const text = firstTextCell.innerText
.replace(/\u00A0/g, "")
.trim();
currentRow = text
.split(",")
.map(v => v.trim()
.replace(/позиция/gi, "")
.replace(/возраст/gi, "")
.replace(/талант/gi, "")
.replace(/физа/gi, "")
.replace(/форма/gi, "")
.replace(/мораль/gi, "")
);
}
return;
}
const cells = row.querySelectorAll("td.main_table_body_alt");
if (cells.length === 12 && currentRow.length) {
const raw0 = cells[3]?.innerText.trim();
const raw6 = cells[9]?.innerText.trim();
let [percent0, progress0, progressNum0] = splitPercent(raw0);
let [percent6, progress6, progressNum6] = splitPercent(raw6);
const getStatus = (cellIndex, raw, progressNum, percent, progress) => {
const html = cells[cellIndex].innerHTML;
const trainingCell = cellIndex === 0 ? cells[4] : cells[10];
const hasTraining = trainingCell?.innerHTML.includes('/images/training/5.png');
const hasSuperb = html.includes('/images/superb.png');
const hasPoor = html.includes('/images/poor.png');
const isNA = raw?.includes("(n/a)");
// Повышение
if (hasSuperb)
return "Повышение";
// Poor логика
if (hasPoor) {
const originalPercent = parseFloat(percent.replace(",", ".")) || 0;
const newProgress = 100 - originalPercent;
progress = formatNumber(newProgress);
if (hasTraining)
return ["Потеря", progress];
return ["Потеря по возрасту", progress];
}
// n/a логика
if (isNA) {
if (hasTraining)
return "Падение";
return "Падение по возрасту";
}
// Обычный прогресс
if (progressNum > 0)
return "Рост";
if (progressNum < 0)
return "Падение";
return "Нейтрально";
};
let status0 = getStatus(0, raw0, progressNum0, percent0, progress0);
let status6 = getStatus(6, raw6, progressNum6, percent6, progress6);
if (Array.isArray(status0)) {
progress0 = status0[1];
status0 = status0[0];
}
if (Array.isArray(status6)) {
progress6 = status6[1];
status6 = status6[0];
}
const blockValues = [
status0,
cells[1]?.innerText.trim(),
percent0,
progress0,
status6,
cells[7]?.innerText.trim(),
percent6,
progress6
];
currentRow.push(...blockValues);
}
});
if (currentRow.length) {
output.push(currentRow.join("\t"));
}
});
}
console.log(output.join("\n"));
})();