TW - Inventory Data

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

目前為 2015-11-15 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==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);
    };
};