Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Keno Number Tracker
- // @namespace torn.com
- // @author Degritone
- // @description Tracks numbers that appear in Keno
- // @match *://*.torn.com/loader.php?sid=keno
- // @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
- // @require https://gist.github.com/raw/2625891/waitForKeyElements.js
- // @version 1.0.1
- // ==/UserScript==
- var displayOn = false;
- var debug = false;
- function log(string){
- if(debug)
- console.log("[KNT]",string);
- }
- function getStat(value){
- log("Getting stat: ".concat(value));
- if(localStorage.getItem("Keno.".concat(value)) == undefined){
- log("Stat not created. Initializing...");
- localStorage.setItem("Keno.".concat(value),0);
- log("Initialized.");
- }
- return parseInt(localStorage.getItem("Keno.".concat(value)));
- }
- function storeStats(statArray){
- log("Storing ".concat(statArray.length).concat(" stats"));
- for(i=0;i<statArray.length;i++){
- log("Storing stat: ".concat(statArray[i]));
- localStorage.setItem("Keno.".concat(statArray[i]),getStat(statArray[i])+1);
- localStorage.setItem("Keno.total",getStat("total")+1);
- log("Stat stored successfully");
- }
- }
- function displayClear(){
- var numbers, games;
- var parent = document.getElementById("boardContainer");
- log("Clearing display");
- for(i=1;i<81;i++){
- numbers = document.getElementById("cell_numbers_".concat(i));
- if(numbers)
- parent.removeChild(numbers);
- }
- games = document.getElementById("games_played");
- if(games)
- parent.removeChild(games);
- }
- function displayPrep(){
- log("Prepping cells");
- var cell;
- for(i=1;i<81;i++){
- log("Finding cell");
- cell = document.getElementById("keno_item_".concat(i));
- log("Prepping cell");
- cell.style.position = "absolute";
- cell.style.zIndex = 10;
- cell.parentElement.style.position = "relative";
- if((i-1)%10!=0)
- cell.style.left = "".concat(34*((i-1)%10)+5).concat("px");
- }
- }
- function displayColor(){
- var total = getStat("total");
- var highest, red, green, numbers, hex, lowest;
- var blue = 136;
- var amounts = new Array(80);
- for(i=1;i<81 && total>0;i++){
- amounts[i-1] = getStat(i);
- }
- log("Setting color");
- highest = Math.max(...amounts);
- lowest = Math.min(...amounts);
- log(amounts);
- log(highest);
- log(lowest);
- for(i=1;i<81 && total>0;i++){
- red = Math.floor(Math.min(255,Math.max(136,295+20*highest/Math.max(getStat(i)-lowest,1)-200*getStat(i)/highest)));
- green = Math.max(Math.floor(Math.min(136+(150*getStat(i)-150*lowest)/Math.max(highest-lowest,1),255)),136);
- log("Finding cell");
- numbers = document.getElementById("cell_numbers_".concat(i));
- log("Coloring cell");
- hex = "#".concat(red.toString(16)).concat(green.toString(16)).concat(blue.toString(16));
- log(hex);
- numbers.style.backgroundColor = hex;
- }
- }
- function displayNumbers(){
- var parent, numbers, games;
- var total = getStat("total");
- var board = document.getElementById("boardContainer");
- log("Setting numbers");
- for(i=1;i<81;i++){
- parent = board.appendChild(document.createElement('div'));
- parent.style.cssText = "position: absolute; height: 32px; width: 27px; top: ".concat(231+Math.floor((i-1)/10)*34).concat("px;").concat("left: ").concat(220+34*((i-1)%10)+5).concat("px;");
- parent.id = "cell_numbers_".concat(i);
- numbers = parent.appendChild(document.createElement('div'));
- numbers.style.cssText = "position: absolute; z-index: 100000; font-size: 8px; font-family: impact; text-align: center; height: 32px; width: 27px; line-height: 8px; top: 0; left: 0; pointer-events: none;";
- numbers.innerHTML = "<p style='margin-left: -3px;'>".concat(getStat(i)).concat("<br><br><br>").concat(Math.floor(getStat(i)*1000/total)/10).concat("%</p>");
- }
- games = board.appendChild(document.createElement('div'));
- games.style.cssText = "position: absolute; font-size: 12px; font-family: impact; text-align: center; height: 14px; width: 150px; line-height: 13px; top: 212px; left: 436px;";
- games.id = "games_played";
- games.innerHTML = "Games recorded: ".concat(getStat("total")/10);
- }
- function autoClick(){
- var missed = document.getElementsByClassName("lost");
- var hit = document.getElementsByClassName("marked winning");
- var name, number;
- var numbers = new Array();
- log(missed);
- log(hit);
- if(missed[0] != undefined){
- log("Finding missed numbers");
- for(i=0;i<missed.length;i++){
- name = missed[i].id.split("_");
- number = name[2];
- numbers.push(number);
- log(number.concat(" found"));
- }
- }
- if(hit[0] != undefined){
- log("Finding hit numbers");
- for(i=0;i<hit.length;i++){
- name = hit[i].id.split("_");
- number = name[2];
- numbers.push(number);
- log(number.concat(" found"));
- }
- }
- log("Storing found numbers");
- if(numbers.length == 10){
- storeStats(numbers);
- log(numbers);
- log("Stored");
- if(displayOn){
- displayClear();
- displayNumbers();
- displayColor();
- }
- }
- }
- function inputClick(){
- var field = document.getElementById("KSInput")
- var input = field.value.split(",");
- var parent = document.getElementById("KSDiv");
- log("Attempting to store stats");
- log(input);
- storeStats(input);
- log("Stats stored");
- }
- function manualClick(){
- var parent = document.getElementById("manual_button");
- if(!document.getElementById("KSDiv")){
- log("Making manual input div");
- var inputDiv = parent.appendChild(document.createElement('div'));
- inputDiv.style.cssText = "z-index:100000; position:absolute; background: radial-gradient(at left 6px, #CCCCDD, #CCCCCC 50%); color: #000000; border-color: #444444; border-style: solid; border-width: 3px; width: 260px; height: 53px; left: 120px; top: -3px;";
- inputDiv.id = "KSDiv";
- log("Done");
- log("Making above text");
- var inputWarning = inputDiv.appendChild(document.createElement('div'));
- inputWarning.style.cssText = "z-index:100000; position:absolute; text-align: center; width: 260px; margin-left: -3px; height: 13px; left: 0px; top: 1px;";
- inputWarning.id = "KSWarning";
- inputWarning.innerHTML = "Type 10 numbers separated by commas. No spaces.";
- log("Done");
- log("Making text field");
- var inputField = inputDiv.appendChild(document.createElement('INPUT'));
- inputField.style.cssText = "z-index:100000; position:absolute; width: 250px; height: 13px; left: 5px; top: 16px;";
- inputField.id = "KSInput";
- inputField.setAttribute("type","text");
- inputField.setAttribute("defaultValue","1,2,3,4,5,6,7,8,9,10");
- inputField.setAttribute("value","1,2,3,4,5,6,7,8,9,10");
- log("Done");
- log("Making submit button");
- var inputButton = inputDiv.appendChild(document.createElement('div'));
- inputButton.style.cssText = "z-index:100000; position:absolute; background-color: #CCCCCC; color: #000000; text-align: center; border-color: #444444; border-style: solid; border-width: 1px; width: 40px; height: 13px; left: 110px; top: 35px;";
- inputButton.id = "KSButton";
- inputButton.innerHTML = "<p style='margin-left: -3px;'>Submit</p>";
- inputButton.addEventListener('click',inputClick);
- var gradient = inputDiv.appendChild(document.createElement('div'));
- gradient.style.cssText = "z-index:100010; position:absolute; background: linear-gradient(to right, #CCCCEE, #CCCCDD); border-top: 3px solid #444444; border-bottom: 3px solid #444444; width: 5px; height: 13px; left: -10px; top: -3px;";
- parent.style.background = "rgba(0, 0, 0, 0) linear-gradient(to right, rgb(204, 204, 255), rgb(204, 204, 238)) repeat scroll 0% 0%";
- log("Done");
- log("Successfully created manual input");
- }
- else{
- log("Deleting manual input div");
- parent.removeChild(document.getElementById("KSDiv"));
- parent.style.background = "rgb(204, 204, 204) none repeat scroll 0% 0%";
- log("Done");
- }
- }
- function displayClick(){
- var parent = document.getElementById("display_button");
- displayOn = !displayOn;
- log(displayOn);
- if(displayOn){
- displayNumbers();
- displayColor();
- parent.style.backgroundColor = "#CCCCFF";
- }
- if(!displayOn){
- displayClear();
- parent.style.backgroundColor = "#CCCCCC";
- }
- }
- function debugClick(){
- var parent = document.getElementById("debug_button");
- debug = !debug;
- if(debug){
- var storage = new Array(81);
- storage[0] = getStat("total");
- for(i=1;i<81;i++)
- storage[i] = getStat(i);
- log(storage);
- parent.style.backgroundColor = "#CCCCFF";
- }
- else
- parent.style.backgroundColor = "#CCCCCC";
- }
- function detectEnd(rounds){
- if(rounds < 1)
- return;
- var missed = document.getElementsByClassName("lost");
- var hit = document.getElementsByClassName("marked winning");
- if((missed.length+hit.length)<10){
- log("Round not ended");
- setTimeout(detectEnd,250,rounds);
- }
- else{
- log("Round end detected");
- autoClick();
- setTimeout(detectEnd,1000,rounds-1);
- }
- }
- function playClick(){
- var rounds = parseInt(document.getElementById("roundsAmount").innerHTML);
- var playButton = document.getElementById("playBtn");
- log("Playing ".concat(rounds).concat(" rounds"));
- setTimeout(detectEnd,1000,rounds);
- playButton.click();
- }
- function makeButtons(){
- console.log("[KNT] Board appeared, making buttons");
- var parent = document.getElementById("boardContainer");
- var css = "z-index:100000; position:absolute; background: #CCCCCC; color: #000000; font-size: 12px; font-family: impact; line-height: 12px; border-color: #444444; border-style: solid; border-width: 3px; width: 110px; height: 13px; left: 595px; top: ";
- var autoButton = parent.appendChild(document.createElement('div'));
- autoButton.style.cssText = css.concat("231px;");
- autoButton.id = "auto_button";
- autoButton.innerHTML = "Collect Current Game";
- autoButton.addEventListener('click',autoClick);
- var manualButton = parent.appendChild(document.createElement('div'));
- manualButton.style.cssText = css.concat("251px;");
- manualButton.id = "manual_button";
- manualButton.innerHTML = "Manually Input Game";
- manualButton.addEventListener("click",manualClick);
- var displayButton = parent.appendChild(document.createElement('div'));
- displayButton.style.cssText = css.concat("271px;");
- displayButton.id = "display_button";
- displayButton.innerHTML = "Toggle Stat Display";
- displayButton.addEventListener("click",displayClick);
- var debugButton = parent.appendChild(document.createElement('div'));
- debugButton.style.cssText = css.concat("291px;");
- debugButton.id = "debug_button";
- debugButton.innerHTML = "Toggle Debug";
- debugButton.addEventListener("click",debugClick);
- var playButton = parent.appendChild(document.createElement('div'));
- playButton.style.cssText = css.concat("311px;");
- playButton.id = "play_button";
- playButton.innerHTML = "Play And Collect";
- playButton.addEventListener("click",playClick);
- displayPrep();
- displayClick();
- }
- console.log("[KNT] Waiting for board to appear");
- waitForKeyElements("#boardContainer",makeButtons);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement