TW - Inventory Data

Récupération de données liés aux items dans l'inventaire du joueur

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey, το Greasemonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

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

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Violentmonkey για να εγκαταστήσετε αυτόν τον κώδικα.

θα χρειαστεί να εγκαταστήσετε μια επέκταση όπως το Tampermonkey ή το Userscripts για να εγκαταστήσετε αυτόν τον κώδικα.

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

Θα χρειαστεί να εγκαταστήσετε μια επέκταση διαχείρισης κώδικα χρήστη για να εγκαταστήσετε αυτόν τον κώδικα.

(Έχω ήδη έναν διαχειριστή κώδικα χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Έχω ήδη έναν διαχειριστή στυλ χρήστη, επιτρέψτε μου να τον εγκαταστήσω!)

// ==UserScript==
// @name TW - Inventory Data
// @namespace http://your.homepage/
// @version 0.8
// @description Récupération de données liés aux items dans l'inventaire du joueur
// @author krikri72
// @include http*://*.the-west.*/game.php*
// @grant none
// @history 	0.4     Prise en compte des bonus / level
// @history 	0.5     Prise en compte des améliorations pour les bonus / lvl + Simplication du chargement des listes d'items
// @history 	0.6     Remise de l'export sous forme txt
// @history 	0.7     Amélioration du code + Arrondi 5 chiffres pour bonus
// @history 	0.8     Mise à jour image
// ==/UserScript==
var icon = $('<div></div>').attr({
                'class': 'menulink',
                'title': 'TW - Inventory Data'
            }).css({
                'background': 'url(https://www.aht.li/3313286/sav-size.png)',
                'background-position': '0px 0px',
                'background-repeat': 'no-repeat'
            }).click(function() {
                start();
            });
            var bottom = $('<div></div>').attr({
                'class': 'menucontainer_bottom'
            });
            $('#ui_menubar .ui_menucontainer:last').after($('<div></div>').attr({
                'class': 'ui_menucontainer',
                'id': 'TEST'
            }).append(icon).append(bottom));
