Page 1 sur 1

[Tip For Geeks] Script de calcul des niveaux en match

MessageMessage posté...: Mer Déc 29, 2021 16:30 pm
de stand by me
Bonsoir les dosés,

ci-joint un bout de code Javascript provisoire permettant d'évaluer les niveaux en match d'un joueur.

C'est basé sur les coefficients que j'avais présentés dans le topic-tuto Funny Stadium United (HS : pourquoi a-t-il été archivé ??).

L'évaluation est extrêmement fiable sauf pour le niveau Gardien des joueurs de champ (chose qui n'a heureusement presque aucun intérêt).

Code: Tout sélectionner
var items = {};
var levels = [];

var levelNames = [
    "Tête",
    "Frappe",
    "Contrôle",
    "Dribble",
    "Récupération",
    "Passe",
    "Endurance",
    "Gardien"
];

class LevelElement {
    constructor(label, value) {
        this.label = label;
        this.value = value;
    }
};

myRadarChart.datasets[0].points.forEach(p => items[p.label] = p.value);

// Useless ?
var isGoalKeeper = items["Réflexe"] != null;

function getItem(itemName) {
    return items[itemName] != null ? items[itemName] : 0;
}

function evaluateLevel(levelName, decimal = 2) {
    let levelValue = 0;
    switch (levelName) {
        case "Tête":
            levelValue =
                0.67*getItem("Tête") +
                0.22*getItem("Physique") +
                0.11*getItem("Flair");
            break;
        case "Récupération":
            levelValue =
                0.4*getItem("Tacle") +
                0.27*getItem("Physique") +
                0.2*getItem("Vitesse") +
                0.13*getItem("Flair");
            break;
        case "Gardien":
            levelValue =
                0.15*getItem("Réflexe") +
                0.138*getItem("Prise balle") +
                0.138*getItem("Détente") +
                0.125*getItem("Expérience") +
                0.115*getItem("Flair") +
                0.11*getItem("Contrôle") +
                0.085*getItem("Passe") +
                0.06*getItem("Endurance") +
                0.05*getItem("Vitesse") +
                0.02*getItem("Dribble") +
                0.02*getItem("Tir");
            break;
        case "Frappe":
            levelValue =
                0.52*getItem("Tir") +
                0.18*getItem("Contrôle") +
                0.16*getItem("Flair") +
                0.08*getItem("Dribble") +
                0.06*getItem("Vitesse");
            break;
        case "Contrôle":
            levelValue =
                0.57*getItem("Contrôle") +
                0.2*getItem("Dribble") +
                0.12*getItem("Physique") +
                0.08*getItem("Vitesse") +
                0.03*getItem("Flair");
            break;
        case "Dribble":
            levelValue =
                0.52*getItem("Dribble") +
                0.2*getItem("Vitesse") +
                0.16*getItem("Flair") +
                0.1*getItem("Contrôle") +
                0.02*getItem("Physique");
            break;
        case "Passe":
            levelValue =
                0.67*getItem("Passe") +
                0.16*getItem("Flair") +
                0.09*getItem("Tir") +
                0.08*getItem("Contrôle");
            break;
        case "Endurance":
            levelValue =
                0.46*getItem("Endurance") +
                0.31*getItem("Physique") +
                0.23*getItem("Forme");
            break;
        default:
            // Unknown ...
    }
    return levelValue.toFixed(decimal);
}

levelNames.forEach(levelName => levels.push(new LevelElement(levelName, evaluateLevel(levelName))));

var msg = `${document.title} \n\n`;
levels.forEach(lvl => msg += `${lvl.label} : ${lvl.value}\n`);
console.log(msg);


Comment l'utiliser ?

Uniquement sur navigateur web.

Dans votre navigateur, ouvrir les outils de développements (F12 ou Ctrl+Shit+J).

Aller dans l'onglet "Snippets" / "Extraits".
Cliquer sur "+ New snippet" / "+ Nouvel extrait".
Recopier le code dans la zone droite et enregistrer le script.

snippet2.PNG
snippet2.PNG (92.28 Kio) Vu 1673 fois


Si vous changez de navigateur, de machine ou réinitialisez le navigateur il faut réitérer l'opération donc venir ici. Ça aurait été mieux de pouvoir le sauvegarder dans un bloc-notes sur Defifoot.

Pour faire tourner le script, aller sur la fiche d'un joueur.
Ouvrir les outils de développement et exécuter le snippet : le résultat est affiché dans la console (et sera effacé au prochain changement de page !).

snippet1.PNG
snippet1.PNG (240.62 Kio) Vu 1673 fois


:chinois:

Re: [Tip For Geeks] Script de calcul des niveaux en match

MessageMessage posté...: Mer Jan 12, 2022 22:49 pm
de pierre97
Jako a dû confondre avec le topic équipe :mrgreen: