· 6 years ago · Dec 18, 2019, 08:40 PM
1/*
2Copied a bunch of stuff from the Hypixel API
3*/
4
5
6BASE = 10000;
7GROWTH = 2500;
8
9HALF_GROWTH = 0.5 * GROWTH;
10
11/* Constants to look up the level from the total amount of XP */
12REVERSE_PQ_PREFIX = -(BASE - 0.5 * GROWTH) / GROWTH;
13REVERSE_CONST = REVERSE_PQ_PREFIX * REVERSE_PQ_PREFIX;
14GROWTH_DIVIDES_2 = 2 / GROWTH;
15
16let rating, api, allValues, httpr, B3, B9, B11, B13, B15, B17, B23, B25, B27, B29;
17
18function CalculateRating() {
19 console.log("Hey the button works! " + document.getElementById("playerField").value);
20 httpr = new XMLHttpRequest();
21 httpr.onreadystatechange = function () {
22 if (httpr.readyState !== 4) {
23 return;
24 }
25 if (httpr.status !== 200) {
26 document.getElementById("rating").innerHTML = "Connection failed with status code " + httpr.status + "!";
27 return;
28 }
29
30 api = JSON.parse(httpr.responseText);
31
32 if (api.success === false) {
33 // noinspection JSUnresolvedVariable
34 document.getElementById("rating").innerHTML = "Could not get player! Cause: " + api.cause;
35 return;
36 }
37
38 // noinspection JSUnresolvedVariable
39 if (api.player === null) {
40 document.getElementById("rating").innerHTML = "Player not found!";
41 return;
42 }
43
44 allValues = {};
45
46
47 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
48 allValues["soloLosses"] = api.player.stats.Bedwars.eight_one_losses_bedwars;
49 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
50 allValues["duosLosses"] = api.player.stats.Bedwars.eight_two_losses_bedwars;
51 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
52 allValues["triplesLosses"] = api.player.stats.Bedwars.four_three_deaths_bedwars;
53 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
54 allValues["quadLosses"] = api.player.stats.Bedwars.four_four_wins_bedwars;
55
56 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
57 allValues["soloFinalDeaths"] = api.player.stats.Bedwars.eight_one_final_deaths_bedwars;
58 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
59 allValues["duosFinalDeaths"] = api.player.stats.Bedwars.eight_two_final_deaths_bedwars;
60 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
61 allValues["triplesFinalDeaths"] = api.player.stats.Bedwars.four_three_final_deaths_bedwars;
62 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
63 allValues["quadFinalDeaths"] = api.player.stats.Bedwars.four_four_final_deaths_bedwars;
64
65 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
66 allValues["soloBedLosses"] = api.player.stats.Bedwars.eight_one_beds_lost_bedwars;
67 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
68 allValues["duosBedLosses"] = api.player.stats.Bedwars.eight_two_beds_lost_bedwars;
69 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
70 allValues["triplesBedLosses"] = api.player.stats.Bedwars.four_three_beds_lost_bedwars;
71 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
72 allValues["quadBedLosses"] = api.player.stats.Bedwars.four_four_beds_lost_bedwars;
73
74 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
75 allValues["bedwarsLevel"] = parseFloat(api.player.achievements.bedwars_level);
76 allValues["bedwarsLevel"] = parseFloat(allValues["bedwarsLevel"].toFixed(2));
77 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
78 allValues["soloKills"] = parseFloat(api.player.stats.Bedwars.eight_one_kills_bedwars);
79 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
80 allValues["soloKdr"] = allValues["soloKills"] / api.player.stats.Bedwars.eight_one_deaths_bedwars;
81 allValues["soloKdr"] = parseFloat(allValues["soloKdr"].toFixed(2));
82 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
83 allValues["soloDeaths"] = parseFloat(api.player.stats.Bedwars.eight_one_deaths_bedwars);
84 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
85 allValues["duosKills"] = parseFloat(api.player.stats.Bedwars.eight_two_kills_bedwars);
86 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
87 allValues["duosDeaths"] = parseFloat(api.player.stats.Bedwars.eight_two_deaths_bedwars);
88 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
89 allValues["duosKdr"] = allValues["duosKills"] / api.player.stats.Bedwars.eight_two_deaths_bedwars;
90 allValues["duosKdr"] = parseFloat(allValues["duosKdr"].toFixed(2));
91 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
92 allValues["triplesKills"] = parseFloat(api.player.stats.Bedwars.four_three_kills_bedwars);
93 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
94 allValues["triplesKdr"] = allValues["triplesKills"] / api.player.stats.Bedwars.four_three_deaths_bedwars;
95 allValues["triplesKdr"] = parseFloat(allValues["triplesKdr"].toFixed(2));
96 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
97 allValues["triplesDeaths"] = parseFloat(api.player.stats.Bedwars.four_three_deaths_bedwars);
98 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
99 allValues["quadKills"] = parseFloat(api.player.stats.Bedwars.four_four_kills_bedwars);
100 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
101 allValues["quadKdr"] = allValues["quadKills"] / api.player.stats.Bedwars.four_four_deaths_bedwars;
102 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
103 allValues["quadDeaths"] = parseFloat(api.player.stats.Bedwars.four_three_deaths_bedwars);
104 allValues["quadKdr"] = parseFloat(allValues["quadKdr"].toFixed(2));
105 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
106 allValues["finalSolofinal_kills"] = parseFloat(api.player.stats.Bedwars.eight_one_final_kills_bedwars);
107 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
108 allValues["finalSoloKdr"] = allValues["finalSolofinal_kills"] / api.player.stats.Bedwars.eight_one_final_deaths_bedwars;
109 allValues["finalSoloKdr"] = parseFloat(allValues["finalSoloKdr"].toFixed(2));
110 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
111 allValues["finalDuosfinal_kills"] = parseFloat(api.player.stats.Bedwars.eight_two_final_kills_bedwars);
112 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
113 allValues["finalDuosKdr"] = allValues["finalDuosfinal_kills"] / api.player.stats.Bedwars.eight_two_final_deaths_bedwars;
114 allValues["finalDuosKdr"] = parseFloat(allValues["finalDuosKdr"].toFixed(2));
115 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
116 allValues["finalTriplesfinal_kills"] = parseFloat(api.player.stats.Bedwars.four_three_final_kills_bedwars);
117 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
118 allValues["finalTriplesKdr"] = allValues["finalTriplesfinal_kills"] / api.player.stats.Bedwars.four_three_final_deaths_bedwars;
119 allValues["finalTriplesKdr"] = parseFloat(allValues["finalTriplesKdr"].toFixed(2));
120 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
121 allValues["finalQuadfinal_kills"] = parseFloat(api.player.stats.Bedwars.four_four_final_kills_bedwars);
122 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
123 allValues["finalQuadKdr"] = allValues["finalQuadfinal_kills"] / api.player.stats.Bedwars.four_four_final_deaths_bedwars;
124 allValues["finalQuadKdr"] = parseFloat(allValues["finalQuadKdr"].toFixed(2));
125 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
126 allValues["solosWins"] = parseFloat(api.player.stats.Bedwars.eight_one_wins_bedwars);
127 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
128 allValues["solosWlr"] = allValues["solosWins"] / api.player.stats.Bedwars.eight_one_losses_bedwars;
129 allValues["solosWlr"] = parseFloat(allValues["solosWlr"].toFixed(2));
130 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
131 allValues["duosWins"] = parseFloat(api.player.stats.Bedwars.eight_two_wins_bedwars);
132 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
133 allValues["duosWlr"] = allValues["duosWins"] / api.player.stats.Bedwars.eight_two_losses_bedwars;
134 allValues["duosWlr"] = parseFloat(allValues["duosWlr"].toFixed(2));
135 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
136 allValues["triplesWins"] = parseFloat(api.player.stats.Bedwars.four_three_wins_bedwars);
137 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
138 allValues["triplesWlr"] = allValues["triplesWins"] / api.player.stats.Bedwars.four_three_losses_bedwars;
139 allValues["triplesWlr"] = parseFloat(allValues["triplesWlr"].toFixed(2));
140 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
141 allValues["quadWins"] = parseFloat(api.player.stats.Bedwars.four_four_wins_bedwars);
142 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
143 allValues["quadWlr"] = allValues["quadWins"] / api.player.stats.Bedwars.four_four_losses_bedwars;
144 allValues["quadWlr"] = parseFloat(allValues["quadWlr"].toFixed(2));
145 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
146 allValues["solosBedBreaks"] = parseFloat(api.player.stats.Bedwars.eight_one_beds_broken_bedwars);
147 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
148 allValues["solosBbr"] = allValues["solosBedBreaks"] / api.player.stats.Bedwars.eight_one_beds_lost_bedwars;
149 allValues["solosBbr"] = parseFloat(allValues["solosBbr"].toFixed(2));
150 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
151 allValues["duosBedBreaks"] = parseFloat(api.player.stats.Bedwars.eight_two_beds_broken_bedwars);
152 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
153 allValues["duosBbr"] = allValues["duosBedBreaks"] / api.player.stats.Bedwars.eight_two_beds_lost_bedwars;
154 allValues["duosBbr"] = parseFloat(allValues["duosBbr"].toFixed(2));
155 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
156 allValues["triplesBedBreaks"] = parseFloat(api.player.stats.Bedwars.four_three_beds_broken_bedwars);
157 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
158 allValues["triplesBbr"] = allValues["triplesBedBreaks"] / api.player.stats.Bedwars.four_three_beds_lost_bedwars;
159 allValues["triplesBbr"] = parseFloat(allValues["triplesBbr"].toFixed(2));
160 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
161 allValues["quadBedBreaks"] = parseFloat(api.player.stats.Bedwars.four_four_beds_broken_bedwars);
162 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
163 allValues["quadBbr"] = allValues["quadBedBreaks"] / api.player.stats.Bedwars.four_four_beds_lost_bedwars;
164 allValues["quadBbr"] = parseFloat(allValues["quadBbr"].toFixed(2));
165 // noinspection JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable,JSUnresolvedVariable
166 allValues["gamesPlayed"] = parseFloat(api.player.stats.Bedwars.games_played_bedwars);
167
168 // noinspection JSUnresolvedVariable,JSUnresolvedVariable
169 var myDate = new Date(api.player.lastLogin);
170
171 document.getElementById("lastlogin").innerHTML = "Last login: " + myDate.toGMTString();
172
173 document.getElementById("rank").innerHTML = "";
174
175 // noinspection JSUnresolvedVariable,JSUnresolvedVariable
176 if (api.player.packageRank != null) {
177 // noinspection JSUnresolvedVariable,JSUnresolvedVariable
178 document.getElementById("rank").innerHTML = api.player.packageRank;
179 }
180
181 // noinspection JSUnresolvedVariable,JSUnresolvedVariable
182 if (api.player.newPackageRank != null) {
183 // noinspection JSUnresolvedVariable,JSUnresolvedVariable
184 document.getElementById("rank").innerHTML = api.player.newPackageRank;
185 }
186
187 // noinspection JSUnresolvedVariable,JSUnresolvedVariable
188 if (api.player.monthlyPackageRank != null) {
189 document.getElementById("rank").innerHTML = "MVP++";
190 }
191
192 // noinspection JSUnresolvedVariable
193 if (api.player.prefix != null) {
194 // noinspection JSUnresolvedVariable
195 document.getElementById("rank").innerHTML = api.player.prefix;
196 }
197
198 // noinspection JSUnresolvedVariable,JSUnresolvedVariable
199 if (api.player.rank != null) {
200 // noinspection JSUnresolvedVariable,JSUnresolvedVariable
201 document.getElementById("rank").innerHTML = api.player.rank;
202 }
203
204 for (var key in allValues) {
205 if (Number.isNaN(allValues[key])) {
206 allValues[key] = 0;
207 }
208 }
209 B3 = allValues["bedwarsLevel"];
210 B9 = allValues["gamesPlayed"]; // Games played
211 B11 = allValues["soloKills"] + allValues["duosKills"] + allValues["triplesKills"] + allValues["quadKills"]; // Kills
212 B13 = allValues["solosWins"] + allValues["duosWins"] + allValues["triplesWins"] + allValues["quadWins"]; // Wins
213 B15 = allValues["soloDeaths"] + allValues["duosDeaths"] + allValues["triplesDeaths"] + allValues["quadDeaths"];
214 B17 = allValues["soloLosses"] + allValues["duosLosses"] + allValues["triplesLosses"] + allValues["quadLosses"];
215 B23 = allValues["finalSolofinal_kills"] + allValues["finalDuosfinal_kills"] + allValues["finalTriplesfinal_kills"] + allValues["finalQuadfinal_kills"];
216 B25 = allValues["solosBedBreaks"] + allValues["duosBedBreaks"] + allValues["triplesBedBreaks"] + allValues["quadBedBreaks"];
217 B27 = allValues["soloFinalDeaths"] + allValues["duosFinalDeaths"] + allValues["triplesFinalDeaths"] + allValues["quadFinalDeaths"];
218 B29 = allValues["soloBedLosses"] + allValues["duosBedLosses"] + allValues["triplesBedLosses"] + allValues["quadBedLosses"];
219// Deaths
220
221 rating = (B3 + (((B11 / (B9 * (B15 / 50))) * 200) + ((B13 / (B9 * (B17 / 500))) * 1000) + ((B23 / (B9 * (B27 / 400))) * 500) + ((B25 / (B9 * (B29 / 300))) * 500)));
222 if (allValues["bedwarsLevel"] < 100) {
223 rating *= allValues["bedwarsLevel"] * 0.01;
224 }
225
226 rating = Math.floor(rating);
227
228 document.getElementById("rating").innerHTML = "Rating: " + rating;
229
230 console.log(rating);
231 };
232 httpr.open("GET", "https://api.hypixel.net/player?name=" + document.getElementById("playerField").value + "&key=0ce11ade-2db9-45ac-af44-5937728816b8", true);
233 httpr.send();
234}
235
236function getTotalExpToFullLevel(level) {
237 return (HALF_GROWTH * (level - 2) + BASE) * (level - 1);
238}
239
240function getPercentageToNextLevel(exp) {
241 var lv = getLevel(exp), x0 = getTotalExpToLevel(lv);
242 return (exp - x0) / (getTotalExpToLevel(lv + 1) - x0);
243}
244
245function getLevel(exp) {
246 return exp < 0 ? 1 : Math.floor(1 + REVERSE_PQ_PREFIX + Math.sqrt(REVERSE_CONST + GROWTH_DIVIDES_2 * exp));
247}
248
249function getExactLevel(exp) {
250 return getLevel(exp) + getPercentageToNextLevel(exp);
251}
252
253function getTotalExpToLevel(level) {
254 var lv = Math.floor(level), x0 = getTotalExpToFullLevel(lv);
255 if (level === lv) return x0;
256 return (getTotalExpToFullLevel(lv + 1) - x0) * (level % 1) + x0;
257}