MZ Colorized Skills (Mobile Version)

Colorize Managerzone players skills valid for mobile versions

当前为 2025-05-22 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         MZ Colorized Skills (Mobile Version)
// @namespace    http://tampermonkey.net/
// @version      0.6
// @description  Colorize Managerzone players skills valid for mobile versions
// @author       xente
// @contributor  vanjoge (https://greasyfork.org/es/users/220102-vanjoge)
// @match        https://www.managerzone.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=managerzone.com
// @grant        GM_xmlhttpRequest
// @license      GNU
// ==/UserScript==

// Based in the vanjoge original script: https://greasyfork.org/es/scripts/373382-van-mz-playeradvanced
// Thanks vanjoge for the original code!

(function() {
    'use strict';

    var max_skill="<img src='data:image/gif;base64,R0lGODlhDAAKAJEDAP////8AAMyZmf///yH5BAEAAAMALAAAAAAMAAoAAAIk3BQZYp0CAAptxvjMgojTEVwKpl0dCQrQJX3T+jpLNDXGlDUFADs='/>"
    var unmaxed_skill="<img src='data:image/gif;base64,R0lGODlhDAAKAJEDAP///8zM/wAA/////yH5BAEAAAMALAAAAAAMAAoAAAIk3CIpYZ0BABJtxvjMgojTIVwKpl0dCQbQJX3T+jpLNDXGlDUFADs='/>"

    var maxed_skill_hockey


     let maxed_imgs = new Map();

    maxed_imgs.set('maxed_soccer', "<img src='data:image/gif;base64,R0lGODlhDAAKAJEDAP////8AAMyZmf///yH5BAEAAAMALAAAAAAMAAoAAAIk3BQZYp0CAAptxvjMgojTEVwKpl0dCQrQJX3T+jpLNDXGlDUFADs='/>");
    maxed_imgs.set('unmaxed_soccer', "<img src='data:image/gif;base64,R0lGODlhDAAKAJEDAP///8zM/wAA/////yH5BAEAAAMALAAAAAAMAAoAAAIk3CIpYZ0BABJtxvjMgojTIVwKpl0dCQbQJX3T+jpLNDXGlDUFADs='/>");

    maxed_imgs.set('maxed_hockey', "<img src='data:image/gif;base64,R0lGODlhDAAKANUkAOXq//8pKunt//ZTVPz19dXZ+tzk/+NAV+bl+Ojs//4wMeWkreXp/f4tLvRMT+Dm/+Xr/7lra/4vMepKSv7///ZRUvz8/tmHhs/Z/+xKSfVeYNCJkfhFRPUxOuBUZvRsb9ri//39//hDQv8oKf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACQALAAAAAAMAAoAAAZCQBLpMhqJMgiLkEQoOkeDwnLzdIowwuoTlNUWDRSSF/oIkUQBZ6BRAWiEkIlopPgsEhzPMgIQCBgOEiNLQh1PB4RBADs='/>");
    maxed_imgs.set('unmaxed_hockey', "<img src='data:image/gif;base64,R0lGODlhDAAKALMNAOnt/+Xr/9ri/6/A/6G1/73L/52x/8/Z/4Wf/32Z/1x9/0Rr/x9N/////wAAAAAAACH5BAEAAA0ALAAAAAAMAAoAAAQwsDXD2FJB6sot0UnHLYckdoJ5VmmzWoi0nAuxSIEyW0qxJBrFAAAYKCoaSYgD1EQAADs='/>");

    let colors = new Map();
    colors.set('skc_4', '#ff00ff');
    colors.set('skc_3', '#0000ff');
    colors.set('skc_2', '#b8860b');
    colors.set('skc_1', '#ff0000');

    let params = new URLSearchParams(window.location.search);
var type="players"
if (params.get('p') === 'transfer') {
 type="market";
}

    setSport()
    setDeviceFormat()



    setTimeout(() => {
     colorizeSkills()
}, 2000);



     function setDeviceFormat(){
        if(!document.getElementById("deviceFormatStx")){
            var script = document.createElement('script');
            script.textContent = `
        var newElemenDeviceSTX = document.createElement("input");
        newElemenDeviceSTX.id= "deviceFormatStx";
        newElemenDeviceSTX.type = "hidden";
        newElemenDeviceSTX.value=window.device;
        document.body.appendChild(newElemenDeviceSTX);

`;
            document.documentElement.appendChild(script);
            script.remove();
            window.stx_device=document.getElementById("deviceFormatStx").value
        }
    }
   


    async function colorizeSkills() {
        var playerDivs = document.querySelectorAll('div.playerContainer');
        playerDivs.forEach((div, divIndex) => {
var tableIndex=0;
            if( window.stx_device=="mobile"){
                tableIndex=1;
            }

var spanClass="clippable"

            var skillsTable = playerDivs[divIndex].querySelectorAll('table.player_skills.player_skills_responsive');
             if(type==="market"){
             skillsTable = playerDivs[divIndex].querySelectorAll('table.player_skills.player_skills_transfer');
                 tableIndex=0;
spanClass="skill_name"
             }

            var h2 = playerDivs[divIndex].querySelectorAll("h2.subheader.clearfix")
            var as = h2[0].querySelectorAll("a.subheader")
            let newSpan = document.createElement('span');
newSpan.innerHTML = ' H2 [Entradas,Velocidad] L2[Resistencia,Porteria] S3'
            as[0].insertAdjacentElement('afterend',newSpan);

            //span_name[0].innerHTML+="H2 [Entradas,Velocidad] L2[Resistencia,Porteria] S3"

            var span_id = playerDivs[divIndex].querySelectorAll("span.player_id_span")
            var player_id = span_id[0].innerHTML
            var filas = skillsTable[tableIndex].querySelectorAll('tr');
            var contSkill = 0
            if(window.sport==="hockey"){
                contSkill=-1;
            }
            filas.forEach((fila, i) => {
                if ((contSkill>-1)&&(contSkill < 11)) {
                    console.log(fila)
                    var divContainer = fila.querySelector('div#container');
                    console.log(divContainer)
                    var hiddenDiv = divContainer.querySelectorAll('img.skill');
                    hiddenDiv[0].style.display = 'none';


                    var skillval = fila.querySelectorAll('td.skillval');
                    var skillValue = skillval[0].querySelectorAll("span")
                    const valor = parseInt(skillValue[0].innerHTML, 10); // convertir a entero
                    var dataToInsert = '<div class="skill" style="font-size:0;padding: 0 0 0 4px;">'
                    for (let i = 0; i < valor; i++) {
                        if (skillValue[0].classList.contains('maxed')) {
                            dataToInsert += maxed_imgs.get('maxed_'+window.sport)
                        } else {
                            dataToInsert += maxed_imgs.get('unmaxed_'+window.sport)
                        }

                    }
                    dataToInsert += +'</div>'

                    divContainer.innerHTML += dataToInsert


                    var primeraCelda = fila.querySelectorAll('td');

                    var skillName = primeraCelda[0].querySelectorAll("span."+spanClass)
var idValue=skillName[0].innerHTML
if(type==="market"){
                    var aux=skillName[0].querySelectorAll("span")
                    idValue=aux[0].textContent
}
                    skillName[0].id = idValue + "_" + player_id

                    
                }
                contSkill++
            });

            GM_xmlhttpRequest({
                method: 'GET',
                url: 'https://www.managerzone.com/ajax.php?p=players&sub=scout_report&pid=' + player_id + '&sport=' + window.sport,
                onload: function (responseDetailsScout) {
                    let valores = [];
                    const parser = new DOMParser();
                    const doc = parser.parseFromString(responseDetailsScout.responseText, 'text/html');
                    const aTags = doc.querySelectorAll('span.stars');
                    var index = 0
                    var hp_stars = 0
                    var lp_stars = 0
                    aTags.forEach(tag => {
                        const is = tag.querySelectorAll('i');
                        is.forEach(i => {
                            if (index <= 3) {
                                if (i.className == "fa fa-star fa-2x lit") {
                                    hp_stars++;
                                }
                            }


                            if (index > 3 && index <= 7) {
                                if (i.className == "fa fa-star fa-2x lit") {
                                    lp_stars++;
                                }
                            }

                            index++;
                        });

                    });


                    const uls = doc.querySelectorAll('ul');
                    index = 0;
                    //console.log("Player:" + id+"  hp"+hp_stars)
                    uls.forEach(ul => {
                            var lis = ul.querySelectorAll('li');
                            if (lis.length > 2) {
                                var stars_value = 0
                                var spanIndex = 0;
                                var spans1 = lis[1].querySelectorAll('span')
                                var spans2 = lis[2].querySelectorAll('span')
                                if (spans1.length > 1) {
                                    spanIndex = 1
                                }
                                if (index == 0) {
                                    stars_value = hp_stars
                                    document.getElementById(spans1[spanIndex].textContent + "_" + player_id).style.fontWeight = "bold"
                                    document.getElementById(spans2[spanIndex].textContent + "_" + player_id).style.fontWeight = "bold"
                                } else {
                                    stars_value = lp_stars
                                }
                                document.getElementById(spans1[spanIndex].textContent + "_" + player_id).style.color = colors.get("skc_" + stars_value)
                                document.getElementById(spans2[spanIndex].textContent + "_" + player_id).style.color = colors.get("skc_" + stars_value)
                                index++
                            }

                        }
                    );
                }
            });

        });

    }



    function setSport(){

        let sportCookie=getSportByMessenger()
        if(sportCookie===""){
            sportCookie = getCookie("MZSPORT");
        }
        if(sportCookie===""){
            sportCookie=getSportByLink()
        }
        if(sportCookie===""){
            sportCookie=getSportByScript()
        }

         window.sport = sportCookie;


    }



     function getSportByMessenger() {
        if (document.getElementById("messenger")) {

            if ((document.getElementById("messenger").className === "soccer") || (document.getElementById("messenger").className === "hockey")) {
                return document.getElementById("messenger").className
            }
        }
        return ""
    }

    function getSportByLink(){
        let element = document.getElementById("settings-wrapper");
        if (element) {
            let firstLink = element.getElementsByTagName("a")[0];
            if (firstLink) {
                if(firstLink.href.includes("soccer")){
                    return "hockey"
                }else{
                    return "soccer"
                }
            }
        }
    }
    function getSportByScript(){
        const script = document.createElement('script');
        script.textContent = `
    let newElement = document.createElement("input");
        newElement.id= "stx_sport";
        newElement.type = "hidden";
        newElement.value=window.ajaxSport;
        let body = document.body;
        body.appendChild(newElement);

`;
        document.documentElement.appendChild(script);
        script.remove();
        return document.getElementById("stx_sport").value
    }

      function getCookie(nombre) {
        let regex = new RegExp("(?:(?:^|.*;\\s*)" + nombre + "\\s*\\=\\s*([^;]*).*$)|^.*$");
        let valorCookie = document.cookie.replace(regex, "$1");
        return decodeURIComponent(valorCookie);
    }




})();