Terror every room in Haxball
// ==UserScript==
// @name Haxball Terror
// @namespace http://tampermonkey.net/
// @version 1
// @description Terror every room in Haxball
// @author Style (Haxball) - MrTarnegol (FxP)
// @match https://*.haxball.com/*
// @grant none
// ==/UserScript==
window.gameDocument = document.getElementsByClassName('gameframe')[0].contentWindow.document
window.style = {};
style.write = function(text) {
gameDocument.getElementsByTagName("input")[0].value = text;
}
style.send = function() {
gameDocument.getElementsByClassName("input")[0].getElementsByTagName("button")[0].click();
}
style.getMessage = function() {
return gameDocument.getElementsByTagName("input")[0].value;
}
function getAll() {
var players = gameDocument.querySelectorAll('[data-hook=name]');
var string = ""
for (var i = 0; i < players.length; i++) {
var player = players[i].innerHTML.replace(/ /g, "_");
string += "@" + player + " ";
}
return string;
}
function spamMessage() {
var message = style.getMessage();
style.write(message);
style.send();
style.write(message);
}
function tagAll() {
var tag = getAll();
if (tag) {
var message = style.getMessage();
var string = tag + message;
style.write(string);
style.send();
style.write(message);
}
}
function addInGameButtons() {
var input = gameDocument.getElementsByClassName("input")[0];
if (input !== undefined) {
var tag = input.children[1].cloneNode(false);
tag.style.marginLeft = "5px";
tag.innerText = "TagAll";
tag.onclick = tagAll;
input.appendChild(tag);
var spam = input.children[1].cloneNode(false);
spam.style.marginLeft = "5px";
spam.innerText = "Spam";
spam.onclick = spamMessage;
input.appendChild(spam);
}
}
function addButtons() {
addInGameButtons();
}
setTimeout(function() {
var observer = new MutationObserver(addButtons);
var holder = gameDocument.body.getElementsByTagName("div")[0];
observer.observe(holder, {childList: true});
addButtons();
}, 3000);