GLB Player Value Calculator 1_2 WiseFix

calculate a player value

  1.  
  2. // ==UserScript==
  3. // @name GLB Player Value Calculator 1_2 WiseFix
  4. // @namespace avidday
  5. // @description calculate a player value
  6. // @include http://goallineblitz.com/game/skill_points.pl?player_id=*
  7. // @version 1.2
  8. // ==/UserScript==
  9. // Constants borrowed from monsterkill script
  10. var commonHeaders = {
  11. "User-agent": "Mozilla/5.0 (compatible) Greasemonkey",
  12. "Accept": "text/html,application/xml,text/xml"
  13. };
  14. var attributeNames = [
  15. 'strength',
  16. 'speed',
  17. 'agility',
  18. 'jumping',
  19. 'stamina',
  20. 'vision',
  21. 'confidence',
  22. 'blocking',
  23. 'throwing',
  24. 'catching',
  25. 'carrying',
  26. 'tackling',
  27. 'kicking',
  28. 'punting'
  29. ];
  30. // End Constants
  31. // Add elements to page
  32. var valueDiv = document.createElement('div');
  33. document.getElementById("player_vitals").appendChild(valueDiv);
  34. valueDiv.innerHTML = "<span><b>Player Value Calculator</b><br/>Player Value =</span></br>";
  35. var valueVADiv = document.createElement('span');
  36. valueDiv.appendChild(valueVADiv);
  37. valueVADiv.innerHTML = "Press Button to Calculate</br>";
  38. var calcButton = document.createElement('input');
  39. calcButton.id = "calcButton";
  40. calcButton.type = "button";
  41. calcButton.value = "Calculate Player Value";
  42. calcButton.addEventListener("click", parsePlayerPage, true);
  43. valueDiv.appendChild(calcButton);
  44. // Add up everything, then send to output
  45. function testCalc(incomingVA){
  46. var skillTotal = 0;
  47. var i = 0;
  48. do{
  49. skillTotal = skillTotal + calcValue(getAttribute(attributeNames[i]));
  50. i++;
  51. } while (i<14);
  52. //alert("Skill Total = " + skillTotal);
  53. var saTotal = getSATotal();
  54. //alert("SA Total = " + saTotal);
  55. var existVA = getVA(incomingVA);
  56. //alert("VA Total = " + existVA);
  57. var whatSP = getSP();
  58. //alert("SP Total = " + whatSP);
  59. var totalPoints = truncate(skillTotal + saTotal + parseFloat(whatSP) + existVA * 0.1);
  60. setValue(totalPoints);
  61. }
  62. // Get Player ID, borrowed from monsterkill
  63. function parsePlayerId() {
  64. var pid = window.location.search;
  65. pid = pid.slice(pid.indexOf('player_id=')+'player_id='.length);
  66. if (pid.indexOf('&') > -1) {
  67. pid = pid.slice(0,pid.indexOf('&'));
  68. } else {
  69. pid = pid.slice(0);
  70. }
  71. return pid;
  72. }
  73. //Get VA Points from Player Page, partially borrowed from monsterkill
  74. function parsePlayerPage() {
  75. var playerId = parsePlayerId();
  76. var unspentVA = 0;
  77. var spentVA = 0;
  78. GM_xmlhttpRequest({
  79. method: 'GET',
  80. url: "/game/player.pl?player_id="+playerId,
  81. headers: commonHeaders,
  82. onload: function(responseDetails) {
  83. var txt = responseDetails.responseText;
  84. if (txt.indexOf('<span>Vet Pts:</span>') >-1) {
  85. var vasplit = txt.split('<span>Vet Pts:</span>');
  86. var unspentVAtemp = vasplit[1].substring(vasplit[1].indexOf('>')+1,vasplit[1].indexOf('</a>'));
  87. unspentVA = parseInt(unspentVAtemp);
  88. } else {
  89. unspentVA=0;
  90. }
  91. var diditsplit;
  92. var additup = 0;
  93. var regexResultVA = txt.match(/(skill_level_\d+\D+)(\d+)/ig);
  94. if(regexResultVA != null){
  95. var howLong = regexResultVA.length;
  96. for (var i=0; i<howLong; i++){
  97. diditsplit = regexResultVA[i].split('>');
  98. additup = additup + parseInt(diditsplit[1]);
  99. }
  100. }
  101. var totalVA = unspentVA + additup;
  102. valueVADiv.innerHTML = "VA points before VPB=" + totalVA + "</br>";
  103. testCalc(totalVA);
  104. }
  105. });
  106. }
  107. // Holy cow it worked, get the VA from player page, simulated VA from this page, add them
  108. function getVA(holycowVA){
  109. var earnedVA = holycowVA;
  110. //alert("Real = " + earnedVA);
  111. if (document.getElementById("currentVADiv")){
  112. var getSimulatedVA = document.getElementById("currentVADiv").innerHTML;
  113. if(getSimulatedVA.length >0){
  114. var simVA = getSimulatedVA.split(':');
  115. var futureVA = parseInt(simVA[1]);
  116. }else{
  117. var futureVA = 0;
  118. }
  119. }else{
  120. var futureVA = 0;
  121. }
  122. //alert("Future = " + futureVA);
  123. var totalVA = earnedVA + futureVA;
  124. return totalVA;
  125. }
  126. // Get unspent SP from page
  127. function getSP(){
  128. var findSP = document.getElementById("skill_points");
  129. var foundSP = findSP.innerHTML;
  130. return foundSP;
  131. }
  132. // Get SA's from page
  133. function getSATotal() {
  134. var skilltree = unsafeWindow.skills;
  135. var count = 0;
  136. var currentSkill = 0, sasTotal = 0;
  137. for (s in skilltree) {
  138. count++;
  139. if(count==5){
  140. count=0;
  141. currentSkill = calcValSPB(parseInt(document.getElementById('skill_level_' + s).innerHTML));
  142. } else {
  143. currentSkill = calcValSP(parseInt(document.getElementById('skill_level_' + s).innerHTML));
  144. }
  145. sasTotal = sasTotal + currentSkill;
  146. }
  147. return sasTotal;
  148. }
  149. // Output to page
  150. function setValue(newValue) {
  151. var value = newValue;
  152. valueDiv.innerHTML = "<span><b>Player Value Calculator</b></span><br/>Player Value = " + value + "</br>";
  153. valueDiv.appendChild(valueVADiv);
  154. valueVADiv.innerHTML = "Press Button to Calculate</br>";
  155. calcButton.addEventListener("click", parsePlayerPage, true);
  156. valueDiv.appendChild(calcButton);
  157. }
  158. // Get value from page for each attribute
  159. function getAttribute(incoming) {
  160. var thisvalue = incoming;
  161. return parseFloat(document.getElementById(thisvalue).innerHTML);
  162. }
  163. // Find value from spent skill points
  164. function calcValue(incoming) {
  165. var attribute = incoming;
  166. var resultVal = 0.0;
  167. var currentVal = 0.0;
  168. var currentCapVal = 0.0;
  169. var totalCapVal = 0.0;
  170. var j = 0.0;
  171. var holder = 0;
  172. var k = 2;
  173. var m = 0.0;
  174. var leftover = 0.0;
  175. var remainder = attribute - Math.floor(attribute);
  176. if (attribute < 48.07) {
  177. return attribute;
  178. }
  179. if (remainder <= 0.06) {
  180. currentVal = 49 + remainder;
  181. } else {
  182. currentVal = 48 + remainder;
  183. }
  184. totalCapVal = currentVal;
  185. holder = parseInt(Math.floor(Math.exp(0.0003 * Math.pow(attribute, 2))));
  186. do {
  187. j = truncate(Math.sqrt(Math.log( parseFloat(k + 1)) / 0.0003)) + 0.01;
  188. if (attribute > j) {
  189. m = parseFloat(k);
  190. currentCapVal = Math.ceil(j - totalCapVal);
  191. totalCapVal = totalCapVal + currentCapVal;
  192. currentVal = currentVal + currentCapVal * m;
  193. } else {
  194. leftover = attribute - totalCapVal;
  195. break;
  196. }
  197. k++;
  198. } while (k <= holder);
  199. var p = parseFloat(holder);
  200. resultVal = ((currentVal + leftover * p));
  201. return resultVal;
  202. }
  203. //Value from first four SA's
  204. function calcValSP (value){
  205. var total=0
  206. while (value >0) {
  207. total = total + Math.ceil( parseFloat(value) /2.0);
  208. value--;
  209. }
  210. return total;
  211. }
  212. //Value from fifth SA
  213. function calcValSPB (value){
  214. var total=0
  215. while (value >0) {
  216. total = total + Math.ceil( parseFloat(value) /2.0) + 1;
  217. value--;
  218. }
  219. return total;
  220. }
  221. // Trim to two decimal places, apparently doesn't always work...
  222. function truncate(y) {
  223. var x = parseFloat(y);
  224. var z = ((parseFloat(parseInt(Math.floor(x * 100))))/ 100);
  225. return z;
  226. }
  227.