function start(){
    //Variables
    var isSkills;
    var isArmeBDF = false;
    var reg_espace = new RegExp("[ ]+", "g");
    var reg_plus = new RegExp("[+]", "g");
    var reg_virgule = new RegExp("[,]", "g");
    var bonusA = 0;
    
    //Propriétés Joueur
    //var lvlPlayer = Character.level;
    
    //Propriétés Item
    var EnumProprieteItems = {
        BALISE : {value: ""},
        NAME : {value: ""},
        LEVEL : {value: ""},
        LEVEL_AME : {value: ""},
        TYPE : {value: ""}
    };
    
    //Propriétés Dégats
    var EnumDegats = {
        DEGAT_MINI : {value: 0},
        DEGAT_MAXI : {value: 0}
    };
    var damage;
    
    //Bonus
    var bonus;
    var stringBonus, bonusLevel, nameSkill, tabSkill;
    
    //Aptitudes
    var attributes;
    
    //Attributs
    var skills;
        
    //Enumération skills
    var EnumSkills = {
        DIRIGER : {value: 0, nameF: "Diriger", nameTW: "leadership"}, 
        VISER : {value: 0, nameF: "Viser", nameTW: "aim"}, 
        EVITER : {value: 0, nameF: "Éviter", nameTW: "dodge"}, 
        SE_CACHER : {value: 0, nameF: "Se cacher", nameTW: "hide"}, 
        PERSEVERANCE : {value: 0, nameF: "Persévérance", nameTW: "endurance"}, 
        POINTS_DE_VIE : {value: 0, nameF: "Points de vie", nameTW: "health"},
        FORCE : {value: 0, nameF: "Force", nameTW: "strength"}, 
        MOBILITE : {value: 0, nameF: "Mobilité", nameTW: "flexibility"}, 
        HABILITE : {value: 0, nameF: "Habilité", nameTW: "dexterity"}, 
        CHARISME : {value: 0, nameF: "Charisme", nameTW: "charisma"}, 
        DEGAT : {value: 0, nameF: "dégâts"}
    };
    
    //Enumération type item
    var EnumType = {
        ANIMAL : {nameTW: "animal", nameF: "Animal", liste:Bag.items_by_type.animal}, 
        ARME_BDF : {nameTW: "left_arm", nameF: "Arme BDF", liste:Bag.items_by_type.left_arm}, 
        ARME_DUDU : {nameTW: "right_arm", nameF: "Arme Dudu", liste:Bag.items_by_type.right_arm}, 
        PANTALON : {nameTW: "pants", nameF: "Pantalon", liste:Bag.items_by_type.pants}, 
        HABILLEMENT : {nameTW: "body", nameF: "Habillement", liste:Bag.items_by_type.body}, 
        COLLIER : {nameTW: "neck", nameF: "Collier", liste:Bag.items_by_type.neck},
        BOTTE : {nameTW: "foot", nameF: "Botte", liste:Bag.items_by_type.foot}, 
        CEINTURE : {nameTW: "belt", nameF: "Ceinture", liste:Bag.items_by_type.belt},
        CHAPEAU : {nameTW: "head", nameF: "Chapeau", liste:Bag.items_by_type.head},
        PRODUIT : {nameTW: "yield", nameF: "Produit", liste:Bag.items_by_type.yield}
    };
    
    var listeItem = recuperationItems();
    var item, stringExport = '';
    for (i = 0; i < listeItem.length; i++)
    {
        item = ItemManager.get(parseInt(listeItem[i]));
        
        //Traitement des propriétés
        traitementProprietes();
        
        //Traitement des bonus
        bonus = item.bonus.item;
        if (bonus.length > 0)
            traitementBonus();
        
        //Traitement des dégâts
        damage = item.damage;
        if (EnumType.ARME_BDF.nameTW == EnumProprieteItems.TYPE)
            traitementDamages();
        
        //Traitement des aptitudes
        attributes = item.bonus.attributes;
        if (attributes != null)
            traitementAttributes();
        
        //Traitement des attributs
        skills = item.bonus.skills;
        if (skills != null)
            traitementSkills();
        
        if (!isBonusBDF())
            stringExport += ecrireInfos();
        else
            stringExport += ecrireInfos();
         
        remiseAZero();
    }
    console.log(stringExport);
    
    //Export document
    document.location = "data:text/tab-separated-values," + encodeURIComponent(stringExport);
    
    function recuperationItems(){
        var liste = EnumType.ANIMAL.liste + ',';
        liste += EnumType.CEINTURE.liste + ',';
        liste += EnumType.HABILLEMENT.liste + ',';
        liste += EnumType.BOTTE.liste + ',';
        liste += EnumType.ARME_DUDU.liste + ',';
        liste += EnumType.CHAPEAU.liste + ',';
        liste += EnumType.COLLIER.liste + ',';
        liste += EnumType.PANTALON.liste + ',';
        liste += EnumType.ARME_BDF.liste + ',';
        liste += EnumType.PRODUIT.liste;
        return liste.split(reg_virgule);
    }
    
    function traitementProprietes(){
        EnumProprieteItems.BALISE = item.item_id;
        EnumProprieteItems.NAME = item.name;
        EnumProprieteItems.LEVEL = item.level;
        EnumProprieteItems.LEVEL_AME = item.item_level;
        EnumProprieteItems.TYPE = item.type;
    };
    
    function traitementBonus(){
        for (j = 0; j < bonus.length; j++){
            stringBonus = bonus[j].desc;
            tabSkill = stringBonus.split(reg_espace);

            bonusLevel = tabSkill[0].replace(reg_plus,"");
            
            if (tabSkill.length == 5)
                nameSkill = tabSkill[1] + ' ' + tabSkill[2];
            else if (tabSkill.length == 6)
                nameSkill = tabSkill[1] + ' ' + tabSkill[2] + ' ' + tabSkill[3];
            else 
                nameSkill = tabSkill[1];
            ajoutBonus();
        };    
    };
    
    function ajoutBonus(){
        //var addBonus = Math.ceil(bonusLevel * parseInt(lvlPlayer)); // A enlever TW pas besoin 
        if (EnumProprieteItems.LEVEL_AME > 0)
            bonusA = 0.1 * EnumProprieteItems.LEVEL_AME;
        var value = Math.round((parseFloat(bonusLevel) + bonusA * parseFloat(bonusLevel))*100000)/100000;
        switch (nameSkill) {
            case (EnumSkills.DEGAT.nameF):
                EnumSkills.DEGAT.value = value;
                break;
            case (EnumSkills.DIRIGER.nameF):
                EnumSkills.DIRIGER.value = value;
                break;
            case (EnumSkills.VISER.nameF):
                EnumSkills.VISER.value = value;
                break;
            case (EnumSkills.EVITER.nameF):
                EnumSkills.EVITER.value = value;
                break;
            case (EnumSkills.SE_CACHER.nameF):
                EnumSkills.SE_CACHER.value = value;
                break;
            case (EnumSkills.PERSEVERANCE.nameF):
                EnumSkills.PERSEVERANCE.value = value;
                break;
            case (EnumSkills.POINTS_DE_VIE.nameF):
                EnumSkills.POINTS_DE_VIE.value = value;
                break;
            case (EnumSkills.FORCE.nameF):
                EnumSkills.FORCE.value = value;
                break;
            case (EnumSkills.MOBILITE.nameF):
                EnumSkills.MOBILITE.value = value;
                break;
            case (EnumSkills.HABILITE.nameF):
                EnumSkills.HABILITE.value = value;
                break;
            case (EnumSkills.CHARISME.nameF):
               EnumSkills.CHARISME.value = value;
                break;
        };
    };
    
    function traitementAttributes(){
        if (attributes[EnumSkills.FORCE.nameTW] != null)
            EnumSkills.POINTS_DE_VIE.value = EnumSkills.PERSEVERANCE.value = parseInt(attributes[EnumSkills.FORCE.nameTW]);
        if (attributes[EnumSkills.MOBILITE.nameTW] != null)
            EnumSkills.EVITER.value = EnumSkills.SE_CACHER.value = parseInt(attributes[EnumSkills.MOBILITE.nameTW]);
        if (attributes[EnumSkills.HABILITE.nameTW] != null)
            EnumSkills.VISER.value = parseInt(attributes[EnumSkills.HABILITE.nameTW]); 
        if (attributes[EnumSkills.CHARISME.nameTW] != null)
            EnumSkills.DIRIGER.value = parseInt(attributes[EnumSkills.CHARISME.nameTW]);
    };
    
    function traitementSkills(){
        if (skills[EnumSkills.DIRIGER.nameTW] != null)
            EnumSkills.DIRIGER.value = parseInt(EnumSkills.DIRIGER.value) + parseInt(skills[EnumSkills.DIRIGER.nameTW]);
        if (skills[EnumSkills.VISER.nameTW] != null)
            EnumSkills.VISER.value = parseInt(EnumSkills.VISER.value) + parseInt(skills[EnumSkills.VISER.nameTW]);
        if (skills[EnumSkills.EVITER.nameTW] != null)
            EnumSkills.EVITER.value = parseInt(EnumSkills.EVITER.value) + parseInt(skills[EnumSkills.EVITER.nameTW]);
        if (skills[EnumSkills.SE_CACHER.nameTW] != null)
            EnumSkills.SE_CACHER.value = parseInt(EnumSkills.SE_CACHER.value) + parseInt(skills[EnumSkills.SE_CACHER.nameTW]);
        if (skills[EnumSkills.PERSEVERANCE.nameTW] != null)
            EnumSkills.PERSEVERANCE.value = parseInt(EnumSkills.PERSEVERANCE.value) + parseInt(skills[EnumSkills.PERSEVERANCE.nameTW]);
        if (skills[EnumSkills.POINTS_DE_VIE.nameTW] != null)
            EnumSkills.POINTS_DE_VIE.value = parseInt(EnumSkills.POINTS_DE_VIE.value) + parseInt(skills[EnumSkills.POINTS_DE_VIE.nameTW]);
    };
    
    
    function isBonusBDF(){
        var sommeBonus = EnumSkills.DIRIGER.value + EnumSkills.VISER.value + EnumSkills.EVITER.value + EnumSkills.SE_CACHER.value + EnumSkills.PERSEVERANCE.value + EnumSkills.POINTS_DE_VIE.value + EnumSkills.FORCE.value + EnumSkills.CHARISME.value + EnumSkills.MOBILITE.value + EnumSkills.HABILITE.value;
        if (sommeBonus == 0)
            isSkills = false;
        else
            isSkills = true;
    }
    
    function remiseAZero(){
        EnumSkills.DIRIGER.value =  EnumSkills.VISER.value = EnumSkills.EVITER.value = EnumSkills.SE_CACHER.value = EnumSkills.PERSEVERANCE.value = EnumSkills.POINTS_DE_VIE.value = 0;
        EnumSkills.FORCE.value = EnumSkills.MOBILITE.value = EnumSkills.HABILITE.value = EnumSkills.CHARISME.value = 0;
        EnumSkills.DEGAT.value = EnumDegats.DEGAT_MAXI.value = EnumDegats.DEGAT_MINI.value = 0;
        bonus = skills = attributes = null;
        bonusA = 0;
        isArmeBDF = false;
        lvlAItem = 0;
    };
    
    function ecrireInfos(){
        var detail = '[item=' + EnumProprieteItems.BALISE + ']';
        detail += ' | ';
        switch (EnumProprieteItems.TYPE) {
            case EnumType.ANIMAL.nameTW:
                detail += EnumType.ANIMAL.nameF;
                break;
            case EnumType.CEINTURE.nameTW:
                detail += EnumType.CEINTURE.nameF;
                break;
            case EnumType.BOTTE.nameTW:
                detail += EnumType.BOTTE.nameF;
                break;
            case EnumType.HABILLEMENT.nameTW:
                detail += EnumType.HABILLEMENT.nameF;
                break;
            case EnumType.ARME_DUDU.nameTW:
                detail += EnumType.ARME_DUDU.nameF;
                break;
            case EnumType.ARME_BDF.nameTW:
                detail += EnumType.ARME_BDF.nameF;
                break; 
            case EnumType.COLLIER.nameTW:
                detail += EnumType.COLLIER.nameF;
                break;
            case EnumType.PANTALON.nameTW:
                detail += EnumType.PANTALON.nameF;
                break;
            case EnumType.CHAPEAU.nameTW:
                detail += EnumType.CHAPEAU.nameF;
                break; 
            case EnumType.PRODUIT.nameTW:
                detail += EnumType.PRODUIT.nameF;
                break;
        };
        detail += ' | ' + EnumProprieteItems.NAME;
        if (EnumProprieteItems.LEVEL_AME != 0)
            detail += '(' + EnumProprieteItems.LEVEL_AME + ' lvlA)';
        detail += ' | ' + EnumProprieteItems.LEVEL;
        if (isSkills) {
            detail += ' |';
            if (EnumSkills.FORCE.value != 0)
                detail += ' Force : ' + EnumSkills.FORCE.value; 
            if (EnumSkills.MOBILITE.value != 0)
                detail += ' Mobilité : ' + EnumSkills.MOBILITE.value;
            if (EnumSkills.HABILITE.value != 0)
                detail += ' Habilité : ' + EnumSkills.HABILITE.value;
            if (EnumSkills.CHARISME.value != 0)
                detail += ' Charisme : ' + EnumSkills.CHARISME.value;
            if (EnumSkills.DIRIGER.value != 0)
                detail += ' Diriger : ' + EnumSkills.DIRIGER.value;
            if (EnumSkills.VISER.value != 0)
                detail += ' Viser : ' + EnumSkills.VISER.value; 
            if (EnumSkills.EVITER.value != 0)
                detail += ' Eviter : ' + EnumSkills.EVITER.value; 
            if (EnumSkills.SE_CACHER.value != 0)
                detail += ' Se cacher : ' + EnumSkills.SE_CACHER.value;
            if (EnumSkills.PERSEVERANCE.value != 0)
                detail += ' Persévérence : ' + EnumSkills.PERSEVERANCE.value;
            if (EnumSkills.POINTS_DE_VIE.value != 0)
                detail += ' Points de vie : ' + EnumSkills.POINTS_DE_VIE.value;
        }
        if (isArmeBDF) 
            detail += ' | Dégâts Mini : ' + EnumDegats.DEGAT_MINI.value + '; Dégâts Maxi : ' + EnumDegats.DEGAT_MAXI.value;
        if (EnumSkills.DEGAT.value != 0)
            detail += ' | Bonus dégâts : ' + EnumSkills.DEGAT.value;
        detail += '\n';
        if (!isSkills && !isArmeBDF)
            detail = '';
        return detail;
    };
    
    function traitementDamages(){
        isArmeBDF = true;
        if (EnumProprieteItems.LEVEL_AME > 0)
            bonusA = EnumProprieteItems.LEVEL_AME * 0.1;
        EnumDegats.DEGAT_MAXI.value = Math.floor(damage.damage_max + bonusA * damage.damage_max);
        EnumDegats.DEGAT_MINI.value = Math.floor(damage.damage_min + bonusA * damage.damage_min);
    };
};