PuntuaciónMZ

Herramienta que da una puntuación para cada posición de jugadores de Managerzone (Traducción de olavarriense4ever de PontuacaoMZ https://greasyfork.org/es/scripts/422968-pontuacaomz)

// ==UserScript==
// @name         PuntuaciónMZ
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Herramienta que da una puntuación para cada posición de jugadores de  Managerzone (Traducción de olavarriense4ever de PontuacaoMZ https://greasyfork.org/es/scripts/422968-pontuacaomz)
// @author       Joaquín de la Iglesia (olavarriense4ever)
// @match        https://www.managerzone.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    setTimeout(() => {

        var players_container = document.getElementById("players_container");
        var players_html = players_container.children;


    var pesos =
        {
            "Arquero": {
                "Velocidad": 2,
                "Resistencia": 8,
                "Inteligencia": 8,
                "Pases": 0,
                "Remates": 0,
                "Cabezazos": 0,
                "Atajando": 8,
                "Control de balón": 2,
                "Entradas": 0,
                "Pases Largos": 2,
                "Balón Parado": 0,
                "Experiencia": 8,
                "Estado físico": 8
            },
            "Defensor": {
                "Velocidad": 7,
                "Resistencia": 3,
                "Inteligencia": 8,
                "Pases": 6,
                "Remates": 0,
                "Cabezazos": 0,
                "Atajando": 0,
                "Control de balón": 3,
                "Entradas": 8,
                "Pases Largos": 3,
                "Balón Parado": 0,
                "Experiencia": 8,
                "Estado físico": 3
            },
            "Lateral": {
                "Velocidad": 9,
                "Resistencia": 8,
                "Inteligencia": 3,
                "Pases": 7,
                "Remates": 0,
                "Cabezazos": 0,
                "Atajando": 0,
                "Control de balón": 7,
                "Entradas": 9,
                "Pases Largos": 4,
                "Balón Parado": 0,
                "Experiencia": 10,
                "Estado físico": 8
            },
            "Volante": {
                "Velocidad": 7,
                "Resistencia": 8,
                "Inteligencia": 8,
                "Pases": 8,
                "Remates": 0,
                "Cabezazos": 0,
                "Atajando": 0,
                "Control de balón": 2,
                "Entradas": 8,
                "Pases Largos": 7,
                "Balón Parado": 0,
                "Experiencia": 8,
                "Estado físico": 8
            },
            "Mediocampista Central": {
                "Velocidad": 7,
                "Resistencia": 8,
                "Inteligencia": 8,
                "Pases": 8,
                "Remates": 1,
                "Cabezazos": 0,
                "Atajando":	0,
                "Control de balón": 5,
                "Entradas": 1,
                "Pases Largos": 8,
                "Balón Parado": 0,
                "Experiencia": 8,
                "Estado físico": 8
            },
            "Mediocampista Ofensivo": {
                "Velocidad": 6,
                "Resistencia": 8,
                "Inteligencia": 8,
                "Pases": 8,
                "Remates": 8,
                "Cabezazos": 0,
                "Atajando": 0,
                "Control de balón": 7,
                "Entradas": 7,
                "Pases Largos": 7,
                "Balón Parado": 0,
                "Experiencia": 8,
                "Estado físico": 8
            },
            "Extremo": {
               "Velocidad": 9,
                "Resistencia": 8,
                "Inteligencia": 5,
                "Pases": 3,
                "Remates": 0,
                "Cabezazos": 0,
                "Atajando": 0,
                "Control de balón": 8,
                "Entradas": 0,
                "Pases Largos": 8,
                "Balón Parado": 0,
                "Experiencia": 8,
                "Estado físico":	8
            },
            "Delantero": {
                "Velocidad": 8,
                "Resistencia": 8,
                "Inteligencia": 8,
                "Pases": 3,
                "Remates": 8,
                "Cabezazos": 2,
                "Atajando": 0,
                "Control de balón": 6,
                "Entradas": 1,
                "Pases Largos": 0,
                "Balón Parado": 0,
                "Experiencia": 8,
                "Estado físico":	8
            },
            "Cabezón": {
                "Velocidad": 4,
                "Resistencia": 8,
                "Inteligencia": 8,
                "Pases": 2,
                "Remates": 8,
                "Cabezazos": 8,
                "Atajando": 0,
                "Control de balón": 5,
                "Entradas": 0,
                "Pases Largos": 0,
                "Balón Parado": 0,
                "Experiencia": 8,
                "Estado físico": 8
            }
    }

    var habilidades = [
        "Velocidad",
        "Resistencia",
        "Inteligencia",
        "Pases",
        "Remates",
        "Cabezazos" ,
        "Atajando",
        "Control de balón",
        "Entradas",
        "Pases Largos",
        "Balón Parado",
        "Experiencia",
        "Estado físico"
    ]

    function calcularNotaPorPosicao(jogador, posicao) {
        let somatorioDaHabilidade = 0
        let somatorioDoPeso = 0
        habilidades.forEach(habilidade => {
            somatorioDaHabilidade = somatorioDaHabilidade + (jogador[habilidade] * pesos[posicao][habilidade])
            somatorioDoPeso = somatorioDoPeso + pesos[posicao][habilidade]
        })


        return somatorioDaHabilidade / somatorioDoPeso
    }

    function buscaHabilidadesDoJogador(allskillval) {
        let contador = 0
        let jogador = {}
        for (var i = 0; i < allskillval.length; i++) {
            let habilidade = habilidades[contador]
            if (!allskillval[i].innerText.includes("%")){
                jogador[habilidade] = allskillval[i].innerText.replace(/[()]/g, "")
                contador++
            }
        }
        return jogador
    }

    for (var i = 0; i < players_html.length; i++) {
        var player = players_html[i];
        var header = player.getElementsByClassName("subheader clearfix")[0];


        var allskillval = player.getElementsByClassName("skillval")



        var jogador = buscaHabilidadesDoJogador(allskillval)


        var goleiro = calcularNotaPorPosicao(jogador, "Arquero")
        var zagueiro = calcularNotaPorPosicao(jogador, "Defensor")
        var lateral = calcularNotaPorPosicao(jogador, "Lateral")
        var volante = calcularNotaPorPosicao(jogador, "Volante")
        var meia_central = calcularNotaPorPosicao(jogador, "Mediocampista Central")
        var meia_atacante = calcularNotaPorPosicao(jogador, "Mediocampista Ofensivo")
        var ponta = calcularNotaPorPosicao(jogador, "Extremo")
        var atacante = calcularNotaPorPosicao(jogador, "Delantero")
        var cabecudo = calcularNotaPorPosicao(jogador, "Cabezón")

        const posicoes = [
            {nome: "Arquero", nota: goleiro},
            {nome:"Defensor", nota: zagueiro},
            {nome:"Lateral", nota: lateral},
            {nome:"Volante", nota: volante},
            {nome:"Mediocampista Central", nota: meia_central},
            {nome:"Mediocampista Ofensivo", nota:meia_atacante },
            {nome:"Extremo", nota:ponta },
            {nome:"Delantero", nota:atacante },
            {nome:"Cabezón", nota:cabecudo },

        ]

        posicoes.sort((a,b) => (a.nota > b.nota) ? -1: 1)


        var stringNota = ""

        posicoes.forEach(posicao => {
            stringNota = stringNota + `${posicao.nome}: ${posicao.nota.toFixed(3)} || `
        })

        var nota = document.createElement("span");
        var novaLinha = document.createElement("br");

        nota.textContent = stringNota

        if (!window.location.href.includes("transfer")) header.appendChild(novaLinha)
        header.appendChild(nota)

    }

        }, 10000)


})();