TMVN Squad Value

Trophymanager: display value of player with infomations like: bank price, wage, routine, rerec, r5, asi. And save data for TMVN League Squad script (https://greasyfork.org/en/scripts/414474)

安装此脚本
作者推荐脚本

您可能也喜欢TMVN League Squad

安装此脚本
  1. // ==UserScript==
  2. // @name TMVN Squad Value
  3. // @version 7
  4. // @description Trophymanager: display value of player with infomations like: bank price, wage, routine, rerec, r5, asi. And save data for TMVN League Squad script (https://greasyfork.org/en/scripts/414474)
  5. // @namespace https://trophymanager.com
  6. // @include https://trophymanager.com/club/*/squad/
  7. // @grant none
  8. // ==/UserScript==
  9.  
  10. const APP_COLOR = {
  11. LEVEL_1: "Darkred",
  12. LEVEL_2: "Black",
  13. LEVEL_3: "Orange",
  14. LEVEL_4: "Yellow",
  15. LEVEL_5: "Blue",
  16. LEVEL_6: "Aqua",
  17. LEVEL_7: "White"
  18. };
  19.  
  20. const BP_CLASS = {
  21. LEVEL_1: 150000000,
  22. LEVEL_2: 100000000,
  23. LEVEL_3: 80000000,
  24. LEVEL_4: 60000000,
  25. LEVEL_5: 40000000,
  26. LEVEL_6: 20000000,
  27. LEVEL_7: 0
  28. };
  29.  
  30. const WA_CLASS = {
  31. LEVEL_1: 6000000,
  32. LEVEL_2: 5000000,
  33. LEVEL_3: 4000000,
  34. LEVEL_4: 3000000,
  35. LEVEL_5: 2000000,
  36. LEVEL_6: 1000000,
  37. LEVEL_7: 0
  38. };
  39.  
  40. const XP_CLASS = {
  41. LEVEL_1: 90,
  42. LEVEL_2: 75,
  43. LEVEL_3: 60,
  44. LEVEL_4: 45,
  45. LEVEL_5: 30,
  46. LEVEL_6: 15,
  47. LEVEL_7: 0
  48. };
  49.  
  50. const REC_CLASS = {
  51. LEVEL_1: 5.5,
  52. LEVEL_2: 5,
  53. LEVEL_3: 4,
  54. LEVEL_4: 3,
  55. LEVEL_5: 2,
  56. LEVEL_6: 1,
  57. LEVEL_7: 0
  58. };
  59.  
  60. const R5_CLASS = {
  61. LEVEL_1: 110,
  62. LEVEL_2: 100,
  63. LEVEL_3: 90,
  64. LEVEL_4: 80,
  65. LEVEL_5: 70,
  66. LEVEL_6: 60,
  67. LEVEL_7: 0
  68. };
  69.  
  70. const ASI_CLASS = {
  71. LEVEL_1: 500000,
  72. LEVEL_2: 400000,
  73. LEVEL_3: 300000,
  74. LEVEL_4: 200000,
  75. LEVEL_5: 100000,
  76. LEVEL_6: 50000,
  77. LEVEL_7: 0
  78. };
  79.  
  80. // R5 weights
  81. // Str Sta Pac Mar Tac Wor Pos Pas Cro Tec Hea Fin Lon Set
  82. var weightR5 = [[0.41029304, 0.18048062, 0.56730138, 1.06344654, 1.02312672, 0.40831256, 0.58235457, 0.12717479, 0.05454137, 0.09089830, 0.42381693, 0.04626272, 0.02199046, 0.00000000], // DC
  83. [0.42126371, 0.18293193, 0.60567629, 0.91904794, 0.89070915, 0.40038476, 0.56146633, 0.15053902, 0.15955429, 0.15682932, 0.42109742, 0.09460329, 0.03589655, 0.00000000], // DL/R
  84. [0.23412419, 0.32032289, 0.62194779, 0.63162534, 0.63143081, 0.45218831, 0.47370658, 0.55054737, 0.17744915, 0.39932519, 0.26915814, 0.16413124, 0.07404301, 0.00000000], // DMC
  85. [0.27276905, 0.26814289, 0.61104798, 0.39865092, 0.42862643, 0.43582015, 0.46617076, 0.44931076, 0.25175412, 0.46446692, 0.29986350, 0.43843061, 0.21494592, 0.00000000], // DML/R
  86. [0.25219260, 0.25112993, 0.56090649, 0.18230261, 0.18376490, 0.45928749, 0.53498118, 0.59461481, 0.09851189, 0.61601950, 0.31243959, 0.65402884, 0.29982016, 0.00000000], // MC
  87. [0.28155678, 0.24090675, 0.60680245, 0.19068879, 0.20018012, 0.45148647, 0.48230007, 0.42982389, 0.26268609, 0.57933805, 0.31712419, 0.65824985, 0.29885649, 0.00000000], // ML/R
  88. [0.22029884, 0.29229690, 0.63248227, 0.09904394, 0.10043602, 0.47469498, 0.52919791, 0.77555880, 0.10531819, 0.71048302, 0.27667115, 0.56813972, 0.21537826, 0.00000000], // OMC
  89. [0.21151292, 0.35804710, 0.88688492, 0.14391236, 0.13769621, 0.46586605, 0.34446036, 0.51377701, 0.59723919, 0.75126119, 0.16550722, 0.29966502, 0.12417045, 0.00000000], // OML/R
  90. [0.35479780, 0.14887553, 0.43273380, 0.00023928, 0.00021111, 0.46931131, 0.57731335, 0.41686333, 0.05607604, 0.62121195, 0.45370457, 1.03660702, 0.43205492, 0.00000000], // F
  91. [0.45462811, 0.30278232, 0.45462811, 0.90925623, 0.45462811, 0.90925623, 0.45462811, 0.45462811, 0.30278232, 0.15139116, 0.15139116]]; // GK
  92.  
  93. // RECb weights Str Sta Pac Mar Tac Wor Pos Pas Cro Tec Hea Fin Lon Set
  94. var weightRb = [[0.10493615, 0.05208547, 0.07934211, 0.14448971, 0.13159554, 0.06553072, 0.07778375, 0.06669303, 0.05158306, 0.02753168, 0.12055170, 0.01350989, 0.02549169, 0.03887550], // DC
  95. [0.07715535, 0.04943315, 0.11627229, 0.11638685, 0.12893778, 0.07747251, 0.06370799, 0.03830611, 0.10361093, 0.06253997, 0.09128094, 0.01314110, 0.02449199, 0.03726305], // DL/R
  96. [0.08219824, 0.08668831, 0.07434242, 0.09661001, 0.08894242, 0.08998026, 0.09281287, 0.08868309, 0.04753574, 0.06042619, 0.05396986, 0.05059984, 0.05660203, 0.03060871], // DMC
  97. [0.06744248, 0.06641401, 0.09977251, 0.08253749, 0.09709316, 0.09241026, 0.08513703, 0.06127851, 0.10275520, 0.07985941, 0.04618960, 0.03927270, 0.05285911, 0.02697852], // DML/R
  98. [0.07304213, 0.08174111, 0.07248656, 0.08482334, 0.07078726, 0.09568392, 0.09464529, 0.09580381, 0.04746231, 0.07093008, 0.04595281, 0.05955544, 0.07161249, 0.03547345], // MC
  99. [0.06527363, 0.06410270, 0.09701305, 0.07406706, 0.08563595, 0.09648566, 0.08651209, 0.06357183, 0.10819222, 0.07386495, 0.03245554, 0.05430668, 0.06572005, 0.03279859], // ML/R
  100. [0.07842736, 0.07744888, 0.07201150, 0.06734457, 0.05002348, 0.08350204, 0.08207655, 0.11181914, 0.03756112, 0.07486004, 0.06533972, 0.07457344, 0.09781475, 0.02719742], // OMC
  101. [0.06545375, 0.06145378, 0.10503536, 0.06421508, 0.07627526, 0.09232981, 0.07763931, 0.07001035, 0.11307331, 0.07298351, 0.04248486, 0.06462713, 0.07038293, 0.02403557], // OML/R
  102. [0.07738289, 0.05022488, 0.07790481, 0.01356516, 0.01038191, 0.06495444, 0.07721954, 0.07701905, 0.02680715, 0.07759692, 0.12701687, 0.15378395, 0.12808992, 0.03805251], // F
  103. [0.07466384, 0.07466384, 0.07466384, 0.14932769, 0.10452938, 0.14932769, 0.10452938, 0.10344411, 0.07512610, 0.04492581, 0.04479831]]; // GK
  104.  
  105. var posNames = ["DC", "DCL", "DCR", "DL", "DR", "DMC", "DMCL", "DMCR", "DML", "DMR", "MC", "MCL", "MCR", "ML", "MR", "OMC", "OMCL", "OMCR", "OML", "OMR", "F", "FC", "FCL", "FCR", "GK"];
  106. var pos = [0, 0, 0, 1, 1, 2, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9];
  107.  
  108. function funFix1(i) {
  109. i = (Math.round(i * 10) / 10).toFixed(1);
  110. return i;
  111. }
  112.  
  113. function funFix2(i) {
  114. i = (Math.round(i * 100) / 100).toFixed(2);
  115. return i;
  116. }
  117.  
  118. function funFix3(i) {
  119. i = (Math.round(i * 1000) / 1000).toFixed(3);
  120. return i;
  121. }
  122.  
  123. function identifyRole(role) {
  124. try {
  125. var role1,
  126. role2,
  127. side;
  128. if (role.indexOf("/") != -1) { // "M/DM C"
  129. role = role.split(/\//);
  130. role1 = role[0]; // "M"
  131. role2 = role[1]; // "DM C"
  132. side = role[1].match(/\D$/); // "C"
  133. role2 = role2.replace(/\s/g, ""); // "DMC"
  134. role1 = role[0] + side; // "MC"
  135. } else if (role.indexOf(",") != -1) { // "F, OM C" || "M C, F"
  136. role = role.split(/,/);
  137. role1 = role[0].replace(/\s/g, ""); // "F" || "MC"
  138. role2 = role[1].replace(/\s/g, ""); // " OMC" || "F"
  139. } else if (role.indexOf(" ") != -1) { // "DM LC" || "D R"
  140. if (role.substring(role.indexOf(" ") + 1).length > 1) { // "DM LC"
  141. role = role.split(/\s/); // "DM" || "LC"
  142. role1 = role[0]; // "DM"
  143. side = role[1]; // "LC"
  144. role2 = role1 + side.substring(1); // "DMC"
  145. role1 = role1 + side.substring(0, 1); // "DML"
  146. } else { // D R
  147. role1 = role.replace(" ", "");
  148. role2 = -1;
  149. }
  150. } else if (role == "GK") {
  151. role1 = "GK";
  152. role2 = -1;
  153. } else if (role == "F") {
  154. role1 = "F";
  155. role2 = -1;
  156. }
  157. return [role1, role2];
  158. } catch (err) {
  159. console.log('exception identifyRole: ' + err);
  160. return [];
  161. }
  162. }
  163.  
  164. function calculate(weightRb, weightR5, skills, posGain, posKeep, fp, rou, remainder, allBonus) {
  165. var rec = 0; // RERECb
  166. var ratingR = 0; // RatingR5
  167. var ratingR5 = 0; // RatingR5 + routine
  168. var ratingR5Bonus = 0; // RatingR5 + routine + bonus
  169. var remainderWeight = 0; // REREC remainder weight sum
  170. var remainderWeight2 = 0; // RatingR5 remainder weight sum
  171. var not20 = 0; // 20以外のスキル数
  172. for (var i = 0; i < weightRb[fp].length; i++) { // weightR[fp].length = n.pesi[pos] cioè le skill: 14 o 11
  173. rec += skills[i] * weightRb[fp][i];
  174. ratingR += skills[i] * weightR5[fp][i];
  175. if (skills[i] != 20) {
  176. remainderWeight += weightRb[fp][i];
  177. remainderWeight2 += weightR5[fp][i];
  178. not20++;
  179. }
  180. }
  181. if (remainder / not20 > 0.9 || not20 == 0) {
  182. if (fp == 9)
  183. not20 = 11;
  184. else
  185. not20 = 14;
  186. remainderWeight = 1;
  187. remainderWeight2 = 5;
  188. }
  189. rec = funFix3((rec + remainder * remainderWeight / not20 - 2) / 3);
  190. ratingR += remainder * remainderWeight2 / not20;
  191. ratingR5 = funFix2(ratingR * 1 + rou * 5);
  192.  
  193. if (skills.length == 11) {
  194. ratingR5Bonus = funFix2(ratingR5 * 1 + allBonus * 1);
  195. } else {
  196. ratingR5Bonus = funFix2(ratingR5 * 1 + allBonus * 1 + posGain[fp] * 1 + posKeep[fp] * 1);
  197. }
  198. return [rec, ratingR5Bonus];
  199. }
  200.  
  201. function calculateRR(current_player_info) {
  202. var STR = current_player_info.strength;
  203. var STA = current_player_info.stamina;
  204. var PAC = current_player_info.pace;
  205. var MAR = current_player_info.marking;
  206. var TAC = current_player_info.tackling;
  207. var WOR = current_player_info.workrate;
  208. var POS = current_player_info.positioning;
  209. var PAS = current_player_info.passing;
  210. var CRO = current_player_info.crossing;
  211. var TEC = current_player_info.technique;
  212. var HEA = current_player_info.heading;
  213. var FIN = current_player_info.finishing;
  214. var LON = current_player_info.longshots;
  215. var SET = current_player_info.setpieces;
  216. var HAN = current_player_info.handling;
  217. var ONE = current_player_info.oneonones;
  218. var REF = current_player_info.reflexes;
  219. var AER = current_player_info.arialability;
  220. var JUM = current_player_info.jumping;
  221. var COM = current_player_info.communication;
  222. var KIC = current_player_info.kicking;
  223. var THR = current_player_info.throwing;
  224.  
  225. var ROLE = current_player_info.fp;
  226. var ROU = current_player_info.rutine;
  227. var ASI = current_player_info.asi;
  228.  
  229. var ROLE1,
  230. ROLE2;
  231. var role = identifyRole(ROLE);
  232. if (role.length > 0) {
  233. ROLE1 = role[0];
  234. ROLE2 = role[1];
  235. } else
  236. return;
  237.  
  238. var fp,
  239. fp2 = -1;
  240. for (var i = 0; i < posNames.length; i++) {
  241. if (posNames[i] == ROLE1)
  242. fp = pos[i];
  243. if (ROLE2 != -1 && posNames[i] == ROLE2)
  244. fp2 = pos[i];
  245. }
  246. if (fp == 9) {
  247. var weight = 48717927500;
  248. var skills = [STR, STA, PAC, HAN, ONE, REF, AER, JUM, COM, KIC, THR];
  249. } else {
  250. weight = 263533760000;
  251. skills = [STR, STA, PAC, MAR, TAC, WOR, POS, PAS, CRO, TEC, HEA, FIN, LON, SET];
  252. }
  253.  
  254. var goldstar = 0;
  255. var skillSum = 0;
  256. var skillsB = [];
  257. for (i = 0; i < skills.length; i++) {
  258. skillSum += parseInt(skills[i]);
  259. }
  260. var remainder = Math.round((Math.pow(2, Math.log(weight * ASI) / Math.log(Math.pow(2, 7))) - skillSum) * 10) / 10; // RatingR5 remainder
  261. for (var j = 0; j < 2; j++) {
  262. for (i = 0; i < 14; i++) {
  263. if (j == 0 && skills[i] == 20)
  264. goldstar++;
  265. if (j == 1) {
  266. if (skills[i] != 20)
  267. skillsB[i] = skills[i] * 1 + remainder / (14 - goldstar);
  268. else
  269. skillsB[i] = skills[i];
  270. }
  271. }
  272. }
  273.  
  274. var routine = (3 / 100) * (100 - (100) * Math.pow(Math.E, -ROU * 0.035));
  275. var strRou = skillsB[0] * 1 + routine;
  276. var staRou = skillsB[1] * 1;
  277. var pacRou = skillsB[2] * 1 + routine;
  278. var marRou = skillsB[3] * 1 + routine;
  279. var tacRou = skillsB[4] * 1 + routine;
  280. var worRou = skillsB[5] * 1 + routine;
  281. var posRou = skillsB[6] * 1 + routine;
  282. var pasRou = skillsB[7] * 1 + routine;
  283. var croRou = skillsB[8] * 1 + routine;
  284. var tecRou = skillsB[9] * 1 + routine;
  285. var heaRou = skillsB[10] * 1 + routine;
  286. var finRou = skillsB[11] * 1 + routine;
  287. var lonRou = skillsB[12] * 1 + routine;
  288. var setRou = skillsB[13] * 1 + routine;
  289.  
  290. var headerBonus;
  291. if (heaRou > 12)
  292. headerBonus = funFix2((Math.pow(Math.E, (heaRou - 10) ** 3 / 1584.77) - 1) * 0.8 + Math.pow(Math.E, (strRou * strRou * 0.007) / 8.73021) * 0.15 + Math.pow(Math.E, (posRou * posRou * 0.007) / 8.73021) * 0.05);
  293. else
  294. headerBonus = 0;
  295.  
  296. var fkBonus = funFix2(Math.pow(Math.E, Math.pow(setRou + lonRou + tecRou * 0.5, 2) * 0.002) / 327.92526);
  297. var ckBonus = funFix2(Math.pow(Math.E, Math.pow(setRou + croRou + tecRou * 0.5, 2) * 0.002) / 983.65770);
  298. var pkBonus = funFix2(Math.pow(Math.E, Math.pow(setRou + finRou + tecRou * 0.5, 2) * 0.002) / 1967.31409);
  299.  
  300. var allBonus = 0;
  301. if (skills.length == 11)
  302. allBonus = 0;
  303. else
  304. allBonus = headerBonus * 1 + fkBonus * 1 + ckBonus * 1 + pkBonus * 1;
  305.  
  306. var gainBase = funFix2((strRou ** 2 + staRou ** 2 * 0.5 + pacRou ** 2 * 0.5 + marRou ** 2 + tacRou ** 2 + worRou ** 2 + posRou ** 2) / 6 / 22.9 ** 2);
  307. var keepBase = funFix2((strRou ** 2 * 0.5 + staRou ** 2 * 0.5 + pacRou ** 2 + marRou ** 2 + tacRou ** 2 + worRou ** 2 + posRou ** 2) / 6 / 22.9 ** 2);
  308. // 0:DC 1:DL/R 2:DMC 3:DML/R 4:MC 5:ML/R 6:OMC 7:OML/R 8:F
  309. var posGain = [gainBase * 0.3, gainBase * 0.3, gainBase * 0.9, gainBase * 0.6, gainBase * 1.5, gainBase * 0.9, gainBase * 0.9, gainBase * 0.6, gainBase * 0.3];
  310. var posKeep = [keepBase * 0.3, keepBase * 0.3, keepBase * 0.9, keepBase * 0.6, keepBase * 1.5, keepBase * 0.9, keepBase * 0.9, keepBase * 0.6, keepBase * 0.3];
  311.  
  312. var valueFp = calculate(weightRb, weightR5, skills, posGain, posKeep, fp, routine, remainder, allBonus);
  313. var rec = [valueFp[0]];
  314. var r5 = [valueFp[1]];
  315.  
  316. if (fp2 != -1 && fp2 != fp) {
  317. var valueFp2 = calculate(weightRb, weightR5, skills, posGain, posKeep, fp2, routine, remainder, allBonus);
  318. rec.push(valueFp2[0]);
  319. r5.push(valueFp2[1]);
  320. }
  321.  
  322. return [rec, r5]
  323. }
  324.  
  325. function collect() {
  326. var ret = {};
  327. var len = arguments.length;
  328. for (var i = 0; i < len; i++) {
  329. for (var p in arguments[i]) {
  330. if (arguments[i].hasOwnProperty(p)) {
  331. ret[p] = arguments[i][p];
  332. }
  333. }
  334. }
  335. return ret;
  336. }
  337.  
  338. var new_player_array = [];
  339. var team_b_id = "";
  340. var team_main_id = $('.box_sub_header a')[1].getAttribute('club_link'); //for find exactly b-team
  341.  
  342. $.ajaxSetup({
  343. async: false
  344. });
  345.  
  346. $.post("/ajax/players_get_select.ajax.php", {
  347. "type": "change",
  348. "club_id": SUBPAGE
  349. }, function (data) {
  350.  
  351. data = JSON.parse(data);
  352. new_player_array = data.post;
  353.  
  354. });
  355.  
  356. function objectLength(obj) {
  357. var result = 0;
  358. for (var prop in obj) {
  359. if (obj.hasOwnProperty(prop)) {
  360. result++;
  361. }
  362. }
  363. return result;
  364. }
  365. $(".column2_a").width("626px");
  366. $(".column3_a").width("160px");
  367. $("#player_table tr:eq(0)")[0].children[5].remove();
  368. $("#player_table tr:eq(0)").append('<th align="right">BP</th><th align="right">WA</th><th align="right">XP</th><th align="right">REC</th><th align="right">R5</th><th align="right">ASI</th>');
  369. var count = 0;
  370. var countU21 = 0;
  371. var totalBankPrice = 0;
  372. var totalBankPriceU21 = 0;
  373. var totalWage = 0;
  374. var totalWageU21 = 0;
  375. var totalASI = 0;
  376. var totalASIU21 = 0;
  377. var totalXP = 0;
  378. var totalXPU21 = 0;
  379.  
  380. $("#player_table tr > .text_fade > div").not(".text_fade_overlay").find("a[player_link]").each(function () {
  381. var player_link = $(this).attr("player_link");
  382. if (new_player_array[player_link] == null && team_b_id === "") {
  383. $.post("https://trophymanager.com/ajax/players_get_info.ajax.php", {
  384. "player_id": player_link,
  385. "type": "history",
  386. "show_non_pro_graphs": false
  387. }, function (data) {
  388. data = JSON.parse(data);
  389. try {
  390. let i = 0;
  391. do {
  392. team_b_id = data.table.nat[i].klub_id;
  393. i++;
  394. } while (team_b_id == "" || team_b_id == team_main_id);
  395. } catch (err) {
  396. team_b_id = "";
  397. }
  398. });
  399.  
  400. if (team_b_id !== "") {
  401. $.post("/ajax/players_get_select.ajax.php", {
  402. "type": "change",
  403. "club_id": team_b_id
  404. }, function (data) {
  405. data = JSON.parse(data);
  406. new_player_array = collect(new_player_array, data.post);
  407. });
  408. }
  409. }
  410.  
  411. var current_player_info = new_player_array[player_link];
  412. if (current_player_info == null)
  413. return;
  414.  
  415. var parent_select = $(this).parent().parent().parent();
  416. parent_select.find("td:eq(2)").append("." + Number(current_player_info.month));
  417. parent_select[0].children[5].remove();
  418.  
  419. let pow = Math.pow;
  420. let bp = 0;
  421. if (current_player_info.fp === "GK") {
  422. bp = (current_player_info.asi * 500 * pow((300 / (Number(current_player_info.age) * 12 + Number(current_player_info.month))), 2.5)) * 0.75;
  423. } else {
  424. bp = (current_player_info.asi * 500 * pow((300 / (Number(current_player_info.age) * 12 + Number(current_player_info.month))), 2.5));
  425. }
  426.  
  427. if (bp >= BP_CLASS.LEVEL_1) {
  428. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_1 + ';">' + (bp / 1000000).toFixed(1) + '</td>');
  429. } else if (bp >= BP_CLASS.LEVEL_2) {
  430. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_2 + ';">' + (bp / 1000000).toFixed(1) + '</td>');
  431. } else if (bp >= BP_CLASS.LEVEL_3) {
  432. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_3 + ';">' + (bp / 1000000).toFixed(1) + '</td>');
  433. } else if (bp >= BP_CLASS.LEVEL_4) {
  434. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_4 + ';">' + (bp / 1000000).toFixed(1) + '</td>');
  435. } else if (bp >= BP_CLASS.LEVEL_5) {
  436. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_5 + ';">' + (bp / 1000000).toFixed(1) + '</td>');
  437. } else if (bp >= BP_CLASS.LEVEL_6) {
  438. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_6 + ';">' + (bp / 1000000).toFixed(1) + '</td>');
  439. } else {
  440. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_7 + ';">' + (bp / 1000000).toFixed(1) + '</td>');
  441. }
  442.  
  443. if (Number(current_player_info.wage) >= WA_CLASS.LEVEL_1) {
  444. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_1 + ';">' + Math.round(current_player_info.wage / 1000) + '</td>');
  445. } else if (Number(current_player_info.wage) >= WA_CLASS.LEVEL_2) {
  446. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_2 + ';">' + Math.round(current_player_info.wage / 1000) + '</td>');
  447. } else if (Number(current_player_info.wage) >= WA_CLASS.LEVEL_3) {
  448. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_3 + ';">' + Math.round(current_player_info.wage / 1000) + '</td>');
  449. } else if (Number(current_player_info.wage) >= WA_CLASS.LEVEL_4) {
  450. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_4 + ';">' + Math.round(current_player_info.wage / 1000) + '</td>');
  451. } else if (Number(current_player_info.wage) >= WA_CLASS.LEVEL_5) {
  452. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_5 + ';">' + Math.round(current_player_info.wage / 1000) + '</td>');
  453. } else if (Number(current_player_info.wage) >= WA_CLASS.LEVEL_6) {
  454. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_6 + ';">' + Math.round(current_player_info.wage / 1000) + '</td>');
  455. } else {
  456. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_7 + ';">' + Math.round(current_player_info.wage / 1000) + '</td>');
  457. }
  458.  
  459. if (Number(current_player_info.rutine) >= XP_CLASS.LEVEL_1) {
  460. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_1 + ';">' + current_player_info.rutine + '</td>');
  461. } else if (Number(current_player_info.rutine) >= XP_CLASS.LEVEL_2) {
  462. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_2 + ';">' + current_player_info.rutine + '</td>');
  463. } else if (Number(current_player_info.rutine) >= XP_CLASS.LEVEL_3) {
  464. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_3 + ';">' + current_player_info.rutine + '</td>');
  465. } else if (Number(current_player_info.rutine) >= XP_CLASS.LEVEL_4) {
  466. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_4 + ';">' + current_player_info.rutine + '</td>');
  467. } else if (Number(current_player_info.rutine) >= XP_CLASS.LEVEL_5) {
  468. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_5 + ';">' + current_player_info.rutine + '</td>');
  469. } else if (Number(current_player_info.rutine) >= XP_CLASS.LEVEL_6) {
  470. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_6 + ';">' + current_player_info.rutine + '</td>');
  471. } else {
  472. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_7 + ';">' + current_player_info.rutine + '</td>');
  473. }
  474.  
  475. var rrValue = calculateRR(current_player_info);
  476. var rec = rrValue[0];
  477. var recStr = '';
  478. var recMax;
  479. if (rec.length == 2) {
  480. recStr = rec[0] + '<br>' + rec[1];
  481. recMax = Number(rec[0]) >= Number(rec[1]) ? Number(rec[0]) : Number(rec[1]);
  482. } else {
  483. recStr = rec[0];
  484. recMax = Number(rec[0]);
  485. }
  486. if (recMax >= REC_CLASS.LEVEL_1) {
  487. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_1 + ';">' + recStr + '</td>');
  488. } else if (recMax >= REC_CLASS.LEVEL_2) {
  489. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_2 + ';">' + recStr + '</td>');
  490. } else if (recMax >= REC_CLASS.LEVEL_3) {
  491. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_3 + ';">' + recStr + '</td>');
  492. } else if (recMax >= REC_CLASS.LEVEL_4) {
  493. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_4 + ';">' + recStr + '</td>');
  494. } else if (recMax >= REC_CLASS.LEVEL_5) {
  495. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_5 + ';">' + recStr + '</td>');
  496. } else if (recMax >= REC_CLASS.LEVEL_6) {
  497. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_6 + ';">' + recStr + '</td>');
  498. } else {
  499. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_7 + ';">' + recStr + '</td>');
  500. }
  501.  
  502. var r5 = rrValue[1];
  503. var r5Str = '';
  504. var r5Max;
  505. if (r5.length == 2) {
  506. r5Str = r5[0] + '<br>' + r5[1];
  507. r5Max = Number(r5[0]) >= Number(r5[1]) ? Number(r5[0]) : Number(r5[1]);
  508. } else {
  509. r5Str = r5[0];
  510. r5Max = Number(r5[0]);
  511. }
  512. if (r5Max >= R5_CLASS.LEVEL_1) {
  513. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_1 + ';">' + r5Str + '</td>');
  514. } else if (r5Max >= R5_CLASS.LEVEL_2) {
  515. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_2 + ';">' + r5Str + '</td>');
  516. } else if (r5Max >= R5_CLASS.LEVEL_3) {
  517. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_3 + ';">' + r5Str + '</td>');
  518. } else if (r5Max >= R5_CLASS.LEVEL_4) {
  519. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_4 + ';">' + r5Str + '</td>');
  520. } else if (r5Max >= R5_CLASS.LEVEL_5) {
  521. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_5 + ';">' + r5Str + '</td>');
  522. } else if (r5Max >= R5_CLASS.LEVEL_6) {
  523. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_6 + ';">' + r5Str + '</td>');
  524. } else {
  525. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_7 + ';">' + r5Str + '</td>');
  526. }
  527.  
  528. if (Number(current_player_info.asi) >= ASI_CLASS.LEVEL_1) {
  529. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_1 + ';">' + current_player_info.asi + '</td>');
  530. } else if (Number(current_player_info.asi) >= ASI_CLASS.LEVEL_2) {
  531. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_2 + ';">' + current_player_info.asi + '</td>');
  532. } else if (Number(current_player_info.asi) >= ASI_CLASS.LEVEL_3) {
  533. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_3 + ';">' + current_player_info.asi + '</td>');
  534. } else if (Number(current_player_info.asi) >= ASI_CLASS.LEVEL_4) {
  535. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_4 + ';">' + current_player_info.asi + '</td>');
  536. } else if (Number(current_player_info.asi) >= ASI_CLASS.LEVEL_5) {
  537. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_5 + ';">' + current_player_info.asi + '</td>');
  538. } else if (Number(current_player_info.asi) >= ASI_CLASS.LEVEL_6) {
  539. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_6 + ';">' + current_player_info.asi + '</td>');
  540. } else {
  541. parent_select.append('<td align="right" style="color: ' + APP_COLOR.LEVEL_7 + ';">' + current_player_info.asi + '</td>');
  542. }
  543.  
  544. if (Number(current_player_info.age) > 21) {
  545. count++;
  546. } else {
  547. countU21++;
  548. }
  549. if (Number(current_player_info.age) > 21) {
  550. totalBankPrice += bp;
  551. } else {
  552. totalBankPriceU21 += bp;
  553. }
  554. if (Number(current_player_info.age) > 21) {
  555. totalWage += Number(current_player_info.wage);
  556. } else {
  557. totalWageU21 += Number(current_player_info.wage);
  558. }
  559. if (Number(current_player_info.age) > 21) {
  560. totalASI += current_player_info.asi;
  561. } else {
  562. totalASIU21 += current_player_info.asi;
  563. }
  564. if (Number(current_player_info.age) > 21) {
  565. totalXP += Number(current_player_info.rutine);
  566. } else {
  567. totalXPU21 += Number(current_player_info.rutine);
  568. }
  569. });
  570.  
  571. var clubId = $('.box_sub_header a')[1].getAttribute('club_link');
  572. if (clubId) {
  573. localStorage.setItem(clubId + "_SQUAD_VALUE", JSON.stringify({
  574. "Time": new Date(),
  575. "BP": (totalBankPrice + totalBankPriceU21),
  576. "Wage": (totalWage + totalWageU21),
  577. "Count": (count + countU21)
  578. }));
  579. localStorage.setItem(clubId + "_U21_SQUAD_VALUE", JSON.stringify({
  580. "Time": new Date(),
  581. "BP": (totalBankPriceU21),
  582. "Wage": (totalWageU21),
  583. "Count": (countU21)
  584. }));
  585. localStorage.setItem(clubId + "_O21_SQUAD_VALUE", JSON.stringify({
  586. "Time": new Date(),
  587. "BP": (totalBankPrice),
  588. "Wage": (totalWage),
  589. "Count": (count)
  590. }));
  591. }
  592.  
  593. $('div.column3_a')[0].childNodes[3].childNodes[3].childNodes[2].childNodes[1].innerHTML +=
  594. '<br>' +
  595. 'Total Bank Price: <br><span style="color:Orange;">' + totalBankPrice.toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</span><br>' +
  596. 'Total Wage: <br><span style="color:Orange;">' + totalWage.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</span><br>' +
  597. '<br>' +
  598. 'Average Bank Price: <br><span style="color:Orange;">' + (totalBankPrice / (count > 0 ? count : 1)).toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</span><br>' +
  599. 'Average Wage: <br><span style="color:Orange;">' + Math.round(totalWage / (count > 0 ? count : 1)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</span><br>';
  600.  
  601. $('div.column3_a')[0].childNodes[3].childNodes[3].childNodes[6].childNodes[1].innerHTML +=
  602. '<br>' +
  603. 'Total Bank Price: <br><span style="color:Orange;">' + totalBankPriceU21.toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</span><br>' +
  604. 'Total Wage: <br><span style="color:Orange;">' + totalWageU21.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</span><br>' +
  605. '<br>' +
  606. 'Average Bank Price: <br><span style="color:Orange;">' + (totalBankPriceU21 / (countU21 > 0 ? countU21 : 1)).toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</span><br>' +
  607. 'Average Wage: <br><span style="color:Orange;">' + Math.round(totalWageU21 / (countU21 > 0 ? countU21 : 1)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</span><br>';
  608.  
  609. $('div.column3_a .box_body')[0].innerHTML +=
  610. '<h3>FULL SQUAD</h3>' +
  611. '<div class="std"><p>' +
  612. 'Squad size: <br><span style="color:Orange;">' + (count + countU21) + '</span><br>' +
  613. 'Total Bank Price: <br><span style="color:Orange;">' + (totalBankPrice + totalBankPriceU21).toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</span><br>' +
  614. 'Total Wage: <br><span style="color:Orange;">' + (totalWage + totalWageU21).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</span><br>' +
  615. '<br>' +
  616. 'Average Bank Price: <br><span style="color:Orange;">' + ((totalBankPrice + totalBankPriceU21) / ((count + countU21) > 0 ? (count + countU21) : 1)).toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</span><br>' +
  617. 'Average Wage: <br><span style="color:Orange;">' + Math.round((totalWage + totalWageU21) / ((count + countU21) > 0 ? (count + countU21) : 1)).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",") + '</span><br>' +
  618. '</p></div>';
  619.  
  620. $.ajaxSetup({
  621. async: true
  622. });