Skip to content

Instantly share code, notes, and snippets.

@prail
Last active March 22, 2022 00:04
Show Gist options
  • Save prail/11d7e0603a8a54af2e83f286502cd6cc to your computer and use it in GitHub Desktop.
Save prail/11d7e0603a8a54af2e83f286502cd6cc to your computer and use it in GitHub Desktop.
Bot for nitrotype.com. Please see comments below for guide on how to use.
// ==UserScript==
// @name Nitrobot
// @namespace http://ateesdalejr.tk
// @version 1.0
// @description Try to take over nitrotype!
// @author Andrew T.
// @match https://www.nitrotype.com/*
// @grant none
// ==/UserScript==
/*
This is a userscript meant for use with tampermonkey. Please don't get yourself banned with this. :) It's very easy to do so.
I made this mainly as a learning RE project. You use this at your own risk, I am not responsible for any accounts that are
banned or penalties incurred.
*/
(function() {
'use strict';
window.textBuffer={};
var oldFillText = CanvasRenderingContext2D.prototype.fillText;
CanvasRenderingContext2D.prototype.fillText=function() {
var args = Array.prototype.slice.call(arguments);
var [text,x,y]=args.slice(0,3);
if (text.length == 1) {
if (!(y in textBuffer)) {
textBuffer[y]="";
}
textBuffer[y]+=text;
}
return oldFillText.apply(this,arguments);
};
var INTRO_LEN=62; // Length of the junk text at the beginning.
var WAIT_SECONDS=2; // Time to wait until the game has started.
var CANVAS_ID="race-track";
var TOTAL_SECONDS = 35.50 - Math.random()*2;
var KEY_DELAY=0.18; //Delay between keypress in seconds. Top speed is about 1077 WPM.
var ACCURACY=95; //Percentage of accuracy. 95 is pretty good.
window.startBot=function() {
var key,shift;
var i=0;
setTimeout(function() {
var typingText=textBuffer[30].slice(INTRO_LEN);
KEY_DELAY = TOTAL_SECONDS / typingText.length;
var intervalLoop=setInterval(function() {
if (i >= typingText.length) {
clearInterval(intervalLoop);
console.log("Finished typing.");
} else {
key=typingText[i];
shift=(key == key.toUpperCase());
var e=jQuery.Event("keypress",{which:key.charCodeAt(0),shiftKey:shift});
$("#"+CANVAS_ID).trigger(e);
if (Math.random() > ACCURACY/100) {
key="=";
shift=(key == key.toUpperCase());
e=jQuery.Event("keypress",{which:key.charCodeAt(0),shiftKey:shift});
$("#"+CANVAS_ID).trigger(e);
}
i++;
}
},KEY_DELAY*1000);
},WAIT_SECONDS*1000);
};
$("body").append("<button onclick=\"startBot()\"style=\"position:fixed;top:0px;left:0px;padding:15px;\">Start Bot</button>");
})();
@JonathanTartt
Copy link

Thanks for this.

@JonathanTartt
Copy link

I'm in school, so I don't really "have the time" to learn how to do this. Well, actually, I just lied- I'm always able to do this on non-school days like Saturday or Sunday. But I'm lazy, so I'd rather just get the code or whatever and be done with it- you know, so I don't have to spend like my free time learning how to do it.

@prail
Copy link
Author

prail commented Mar 3, 2022 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment