TW - Inventory Data

Récupération de données de son inventaire TW

当前为 2015-11-15 提交的版本,查看 最新版本

// ==UserScript==
// @name TW - Inventory Data
// @namespace http://your.homepage/
// @version 0.4
// @description
// @author krikri72
// @include http*://*.the-west.*/game.php*
// @grant none
// @description Récupération de données de son inventaire TW
// ==/UserScript==
var icon = $('<div></div>').attr({
    'class': 'menulink',
    'title': 'Charger données'
}).css({
    'background': 'url(http://www.aht.li/2772940/save.png)',
    'background-position': '0px 0px'
}).mouseleave(function () {
    $(this).css('background-position', '0px 0px');
}).mouseenter(function (e) {
    $(this).css('background-position', '25px 0px');
}).click(function () {start()
                     });
var bottom = $('<div></div>').attr({
    'class': 'menucontainer_bottom'
});
$('#ui_menubar .ui_menucontainer :last').after($('<div></div>').attr({
    'class': 'ui_menucontainer',
    'id': 'Auto'
}).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 baliseItem;
    var nameItem;
    var lvlItem;
    var lvlAItem;
    var typeItem;
    
    //Propriétés Dégats
    var damage, damage_max = 0, damage_min = 0, bonusDamage = 0;
    
    //Bonus
    var bonus;
    var stringBonus, bonusLevel, nameSkill, tabSkill;
    
    //Aptitudes
    var attributes;
    
    //Attributs
    var skills;
    
    var leadership = 0, aim = 0, dodge = 0, hide = 0, endurance = 0, health = 0;
    var strength = 0, charisma = 0, flexibility = 0, dexterity = 0;
        
    //Enumération skills
    var EnumSkills = {
        DIRIGER : {value: 0, name: "Diriger"}, 
        VISER : {value: 0, name: "Viser"}, 
        EVITER : {value: 0, name: "Eviter"}, 
        SE_CACHER : {value: 0, name: "Se cacher"}, 
        PERSEVERANCE : {value: 0, name: "Persévérance"}, 
        POINTS_DE_VIE : {value: 0, name: "Points de vie"},
        FORCE : {value: 0, name: "Force"}, 
        MOBILITE : {value: 0, name: "Mobilité"}, 
        HABILITE : {value: 0, name: "Habilité"}, 
        CHARISME : {value: 0, name: "Charisme"}, 
        DEGAT : {value: 0, name: "dégâts"},
    };
    
    //Enumération type item
    var EnumType = {
        ANIMAL : {nameTW: "animal", nameF: "Animal", liste:null}, 
        ARME_BDF : {nameTW: "left_arm", nameF: "Arme BDF", liste:null}, 
        ARME_DUDU : {nameTW: "right_arm", nameF: "Arme Dudu", liste:null}, 
        PANTALON : {nameTW: "pants", nameF: "Pantalon", liste:null}, 
        HABILLEMENT : {nameTW: "body", nameF: "Habillement", liste:null}, 
        COLLIER : {nameTW: "neck", nameF: "Collier", liste:null},
        BOTTE : {nameTW: "foot", nameF: "Botte", liste:null}, 
        CEINTURE : {nameTW: "belt", nameF: "Ceinture", liste:null},
        CHAPEAU : {nameTW: "head", nameF: "Chapeau", liste:null},
        PRODUIT : {nameTW: "yield", nameF: "Produit", liste:null},
    };
    
    chargementDonnees();
    
    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(item);
        
        //Traitement des bonus
        bonus = item.bonus.item;
        if (bonus.length > 0)
            traitementBonus(bonus);
        
        //Traitement des dégâts
        damage = item.damage;
        if (EnumType.ARME_BDF.nameTW == typeItem)
            traitementDamages(damage);
        
        //Traitement des aptitudes
        attributes = item.bonus.attributes;
        if (attributes.length > 0)
            traitementAttributes();
        
        //Traitement des attributs
        skills = item.bonus.skills;
        if (skills != null)
            traitementSkills();
        
        if (!isBonusBDF())
            stringExport += ecrireInfos(typeItem, stringExport, isSkills, isArmeBDF);
        else
            stringExport += ecrireInfos(typeItem, stringExport, isSkills, isArmeBDF);
         
        remiseAZero();
    }
    console.log(stringExport);
    
    //Export document
    document.location = "data:text/tab-separated-values," + encodeURIComponent(stringExport);
    
    function chargementDonnees(){
        EnumType.ANIMAL.liste = Bag.items_by_type.animal;
        EnumType.CEINTURE.liste = Bag.items_by_type.belt;
        EnumType.HABILLEMENT.liste = Bag.items_by_type.body;
        EnumType.BOTTE.liste = Bag.items_by_type.foot;
        EnumType.ARME_DUDU.liste = Bag.items_by_type.left_arm;
        EnumType.CHAPEAU.liste = Bag.items_by_type.head;
        EnumType.COLLIER.liste = Bag.items_by_type.neck;
        EnumType.PANTALON.liste = Bag.items_by_type.pants;
        EnumType.ARME_BDF.liste = Bag.items_by_type.right_arm;
        EnumType.PRODUIT.liste = Bag.items_by_type.yield;
    }
    
    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(item){
        baliseItem = item.item_id;
        nameItem = item.name;
        lvlItem = item.level;
        lvlAItem = item.item_level;
        typeItem = item.type;
    };
    
    function traitementBonus(bonus){
        for (j = 0; j < bonus.length; j++){
            stringBonus = bonus[j].desc;
            tabSkill = stringBonus.split(reg_espace);

            bonusLevel = tabSkill[0].replace(reg_plus,"");
            nameSkill = tabSkill[1];
           
            ajoutBonus();
        };    
    };
    
    function ajoutBonus(){
        //var addBonus = Math.ceil(bonusLevel * parseInt(lvlPlayer)); // A enlever TW pas besoin 
        //Skills
        switch (nameSkill) {
            case (EnumSkills.DEGAT.name):
                bonusDamage = parseFloat(bonusLevel);
                break;
            case (EnumSkills.DIRIGER.name):
                leadership = parseFloat(bonusLevel);
                break;
            case (EnumSkills.VISER.name):
                aim = parseFloat(bonusLevel);
                break;
            case (EnumSkills.EVITER.name):
                dodge = parseFloat(bonusLevel);
                break;
            case (EnumSkills.SE_CACHER.name):
                hide = parseFloat(bonusLevel);
                break;
            case (EnumSkills.PERSEVERANCE.name):
                endurance = parseFloat(bonusLevel);
                break;
            case (EnumSkills.POINTS_DE_VIE.name):
                health = parseFloat(bonusLevel);
                break;
            case (EnumSkills.FORCE.name):
                strength = parseFloat(bonusLevel);
                break;
            case (EnumSkills.MOBILITE.name):
                flexibility = parseFloat(bonusLevel);
                break;
            case (EnumSkills.HABILITE.name):
                dexterity = parseFloat(bonusLevel);
                break;
            case (EnumSkills.CHARISME.name):
                charisma = parseFloat(bonusLevel);
                break;
        };
    };
    
    function traitementAttributes(){
        if (lvlAItem > 0)
            bonusA = lvlAItem * 0.1;
        if (attributes["strength"] != null)
            endurance = health = parseInt(attributes["strength"]);//Math.ceil(parseInt(attributes["strength"]) + bonusA * parseInt(attributes["strength"]));
        if (attributes["flexibility"] != null)
            dodge = hide = parseInt(attributes["flexibility"]);
        if (attributes["dexterity"] != null)
            aim = parseInt(attributes["dexterity"]);
        if (attributes["charisma"] != null)
            leadership = parseInt(attributes["charisma"]);
    };
    
    function traitementSkills(){
        if (skills["leadership"] != null)
            leadership = parseInt(leadership) + parseInt(skills["leadership"]);
        if (skills["aim"] != null)
            aim = parseInt(aim) + parseInt(skills["aim"]);
        if (skills["dodge"] != null)
            dodge = parseInt(dodge) + parseInt(skills["dodge"]);
        if (skills["hide"] != null)
            hide = parseInt(hide) + parseInt(skills["hide"]);
        if (skills["endurance"] != null)
            endurance = parseInt(endurance) + parseInt(skills["endurance"]);
        if (skills["health"] != null)
            health = parseInt(health) + parseInt(skills["health"]);
    };
    
    
    function isBonusBDF(){
        var sommeBonus = leadership + aim + dodge + hide + endurance + health + strength + charisma + flexibility + dexterity;
        if (sommeBonus == 0)
            isSkills = false;
        else
            isSkills = true;
    }
    
    function remiseAZero(){
        leadership =  aim = dodge = hide = endurance = health = 0;
        strength = charisma = flexibility = dexterity = 0;
        bonus = skills = attributes = null;
        bonusA = 0;
        isArmeBDF = false;
        lvlAItem = 0;
    };
    
    function ecrireInfos(typeItem, stringInfo, isSkills, isArmeBDF){
        var detail = '[item=' + baliseItem + ']';
        detail += ' | ';
        switch (typeItem) {
            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 += ' | ' + nameItem;
        if (lvlAItem != 0)
            detail += '(' + lvlAItem + ' lvlA),';
        detail += ' | ' + lvlItem;
        if (isSkills) {
            detail += ' |';
            if (leadership != 0)
                detail += ' Diriger : ' + leadership;
            if (aim != 0)
                detail += ' Viser : ' + aim; 
            if (dodge != 0)
                detail += ' Eviter : ' + dodge; 
            if (hide != 0)
                detail += ' Se cacher : ' + hide
            if (endurance != 0)
                detail += ' Persévérence : ' + endurance
            if (health != 0)
                detail += ' Points de vie : ' + health;
            if (strength != 0)
                detail += ' Force : ' + strength; 
            if (flexibility != 0)
                detail += ' Mobilité : ' + flexibility
            if (dexterity != 0)
                detail += ' Habilité : ' + dexterity
            if (charisma != 0)
                detail += ' Charisme : ' + charisma;
        }
        if (isArmeBDF) 
            detail += ' | Dégâts Mini : ' + damage_min + '; Dégâts Maxi : ' + damage_max;
        if (bonusDamage != 0)
            detail += ' | Bonus dégâts : ' + bonusDamage;
        detail += '\n';
        if (!isSkills && !isArmeBDF)
            detail = '';
        return detail;
    };
    
    function traitementDamages(damage){
        isArmeBDF = true;
        if (lvlAItem > 0)
            bonusA = lvlAItem * 0.1;
        damage_max = Math.floor(damage.damage_max + bonusA * damage.damage_max);
        damage_min = Math.floor(damage.damage_min + bonusA * damage.damage_min);
    };
};