S-5556 calculator TI.asi.banc current & future

simulator, future. asi, banc

  1. // ==UserScript==
  2. // @name S-5556 calculator TI.asi.banc current & future
  3. // @version 6.56
  4. // @description simulator, future. asi, banc
  5. // @include http://trophymanager.com/players/*
  6. // @include https://trophymanager.com/players/*
  7. // @namespace https://gf.qytechs.cn/users/192839
  8. // ==/UserScript==
  9.  
  10. var wage_rate = 15.808;
  11.  
  12. // Array to setup the weights of particular skills for each player's actual ability
  13. // This is the direct weight to be given to each skill.
  14. // Array maps to these skills:
  15. // [Str,Sta,Pac,Mar,Tac,Wor,Pos,Pas,Cro,Tec,Hea,Fin,Lon,Set]
  16. var positions = [[ 1, 3, 1, 1, 1, 3, 3, 2, 2, 2, 1, 3, 3, 3], // D C
  17. [ 2, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 3, 3, 3], // D L
  18. [ 2, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 3, 3, 3], // D R
  19. [ 1, 2, 2, 1, 1, 1, 1, 1, 2, 2, 1, 3, 3, 3], // DM C
  20. [ 2, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 3, 3, 3], // DM L
  21. [ 2, 3, 1, 1, 1, 3, 3, 2, 2, 2, 2, 3, 3, 3], // DM R
  22. [ 2, 2, 3, 1, 1, 1, 1, 1, 3, 1, 2, 3, 3, 3], // M C
  23. [ 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3], // M L
  24. [ 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 3, 3], // M R
  25. [ 2, 3, 3, 2, 2, 1, 1, 1, 3, 1, 2, 1, 1, 3], // OM C
  26. [ 2, 2, 1, 3, 3, 2, 2, 3, 1, 1, 2, 2, 2, 3], // OM L
  27. [ 2, 2, 1, 3, 3, 2, 2, 3, 1, 1, 2, 2, 2, 3], // OM R
  28. [ 1, 2, 2, 3, 3, 2, 2, 3, 3, 2, 1, 1, 1, 3], // F
  29. [ 2, 3, 2, 1, 2, 1, 2, 2, 3, 3, 3]]; // GK
  30.  
  31. // Weights need to total 100
  32. var weights = [ [85,12, 3], // D C
  33. [70,25, 5], // D L
  34. [70,25, 5], // D R
  35. [90,10, 0], // DM C
  36. [50,40,10], // DM L
  37. [50,40,10], // DM R
  38. [85,12, 3], // M C
  39. [90, 7, 3], // M L
  40. [90, 7, 3], // M R
  41. [90,10, 0], // OM C
  42. [60,35, 5], // OM L
  43. [60,35, 5], // OMR
  44. [80,18, 2], // F
  45. [50,42, 8]]; // GK
  46.  
  47. var weightR4 = [[ 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.0 ], // DC
  48. [ 0.45240063 , 0.31762087 , 0.68150374 , 0.77724031 , 0.74690951 , 0.50072196 , 0.45947168 , 0.17663123 , 0.23886264 , 0.18410349 , 0.46453393 , 0.00000000 , 0.00000000 , 0.0 ], // DL/R
  49. [ 0.43789335 , 0.31844356 , 0.53515723 , 0.63671706 , 0.59109742 , 0.51311701 , 0.53184426 , 0.32421168 , 0.06318165 , 0.27931537 , 0.50093723 , 0.19317517 , 0.07490902 , 0.0 ], // DMC
  50. [ 0.42311032 , 0.32315966 , 0.62271745 , 0.53932111 , 0.51442838 , 0.49835997 , 0.47896659 , 0.26434782 , 0.22586124 , 0.32182902 , 0.45537227 , 0.23961054 , 0.09291562 , 0.0 ], // DML/R
  51. [ 0.31849880 , 0.36581214 , 0.50091016 , 0.31726444 , 0.28029020 , 0.52022170 , 0.55763723 , 0.60199246 , 0.10044356 , 0.51811057 , 0.38320838 , 0.38594825 , 0.14966211 , 0.0 ], // MC
  52. [ 0.35409971 , 0.34443972 , 0.64417234 , 0.30427501 , 0.27956082 , 0.49925481 , 0.46093655 , 0.32887111 , 0.38695101 , 0.47884837 , 0.37465446 , 0.39194758 , 0.15198852 , 0.0 ], // ML/R
  53. [ 0.32272636 , 0.35024067 , 0.48762872 , 0.22888914 , 0.19049636 , 0.52620414 , 0.57842512 , 0.53330409 , 0.07523792 , 0.55942740 , 0.39986691 , 0.53866926 , 0.20888391 , 0.0 ], // OMC
  54. [ 0.36311066 , 0.33106245 , 0.61831416 , 0.19830147 , 0.17415753 , 0.50049575 , 0.47737842 , 0.28937553 , 0.34729042 , 0.52834210 , 0.39939218 , 0.55684664 , 0.21593269 , 0.0 ], // OML/R
  55. [ 0.40622753 , 0.29744114 , 0.39446722 , 0.09952139 , 0.07503885 , 0.50402399 , 0.58505850 , 0.36932466 , 0.05210389 , 0.53677990 , 0.51998862 , 0.83588627 , 0.32413803 , 0.0 ], // F
  56. [ 0.37313433 , 0.37313433 , 0.37313433 , 0.74626866 , 0.52238806 , 0.74626866 , 0.52238806 , 0.52238806 , 0.37313433 , 0.22388060 , 0.22388060 ]]; // GK
  57.  
  58. // RECb weights Str Sta Pac Mar Tac Wor Pos Pas Cro Tec Hea Fin Lon Set
  59. 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
  60. [ 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
  61. [ 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
  62. [ 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
  63. [ 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
  64. [ 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
  65. [ 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
  66. [ 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
  67. [ 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
  68.  
  69. [ 0.07466384 , 0.07466384 , 0.07466384 , 0.14932769 , 0.10452938 , 0.14932769 , 0.10452938 , 0.10344411 , 0.07512610 , 0.04492581 , 0.04479831 ]]; // GK
  70.  
  71. // REC weights Str Sta Pac Mar Tac Wor Pos Pas Cro Tec Hea Fin Lon Set
  72. 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
  73. [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
  74. [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
  75. [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
  76. [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
  77. [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
  78. [0.656437768926678, 0.617260722143117, 0.656569986958435, 0.63741054520629, 0.55148452726771, 0.922379789905246, 0.790553566121791, 0.999688557334153, 0.426203575603164, 0.778770912265944, 0.652374065121788, 0.662264393455567, 0.73120100926333, 0.274563618133769], //OMC
  79. [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
  80. [0.493917051093473, 0.370423904816088, 0.532148929996192, 0.0629206658586336, 0.0904950078155216, 0.415494774080483, 0.54106107545574, 0.468181146095801, 0.158106484131194, 0.461125738338018, 0.83399612271067, 0.999828328674183, 0.827171977606305, 0.253225855459207], //F
  81. // For Rez Vit Ind One Ref Aer Sar Com Deg Aru
  82. [0.5, 0.333, 0.5, 1, 0.5, 1, 0.5, 0.5, 0.333, 0.333, 0.333]]; //GK
  83.  
  84. // DC DL/R DMC DML/R MC ML/R OMC OML/R F GK
  85. var recLast = [[14.866375, 15.980742, 15.8932675, 15.5835325, 17.6955092, 16.6189141, 18.1255351, 15.6304867, 13.2762119, 15],
  86. [18.95664, 22.895539, 23.1801296, 23.2813871, 26.8420884, 23.9940623, 27.8974544, 24.54323, 19.5088591, 22.3]];
  87.  
  88. // L DC R L DMC R L MC R L OMC R F
  89. var positionsAll = [[2, 0, 2, 3, 1, 3, 4, 2, 4, 4, 3, 4, 4], // D C
  90. [0, 2, 1, 1, 3, 2, 2, 4, 3, 3, 4, 4, 4], // D L
  91. [1, 2, 0, 2, 3, 1, 3, 4, 2, 4, 4, 3, 4], // D R
  92. [3, 1, 3, 2, 0, 2, 3, 1, 3, 4, 2, 4, 3], // DM C
  93. [1, 3, 2, 0, 2, 1, 1, 3, 2, 2, 4, 3, 4], // DM L
  94. [2, 3, 1, 1, 2, 0, 2, 3, 1, 3, 4, 2, 4], // DM R
  95. [4, 2, 4, 3, 1, 3, 2, 0, 2, 3, 1, 3, 2], // M C
  96. [2, 4, 3, 1, 3, 2, 0, 2, 1, 1, 3, 2, 4], // M L
  97. [3, 4, 2, 2, 3, 1, 1, 2, 0, 2, 3, 1, 4], // M R
  98. [4, 3, 4, 4, 2, 4, 3, 1, 3, 2, 0, 2, 1], // OM C
  99. [3, 4, 4, 2, 4, 3, 1, 3, 2, 0, 2, 1, 3], // OM L
  100. [4, 4, 3, 3, 4, 2, 2, 3, 1, 1, 2, 0, 3], // OM R
  101. [4, 4, 4, 4, 3, 4, 4, 2, 4, 3, 1, 3, 0]]; // F
  102.  
  103. 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"];
  104. var positionFullNames = [
  105. /* EN */ ["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"],
  106. /* JP */ ["ディフェンダー 中央", "ディフェンダー 左", "ディフェンダー 右", "守備的ミッドフィルダー 中央", "守備的ミッドフィルダー 左", "守備的ミッドフィルダー 右", "ミッドフィルダー 中央", "ミッドフィルダー 左", "ミッドフィルダー 右", "攻撃的ミッドフィルダー 中央", "攻撃的ミッドフィルダー 左", "攻撃的ミッドフィルダー 右", "フォワード", "ゴールキーパー"],
  107. /* P */ ["Obrońca środkowy", "Obrońca lewy", "Obrońca prawy", "Defensywny pomocnik środkowy", "Defensywny pomocnik lewy", "Defensywny pomocnik prawy", "Pomocnik środkowy", "Pomocnik lewy", "Pomocnik prawy", "Ofensywny pomocnik środkowy", "Ofensywny pomocnik lewy", "Ofensywny pomocnik prawy", "Napastnik", "Bramkarz"],
  108. /* D */ ["Forsvar Centralt", "Forsvar Venstre", "Forsvar Højre", "Defensiv Midtbane Centralt", "Defensiv Midtbane Venstre", "Defensiv Midtbane Højre", "Midtbane Centralt", "Midtbane Venstre", "Midtbane Højre", "Offensiv Midtbane Centralt", "Offensiv Midtbane Venstre", "Offensiv Midtbane Højre", "Angriber", "Målmand"],
  109. /* I */ ["Difensore Centrale", "Difensore Sinistro", "Difensore Destro", "Centrocampista Difensivo Centrale", "Centrocampista Difensivo Sinistro", "Centrocampista Difensivo Destro", "Centrocampista Centrale", "Centrocampista Sinistro", "Centrocampista Destro", "Centrocampista Offensivo Centrale", "Centrocampista Offensivo Sinistro", "Centrocampista Offensivo Destro", "Attaccante", "Portiere"],
  110. /* H */ ["Defensa Central", "Defensa Izquierdo", "Defensa Derecho", "Mediocampista Defensivo Central", "Mediocampista Defensivo Izquierdo", "Mediocampista Defensivo Derecho", "Mediocampista Central", "Mediocampista Izquierdo", "Mediocampista Derecho", "Mediocampista Ofensivo Central", "Mediocampista Ofensivo Izquierdo", "Mediocampista Ofensivo Derecho", "Delantero", "Portero"],
  111. /* F */ ["Défenseur Central", "Défenseur Gauche", "Défenseur Droit", "Milieu défensif Central", "Milieu défensif Gauche", "Milieu défensif Droit", "Milieu Central", "Milieu Gauche", "Milieu Droit", "Milieu offensif Central", "Milieu offensif Gauche", "Milieu offensif Droit", "Attaquant", "Gardien de but"],
  112. /* A */ ["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"],
  113. /* C */ ["Obrambeni Sredina", "Obrambeni Lijevo", "Obrambeni Desno", "Defenzivni vezni Sredina", "Defenzivni vezni Lijevo", "Defenzivni vezni Desno", "Vezni Sredina", "Vezni Lijevo", "Vezni Desno", "Ofenzivni vezni Sredina", "Ofenzivni vezni Lijevo", "Ofenzivni vezni Desno", "Napadač", "Golman"],
  114. /* G */ ["Verteidiger Zentral", "Verteidiger Links", "Verteidiger Rechts", "Defensiver Mittelfeldspieler Zentral", "Defensiver Mittelfeldspieler Links", "Defensiver Mittelfeldspieler Rechts", "Mittelfeldspieler Zentral", "Mittelfeldspieler Links", "Mittelfeldspieler Rechts", "Offensiver Mittelfeldspieler Zentral", "Offensiver Mittelfeldspieler Links", "Offensiver Mittelfeldspieler Rechts", "Stürmer", "Torhüter"],
  115. /* PO */ ["Defesa Centro", "Defesa Esquerdo", "Defesa Direito", "Médio Defensivo Centro", "Médio Defensivo Esquerdo", "Médio Defensivo Direito", "Medio Centro", "Medio Esquerdo", "Medio Direito", "Medio Ofensivo Centro", "Medio Ofensivo Esquerdo", "Medio Ofensivo Direito", "Avançado", "Guarda-Redes"],
  116. /* R */ ["Fundas Central", "Fundas Stânga", "Fundas Dreapta", "Mijlocas Defensiv Central", "Mijlocas Defensiv Stânga", "Mijlocas Defensiv Dreapta", "Mijlocas Central", "Mijlocas Stânga", "Mijlocas Dreapta", "Mijlocas Ofensiv Central", "Mijlocas Ofensiv Stânga", "Mijlocas Ofensiv Dreapta", "Atacant", "Portar"],
  117. /* T */ ["Defans Orta", "Defans Sol", "Defans Sağ", "Defansif Ortasaha Orta", "Defansif Ortasaha Sol", "Defansif Ortasaha Sağ", "Ortasaha Orta", "Ortasaha Sol", "Ortasaha Sağ", "Ofansif Ortasaha Orta", "Ofansif Ortasaha Sol", "Ofansif Ortasaha Sağ", "Forvet", "Kaleci"],
  118. /* RU */ ["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"],
  119. /* CE */ ["Obránce Střední", "Obránce Levý", "Obránce Pravý", "Defenzivní Záložník Střední", "Defenzivní Záložník Levý", "Defenzivní Záložník Pravý", "Záložník Střední", "Záložník Levý", "Záložník Pravý", "Ofenzivní záložník Střední", "Ofenzivní záložník Levý", "Ofenzivní záložník Pravý", "Útočník", "Gólman"],
  120. /* HU */ ["Védő , középső", "Védő , bal oldali", "Védő , jobb oldali", "Védekező Középpályás , középső", "Védekező Középpályás , bal oldali", "Védekező Középpályás , jobb oldali", "Középpályás , középső", "Középpályás , bal oldali", "Középpályás , jobb oldali", "Támadó középpályás , középső", "Támadó középpályás , bal oldali", "Támadó középpályás , jobb oldali", "Csatár", "Kapus"],
  121. /* GE */ ["მცველი ცენტრალური", "მცველი მარცხენა", "მცველი მარჯვენა", "საყრდენი ნახევარმცველი ცენტრალური", "საყრდენი ნახევარმცველი მარცხენა", "საყრდენი ნახევარმცველი მარჯვენა", "ნახევარმცველი ცენტრალური", "ნახევარმცველი მარცხენა", "ნახევარმცველი მარჯვენა", "შემტევი ნახევარმცველი ცენტრალური", "შემტევი ნახევარმცველი მარცხენა", "შემტევი ნახევარმცველი მარჯვენა", "თავდამსხმელი", "მეკარე"],
  122. /* FI */ ["Puolustaja Keski", "Puolustaja Vasen", "Puolustaja Oikea", "Puolustava Keskikenttä Keski", "Puolustava Keskikenttä Vasen", "Puolustava Keskikenttä Oikea", "Keskikenttä Keski", "Keskikenttä Vasen", "Keskikenttä Oikea", "Hyökkäävä Keskikenttä Keski", "Hyökkäävä Keskikenttä Vasen", "Hyökkäävä Keskikenttä Oikea", "Hyökkääjä", "Maalivahti"],
  123. /* SV */ ["Försvarare Central", "Försvarare Vänster", "Försvarare Höger", "Defensiv Mittfältare Central", "Defensiv Mittfältare Vänster", "Defensiv Mittfältare Höger", "Mittfältare Central", "Mittfältare Vänster", "Mittfältare Höger", "Offensiv Mittfältare Central", "Offensiv Mittfältare Vänster", "Offensiv Mittfältare Höger", "Anfallare", "Målvakt"],
  124. /* NO */ ["Forsvar Sentralt", "Forsvar Venstre", "Forsvar Høyre", "Defensiv Midtbane Sentralt", "Defensiv Midtbane Venstre", "Defensiv Midtbane Høyre", "Midtbane Sentralt", "Midtbane Venstre", "Midtbane Høyre", "Offensiv Midtbane Sentralt", "Offensiv Midtbane Venstre", "Offensiv Midtbane Høyre", "Angrep", "Keeper"],
  125. /* SC */ ["Defender Centre", "Defender Left", "Defender Richt", "Defensive Midfielder Centre", "Defensive Midfielder Left", "Defensive Midfielder Richt", "Midfielder Centre", "Midfielder Left", "Midfielder Richt", "Offensive Midfielder Centre", "Offensive Midfielder Left", "Offensive Midfielder Richt", "Forward", "Goalkeeper"],
  126. /* VL */ ["Verdediger Centraal", "Verdediger Links", "Verdediger Rechts", "Verdedigende Middenvelder Centraal", "Verdedigende Middenvelder Links", "Verdedigende Middenvelder Rechts", "Middenvelder Centraal", "Middenvelder Links", "Middenvelder Rechts", "Aanvallende Middenvelder Centraal", "Aanvallende Middenvelder Links", "Aanvallende Middenvelder Rechts", "Aanvaller", "Doelman"],
  127. /* BR */ ["Zagueiro Central", "Zagueiro Esquerdo", "Zagueiro Direito", "Volante Central", "Volante Esquerdo", "Volante Direito", "Meio-Campista Central", "Meio-Campista Esquerdo", "Meio-Campista Direito", "Meia Ofensivo Central", "Meia Ofensivo Esquerdo", "Meia Ofensivo Direito", "Atacante", "Goleiro"],
  128. /* GR */ ["Αμυντικός Κεντρικός", "Αμυντικός Αριστερός", "Αμυντικός Δεξιός", "Αμυντικός Μέσος Κεντρικός", "Αμυντικός Μέσος Αριστερός", "Αμυντικός Μέσος Δεξιός", "Μέσος Κεντρικός", "Μέσος Αριστερός", "Μέσος Δεξιός", "Επιθετικός μέσος Κεντρικός", "Επιθετικός μέσος Αριστερός", "Επιθετικός μέσος Δεξιός", "Επιθετικός", "Τερματοφύλακας"],
  129. /* BG */ ["Защитник Централен", "Защитник Ляв", "Защитник Десен", "Дефанзивен Халф Централен", "Дефанзивен Халф Ляв", "Дефанзивен Халф Десен", "Халф Централен", "Халф Ляв", "Халф Десен", "Атакуващ Халф Централен", "Атакуващ Халф Ляв", "Атакуващ Халф Десен", "Нападател"],
  130. ];
  131.  
  132. if (location.href.indexOf("/players/") != -1){
  133.  
  134. // positionIndex is the array of skill priority for this player.
  135. // skills is an array of skills for each user
  136.  
  137. document.calculateSkill = function(positionIndex, skills) {
  138. var totSkill = 0;
  139. for (var i=0; i< positions[positionIndex].length; i++) {
  140. if (skills[i]>0) {
  141. totSkill += skills[i]*document.calculateSkillWeight(positions[positionIndex], weights[positionIndex], i);
  142. }
  143. }
  144. totSkill = totSkill / 200;
  145. totSkill = Math.round(totSkill*1000)/1000;
  146. return totSkill;
  147. };
  148. document.calculateSkillWeight = function(positionWeightLevels, weights, index) {
  149. var weight = 0;
  150. weight = weights[positionWeightLevels[index]-1] / document.numberAtWeight(positionWeightLevels, positionWeightLevels[index]) * 10;
  151. return weight;
  152. };
  153. document.numberAtWeight = function(positionWeightLevels, value) {
  154. var count = 0;
  155. for (var i=0; i< positionWeightLevels.length; i++) {
  156. if (positionWeightLevels[i] == value) {
  157. count++;
  158. }
  159. }
  160. return count;
  161. };
  162.  
  163. document.findPositionIndex = function(position) {
  164. var index = -1;
  165. for (var i=0; i< positionFullNames.length; i++) {
  166. for (var j=0; j< positionFullNames[i].length; j++) {
  167. if (position.indexOf(positionFullNames[i][j]) == 0) return j;
  168. }
  169. }
  170. return index;
  171. };
  172. document.getSkills = function(table) {
  173. var skillArray = [];
  174. var tableData = table.getElementsByTagName("td");
  175. if (tableData.length > 1) {
  176. for (var i = 0; i < 2; i++) {
  177. for (var j = i; j < tableData.length; j += 2) {
  178. if (tableData[j].innerHTML.indexOf("star.png") > 0) {
  179. skillArray.push(20);
  180. }
  181. else if (tableData[j].innerHTML.indexOf("star_silver.png") > 0) {
  182. skillArray.push(19);
  183. }
  184. else if (tableData[j].textContent.length != 0) {
  185. skillArray.push(tableData[j].textContent);
  186. }
  187. }
  188. }
  189. }
  190. return skillArray;
  191. };
  192.  
  193. function funFix1 (i) {
  194. i = (Math.round(i*10)/10).toFixed(1);
  195. return i;
  196. }
  197. function funFix2 (i) {
  198. i = (Math.round(i*100)/100).toFixed(2);
  199. return i;
  200. }
  201. function funFix3 (i) {
  202. i = (Math.round(i*1000)/1000).toFixed(3);
  203. return i;
  204. }
  205. function addCommas(nStr) {
  206. nStr += '';
  207. x = nStr.split('.');
  208. x1 = x[0];
  209. x2 = x.length > 1 ? '.' + x[1] : '';
  210. var rgx = /(\d+)(\d{3})/;
  211. while (rgx.test(x1)) {
  212. x1 = x1.replace(rgx, '$1' + ',' + '$2');
  213. }
  214. return x1 + x2;
  215. }
  216. function CalcMaxPrice(age, si) {
  217. var yearidx = age.search(/\d\d/);
  218. var year = age.substr(yearidx,2);
  219. age = age.slice(yearidx+2);
  220. var month = age.replace(/\D+/g,"");
  221. var factor = 192400/(Math.round(year) + Math.round(month)/12)-5200;
  222. if (factor < 400)
  223. factor = 400;
  224. if (year >= 18)
  225. return addCommas(Math.round(factor * si));
  226. else
  227. return "-";
  228. }
  229. function CalcBankPrice(TotalMonths, si) {
  230. var year = Math.floor(TotalMonths / 12);
  231. var month = TotalMonths % 12;
  232. if (year >= 18)
  233. {
  234. var ageD = 25 / (year * 1 + (month / 12));
  235. return addCommas(Math.round(si * 500 * Math.pow(ageD, 2.5)));
  236. }
  237. else
  238. return "-";
  239. }
  240.  
  241. function CalcAgeMonths(age) {
  242. var yearidx = age.search(/\d\d/);
  243. var year = age.substr(yearidx, 2);
  244. age = age.slice(yearidx + 2);
  245. var month = age.replace(/\D+/g,"");
  246. return year * 12 + month * 1;
  247. }
  248. document.createTR = function(table, SKarray) {
  249. var tr = document.createElement("tr");
  250. var th = document.createElement("th");
  251. th.innerHTML = "SK1";
  252. tr.appendChild(th);
  253. var td = document.createElement("td");
  254. td.setAttribute("class", "align_center");
  255. td.innerHTML = SKarray[0];
  256. tr.appendChild(td);
  257. var th = document.createElement("th");
  258. th.innerHTML = "SK2";
  259. tr.appendChild(th);
  260. var td = document.createElement("td");
  261. td.setAttribute("class", "align_center");
  262. if (SKarray[1] == 0){
  263. td.innerHTML = "N/A";
  264. } else {
  265. td.innerHTML = SKarray[1];
  266. }
  267. tr.appendChild(td);
  268. table.appendChild(tr);
  269. };
  270. function computeRating(table, skills){
  271. var SKs = [0, 0];
  272. var REREC = [[],[],[],[]];
  273. var REREC2 = [];
  274. var FP = [];
  275. var positionCell = document.getElementsByClassName("favposition long")[0].childNodes;
  276. var positionArray = [];
  277. if (positionCell.length == 1){
  278. positionArray[0] = positionCell[0].textContent;
  279. } else if (positionCell.length == 2){
  280. positionArray[0] = positionCell[0].textContent + positionCell[1].textContent;
  281. } else if (positionCell[1].className == "split"){
  282. positionArray[0] = positionCell[0].textContent + positionCell[3].textContent;
  283. positionArray[1] = positionCell[2].textContent + positionCell[3].textContent;
  284. } else if (positionCell[3].className == "f"){
  285. positionArray[0] = positionCell[0].textContent + positionCell[1].textContent;
  286. positionArray[1] = positionCell[3].textContent;
  287. } else {
  288. positionArray[0] = positionCell[0].textContent + positionCell[1].textContent;
  289. positionArray[1] = positionCell[0].textContent + positionCell[3].textContent;
  290. }
  291. var gettr = document.getElementsByTagName("tr");
  292. var SI = new String(gettr[6].getElementsByTagName("td")[0].innerHTML).replace(/,/g, "");
  293. var rou = gettr[8].getElementsByTagName("td")[0].innerHTML;
  294. var rou2 = (3/100) * (100-(100) * Math.pow(Math.E, -rou*0.035));
  295. rou = Math.pow(5/3, Math.LOG2E * Math.log(rou * 10));
  296. for (var i = 0; i < positionArray.length; i++){
  297. var positionIndex = document.findPositionIndex(positionArray[i]);
  298. FP[i] = positionIndex;
  299. FP[i+1] = FP[i];
  300. if (positionIndex > -1) {
  301. SKs[i] = document.calculateSkill(positionIndex, skills);
  302. REREC2[i] = document.calculateREREC2(positionIndex, skills, SI);
  303. }
  304. if (i == 0) REREC = document.calculateREREC(positionIndex, skills, SI, rou2);
  305. }
  306. if (positionIndex == 13){
  307. var phySum = skills[0]*1 + skills[1]*1 + skills[2]*1 + skills[7]*1;
  308. var tacSum = skills[4]*1 + skills[6]*1 + skills[8]*1;
  309. var tecSum = skills[3]*1 + skills[5]*1 + skills[9]*1 + skills[10]*1;
  310. var weight = 48717927500;
  311. }
  312. else {
  313. var phySum = skills[0]*1 + skills[1]*1 + skills[2]*1 + skills[10]*1;
  314. var tacSum = skills[3]*1 + skills[4]*1 + skills[5]*1 + skills[6]*1;
  315. var tecSum = skills[7]*1 + skills[8]*1 + skills[9]*1 + skills[11]*1 + skills[12]*1 + skills[13]*1;
  316. var weight = 263533760000;
  317. }
  318. var allSum = phySum + tacSum + tecSum;
  319. var remainder = funFix1(Math.pow(2,Math.log(weight*SI)/Math.log(Math.pow(2,7))) - allSum);
  320. var rectMaxPrc = document.createElement("div");
  321. var rectMaxPrcV = document.createElement("div");
  322. var rectBankPrc = document.createElement("div");
  323. var rectBankPrcV = document.createElement("div");
  324. var recth = document.createElement("div");
  325. var rectd = document.createElement("div");
  326. var recbth = document.createElement("div");
  327. var recbtd = document.createElement("div");
  328. var ratth = document.createElement("div");
  329. var rattd = document.createElement("div");
  330. var AgeMonths = CalcAgeMonths(gettr[2].getElementsByTagName("td")[0].innerHTML);
  331. rectd.setAttribute("style", "color: gold;");
  332. recbtd.setAttribute("style", "color: gold;");
  333. rattd.setAttribute("style", "color: gold;");
  334. var FP2 = [FP[0], FP[1]];
  335. for (i = 0; i < FP.length; i++) {
  336. for (j = 0; 2+j <= FP[i]; j += 2) FP[i]--;
  337. }
  338. var minR = [];
  339. if (FP[0] != FP[1]) {
  340. rectd.innerHTML = REREC[0][FP[0]] + "/" + REREC[0][FP[1]];
  341. recbtd.innerHTML = funFix2(REREC2[0]) + "/" + funFix2(REREC2[1]);
  342. rattd.innerHTML = REREC[2][FP[0]] + "/" + REREC[2][FP[1]];
  343. for (i = 1; i < 5; i++) {
  344. minR[i] = funFix2(REREC[2][FP[0]]*(1-(20-skills[1])*i/200)) + "/" + funFix2(REREC[2][FP[1]]*(1-(20-skills[1])*i/200));
  345. }
  346. minR[0] = funFix2(REREC[2][FP[0]]*(1-(20-skills[1])*62/93/200)) + "/" + funFix2(REREC[2][FP[1]]*(1-(20-skills[1])*62/93/200));
  347. var ratingR4 = rattd.innerHTML;
  348. var rouEffect = funFix2(REREC[2][FP[0]]*1 - REREC[1][FP[0]]*1) + "/" + funFix2(REREC[2][FP[1]]*1 - REREC[1][FP[1]]*1);
  349. var R4Pure = REREC[1][FP[0]] + "/" + REREC[1][FP[1]];
  350. var ratingR2 = funFix2(REREC[1][FP[0]] * (1 + rou * 0.4 * 0.00405)) + "/" + funFix2(REREC[1][FP[1]] * (1 + rou * 0.4 * 0.00405));
  351. }
  352. else {
  353. rectd.innerHTML = REREC[0][FP[0]];
  354. recbtd.innerHTML = funFix2(REREC2[0]);
  355. rattd.innerHTML = REREC[2][FP[0]];
  356. if (skills.length == 11) var staGK = 4;
  357. else var staGK = 1;
  358. for (i = 1; i < 5; i++) {
  359. minR[i] = funFix2(REREC[2][FP[0]]*(1-(20-skills[1])*i/staGK/200));
  360. }
  361. minR[0] = funFix2(REREC[2][FP[0]]*(1-(20-skills[1])*62/93/staGK/200));
  362. var ratingR4 = rattd.innerHTML;
  363. var rouEffect = funFix2(REREC[2][FP[0]]*1 - REREC[1][FP[0]]*1);
  364. var R4Pure = REREC[1][FP[0]];
  365. var ratingR2 = funFix2(R4Pure * (1 + rou * 0.4 * 0.00405));
  366. }
  367. rectMaxPrc.innerHTML = "<d style=\"color: white;\">Max Sell Price</d>";
  368. rectMaxPrcV.innerHTML = CalcMaxPrice(gettr[2].getElementsByTagName("td")[0].innerHTML, SI);
  369. rectBankPrc.innerHTML = "<d style=\"color: white;\">Bank Price</d>";
  370. rectBankPrcV.innerHTML = CalcBankPrice(AgeMonths, SI);
  371. recth.innerHTML = "<b style=\"color: gold;\">RERECb</b>";
  372. recbth.innerHTML = "<b style=\"color: gold;\">REREC</b>";
  373. ratth.innerHTML = "<b style=\"color: gold;\">RatingR4</b>";
  374. gettr[4].getElementsByTagName("th")[0].appendChild(rectMaxPrc);
  375. gettr[4].getElementsByTagName("td")[0].appendChild(rectMaxPrcV);
  376. gettr[4].getElementsByTagName("th")[0].appendChild(rectBankPrc);
  377. gettr[4].getElementsByTagName("td")[0].appendChild(rectBankPrcV);
  378. gettr[5].getElementsByTagName("th")[0].appendChild(recth);
  379. gettr[5].getElementsByTagName("td")[0].appendChild(rectd);
  380. gettr[6].getElementsByTagName("th")[0].appendChild(recbth);
  381. gettr[6].getElementsByTagName("td")[0].appendChild(recbtd);
  382. gettr[8].getElementsByTagName("th")[0].appendChild(ratth);
  383. gettr[8].getElementsByTagName("td")[0].appendChild(rattd);
  384. var playerID = location.pathname.match(/\d+/g);
  385. var AverageTI = seasonTI(playerID[0], gettr, SI);
  386. var div_area = document.createElement('div');
  387. if (positionIndex != 13) {
  388. var peak = [4,4,6];
  389. var goldstar = 0;
  390. for (j = 0; j < 2; j++) {
  391. for (i = 0; i < 14; i++) {
  392. if (j == 0 && skills[i] == 20) goldstar++;
  393. if (j == 1 && skills[i] != 20) skills[i] = skills[i] * 1 + remainder / (14 - goldstar);
  394. }
  395. }
  396. var CK = funFix2(skills[8] + skills[13] + skills[9]/2 + rou2*2.5);
  397. var FK = funFix2(skills[12] + skills[13] + skills[9]/2 + rou2*2.5);
  398. var PK = funFix2(skills[11] + skills[13] + skills[9]/2 + rou2*2.5);
  399. div_area.innerHTML="<div style=\"position: absolute; z-index: 1; width: 175px; margin-top: 10px; background: #5F8D2D; padding-left: 5px; color: gold; border: 2px #333333 outset; display:inline;\"><table style=\"margin-top: 3px; margin-bottom: 6px;\"><tr><td>PhySum: </td><td>" + phySum + " (" + Math.round(phySum/peak[0]*5) + "%)</td></tr><tr><td>TacSum: </td><td>" + tacSum + " (" + Math.round(tacSum/peak[1]*5) + "%)</td></tr><tr><td>TecSum: </td><td>" + tecSum + " (" + Math.round(tecSum/peak[2]*5) + "%)</td></tr><tr><td>AllSum: </td><td>" + allSum + " + " + remainder + " </td></tr><tr><td>&nbsp;</td></tr><tr><td>Corner: </td><td>" + CK + "</td></tr><tr><td>Freekick: </td><td>" + FK + "</td></tr><tr><td>Penalty: </td><td>" + PK + "</td></tr><tr><td>&nbsp;</td></tr><tr><td>RatPure: </td><td>" + R4Pure + "</td></tr><tr><td>RouEffect: </td><td>" + rouEffect + " </td></tr><tr><td>RouSkills: </td><td>" + funFix2(rou2) + " </td></tr><tr><td>RatingR4:</td><td>" + ratingR4 + " </td></tr></table></b></div>";
  400. }
  401. else {
  402. var peak = [4,3,4];
  403. div_area.innerHTML="<div style=\"position: absolute; z-index: 1; width: 175px; margin-top: 10px; background: #5F8D2D; padding-left: 5px; color: gold; border: 2px #333333 outset; display:inline;\"><table style=\"margin-top: 3px; margin-bottom: 6px;\"><tr><td>PhySum: </td><td>" + phySum + " (" + Math.round(phySum/peak[0]*5) + "%)</td></tr><tr><td>TacSum: </td><td>" + tacSum + " (" + Math.round(tacSum/peak[1]*5) + "%)</td></tr><tr><td>TecSum: </td><td>" + tecSum + " (" + Math.round(tecSum/peak[2]*5) + "%)</td></tr><tr><td>AllSum: </td><td>" + allSum + " + " + remainder + " </td></tr><tr><td>&nbsp;</td></tr><tr><td>RatPure: </td><td>" + R4Pure + "</td></tr><tr><td>RouEffect: </td><td>" + rouEffect + " </td></tr><tr><td>RouSkills: </td><td>" + funFix2(rou2) + " </td></tr><tr><td>RatingR4:</td><td>" + ratingR4 + " </td></tr></table></b></div>";
  404. }
  405. document.getElementsByClassName("box")[0].appendChild(div_area);
  406. document.createTR(table, SKs);
  407. var hidden = document.getElementById("hidden_skill_table").getElementsByTagName("td");
  408. if (hidden[0].innerHTML != "") {
  409. var x;
  410. for (var i = 0; i < 4; i++) {
  411. x = hidden[i].getAttribute("tooltip").match(/\d+/);
  412. if (x < 10) x = " " + x;
  413. hidden[i].setAttribute("style", "white-space: nowrap;");
  414. hidden[i].innerHTML += " (" + x + "/20)";
  415. }
  416. if (positionIndex != 13) {
  417. var div = document.createElement("div");
  418. div.setAttribute("style", "position: absolute; z-index: 1; width: 175px; margin-top: 432px; background: #5F8D2D; padding-left: 5px; border: 2px #333333 outset; display:inline;");
  419. div.innerHTML = "<p><b><center>RatingR4: All Positions</center></b></p>";
  420. var table2 = document.createElement("table");
  421. table2.setAttribute("border", "1");
  422. table2.setAttribute("bordercolor", "#0");
  423. table2.setAttribute("style", "width: 170px; margin-bottom: 7px;");
  424. var tbody = document.createElement("tbody");
  425. tbody.setAttribute("align", "center");
  426. var adapt = hidden[3].getAttribute("tooltip").match(/\d+/);
  427. var R4all = [REREC[2][1], REREC[2][0], REREC[2][1], REREC[2][3], REREC[2][2], REREC[2][3], REREC[2][5], REREC[2][4], REREC[2][5], REREC[2][7], REREC[2][6], REREC[2][7], REREC[2][8]];
  428. for (var i = 0; i < 5; i++) {
  429. var tr = document.createElement("tr");
  430. for (var j = 0; j < 3; j++) {
  431. var num = (4-i)*3+j;
  432. var td = document.createElement("td");
  433. if (num < 12 || num == 13) {
  434. if (num == 13) num--;
  435. if (positionsAll[FP2[0]][num] > positionsAll[FP2[1]][num]) positionsAll[FP2[0]][num] = positionsAll[FP2[1]][num];
  436. td.innerHTML = funFix2(R4all[num] * (1 - (20 - adapt) * positionsAll[FP2[0]][num] / 200));
  437. }
  438. else td.innerHTML = "";
  439. tr.appendChild(td);
  440. }
  441. tbody.appendChild(tr);
  442. }
  443. table2.appendChild(tbody);
  444. div.appendChild(table2);
  445. document.getElementsByClassName("box")[0].appendChild(div);
  446. }
  447. }
  448.  
  449. var table4 = document.createElement("table");
  450. var tbody = document.createElement("tbody");
  451. table4.setAttribute("border", "1");
  452. table4.setAttribute("bordercolor", "#0");
  453. table4.innerHTML = "<thead><tr><th></th></tr></thead>";
  454. tbody.setAttribute("align", "center");
  455. var tr = document.createElement("tr");
  456.  
  457. var td = document.createElement("td");
  458. var newdiv=document.createElement("div");
  459. var aa=document.createElement("a");
  460. aa.onclick=toggleTable;
  461. aa.text="ASI Calculator";
  462. aa.href="#";
  463. newdiv.appendChild(aa);
  464. td.appendChild(newdiv);
  465. tr.appendChild(td);
  466. tbody.appendChild(tr);
  467. table4.appendChild(tbody);
  468. var tr = document.createElement("tr");
  469. var th = document.createElement("th");
  470. th.setAttribute("colspan", "4");
  471. th.setAttribute("align", "center");
  472. th.appendChild(table4);
  473. tr.appendChild(th);
  474. table.appendChild(tr);
  475.  
  476. //////////////////////////////////////////////////////////////////
  477. var table3 = document.createElement("table");
  478. table3.id = "ASITable";
  479. var tbody = document.createElement("tbody");
  480. table3.style.display="none";
  481. table3.setAttribute("border", "1");
  482. table3.setAttribute("bordercolor", "#0");
  483. table3.innerHTML = "<thead><tr><th>Current Asi</th><th>Average TI</th><th>Number of Trainings</th><th>Run Calculations</th><th>New Asi</th><th>New Bank Price</th></tr></thead>";
  484. tbody.setAttribute("align", "center");
  485. var tr = document.createElement("tr");
  486.  
  487. var td = document.createElement("td");
  488. var newdiv=document.createElement("div");
  489. var p=document.createElement("d");
  490. p.id="CurrSI";
  491. p.innerHTML=addCommas(SI);
  492. newdiv.appendChild(p);
  493. td.appendChild(newdiv);
  494. tr.appendChild(td);
  495. var td = document.createElement("td");
  496. var newdiv=document.createElement("div");
  497. var NewTI=document.createElement("input");
  498. NewTI.name="NewTI";
  499. NewTI.className="embossed";
  500. NewTI.size=5;
  501. NewTI.maxLength=5;
  502. NewTI.value=funFix1(AverageTI);
  503. newdiv.appendChild(NewTI);
  504. td.appendChild(newdiv);
  505. tr.appendChild(td);
  506. var td = document.createElement("td");
  507. var newdiv=document.createElement("div");
  508. var NumTrainings=document.createElement("input");
  509. NumTrainings.name="NumTrainings";
  510. NumTrainings.className="embossed";
  511. NumTrainings.size=2;
  512. NumTrainings.maxLength=2;
  513. NumTrainings.value=12;
  514. newdiv.appendChild(NumTrainings);
  515. td.appendChild(newdiv);
  516. tr.appendChild(td);
  517. var td = document.createElement("td");
  518. var newdiv=document.createElement("div");
  519. var GoBtn=document.createElement("button");
  520. var t = document.createTextNode("Go");
  521. GoBtn.appendChild(t);
  522. GoBtn.style="width:80px;";
  523. GoBtn.className="button";
  524. GoBtn.onclick=DoCalcNewASI;
  525. newdiv.appendChild(GoBtn);
  526. td.appendChild(newdiv);
  527. tr.appendChild(td);
  528. var td = document.createElement("td");
  529. var newdiv=document.createElement("div");
  530. var p=document.createElement("d");
  531. p.id="FinalSI";
  532. var pIdx=document.createElement("input");
  533. pIdx.name="PosIdx";
  534. pIdx.type="hidden";
  535. pIdx.value=positionIndex;
  536. newdiv.appendChild(p);
  537. newdiv.appendChild(pIdx);
  538. td.appendChild(newdiv);
  539. tr.appendChild(td);
  540. var td = document.createElement("td");
  541. var newdiv=document.createElement("div");
  542. var p=document.createElement("d");
  543. p.id="FinalBankPrice";
  544.  
  545. var pIdx=document.createElement("input");
  546. pIdx.name="AgeNow";
  547. pIdx.type="hidden";
  548. pIdx.value=AgeMonths;
  549. newdiv.appendChild(p);
  550. newdiv.appendChild(pIdx);
  551. td.appendChild(newdiv);
  552. tr.appendChild(td);
  553.  
  554. tbody.appendChild(tr);
  555. table3.appendChild(tbody);
  556.  
  557. var tr = document.createElement("tr");
  558. var th = document.createElement("th");
  559. th.setAttribute("colspan", "4");
  560. th.setAttribute("align", "center");
  561. th.appendChild(table3);
  562. tr.appendChild(th);
  563. table.appendChild(tr);
  564. if (positionIndex != 13)
  565. {
  566. var table2 = document.createElement("table");
  567. var tbody = document.createElement("tbody");
  568. table2.setAttribute("border", "1");
  569. /* table2.setAttribute("bordercolor", "#6C9922"); */
  570. table2.setAttribute("bordercolor", "#0");
  571. 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>";
  572. tbody.setAttribute("align", "center");
  573. var tr = document.createElement("tr");
  574. for (var i = 0; i < 3; i+=2) {
  575. var th = document.createElement("th");
  576. if (i == 0) th.innerHTML = "RECb";
  577. else th.innerHTML = "R4";
  578. tr.appendChild(th);
  579. for (var j = 0; j < 9; j++) {
  580. var td = document.createElement("td");
  581. if (REREC[i][j]*1 >= 100) REREC[i][j] = funFix1(REREC[i][j]*1);
  582. if (i == 0) REREC[i][j] = funFix2(REREC[i][j]*1);
  583. td.innerHTML = REREC[i][j];
  584. tr.appendChild(td);
  585. }
  586. tbody.appendChild(tr);
  587. table2.appendChild(tbody);
  588. var tr = document.createElement("tr");
  589. var th = document.createElement("th");
  590. th.setAttribute("colspan", "4");
  591. th.setAttribute("align", "center");
  592. th.appendChild(table2);
  593. }
  594. tr.appendChild(th);
  595. table.appendChild(tr);
  596. }
  597. var div = document.createElement("div");
  598. if (positionIndex != 13)
  599. div.setAttribute("style", "position: absolute; z-index: 1; width: 175px; margin-top: 270px; background: #5F8D2D; padding-left: 5px; border: 2px #333333 outset; display:inline;");
  600. else
  601. div.setAttribute("style", "position: absolute; z-index: 1; width: 175px; margin-top: 200px; background: #5F8D2D; padding-left: 5px; border: 2px #333333 outset; display:inline;");
  602. div.innerHTML = "<p><b><center>Stamina Effect</center></b></p>";
  603. var table2 = document.createElement("table");
  604. table2.setAttribute("border", "1");
  605. table2.setAttribute("bordercolor", "#0");
  606. table2.setAttribute("style", "width: 170px; margin-bottom: 7px;");
  607. table2.innerHTML = "<thead><tr><th align=center>Min</th><th align=center>R4</th></tr></thead>";
  608. var tbody = document.createElement("tbody");
  609. tbody.setAttribute("align", "center");
  610. var Minutes = [65, 75, 85, 95];
  611. var Stamina = parseInt(skills[1]);
  612. for (var i = 0; i < 4; i++)
  613. {
  614. var tr = document.createElement("tr");
  615. var td = document.createElement("td");
  616. var Value = 0;
  617. td.innerHTML = Minutes[i];
  618. tr.appendChild(td);
  619. var td = document.createElement("td");
  620. if (Stamina != 20)
  621. {
  622. var Lower = 20 - Stamina;
  623. var pos1 = REREC[2][FP[0]];
  624. var pos2 = REREC[2][FP[1]];
  625. var MaxLower = ((i + 1) * 10 * pos1 / 100);
  626. var MaxLower1 = ((i + 1) * 10 * pos2 / 100);
  627. if ((positionIndex != 13) || (pos1 != pos2))
  628. {
  629. var MaxL1 = pos1 - (Lower * MaxLower / 20);
  630. var MaxL2 = pos2 - (Lower * MaxLower1 / 20);
  631. if (pos1 == pos2)
  632. Value = funFix2(MaxL1);
  633. else
  634. Value = funFix2(MaxL1) + ' / ' + funFix2(MaxL2);
  635. }
  636. else
  637. Value = funFix2(pos1 - ((Lower * MaxLower / 20) / 4));
  638. }
  639. else
  640. Value = ratingR4;
  641. td.innerHTML = Value;
  642. tr.appendChild(td);
  643. tbody.appendChild(tr);
  644. }
  645. table2.appendChild(tbody);
  646. div.appendChild(table2);
  647. document.getElementsByClassName("box")[0].appendChild(div);
  648. }
  649. document.calculateREREC = function (positionIndex, skills, SI, rou){
  650. if (positionIndex == 13) var weight = 48717927500;
  651. else var weight = 263533760000;
  652. var rec = []; // RERECb
  653. var ratingR = []; // RatingR4
  654. var ratingR4 = []; // RatingR4 + routine
  655. var skillSum = 0;
  656. for (var i = 0; i < skills.length; i++) {
  657. skillSum += parseInt(skills[i]);
  658. }
  659. for (i = 0; 2+i <= positionIndex; i += 2) { // TrExMaとRECのweight表のずれ修正
  660. positionIndex--;
  661. }
  662. var remainder = Math.round((Math.pow(2,Math.log(weight*SI)/Math.log(Math.pow(2,7))) - skillSum)*10)/10; // RatingR4 remainder
  663. for (var i = 0; i < 10; i++) {
  664. rec[i] = 0;
  665. ratingR[i] = 0;
  666. }
  667. for (var j = 0; j < 9; j++) { // All position
  668. var remainderWeight = 0; // REREC remainder weight sum
  669. var remainderWeight2 = 0; // RatingR4 remainder weight sum
  670. var not20 = 0; // 20以外のスキル数
  671. if (positionIndex == 9) j = 9; // GK
  672. for (var i = 0; i < weightR[positionIndex].length; i++) {
  673. rec[j] += skills[i] * weightRb[j][i];
  674. ratingR[j] += skills[i] * weightR4[j][i];
  675. if (skills[i] != 20) {
  676. remainderWeight += weightRb[j][i];
  677. remainderWeight2 += weightR4[j][i];
  678. not20++;
  679. }
  680. }
  681. if (remainder/not20 > 0.9 || not20 == 0) {
  682. if (positionIndex == 9) not20 = 11;
  683. else not20 = 14;
  684. remainderWeight = 1;
  685. remainderWeight2 = 5;
  686. }
  687. rec[j] = funFix3((rec[j] + remainder * remainderWeight / not20 - 2) / 3);
  688. ratingR[j] += remainder * remainderWeight2 / not20;
  689. ratingR4[j] = funFix2(ratingR[j] + rou * 5);
  690. ratingR[j] = funFix2(ratingR[j]);
  691. if (positionIndex == 9) j = 9; // Loop end
  692. }
  693. var recAndRating = [rec, ratingR, ratingR4];
  694. return recAndRating;
  695. };
  696. document.calculateREREC2 = function (positionIndex, skills, SI){
  697. if (positionIndex == 13) {
  698. var skillWeightSum = Math.pow(SI, 0.143) / 0.02979; // GK Skillsum
  699. var weight = 48717927500;
  700. }
  701. else {
  702. var skillWeightSum = Math.pow(SI, 1/6.99194)/0.02336483; // Other Skillsum
  703. var weight = 263533760000;
  704. }
  705. var skillSum = 0;
  706. for (var j = 0; j < skills.length; j++) {
  707. skillSum += parseInt(skills[j]);
  708. }
  709. var remainder = Math.round((Math.pow(2,Math.log(weight*SI)/Math.log(Math.pow(2,7))) - skillSum)*10)/10; // 正確な余り
  710. var rec = 0;
  711. var weightSum = 0;
  712. var not20 = 0;
  713. for (i = 0; 2+i <= positionIndex; i += 2) { // TrExMaとRECのweight表のずれ修正
  714. positionIndex--;
  715. }
  716. skillWeightSum -= skillSum; // REREC remainder
  717. for (var i = 0; i < weightR[positionIndex].length; i++) {
  718. rec += skills[i] * weightR[positionIndex][i];
  719. if (skills[i] != 20) {
  720. weightSum += weightR[positionIndex][i];
  721. not20++;
  722. }
  723. }
  724. if (remainder/not20 > 0.9 || not20 == 0) {
  725. weightSum = 0;
  726. for (var i = 0; i < weightR[positionIndex].length; i++) weightSum += weightR[positionIndex][i];
  727. if (positionIndex == 9) not20 = 11;
  728. else not20 = 14;
  729. }
  730. rec += skillWeightSum * weightSum / not20; // REREC Score
  731. if (positionIndex == 9) rec *= 1.27; // GK
  732. rec = funFix2((rec - recLast[0][positionIndex]) / recLast[1][positionIndex]);
  733. return rec;
  734. };
  735. function seasonTI (playerID, gettr, SI) {
  736. var sith = document.createElement("div");
  737. var sitd = document.createElement("div");
  738. var sitd2 = document.createElement("div");
  739. var wage = new String(gettr[4].getElementsByTagName("span")[0].innerHTML).replace(/,/g, "");
  740. var today = new Date();
  741. var SS = new Date("07 10 2017 08:00:00 GMT"); // s50 start
  742. var training1 = new Date("07 10 2017 23:00:00 GMT"); // first training
  743. var day = (today.getTime()-training1.getTime())/1000/3600/24;
  744. while (day > 84-16/24) day -= 84;
  745. var session = Math.floor(day/7)+1; // training sessions
  746. var ageMax = 20.1 + session / 12; // max new player age
  747. var age = gettr[2].getElementsByTagName("td")[0].innerHTML;
  748. var yearidx = age.search(/\d\d/);
  749. var year = age.substr(yearidx,2);
  750. age = age.slice(yearidx+2);
  751. var month = age.replace(/\D+/g,"");
  752. age = year*1 + month/12;
  753. var check = today.getTime()-SS.getTime();
  754. var season = 84*24*3600*1000;
  755. var count = 0;
  756. var Result = 0;
  757. while (check > season) {
  758. check -= season;
  759. count++;
  760. }
  761. if (document.getElementsByClassName("gk")[0] == null) var weight = 263533760000;
  762. else var weight = 48717927500;
  763. if (wage == 30000 || (playerID > 120359295 && count == 0)) { // s50 youth player ID
  764. sitd.innerHTML = "---";
  765. }
  766. else {
  767. var TI1 = Math.pow(2,Math.log(weight*SI)/Math.log(Math.pow(2,7))) - Math.pow(2,Math.log(weight*wage/(wage_rate))/Math.log(Math.pow(2,7)));
  768. TI1 = Math.round(TI1*10);
  769. var question = "";
  770. if (session == 0) sitd.innerHTML = TI1;
  771. else sitd.innerHTML = TI1 + " (" + funFix1(TI1/session) + " x " + session + ")";
  772. }
  773. sith.setAttribute("style", "white-space: nowrap;");
  774. sith.innerHTML = "<b>Season TI</b>";
  775. gettr[6].getElementsByTagName("th")[0].appendChild(sith);
  776. gettr[6].getElementsByTagName("td")[0].appendChild(sitd);
  777. Result = TI1/session;
  778. if (playerID > 124048574 && age < ageMax) { // s55 BOT player ID
  779. /*
  780. if (wage == 30000) sitd2.innerHTML = "---";
  781. else {*/
  782. wage_rate = 23.75;
  783. var TI2 = Math.pow(2,Math.log(weight*SI)/Math.log(Math.pow(2,7))) - Math.pow(2,Math.log(weight*wage/(wage_rate))/Math.log(Math.pow(2,7)));
  784. /*sitd2.innerHTML = Math.round(TI2*10);
  785. }*/
  786. TI2 = Math.round(TI2*10);
  787. if (month == 1 && TI2 == 0) session = 0;
  788. if (month > 1 && session + 1 > month) session = month - 1;
  789. if (session > 0) sitd2.innerHTML = TI2 + " (" + funFix2(TI2/session) + " x " + session + ")";
  790. else sitd2.innerHTML = TI2;
  791. sith = document.createElement("div");
  792. sith.setAttribute("style", "white-space: nowrap;");
  793. sith.innerHTML = "<b>New player TI</b>";
  794. gettr[5].getElementsByTagName("th")[0].appendChild(sith);
  795. gettr[5].getElementsByTagName("td")[0].appendChild(sitd2);
  796. Result = TI2/session;
  797. }
  798. return Result;
  799. }
  800.  
  801. function DoCalcNewASI() {
  802. // Skill = (SI*2^9*5^4*7^7)^(1/7)
  803. // SI = (Skill^7)/(2^9*5^4*7^7)
  804. // For Gk :
  805. // Skill = (SI*2^9*5^4*7^7)^(1/7)/14*11
  806. // SI = ((Skill/11*14)^7)/(2^9*5^4*7^7)
  807. var Ti=document.getElementsByName("NewTI")[0];
  808. var NumTr=document.getElementsByName("NumTrainings")[0];
  809. var SI=document.getElementById("CurrSI").innerHTML.replace(/,/g, "");
  810. var FinTi=document.getElementById("FinalSI");
  811. var FinalBP=document.getElementById("FinalBankPrice");
  812. var posIdx=document.getElementsByName("PosIdx")[0];
  813. var AgeNow=document.getElementsByName("AgeNow")[0];
  814. // Calculate skills
  815. if (posIdx.value != 13)
  816. var AllSkills = Math.pow(SI * Math.pow(2, 9) * Math.pow(5, 4) * Math.pow(7, 7), 1/7);
  817. else
  818. var AllSkills = Math.pow(SI * Math.pow(2, 9) * Math.pow(5, 4) * Math.pow(7, 7), 1/7)/14*11;
  819. AllSkills = AllSkills + (NumTr.value * Ti.value / 10);
  820. AllSkils = funFix1(AllSkills);
  821. if (posIdx.value != 13)
  822. FinSi = Math.pow(AllSkills, 7)/(Math.pow(2, 9) * Math.pow(5, 4) * Math.pow(7, 7));
  823. else
  824. FinSi = Math.pow(AllSkills / 11 * 14, 7) /(Math.pow(2, 9) * Math.pow(5, 4) * Math.pow(7, 7));
  825. FinTi.innerHTML = addCommas(Math.round(FinSi));
  826. FinalBP.innerHTML = CalcBankPrice(AgeNow.value*1 + NumTr.value*1, FinSi);
  827. return 0;
  828. }
  829. function toggleTable() {
  830. var lTable = document.getElementById("ASITable");
  831. lTable.style.display = (lTable.style.display == "table") ? "none" : "table";
  832. }
  833. (function() {
  834. var playerTable = document.getElementsByClassName("skill_table zebra")[0];
  835. var skillArray = document.getSkills(playerTable);
  836. computeRating(playerTable, skillArray);
  837. })();
  838. }

QingJ © 2025

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