-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTypeRacer_cheat.js
64 lines (60 loc) · 1.63 KB
/
TypeRacer_cheat.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// ==UserScript==
// @name TypeRacer cheat
// @namespace https://play.typeracer.com
// @version 0.1
// @description Become a typing god
// @author You
// @match https://play.typeracer.com/*
// @require http://code.jquery.com/jquery-3.4.1.min.js
// @grant none
// ==/UserScript==
var timer;
var masterTimer;
var typeTimer;
var keyStrokes = []
function triggerIfRace() {
console.log('Checking for race...');
var txt = $('.txtInput');
if (txt.length == 0) {
clearInterval(timer);
return;
}
else {
timer = setInterval(startRace, 500);
}
}
function startRace() {
console.log('Race detected!');
clearInterval(masterTimer);
var txt = $('.txtInput');
if (txt.hasClass('txtInput-unfocused')) {
return;
}
else {
clearInterval(timer);
console.log('Race started!')
$('span[unselectable=on]').each(function(i,el) {
keyStrokes.push(...$(el).text().split(''));
});
typeTimer = setInterval(function() {
var char = keyStrokes.shift();
if (char === undefined) {
clearInterval(typeTimer);
masterTimer = setInterval(triggerIfRace, 1000);
return;
}
else {
console.log(char);
var txt = $('.txtInput')[0];
txt.value += char;
txt.dispatchEvent(new Event('mousemove'));
}
}, 120);
}
}
(function() {
'use strict';
console.log('Cheat enabled!');
masterTimer = setInterval(triggerIfRace, 1000);
// Your code here...
})();