// ==UserScript==
// @name CSGORoll XP Calculator
// @namespace https://gge.gg/
// @version 0.1.1
// @description Script will calculate the XP needed for next and/or requested level
// @author twitter.com/thes0meguy
// @match https://www.csgoroll.com/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=csgoroll.com
// @grant none
// @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js
// @license WTFPL
// ==/UserScript==
/* global $ */
(function() {
'use strict';
const lvlarray = [ 0, 8300, 17400, 27600, 38800, 51200, 65000, 80100, 96900, 115400, 135800, 158400, 183300, 210700, 241100, 274600, 311500, 352300, 397300, 447000, 501800, 562400, 629100, 702800, 784200, 874000, 973000, 1082400, 1203100, 1336300, 1483300, 1645600, 1824700, 2022400, 2240600, 2481500, 2747300, 3040800, 3364800, 3722400, 4117100, 4552900, 5033900, 5564900, 6151200, 6798300, 7512700, 8301400, 9172100, 10133300, 11194500, 12366000, 13659400, 15087200, 16663600, 18404000, 20325400, 22446600, 24788600, 27374200, 30228800, 33380400, 36859900, 40701500, 44942800, 49625400, 54795300, 60503200, 66805100, 73762700, 81444500, 89925700, 99289500, 109627800, 121042100, 133644300, 147558100, 162920000, 179880800, 198606800, 219281800, 242108700, 267311400, 295137300, 325859400, 359779200, 397229400, 438577600, 484229500, 534633200, 590283100, 651725300, 719562900, 794461400, 877155800, 968457700, 1069262900, 1180560600, 1303443100, 1439116000, 1588910900, 1754297600, 1936899200, 2138507300, 2361100600, 2606863200, 2878206900, 3177794300, 3508565400, 3873766100, 4276980100, 4722164100, 5213686900, 5756371800, 6355544300, 7017084000, 7747482800, 8553908200, 9444273700, 10427316700, 11512683800 ]
let desired_level = 0;
const codes = ["LOUFREE", "JOHNCS"]
var rand = 0;
var code = codes[rand]
setInterval(() => {
if (rand == 0) {
code = codes[rand]
rand = 1
} else {
code = codes[rand]
rand = 0
}
},30000)
function calc() {
let input_data = document.getElementById("xpcalc-level");
if (input_data) {
var sel = document.getElementById("xpcalc-level");
sel.addEventListener("input", function(e){
desired_level = sel.value;
});
}
}
setInterval(() => {
const xp_bar = document.querySelectorAll(".xp-text");
const profile = document.querySelectorAll(".profile");
if (!xp_bar || !profile) {
return
}
var result = [];
for (var i = 0; i < xp_bar.length; i++) {
result.push(xp_bar[i].textContent);
}
var xp_text = String(result[0])
var matches = xp_text.match(/(\d+).*?(\d+)/);
if (matches == null || matches == "undefined") {
return
}
const xp_current = parseInt(matches[1])
let lvl = 0;
for (var i = 0; i < lvlarray.length; i++) {
if (xp_current >= lvlarray[i]) {
lvl++;
}
}
const total_wagered = xp_current / 400;
let xp_fornext = lvlarray[lvl] - xp_current;
let wager_fornext = (lvlarray[lvl] / 400) - total_wagered;
let percent = (100 * (lvlarray[lvl] - xp_current)) / ((lvlarray[lvl]) - (lvlarray[lvl - 1]))
percent = 100 - (Math.round(percent * 100) / 100)
wager_fornext = Math.round(wager_fornext * 100) / 100
let dice_fornext = (wager_fornext * 0.05)
percent = Math.round(percent * 100) / 100
let xp_fordesired = lvlarray[desired_level - 1];
let wager_fordesired = xp_fordesired / 400;
let xp_needed = xp_fordesired - xp_current;
let wager_needed = wager_fordesired - total_wagered;
let dice_fordesired = (wager_needed * 0.05)
if (xp_needed < 0) {
wager_needed = "Reached!"
xp_needed = "Reached!"
}
let xpcalc = document.getElementById("xpcalc-net");
if (!xpcalc) {
xpcalc = document.createElement("div");
xpcalc.classList.add("xpcalc-net-div")
xpcalc.classList.add("card")
xpcalc.classList.add("card-body")
xpcalc.id = "xpcalc-net";
xpcalc.style.cssText = "display: flex;flex-direction: row;gap: 2rem;flex-wrap: wrap;"
profile[0].append(xpcalc)
xpcalc.innerHTML = " \
\
<div id=\"xpcalc-level-input\">\
</div><div id=\"xpcalc-level-info\" style=\"justify-content: space-around;flex-wrap: wrap; min-width: 80%; display: flex;flex-direction: row;gap: 2rem;align-items: center;font-weight: 600;font-size: .8rem;text-transform: uppercase; color: #767b83;\">" ;
}
let dl_color = "#d19f69"
let l_color = "#d19f69"
if (desired_level < 121) {
dl_color = "<font style=\"color:#d44339;\">"+desired_level+"</font>"
}
if (desired_level < 100) {
dl_color = "<font style=\"color:#0ec555;\">"+desired_level+"</font>"
}
if (desired_level < 80) {
dl_color = "<font style=\"color:#fad84e;\">"+desired_level+"</font>"
}
if (desired_level < 60) {
dl_color = "<font style=\"color:#bdc5d1;\">"+desired_level+"</font>"
}
if (desired_level < 40) {
dl_color = "<font style=\"color:#d19f69;\">"+desired_level+"</font>"
}
if (desired_level < 20) {
dl_color = "<font style=\"color:#9f9991;\">"+desired_level+"</font>"
}
if (lvl < 121) {
l_color = "#d44339"
}
if (lvl < 100) {
l_color = "#0ec555"
}
if (lvl < 80) {
l_color = "#fad84e"
}
if (lvl < 60) {
l_color = "#bdc5d1"
}
if (lvl < 40) {
l_color = "#d19f69"
}
if (lvl < 20) {
l_color = "#9f9991"
}
let xpcalc_info = document.getElementById("xpcalc-level-info");
var text = "\
<div style=\"min-width: 30%;\">\
<table style=\"width: 100%;border-collpse: collapse;\">\
<tr style=\"border-bottom: 2px solid #ffffff33;\">\
<td>Lvl: </td><td style=\"color: "+l_color+";\">"+lvl+ "</td>\
</tr>\
<tr>\
<td>Your current XP: </td>\
<td style=\"color: #bcbebf;\">" + xp_current.toLocaleString() + "</td>\
</tr>\
<tr>\
<td>Total wagered: </td>\
<td style=\"color: #bcbebf;\">" + total_wagered.toLocaleString() + "</td>\
</tr>\
<tr>\
<td>XP needed for next level: </td>\
<td style=\"color: #bcbebf;\">" + xp_fornext.toLocaleString() + "</td>\
</tr>\
<tr>\
<td>Wager for next: </td>\
<td style=\"color: #bcbebf;\">" + wager_fornext.toLocaleString() + "</td>\
</tr>\
<tr>\
<td><a href=\"https://www.youtube.com/watch?v=iBFJeOCrN0s\" target=\"_blank\">Dice strat for next:</a> </td>\
<td style=\"color: #bcbebf;\">" + dice_fornext.toLocaleString() + "</td>\
</tr>\
</table>\
</div>";
xpcalc_info.innerHTML = text
if (desired_level>0 && desired_level < 121) {
var desired_level_text = "\
<div style=\"min-width: 30%;\">\
<table style=\"width: 100%;border-collpse: collapse;\">\
<tr>\
<td>XP Total needed for " + dl_color + " level: </td>\
<td style=\"color: #bcbebf;\">"+xp_fordesired.toLocaleString()+"</td>\
</tr>\
<tr>\
<td>Wager total needed for " + dl_color + " level: </td>\
<td style=\"color: #bcbebf;\">"+wager_fordesired+"</td>\
</tr>\
<tr>\
<td><BR>XP you need for " + dl_color + " level: </td>\
<td style=\"color: #bcbebf;\"><BR>"+xp_needed.toLocaleString()+"</td>\
</tr>\
<tr>\
<td>Wager you need for " + dl_color + " level: </td>\
<td style=\"color: #bcbebf;\">"+wager_needed.toLocaleString() + "</td>\
</tr>\
<tr>\
<td><a href=\"https://www.youtube.com/watch?v=iBFJeOCrN0s\" target=\"_blank\">Dice strat for desired:</a> </td>\
<td style=\"color: #bcbebf;\">" + dice_fordesired.toLocaleString() + "</td>\
</tr>\
</table>\
</div>"
xpcalc_info.innerHTML += desired_level_text
}
xpcalc_info.innerHTML += "\
<div style=\"display:flex; flex-direction: column; gap: .7rem; align-items: center;\">\
<div id=\"progress\" style=\"text-align: center;font-size: .7rem;border-radius: 10px;padding: 1rem; width: 100%;background: linear-gradient(90deg, " + l_color + " "+percent+"%, rgba(30,33,39,1) "+percent+"%); color: #fff;text-shadow: 1px 1px 6px black;\" >\
Progress to " + (lvl + 1) +" level: "+xp_current.toLocaleString()+ " / " + lvlarray[lvl].toLocaleString() + " - "+percent+"% <BR> need to wager " + wager_fornext.toLocaleString() +" coins more</div>\
<div style=\"margin-top: 10px;font-size:1rem;color:#fff;\">\
USE CODE <input type=\"text\" value=\""+code+"\" readonly style=\"text-align: center;font-weight: 600;border:none!important; background-color: #262a30;color: #0ec555;width:8ch;\"> for +5% deposit bonus\
</div>\
</div>"
let xpcalc_input = document.getElementById("xpcalc-level");
let xpcalc_level_input = document.getElementById("xpcalc-level-input");
if (!xpcalc_input) {
xpcalc_level_input.innerHTML = "\
<input type=\"number\" id=\"xpcalc-level\" style=\"background: #1e2127;color: #fff;border: 1px #000 !important;padding: 0.8rem;border-radius: 10px;\">\
<div style=\"position: absolute;top: 10px;background: #262a30;\">Desired level</div>"
}
calc()
}, 2000);
// Your code here...
})();