TW - Inventory Data

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

  1. // ==UserScript==
  2. // @name TW - Inventory Data
  3. // @namespace http://your.homepage/
  4. // @version 0.8
  5. // @description Récupération de données liés aux items dans l'inventaire du joueur
  6. // @author krikri72
  7. // @include http*://*.the-west.*/game.php*
  8. // @grant none
  9. // @history 0.4 Prise en compte des bonus / level
  10. // @history 0.5 Prise en compte des améliorations pour les bonus / lvl + Simplication du chargement des listes d'items
  11. // @history 0.6 Remise de l'export sous forme txt
  12. // @history 0.7 Amélioration du code + Arrondi 5 chiffres pour bonus
  13. // @history 0.8 Mise à jour image
  14. // ==/UserScript==
  15. var icon = $('<div></div>').attr({
  16. 'class': 'menulink',
  17. 'title': 'TW - Inventory Data'
  18. }).css({
  19. 'background': 'url(https://www.aht.li/3313286/sav-size.png)',
  20. 'background-position': '0px 0px',
  21. 'background-repeat': 'no-repeat'
  22. }).click(function() {
  23. start();
  24. });
  25. var bottom = $('<div></div>').attr({
  26. 'class': 'menucontainer_bottom'
  27. });
  28. $('#ui_menubar .ui_menucontainer:last').after($('<div></div>').attr({
  29. 'class': 'ui_menucontainer',
  30. 'id': 'TEST'
  31. }).append(icon).append(bottom));
  32. function start(){
  33. //Variables
  34. var isSkills;
  35. var isArmeBDF = false;
  36. var reg_espace = new RegExp("[ ]+", "g");
  37. var reg_plus = new RegExp("[+]", "g");
  38. var reg_virgule = new RegExp("[,]", "g");
  39. var bonusA = 0;
  40. //Propriétés Joueur
  41. //var lvlPlayer = Character.level;
  42. //Propriétés Item
  43. var EnumProprieteItems = {
  44. BALISE : {value: ""},
  45. NAME : {value: ""},
  46. LEVEL : {value: ""},
  47. LEVEL_AME : {value: ""},
  48. TYPE : {value: ""}
  49. };
  50. //Propriétés Dégats
  51. var EnumDegats = {
  52. DEGAT_MINI : {value: 0},
  53. DEGAT_MAXI : {value: 0}
  54. };
  55. var damage;
  56. //Bonus
  57. var bonus;
  58. var stringBonus, bonusLevel, nameSkill, tabSkill;
  59. //Aptitudes
  60. var attributes;
  61. //Attributs
  62. var skills;
  63. //Enumération skills
  64. var EnumSkills = {
  65. DIRIGER : {value: 0, nameF: "Diriger", nameTW: "leadership"},
  66. VISER : {value: 0, nameF: "Viser", nameTW: "aim"},
  67. EVITER : {value: 0, nameF: "Éviter", nameTW: "dodge"},
  68. SE_CACHER : {value: 0, nameF: "Se cacher", nameTW: "hide"},
  69. PERSEVERANCE : {value: 0, nameF: "Persévérance", nameTW: "endurance"},
  70. POINTS_DE_VIE : {value: 0, nameF: "Points de vie", nameTW: "health"},
  71. FORCE : {value: 0, nameF: "Force", nameTW: "strength"},
  72. MOBILITE : {value: 0, nameF: "Mobilité", nameTW: "flexibility"},
  73. HABILITE : {value: 0, nameF: "Habilité", nameTW: "dexterity"},
  74. CHARISME : {value: 0, nameF: "Charisme", nameTW: "charisma"},
  75. DEGAT : {value: 0, nameF: "dégâts"}
  76. };
  77. //Enumération type item
  78. var EnumType = {
  79. ANIMAL : {nameTW: "animal", nameF: "Animal", liste:Bag.items_by_type.animal},
  80. ARME_BDF : {nameTW: "left_arm", nameF: "Arme BDF", liste:Bag.items_by_type.left_arm},
  81. ARME_DUDU : {nameTW: "right_arm", nameF: "Arme Dudu", liste:Bag.items_by_type.right_arm},
  82. PANTALON : {nameTW: "pants", nameF: "Pantalon", liste:Bag.items_by_type.pants},
  83. HABILLEMENT : {nameTW: "body", nameF: "Habillement", liste:Bag.items_by_type.body},
  84. COLLIER : {nameTW: "neck", nameF: "Collier", liste:Bag.items_by_type.neck},
  85. BOTTE : {nameTW: "foot", nameF: "Botte", liste:Bag.items_by_type.foot},
  86. CEINTURE : {nameTW: "belt", nameF: "Ceinture", liste:Bag.items_by_type.belt},
  87. CHAPEAU : {nameTW: "head", nameF: "Chapeau", liste:Bag.items_by_type.head},
  88. PRODUIT : {nameTW: "yield", nameF: "Produit", liste:Bag.items_by_type.yield}
  89. };
  90. var listeItem = recuperationItems();
  91. var item, stringExport = '';
  92. for (i = 0; i < listeItem.length; i++)
  93. {
  94. item = ItemManager.get(parseInt(listeItem[i]));
  95. //Traitement des propriétés
  96. traitementProprietes();
  97. //Traitement des bonus
  98. bonus = item.bonus.item;
  99. if (bonus.length > 0)
  100. traitementBonus();
  101. //Traitement des dégâts
  102. damage = item.damage;
  103. if (EnumType.ARME_BDF.nameTW == EnumProprieteItems.TYPE)
  104. traitementDamages();
  105. //Traitement des aptitudes
  106. attributes = item.bonus.attributes;
  107. if (attributes != null)
  108. traitementAttributes();
  109. //Traitement des attributs
  110. skills = item.bonus.skills;
  111. if (skills != null)
  112. traitementSkills();
  113. if (!isBonusBDF())
  114. stringExport += ecrireInfos();
  115. else
  116. stringExport += ecrireInfos();
  117. remiseAZero();
  118. }
  119. console.log(stringExport);
  120. //Export document
  121. document.location = "data:text/tab-separated-values," + encodeURIComponent(stringExport);
  122. function recuperationItems(){
  123. var liste = EnumType.ANIMAL.liste + ',';
  124. liste += EnumType.CEINTURE.liste + ',';
  125. liste += EnumType.HABILLEMENT.liste + ',';
  126. liste += EnumType.BOTTE.liste + ',';
  127. liste += EnumType.ARME_DUDU.liste + ',';
  128. liste += EnumType.CHAPEAU.liste + ',';
  129. liste += EnumType.COLLIER.liste + ',';
  130. liste += EnumType.PANTALON.liste + ',';
  131. liste += EnumType.ARME_BDF.liste + ',';
  132. liste += EnumType.PRODUIT.liste;
  133. return liste.split(reg_virgule);
  134. }
  135. function traitementProprietes(){
  136. EnumProprieteItems.BALISE = item.item_id;
  137. EnumProprieteItems.NAME = item.name;
  138. EnumProprieteItems.LEVEL = item.level;
  139. EnumProprieteItems.LEVEL_AME = item.item_level;
  140. EnumProprieteItems.TYPE = item.type;
  141. };
  142. function traitementBonus(){
  143. for (j = 0; j < bonus.length; j++){
  144. stringBonus = bonus[j].desc;
  145. tabSkill = stringBonus.split(reg_espace);
  146.  
  147. bonusLevel = tabSkill[0].replace(reg_plus,"");
  148. if (tabSkill.length == 5)
  149. nameSkill = tabSkill[1] + ' ' + tabSkill[2];
  150. else if (tabSkill.length == 6)
  151. nameSkill = tabSkill[1] + ' ' + tabSkill[2] + ' ' + tabSkill[3];
  152. else
  153. nameSkill = tabSkill[1];
  154. ajoutBonus();
  155. };
  156. };
  157. function ajoutBonus(){
  158. //var addBonus = Math.ceil(bonusLevel * parseInt(lvlPlayer)); // A enlever TW pas besoin
  159. if (EnumProprieteItems.LEVEL_AME > 0)
  160. bonusA = 0.1 * EnumProprieteItems.LEVEL_AME;
  161. var value = Math.round((parseFloat(bonusLevel) + bonusA * parseFloat(bonusLevel))*100000)/100000;
  162. switch (nameSkill) {
  163. case (EnumSkills.DEGAT.nameF):
  164. EnumSkills.DEGAT.value = value;
  165. break;
  166. case (EnumSkills.DIRIGER.nameF):
  167. EnumSkills.DIRIGER.value = value;
  168. break;
  169. case (EnumSkills.VISER.nameF):
  170. EnumSkills.VISER.value = value;
  171. break;
  172. case (EnumSkills.EVITER.nameF):
  173. EnumSkills.EVITER.value = value;
  174. break;
  175. case (EnumSkills.SE_CACHER.nameF):
  176. EnumSkills.SE_CACHER.value = value;
  177. break;
  178. case (EnumSkills.PERSEVERANCE.nameF):
  179. EnumSkills.PERSEVERANCE.value = value;
  180. break;
  181. case (EnumSkills.POINTS_DE_VIE.nameF):
  182. EnumSkills.POINTS_DE_VIE.value = value;
  183. break;
  184. case (EnumSkills.FORCE.nameF):
  185. EnumSkills.FORCE.value = value;
  186. break;
  187. case (EnumSkills.MOBILITE.nameF):
  188. EnumSkills.MOBILITE.value = value;
  189. break;
  190. case (EnumSkills.HABILITE.nameF):
  191. EnumSkills.HABILITE.value = value;
  192. break;
  193. case (EnumSkills.CHARISME.nameF):
  194. EnumSkills.CHARISME.value = value;
  195. break;
  196. };
  197. };
  198. function traitementAttributes(){
  199. if (attributes[EnumSkills.FORCE.nameTW] != null)
  200. EnumSkills.POINTS_DE_VIE.value = EnumSkills.PERSEVERANCE.value = parseInt(attributes[EnumSkills.FORCE.nameTW]);
  201. if (attributes[EnumSkills.MOBILITE.nameTW] != null)
  202. EnumSkills.EVITER.value = EnumSkills.SE_CACHER.value = parseInt(attributes[EnumSkills.MOBILITE.nameTW]);
  203. if (attributes[EnumSkills.HABILITE.nameTW] != null)
  204. EnumSkills.VISER.value = parseInt(attributes[EnumSkills.HABILITE.nameTW]);
  205. if (attributes[EnumSkills.CHARISME.nameTW] != null)
  206. EnumSkills.DIRIGER.value = parseInt(attributes[EnumSkills.CHARISME.nameTW]);
  207. };
  208. function traitementSkills(){
  209. if (skills[EnumSkills.DIRIGER.nameTW] != null)
  210. EnumSkills.DIRIGER.value = parseInt(EnumSkills.DIRIGER.value) + parseInt(skills[EnumSkills.DIRIGER.nameTW]);
  211. if (skills[EnumSkills.VISER.nameTW] != null)
  212. EnumSkills.VISER.value = parseInt(EnumSkills.VISER.value) + parseInt(skills[EnumSkills.VISER.nameTW]);
  213. if (skills[EnumSkills.EVITER.nameTW] != null)
  214. EnumSkills.EVITER.value = parseInt(EnumSkills.EVITER.value) + parseInt(skills[EnumSkills.EVITER.nameTW]);
  215. if (skills[EnumSkills.SE_CACHER.nameTW] != null)
  216. EnumSkills.SE_CACHER.value = parseInt(EnumSkills.SE_CACHER.value) + parseInt(skills[EnumSkills.SE_CACHER.nameTW]);
  217. if (skills[EnumSkills.PERSEVERANCE.nameTW] != null)
  218. EnumSkills.PERSEVERANCE.value = parseInt(EnumSkills.PERSEVERANCE.value) + parseInt(skills[EnumSkills.PERSEVERANCE.nameTW]);
  219. if (skills[EnumSkills.POINTS_DE_VIE.nameTW] != null)
  220. EnumSkills.POINTS_DE_VIE.value = parseInt(EnumSkills.POINTS_DE_VIE.value) + parseInt(skills[EnumSkills.POINTS_DE_VIE.nameTW]);
  221. };
  222. function isBonusBDF(){
  223. 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;
  224. if (sommeBonus == 0)
  225. isSkills = false;
  226. else
  227. isSkills = true;
  228. }
  229. function remiseAZero(){
  230. EnumSkills.DIRIGER.value = EnumSkills.VISER.value = EnumSkills.EVITER.value = EnumSkills.SE_CACHER.value = EnumSkills.PERSEVERANCE.value = EnumSkills.POINTS_DE_VIE.value = 0;
  231. EnumSkills.FORCE.value = EnumSkills.MOBILITE.value = EnumSkills.HABILITE.value = EnumSkills.CHARISME.value = 0;
  232. EnumSkills.DEGAT.value = EnumDegats.DEGAT_MAXI.value = EnumDegats.DEGAT_MINI.value = 0;
  233. bonus = skills = attributes = null;
  234. bonusA = 0;
  235. isArmeBDF = false;
  236. lvlAItem = 0;
  237. };
  238. function ecrireInfos(){
  239. var detail = '[item=' + EnumProprieteItems.BALISE + ']';
  240. detail += ' | ';
  241. switch (EnumProprieteItems.TYPE) {
  242. case EnumType.ANIMAL.nameTW:
  243. detail += EnumType.ANIMAL.nameF;
  244. break;
  245. case EnumType.CEINTURE.nameTW:
  246. detail += EnumType.CEINTURE.nameF;
  247. break;
  248. case EnumType.BOTTE.nameTW:
  249. detail += EnumType.BOTTE.nameF;
  250. break;
  251. case EnumType.HABILLEMENT.nameTW:
  252. detail += EnumType.HABILLEMENT.nameF;
  253. break;
  254. case EnumType.ARME_DUDU.nameTW:
  255. detail += EnumType.ARME_DUDU.nameF;
  256. break;
  257. case EnumType.ARME_BDF.nameTW:
  258. detail += EnumType.ARME_BDF.nameF;
  259. break;
  260. case EnumType.COLLIER.nameTW:
  261. detail += EnumType.COLLIER.nameF;
  262. break;
  263. case EnumType.PANTALON.nameTW:
  264. detail += EnumType.PANTALON.nameF;
  265. break;
  266. case EnumType.CHAPEAU.nameTW:
  267. detail += EnumType.CHAPEAU.nameF;
  268. break;
  269. case EnumType.PRODUIT.nameTW:
  270. detail += EnumType.PRODUIT.nameF;
  271. break;
  272. };
  273. detail += ' | ' + EnumProprieteItems.NAME;
  274. if (EnumProprieteItems.LEVEL_AME != 0)
  275. detail += '(' + EnumProprieteItems.LEVEL_AME + ' lvlA)';
  276. detail += ' | ' + EnumProprieteItems.LEVEL;
  277. if (isSkills) {
  278. detail += ' |';
  279. if (EnumSkills.FORCE.value != 0)
  280. detail += ' Force : ' + EnumSkills.FORCE.value;
  281. if (EnumSkills.MOBILITE.value != 0)
  282. detail += ' Mobilité : ' + EnumSkills.MOBILITE.value;
  283. if (EnumSkills.HABILITE.value != 0)
  284. detail += ' Habilité : ' + EnumSkills.HABILITE.value;
  285. if (EnumSkills.CHARISME.value != 0)
  286. detail += ' Charisme : ' + EnumSkills.CHARISME.value;
  287. if (EnumSkills.DIRIGER.value != 0)
  288. detail += ' Diriger : ' + EnumSkills.DIRIGER.value;
  289. if (EnumSkills.VISER.value != 0)
  290. detail += ' Viser : ' + EnumSkills.VISER.value;
  291. if (EnumSkills.EVITER.value != 0)
  292. detail += ' Eviter : ' + EnumSkills.EVITER.value;
  293. if (EnumSkills.SE_CACHER.value != 0)
  294. detail += ' Se cacher : ' + EnumSkills.SE_CACHER.value;
  295. if (EnumSkills.PERSEVERANCE.value != 0)
  296. detail += ' Persévérence : ' + EnumSkills.PERSEVERANCE.value;
  297. if (EnumSkills.POINTS_DE_VIE.value != 0)
  298. detail += ' Points de vie : ' + EnumSkills.POINTS_DE_VIE.value;
  299. }
  300. if (isArmeBDF)
  301. detail += ' | Dégâts Mini : ' + EnumDegats.DEGAT_MINI.value + '; Dégâts Maxi : ' + EnumDegats.DEGAT_MAXI.value;
  302. if (EnumSkills.DEGAT.value != 0)
  303. detail += ' | Bonus dégâts : ' + EnumSkills.DEGAT.value;
  304. detail += '\n';
  305. if (!isSkills && !isArmeBDF)
  306. detail = '';
  307. return detail;
  308. };
  309. function traitementDamages(){
  310. isArmeBDF = true;
  311. if (EnumProprieteItems.LEVEL_AME > 0)
  312. bonusA = EnumProprieteItems.LEVEL_AME * 0.1;
  313. EnumDegats.DEGAT_MAXI.value = Math.floor(damage.damage_max + bonusA * damage.damage_max);
  314. EnumDegats.DEGAT_MINI.value = Math.floor(damage.damage_min + bonusA * damage.damage_min);
  315. };
  316. };

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址