🏠 Home 

RatingR2 All Point

REREC, TrExMa, RatingR2 JP/EN/CHS + Season TI


Install this script?
  1. // ==UserScript==
  2. // @name RatingR2 All Point
  3. // @version 1.1 + VC'Modify
  4. // @author VF Tomato + VC
  5. // @description REREC, TrExMa, RatingR2 JP/EN/CHS + Season TI
  6. // @include http://trophymanager.com/players/*
  7. // @exclude http://trophymanager.com/players/compare/*
  8. // @exclude http://trophymanager.com/players
  9. // @namespace https://greasyfork.org/users/8015
  10. // ==/UserScript==
  11. var rou_factor = 0.00405;
  12. var wage_rate = 27.55;
  13. var wage_rate_new = 23.75;
  14. //NOTE: if you want to do some translate , find the key word "translate" in this script -- by vc
  15. var lang = "ENG"; // default
  16. lang = "CHS";
  17. // Array to setup the weights of particular skills for each player's actual ability
  18. // This is the direct weight to be given to each skill.
  19. // Array maps to these skills:
  20. // [Str,Sta,Pac,Mar,Tac,Wor,Pos,Pas,Cro,Tec,Hea,Fin,Lon,Set]
  21. var positions = [[ 1, 3, 1, 1, 1, 3, 3, 2, 2, 2, 1, 3, 3, 3], // D C
  22. [ 2, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 3, 3, 3], // D L
  23. [ 2, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 3, 3, 3], // D R
  24. [ 1, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 3, 3, 3], // DM C
  25. [ 2, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 3, 3, 3], // DM L
  26. [ 2, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 3, 3, 3], // DM R
  27. [ 2, 2, 3, 1, 1, 1, 1, 1, 3, 1, 2, 3, 3, 3], // M C
  28. [ 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3], // M L
  29. [ 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3], // M R
  30. [ 2, 3, 3, 2, 2, 1, 1, 1, 3, 1, 2, 1, 1, 3], // OM C
  31. [ 2, 2, 1, 3, 3, 2, 2, 3, 1, 1, 2, 2, 2, 3], // OM L
  32. [ 2, 2, 1, 3, 3, 2, 2, 3, 1, 1, 2, 2, 2, 3], // OM R
  33. [ 1, 2, 2, 3, 3, 2, 2, 3, 3, 2, 1, 1, 1, 3], // F
  34. [ 2, 3, 2, 1, 2, 1, 2, 2, 3, 3, 3]]; // GK
  35. // Weights need to total 100
  36. var weights = [ [85,12, 3], // D C
  37. [70,25, 5], // D L
  38. [70,25, 5], // D R
  39. [90,10, 0], // DM C
  40. [50,40,10], // DM L
  41. [50,40,10], // DM R
  42. [85,12, 3], // M C
  43. [90, 7, 3], // M L
  44. [90, 7, 3], // M R
  45. [90,10, 0], // OM C
  46. [60,35, 5], // OM L
  47. [60,35, 5], // OMR
  48. [80,18, 2], // F
  49. [50,42, 8]]; // GK
  50. var weightR2 = [[ 0.51872935 , 0.29081119 , 0.57222393 , 0.89735816 , 0.84487852 , 0.50887940 , 0.50887940 , 0.13637928 , 0.05248024 , 0.09388931 , 0.57549122 , 0.00000000 , 0.00000000 , 0.00000000 ], // DC
  51. [ 0.46087883 , 0.31034824 , 0.65619359 , 0.73200504 , 0.70343948 , 0.49831122 , 0.46654859 , 0.16635132 , 0.22496087 , 0.19697949 , 0.48253326 , 0.07310254 , 0.02834753 , 0.00000000 ], // DL/R
  52. [ 0.43732502 , 0.31888984 , 0.53618097 , 0.63897616 , 0.59319466 , 0.51330795 , 0.53166961 , 0.32536200 , 0.06340582 , 0.27886822 , 0.49###910 , 0.18940400 , 0.07344664 , 0.00000000 ], // DMC
  53. [ 0.42233965 , 0.32373447 , 0.62437404 , 0.54169665 , 0.51669428 , 0.49853202 , 0.47851686 , 0.26551219 , 0.22685609 , 0.32146118 , 0.45396969 , 0.23513340 , 0.09117948 , 0.00000000 ], // DML/R
  54. [ 0.34304950 , 0.35058989 , 0.49918296 , 0.34631352 , 0.30595388 , 0.52078076 , 0.56068322 , 0.52568923 , 0.08771222 , 0.47650463 , 0.41232903 , 0.41160135 , 0.15960981 , 0.00000000 ], // MC
  55. [ 0.37404045 , 0.33153172 , 0.62642777 , 0.33260815 , 0.30559265 , 0.50117998 , 0.47502314 , 0.28759565 , 0.33838614 , 0.44322386 , 0.40347341 , 0.41859521 , 0.16232188 , 0.00000000 ], // ML/R
  56. [ 0.31998474 , 0.35180968 , 0.49002842 , 0.23116817 , 0.19239312 , 0.52687030 , 0.57839880 , 0.53861416 , 0.07598706 , 0.56096162 , 0.39614367 , 0.53152625 , 0.20611401 , 0.00000000 ], // OMC
  57. [ 0.36069138 , 0.33248748 , 0.62214126 , 0.20034326 , 0.17595073 , 0.50091992 , 0.47631079 , 0.29235505 , 0.35086625 , 0.52960856 , 0.39553712 , 0.54964726 , 0.21314094 , 0.00000000 ], // OML/R
  58. [ 0.40324698 , 0.29906901 , 0.39676419 , 0.10106757 , 0.07620466 , 0.50471883 , 0.58512049 , 0.37506253 , 0.05291339 , 0.53882195 , 0.51604535 , 0.82935839 , 0.32160667 , 0.00000000 ], // F
  59. [ 0.45462811 , 0.30278232 , 0.45462811 , 0.90925623 , 0.45462811 , 0.90925623 , 0.45462811 , 0.45462811 , 0.30278232 , 0.15139116 , 0.15139116 ]]; // GK
  60. // REC weights Str Sta Pac Mar Tac Wor Pos Pas Cro Tec Hea Fin Lon Set
  61. var weightR = [[0.653962303361921, 0.330014238020285, 0.562994547223387, 0.891800163983125, 0.871069095865164, 0.454514672470839, 0.555697278549252, 0.42777598627972, 0.338218821750765, 0.134348455965202, 0.796916786677566, 0.048831870932616, 0.116363443378865, 0.282347752982916], //DC
  62. [0.565605120229193, 0.430973382039533, 0.917125432457378, 0.815702528287723, 0.99022325015212, 0.547995876625372, 0.522203232914265, 0.309928898819518, 0.837365352274204, 0.483822472259513, 0.656901420858592, 0.137582588344562, 0.163658117596413, 0.303915447383549], //DL/R
  63. [0.55838825558912, 0.603683502357502, 0.563792314670998, 0.770425088563048, 0.641965853834719, 0.675495235675077, 0.683863478201805, 0.757342915150728, 0.473070797767482, 0.494107823556837, 0.397547163237438, 0.429660916538242, 0.56364174077388, 0.224791093448809], //DMC
  64. [0.582074038075056, 0.420032202680124, 0.7887541874616, 0.726221389774063, 0.722972329840151, 0.737617252827595, 0.62234458453736, 0.466946909655194, 0.814382915598981, 0.561877829393632, 0.367446981999576, 0.360623408340649, 0.390057769678583, 0.249517737311268], //DML/R
  65. [0.578431939417021, 0.778134685048085, 0.574726322388294, 0.71400292078636, 0.635403391007978, 0.822308254446722, 0.877857040588335, 0.864265671245476, 0.433450219618618, 0.697164252367046, 0.412568516841575, 0.586627586272733, 0.617905053049757, 0.308426814834866], //MC
  66. [0.497429376361348, 0.545347364699553, 0.788280917110089, 0.578724574327427, 0.663235306043286, 0.772537143243647, 0.638706135095199, 0.538453108494387, 0.887935381275257, 0.572515970409641, 0.290549550901104, 0.476180499897665, 0.526149424898544, 0.287001645266184], //ML/R
  67. [0.656437768926678, 0.617260722143117, 0.656569986958435, 0.63741054520629, 0.55148452726771, 0.922379789905246, 0.790553566121791, 0.9###88557334153, 0.426203575603164, 0.778770912265944, 0.652374065121788, 0.662264393455567, 0.73120100926333, 0.274563618133769], //OMC
  68. [0.483341947292063, 0.494773052635464, 0.799434804259974, 0.628789194186491, 0.633847969631333, 0.681354437033551, 0.671233869875345, 0.536121458625519, 0.849389745477645, 0.684067723274814, 0.389732973354501, 0.499972692291964, 0.577231818355874, 0.272773352088982], //OML/R
  69. [0.493917051093473, 0.370423904816088, 0.532148929###192, 0.0629206658586336, 0.0904950078155216, 0.415494774080483, 0.54106107545574, 0.468181146095801, 0.158106484131194, 0.461125738338018, 0.833###12271067, 0.999828328674183, 0.827171977606305, 0.253225855459207], //F
  70. // For Rez Vit Ind One Ref Aer Sar Com Deg Aru
  71. [0.5, 0.333, 0.5, 1, 0.5, 1, 0.5, 0.5, 0.333, 0.333, 0.333]]; //GK
  72. // DC DL/R DMC DML/R MC ML/R OMC OML/R F GK
  73. var recLast = [[14.866375, 15.980742, 15.8932675, 15.5835325, 17.6955092, 16.6189141, 18.1255351, 15.6304867, 13.2762119, 15],
  74. [18.95664, 22.895539, 23.1801296, 23.2813871, 26.8420884, 23.9940623, 27.8974544, 24.54323, 19.5088591, 22.3]];
  75. var positionNames = ["D C", "D L", "D R", "DM C", "DM L", "DM R", "M C", "M L", "M R", "OM C", "OM L", "OM R", "F", "GK"];
  76. //to translate
  77. var positionFullNames = ["Defender Center", "Defender Left", "Defender Right", "Defensive Midfielder Center", "Defensive Midfielder Left", "Defensive Midfielder Right", "Midfielder Center", "Midfielder Left", "Midfielder Right", "Offensive Midfielder Center", "Offensive Midfielder Left", "Offensive Midfielder Right", "Forward", "Goalkeeper"];
  78. var positionFullNamesJ = ["ディフェンダー ##", "ディフェンダー 左", "ディフェンダー 右", "守備的ミッドフィルダー ##", "守備的ミッドフィルダー 左", "守備的ミッドフィルダー 右", "ミッドフィルダー ##", "ミッドフィルダー 左", "ミッドフィルダー 右", "攻撃的ミッドフィルダー ##", "攻撃的ミッドフィルダー 左", "攻撃的ミッドフィルダー 右", "フォワード", "ゴールキーパー"];
  79. //STAR SCRIPT
  80. if (location.href.indexOf("/players/") != -1){
  81. // positionIndex is the array of skill priority for this player.
  82. // skills is an array of skills for each user
  83. var isGK = false; //check if gk
  84. if(document.getElementsByClassName("favposition long")[0].innerHTML.indexOf("gk")>0)isGK=true;
  85. document.calculateSkill = function(positionIndex, skills) {
  86. var totSkill = 0;
  87. for (var i=0; i< positions[positionIndex].length; i++) {
  88. if (skills[i]>0) {
  89. totSkill += skills[i]*document.calculateSkillWeight(positions[positionIndex], weights[positionIndex], i);
  90. }
  91. }
  92. totSkill = totSkill / 200;
  93. totSkill = Math.round(totSkill*1000)/1000;
  94. return totSkill;
  95. };
  96. document.calculateSkillWeight = function(positionWeightLevels, weights, index) {
  97. var weight = 0;
  98. weight = weights[positionWeightLevels[index]-1] / document.numberAtWeight(positionWeightLevels, positionWeightLevels[index]) * 10;
  99. return weight;
  100. };
  101. document.numberAtWeight = function(positionWeightLevels, value) {
  102. var count = 0;
  103. for (var i=0; i< positionWeightLevels.length; i++) {
  104. if (positionWeightLevels[i] == value) {
  105. count++;
  106. }
  107. }
  108. return count;
  109. };
  110. document.findPositionIndex = function(position) {
  111. var index = -1;
  112. for (var k=0; k< positionFullNames.length; k++) {
  113. if (position.indexOf(positionFullNames[k]) == 0) {
  114. return k;
  115. }
  116. }
  117. for (var k=0; k< positionFullNamesJ.length; k++) {
  118. if (position.indexOf(positionFullNamesJ[k]) == 0) {
  119. return k;
  120. }
  121. }
  122. return index;
  123. };
  124. document.getSkills = function(table) {
  125. var skillArray = [];
  126. var tableData = table.getElementsByTagName("td");
  127. if (tableData.length > 1) {
  128. for (var i = 0; i < 2; i++) {
  129. for (var j = i; j < tableData.length; j += 2) {
  130. if (tableData[j].innerHTML.indexOf("star.png") > 0) {
  131. skillArray.push(20);
  132. }
  133. else if (tableData[j].innerHTML.indexOf("star_silver.png") > 0) {
  134. skillArray.push(19);
  135. }
  136. else if (tableData[j].textContent.length != 0) {
  137. skillArray.push(tableData[j].textContent);
  138. }
  139. }
  140. }
  141. }
  142. return skillArray;
  143. }; // end of getSkills
  144. function funFix (i) {
  145. i = (Math.round(i*100)/100).toFixed(2);
  146. return i;
  147. }
  148. function funFix2 (i) {
  149. i = (Math.round(i*10)/10).toFixed(1);
  150. return i;
  151. }
  152. /* 屏蔽此函数,减少翻译量
  153. //var trnum = siSearch(gettr);
  154. function siSearch (gettr) {
  155. for (var i = 0; i < gettr.length; i++){
  156. if (gettr[i].innerHTML.indexOf("スキル指数") > 0) return i;
  157. if (gettr[i].innerHTML.indexOf("Skill Index") > 0) return i;
  158. if (gettr[i].innerHTML.indexOf("技能评值") > 0) return i;
  159. }
  160. }
  161. */
  162. document.createTR = function(table, SKarray) {
  163. var tr = document.createElement("tr");
  164. var th = document.createElement("th");
  165. th.innerHTML = "SK1";
  166. tr.appendChild(th);
  167. var td = document.createElement("td");
  168. td.setAttribute("class", "align_center");
  169. td.innerHTML = SKarray[0];
  170. tr.appendChild(td);
  171. var th = document.createElement("th");
  172. th.innerHTML = "SK2";
  173. tr.appendChild(th);
  174. var td = document.createElement("td");
  175. td.setAttribute("class", "align_center");
  176. if (SKarray[1] == 0){
  177. td.innerHTML = "N/A";
  178. } else {
  179. td.innerHTML = SKarray[1];
  180. }
  181. tr.appendChild(td);
  182. table.appendChild(tr);
  183. };// end of document.createTR
  184. function computeSK(table, skills){
  185. var SKs = [0, 0];
  186. var REREC = [[],[],[]];
  187. var FP = [];
  188. var positionCell = document.getElementsByClassName("favposition long")[0].childNodes;
  189. var positionArray = [];
  190. if (positionCell.length == 1){
  191. positionArray[0] = positionCell[0].textContent;
  192. } else if (positionCell.length == 2){
  193. positionArray[0] = positionCell[0].textContent + positionCell[1].textContent;
  194. } else if (positionCell[1].className == "split"){
  195. positionArray[0] = positionCell[0].textContent + positionCell[3].textContent;
  196. positionArray[1] = positionCell[2].textContent + positionCell[3].textContent;
  197. } else if (positionCell[3].className == "f"){
  198. positionArray[0] = positionCell[0].textContent + positionCell[1].textContent;
  199. positionArray[1] = positionCell[3].textContent;
  200. } else {
  201. positionArray[0] = positionCell[0].textContent + positionCell[1].textContent;
  202. positionArray[1] = positionCell[0].textContent + positionCell[3].textContent;
  203. }
  204. var gettr = document.getElementsByTagName("tr");
  205. var trnum = 6;
  206. var rou = gettr[trnum+2].getElementsByTagName("td")[0].innerHTML;
  207. rou = Math.pow(5/3, Math.LOG2E * Math.log(rou * 10)) * 0.4;
  208. for (var i = 0; i < positionArray.length; i++){
  209. var positionIndex = document.findPositionIndex(positionArray[i]);
  210. FP[i] = positionIndex;
  211. FP[i+1] = FP[i];
  212. if (positionIndex > -1) {
  213. SKs[i] = document.calculateSkill(positionIndex, skills);
  214. }
  215. if (i == 0) REREC = document.calculateREREC(positionIndex, skills, gettr, trnum, rou, rou_factor);
  216. }
  217. var SI = new String(gettr[trnum].getElementsByTagName("td")[0].innerHTML).replace(/,/g, "");
  218. if (positionIndex == 13){
  219. var phySum = skills[0]*1 + skills[1]*1 + skills[2]*1 + skills[7]*1;
  220. var tacSum = skills[4]*1 + skills[6]*1 + skills[8]*1;
  221. var tecSum = skills[3]*1 + skills[5]*1 + skills[9]*1 + skills[10]*1;
  222. var weight = 48717927500;
  223. }
  224. else {
  225. var phySum = skills[0]*1 + skills[1]*1 + skills[2]*1 + skills[10]*1;
  226. var tacSum = skills[3]*1 + skills[4]*1 + skills[5]*1 + skills[6]*1;
  227. var tecSum = skills[7]*1 + skills[8]*1 + skills[9]*1 + skills[11]*1 + skills[12]*1 + skills[13]*1;
  228. var weight = 263533760000;
  229. }
  230. var allSum = phySum + tacSum + tecSum;
  231. var remainder = funFix2(Math.pow(2,Math.log(weight*SI)/Math.log(Math.pow(2,7))) - allSum);
  232. var recth = document.createElement("div");
  233. var rectd = document.createElement("div");
  234. var ratth = document.createElement("div");
  235. var rattd = document.createElement("div");
  236. rectd.setAttribute("style", "color: gold;");
  237. rattd.setAttribute("style", "color: gold;");
  238. for (i = 0; i < FP.length; i++) {
  239. for (j = 0; 2+j <= FP[i]; j += 2) FP[i]--;
  240. }
  241. if (FP[0] != FP[1]) {
  242. rectd.innerHTML = REREC[0][FP[0]] + "/" + REREC[0][FP[1]];
  243. rattd.innerHTML = REREC[2][FP[0]] + "/" + REREC[2][FP[1]];
  244. var ratingR2 = rattd.innerHTML;
  245. var rouEffect = funFix(REREC[2][FP[0]]*1 - REREC[1][FP[0]]*1) + "/" + funFix(REREC[2][FP[1]]*1 - REREC[1][FP[1]]*1);
  246. var R2Pure = REREC[1][FP[0]] + "/" + REREC[1][FP[1]];
  247. }
  248. else {
  249. rectd.innerHTML = REREC[0][FP[0]];
  250. rattd.innerHTML = REREC[2][FP[0]];
  251. var ratingR2 = rattd.innerHTML;
  252. var rouEffect = funFix(REREC[2][FP[0]]*1 - REREC[1][FP[0]]*1);
  253. var R2Pure = REREC[1][FP[0]];
  254. }
  255. recth.innerHTML = "<b style=\"color: gold;\">REREC</b>";
  256. ratth.innerHTML = "<b style=\"color: gold;\">RatingR2</b>";
  257. gettr[trnum-1].getElementsByTagName("th")[0].appendChild(recth);
  258. gettr[trnum-1].getElementsByTagName("td")[0].appendChild(rectd);
  259. gettr[trnum+2].getElementsByTagName("th")[0].appendChild(ratth);
  260. gettr[trnum+2].getElementsByTagName("td")[0].appendChild(rattd);
  261. var div_area = document.createElement('div');
  262. if(lang=="ENG")
  263. div_area.innerHTML="<div id=\"area\" style=\"position: absolute; z-index: 1000; width: 175px; margin-top: 25px; background: #5F8D2D; color: #ff9900; padding-left: 5px; -moz-opacity: .8; text-align: middle; color: gold; border: 2px #333333 outset; display:inline;\"><p style=\"text-decoration: underline;\"><b>PlayerData+:<\p><table style=\"margin-top: -1em; margin-bottom: 1em;\"><tr><td>PhySum: </td><td>" + phySum + " / " + Math.round(100 * phySum / 80) +"% </td></tr><tr><td>TacSum: </td><td>" + tacSum + " / " + Math.round(100 * tacSum / 80) +"% </td></tr><tr><td>TecSum: </td><td>" + tecSum + " / " + Math.round(100 * tecSum / 120) +"% </td></tr><tr><td>AllSum: </td><td>" + allSum + " + " + remainder + " </td></tr><tr><td>&nbsp;</td></tr><tr><td>RatingR2: </td><td>" + ratingR2 + " </td></tr><tr><td>RouEffect: </td><td>" + rouEffect + " </td></tr><tr><td>Rating-Pure: </td><td>" + R2Pure + "</td></tr></table></b></div>";
  264. // to translate
  265. if(lang=="CHS")
  266. div_area.innerHTML="<div id=\"area\" style=\"position: absolute; z-index: 1000; width: 175px; margin-top: 25px; background: #5F8D2D; color: #ff9900; padding-left: 5px; -moz-opacity: .8; text-align: middle; color: gold; border: 2px #333333 outset; display:inline;\"><p style=\"text-decoration: underline;\"><b>PlayerData+:<\p><table style=\"margin-top: -1em; margin-bottom: 1em;\"><tr><td>体能总数: </td><td>" + phySum + " / " + Math.round(100 * phySum / 80) +"% </td></tr><tr><td>战术总数: </td><td>" + tacSum + " / " + Math.round(100 * tacSum / 80) +"% </td></tr><tr><td>技术总数: </td><td>" + tecSum + " / " + Math.round(100 * tecSum / 120) +"% </td></tr><tr><td>总技能数: </td><td>" + allSum + " + " + remainder + " </td></tr><tr><td>&nbsp;</td></tr><tr><td>评价R2: </td><td>" + ratingR2 + " </td></tr><tr><td>经验加成: </td><td>" + rouEffect + " </td></tr><tr><td>纯技能评价: </td><td>" + R2Pure + "</td></tr></table></b></div>";
  267. // 需要重新定位小窗口,适应大部分浏览器
  268. var getbox=document.getElementsByTagName("div")
  269. for (k = 0; k < getbox.length; k++){
  270. if (getbox[k].className=="box_body") break;
  271. }
  272. document.getElementsByTagName("div")[k].appendChild(div_area);
  273. document.createTR(table, SKs);
  274. if (positionIndex != 13) {
  275. var table2 = document.createElement("table");
  276. var div = document.createElement("div");
  277. var tbody = document.createElement("tbody");
  278. table2.setAttribute("border", "1");
  279. table2.setAttribute("bordercolor", "#6C9922");
  280. table2.innerHTML = "<thead><tr><th></th><th>DC</th><th>DLR</th><th>DMC</th><th>DMLR</th><th>MC</th><th>MLR</th><th>OMC</th><th>OMLR</th><th>F</th></tr></thead>";
  281. tbody.setAttribute("align", "center");
  282. var tr = document.createElement("tr");
  283. for (var i = 0; i < 3; i+=2) {
  284. var th = document.createElement("th");
  285. if (i == 0) th.innerHTML = "REREC";
  286. else th.innerHTML = "RatingR2";
  287. tr.appendChild(th);
  288. for (var j = 0; j < 9; j++) {
  289. var td = document.createElement("td");
  290. if (REREC[i][j]*1 >= 100) {
  291. REREC[i][j] = funFix2(REREC[i][j]*1);
  292. }
  293. td.innerHTML = REREC[i][j];
  294. tr.appendChild(td);
  295. }
  296. tbody.appendChild(tr);
  297. table2.appendChild(tbody);
  298. var tr = document.createElement("tr");
  299. var th = document.createElement("th");
  300. th.setAttribute("colspan", "4");
  301. th.setAttribute("align", "center");
  302. th.appendChild(table2);
  303. }
  304. tr.appendChild(th);
  305. table.appendChild(tr);
  306. }
  307. return SKs;
  308. } // end fo computeSK
  309. document.calculateREREC = function (positionIndex, skills, gettr, num, rou, rou_factor){
  310. var rec = []; // REREC
  311. var ratingR = []; // RatingR2
  312. var ratingR2 = []; // RatingR2 + routine
  313. var skillSum = 0;
  314. var SI = new String(gettr[num].getElementsByTagName("td")[0].innerHTML).replace(/,/g, "");
  315. if (positionIndex == 13) {
  316. var skillWeightSum = Math.pow(SI, 0.143) / 0.02979; // GK Skillsum
  317. var weight = 48717927500;
  318. }
  319. else {
  320. var skillWeightSum = Math.pow(SI, 1/6.99194)/0.02336483; // Other Skillsum
  321. var weight = 263533760000;
  322. }
  323. for (var i = 0; i < skills.length; i++) {
  324. skillSum += parseInt(skills[i]);
  325. }
  326. for (i = 0; 2+i <= positionIndex; i += 2) { // TrExMaとRECのweight表のずれ修正
  327. positionIndex--;
  328. }
  329. skillWeightSum -= skillSum; // REREC remainder
  330. var remainder = Math.round((Math.pow(2,Math.log(weight*SI)/Math.log(Math.pow(2,7))) - skillSum)*10)/10; // RatingR2 remainder
  331. for (var i = 0; i < 10; i++) {
  332. rec[i] = 0;
  333. ratingR[i] = 0;
  334. }
  335. for (var j = 0; j < 9; j++) { // All position
  336. var remainderWeight = 0; // REREC remainder weight sum
  337. var remainderWeight2 = 0; // RatingR2 remainder weight sum
  338. var not20 = 0; // 20以外のスキル数
  339. if (positionIndex == 9) j = 9; // GK
  340. for (var i = 0; i < weightR[positionIndex].length; i++) {
  341. rec[j] += skills[i] * weightR[j][i];
  342. ratingR[j] += skills[i] * weightR2[j][i];
  343. if (skills[i] != 20) {
  344. remainderWeight += weightR[j][i];
  345. remainderWeight2 += weightR2[j][i];
  346. not20 += 1;
  347. }
  348. }
  349. rec[j] += skillWeightSum * remainderWeight / not20; //REREC Score
  350. if (positionIndex == 9) rec[j] *= 1.27 //GK
  351. rec[j] = funFix((rec[j] - recLast[0][j]) / recLast[1][j]);
  352. ratingR[j] += remainder * remainderWeight2 / not20;
  353. ratingR2[j] = funFix(ratingR[j] * (1 + rou * rou_factor));
  354. ratingR[j] = funFix(ratingR[j]);
  355. if (positionIndex == 9) j = 9; // Loop end
  356. }
  357. var recAndRating = [rec, ratingR, ratingR2];
  358. return recAndRating;
  359. }; // end of document.calculateREREC
  360. function seasonSI () {
  361. var today = new Date();
  362. var s36t = new Date("01 28 2014 00:10:00 GMT");
  363. var daysbetween = (today.getTime()-s36t.getTime())/1000/3600/24;
  364. var weeks = Math.floor(daysbetween/7);
  365. weeks=weeks%12;
  366. weeks++;
  367. if(weeks==0)return;
  368. var sith = document.createElement("div");
  369. var sitd = document.createElement("div");
  370. var gettr = document.getElementsByTagName("tr");
  371. var trnum = 14;
  372. var SI = new String(gettr[trnum].getElementsByTagName("td")[0].innerHTML).replace(/,/g, "");
  373. var wage = new String(gettr[trnum-2].getElementsByTagName("span")[0].innerHTML).replace(/,/g, "");
  374. //alert(SI+"XX"+wage);
  375. var age = new String(gettr[trnum-4].getElementsByTagName("td")[0].innerHTML);
  376. var yearidx = age.search(/\d\d/);
  377. var year = age.substr(yearidx,2);
  378. age = age.slice(yearidx+2);
  379. age = age.replace(/\D+/g,"");
  380. var month = age;
  381. year = parseInt(year);
  382. month = parseInt(month);
  383. SI= parseInt(SI);
  384. wage=parseInt(wage);
  385. if(wage==30000||wage==31500)return;
  386. //alert(trnum+"XX"+age);
  387. //to do
  388. var vcSeasonASI = wage / wage_rate ;
  389. var vcSeasonSkill =-5.8448563*Math.pow(vcSeasonASI, -0.0425431)+ 41.33876*Math.pow(vcSeasonASI,0.1445571);
  390. var vcSkill =-5.8448563*Math.pow(SI, -0.0425431)+ 41.33876*Math.pow(SI,0.1445571);
  391. var vcTI = (vcSkill - vcSeasonSkill)*10;
  392. if(isGK)
  393. vcTI=vcTI*11/14;
  394. var vcTI2= vcTI.toFixed(1);
  395. var vcTIevg = vcTI/weeks ;
  396. vcTIevg = vcTIevg.toFixed(1);
  397. var isShowNew = false;
  398. if(year<22&&weeks>month&&month>1)
  399. { isShowNew = true;
  400. var NEWvcSeasonASI = wage / wage_rate_new ;
  401. var NEWvcSeasonSkill =-5.8448563*Math.pow(NEWvcSeasonASI, -0.0425431)+ 41.33876*Math.pow(NEWvcSeasonASI,0.1445571);
  402. var NEWvcTI = (vcSkill - NEWvcSeasonSkill)*10;
  403. if(isGK)
  404. NEWvcTI=NEWvcTI*11/14;
  405. var NEWvcTI2= NEWvcTI.toFixed(1);
  406. var NEWvcTIevg = NEWvcTI/(month-1) ;
  407. NEWvcTIevg = NEWvcTIevg.toFixed(1);
  408. if(NEWvcTIevg<0)isShowNew=false;
  409. }
  410. // to translate
  411. if(lang=="ENG")
  412. sith.innerHTML = "Season TI";
  413. if(lang=="CHS")
  414. sith.innerHTML = "赛季TI";
  415. sitd.innerHTML = vcTIevg+" X "+weeks+" = "+vcTI2;
  416. gettr[trnum].getElementsByTagName("th")[0].appendChild(sith);
  417. gettr[trnum].getElementsByTagName("td")[0].appendChild(sitd);
  418. if(isShowNew)
  419. {
  420. var sith2 = document.createElement("div");
  421. var sitd2 = document.createElement("div");
  422. if(lang=="ENG")
  423. sith2.innerHTML = "Season TI New";
  424. if(lang=="CHS")
  425. sith2.innerHTML = "新球员赛季TI";
  426. sitd2.innerHTML = NEWvcTIevg+" X "+(month-1)+" = "+NEWvcTI2;
  427. gettr[trnum].getElementsByTagName("th")[0].appendChild(sith2);
  428. gettr[trnum].getElementsByTagName("td")[0].appendChild(sitd2);
  429. }
  430. }//end of Season SI
  431. function addBt()
  432. {
  433. var title = document.getElementsByTagName("head")[0];
  434. var myscript = document.createElement("script");
  435. myscript.type="text/javascript";
  436. myscript.innerHTML = "function getDetail(){ \n";
  437. myscript.innerHTML+= "var isGK= false; \n";
  438. myscript.innerHTML+= "if(document.getElementsByClassName(\"favposition long\")[0].innerHTML.indexOf(\"gk\")>0)isGK=true; \n";
  439. myscript.innerHTML+="var gettr2 = $(\".float_left&.zebra\");\n";
  440. myscript.innerHTML+="var clubid = new String(gettr2[0].getElementsByTagName(\"a\")[0].getAttribute(\"club_link\")).replace(/,/g, \"\"); \n";
  441. myscript.innerHTML+="var player_id_str = new String(player_id);\n";
  442. // start ajax
  443. myscript.innerHTML+="$.post(\"http://trophymanager.com/ajax/players_get_select.ajax.php\",{type:\"change\",club_id:clubid},function(data){\n";
  444. myscript.innerHTML+="if(data != null){ \n";
  445. myscript.innerHTML+="$.each(data.post,function(idx,item){ \n";
  446. myscript.innerHTML+="if(player_id_str==idx){ \n";
  447. myscript.innerHTML+="var skilltable = $(\".skill_table&.zebra\");\n";
  448. myscript.innerHTML+="var skilltbaletr = skilltable[0].getElementsByTagName(\"tr\");\n";
  449. myscript.innerHTML+="if(isGK) {\n";
  450. myscript.innerHTML+="skilltbaletr[0].getElementsByTagName(\"td\")[0].innerHTML=item.strength;\n";
  451. myscript.innerHTML+="skilltbaletr[0].getElementsByTagName(\"td\")[1].innerHTML=item.handling;\n";
  452. myscript.innerHTML+="skilltbaletr[1].getElementsByTagName(\"td\")[0].innerHTML=item.stamina;\n";
  453. myscript.innerHTML+="skilltbaletr[1].getElementsByTagName(\"td\")[1].innerHTML=item.oneonones; \n";
  454. myscript.innerHTML+="skilltbaletr[2].getElementsByTagName(\"td\")[0].innerHTML=item.pace;\n";
  455. myscript.innerHTML+="skilltbaletr[2].getElementsByTagName(\"td\")[1].innerHTML=item.reflexes;\n";
  456. myscript.innerHTML+="skilltbaletr[3].getElementsByTagName(\"td\")[1].innerHTML=item.arialability;\n";
  457. myscript.innerHTML+="skilltbaletr[4].getElementsByTagName(\"td\")[1].innerHTML=item.jumping;\n";
  458. myscript.innerHTML+="skilltbaletr[5].getElementsByTagName(\"td\")[1].innerHTML=item.communication;\n";
  459. myscript.innerHTML+="skilltbaletr[6].getElementsByTagName(\"td\")[1].innerHTML=item.kicking;\n";
  460. myscript.innerHTML+="skilltbaletr[7].getElementsByTagName(\"td\")[1].innerHTML=item.throwing;\n";
  461. myscript.innerHTML+=" } else {\n";
  462. myscript.innerHTML+="skilltbaletr[0].getElementsByTagName(\"td\")[0].innerHTML=item.strength;\n";
  463. myscript.innerHTML+="skilltbaletr[0].getElementsByTagName(\"td\")[1].innerHTML=item.passing;\n";
  464. myscript.innerHTML+="skilltbaletr[1].getElementsByTagName(\"td\")[0].innerHTML=item.stamina;\n";
  465. myscript.innerHTML+="skilltbaletr[1].getElementsByTagName(\"td\")[1].innerHTML=item.crossing;\n";
  466. myscript.innerHTML+="skilltbaletr[2].getElementsByTagName(\"td\")[0].innerHTML=item.pace;\n";
  467. myscript.innerHTML+="skilltbaletr[2].getElementsByTagName(\"td\")[1].innerHTML=item.technique;\n";
  468. myscript.innerHTML+="skilltbaletr[3].getElementsByTagName(\"td\")[0].innerHTML=item.marking;\n";
  469. myscript.innerHTML+="skilltbaletr[3].getElementsByTagName(\"td\")[1].innerHTML=item.heading;\n";
  470. myscript.innerHTML+="skilltbaletr[4].getElementsByTagName(\"td\")[0].innerHTML=item.tackling;\n";
  471. myscript.innerHTML+="skilltbaletr[4].getElementsByTagName(\"td\")[1].innerHTML=item.finishing;\n";
  472. myscript.innerHTML+="skilltbaletr[5].getElementsByTagName(\"td\")[0].innerHTML=item.workrate;\n";
  473. myscript.innerHTML+="skilltbaletr[5].getElementsByTagName(\"td\")[1].innerHTML=item.longshots;\n";
  474. myscript.innerHTML+="skilltbaletr[6].getElementsByTagName(\"td\")[0].innerHTML=item.positioning;\n";
  475. myscript.innerHTML+="skilltbaletr[6].getElementsByTagName(\"td\")[1].innerHTML=item.setpieces;\n";
  476. myscript.innerHTML+=" }}} )}},\"json\");\n";
  477. //end ajax
  478. myscript.innerHTML+="}\n";
  479. title.appendChild(myscript);
  480. var h = document.getElementsByTagName("h3")[0];
  481. //"/pics/magnifying_glass_normal.png"
  482. h.innerHTML=h.innerHTML+" &nbsp; &nbsp;<a href=\"javascript:getDetail()\" class=\"magnify\"><img src=\"/pics/magnifying_glass_normal.png\">显示小数</a>(请勿泄漏,泄漏就彻底废了)";
  483. }
  484. (function() {
  485. addBt();
  486. var playerTable = document.getElementsByClassName("skill_table zebra")[0];
  487. var skillArray = document.getSkills(playerTable);
  488. var SKs = computeSK(playerTable, skillArray);
  489. seasonSI();
  490. })();
  491. }//end see "if" at Line 92