// ==UserScript==
// @name DataInventory
// @namespace http://your.homepage/
// @version 0.1
// @description Récupération de données de son inventaire TW
// @author krikri72
// @include http*://*.the-west.*/game.php*
// @grant none
// ==/UserScript==
var nom;
var icon = $('<div></div>').attr({
'class': 'menulink',
'title': 'Load Data'
}).css({
'background': 'url(http://www.aht.li/2770126/Data.jpg)',
'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 = 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);
};
};