您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A simple bot for typeracer.
- // ==UserScript==
- // @name Bot for typeracer.com
- // @namespace type_bot
- // @include http://play.typeracer.com/
- // @version 1.03
- // @grant none
- // @description:en A simple bot for typeracer.
- // @description A simple bot for typeracer.
- // ==/UserScript==
- var CURRENT_WORD_ID = "nhwMiddlegwt-uid-6";
- var ADDITIONAL_WORD_ID = "nhwMiddleCommagwt-uid-7";
- var INPUT_CLASS = "txtInput";
- var INPUT_CLASS_UNFOCUSED = "txtInput txtInput-unfocused";
- var CLASS_OF_START = "mainMenuItem mainMenuItem-highlighted";
- var CLASS_OF_START_PRACTICE = "mainMenuItem mainMenuItem-secondary";
- var CONTAINER_ELEM_ID = "dUI";
- var RACE_AGAIN_CLASS = "raceAgainLink";
- var CONTAINER_SINGLE_PLAYER_TO_NORMAL_RACE = "roomSection";
- var DEFAULT_SPEED = 700;
- var tb_container = document.getElementsByClassName("themeContent").item(0);
- var button_text_active = "Bot activated";
- var button_text_deactivated = "Bot deactivated";
- var INFO_TXT = "Reload page after every race.";
- var bot_input;
- var words;
- var tb_input;
- var tb_thread;
- var tb_info;
- var ev;
- var space;
- ev = document.createEvent("KeyboardEvent");
- ev.initKeyEvent("keypress", true, false, window, 0, 0, 0, 0, 13, 13);
- space = document.createEvent("KeyboardEvent");
- space.initKeyEvent("keypress",true,false, window, 0,0,0,0,32,32);
- if(localStorage.type_bot === undefined)
- localStorage.type_bot = "active";
- var waitforElem = setInterval(function(){
- if(document.getElementsByClassName(CLASS_OF_START).item(0) != null &&
- document.getElementsByClassName(CLASS_OF_START_PRACTICE).item(0) != null){
- console.log("waiting...");
- var RACE_ELEM = document.getElementsByClassName(CLASS_OF_START).item(0);//.item(NUMBER_RACE);
- var PRACTICE_ELEM = document.getElementsByClassName(CLASS_OF_START_PRACTICE).item(0);//.item(NUMBER_PRACTICE);
- RACE_ELEM.addEventListener("click",tb_init);
- PRACTICE_ELEM.addEventListener("click",tb_init);
- clearInterval(waitforElem);
- }
- },100);
- function tb_init(){
- var bot_button = document.createElement("input");
- bot_button.id = "bot_button";
- bot_button.type = "button";
- if(localStorage.type_bot == "active")
- bot_button.value = button_text_active;
- else bot_button.value = button_text_deactivated;
- bot_button.style.position = "absolute";
- bot_button.style.top = "100px";
- bot_button.style.left = "50px";
- bot_button.addEventListener("click",button_pressed);
- bot_input = document.createElement("input");
- bot_input.id = "bot_input";
- bot_input.type = "text";
- bot_input.value = DEFAULT_SPEED;
- bot_input.style.top = "150px";
- bot_input.style.left = "50px";
- bot_input.style.position = "absolute";
- bot_input.title = "Milliseconds between each word";
- tb_info = document.createTextNode(INFO_TXT);
- var tb_div = document.createElement("div");
- tb_div.style.position = "absolute";
- tb_div.style.top = "200px";
- tb_div.style.left = "50px";
- tb_div.appendChild(tb_info);
- tb_container.appendChild(tb_div);
- tb_container.appendChild(bot_input);
- tb_container.appendChild(bot_button);
- setTimeout(tb_wait,2000);
- }
- function button_pressed(event){
- if(localStorage.type_bot == "active"){
- localStorage.type_bot = "unactive";
- event.target.value = button_text_deactivated;
- bot_input.disabled = true;
- }
- else{
- localStorage.type_bot = "active";
- event.target.value = button_text_active;
- bot_input.disabled = false;
- }
- }
- function tb_wait(){
- tb_input = document.getElementsByClassName(INPUT_CLASS_UNFOCUSED).item(0);
- tb_thread = window.setInterval(function(){
- if(tb_input.className == INPUT_CLASS)
- tb_type(tb_input);
- },100);
- }
- function tb_type(input){
- clearInterval(tb_thread);
- if(localStorage.type_bot == "active"){
- var WAIT_BETWEEN_WORDS = parseInt(bot_input.value);
- if(isNaN(WAIT_BETWEEN_WORDS) || !WAIT_BETWEEN_WORDS)
- WAIT_BETWEEN_WORDS = DEFAULT_SPEED;
- words = document.getElementById(CURRENT_WORD_ID);
- additional = document.getElementById(ADDITIONAL_WORD_ID);
- var word = words.innerHTML;
- var add = additional.innerHTML;
- tb_thread = window.setInterval(function(){
- if(word == null)
- clearInterval(tb_thread);
- tb_input.value += word + add;
- tb_input.dispatchEvent(space);
- word = words.innerHTML;
- add = additional.innerHTML;
- },WAIT_BETWEEN_WORDS);
- }
- }