// ==UserScript==
// @name Gladiatus Tools
// @namespace https://greasyfork.org/users/904482
// @version 0.1.18
// @description Set of tools and aids for the game Gladiatus
// @author lpachecob
// @grant none
// @match *.gladiatus.gameforge.com/game/index.php*
// @icon https://raw.githubusercontent.com/lpachecob/Gladiatus-Tools/main/GT_-removebg-preview.ico
// @license MIT
// @downloadURL none
// ==/UserScript==
//global variables
const getURL = window.location.search.split("&");
const oro = parseInt(document.getElementById("sstat_gold_val").innerText.replace(/\./g, ''));
var dobleClickEvent = document.createEvent('MouseEvents');
dobleClickEvent.initEvent('dblclick', true, true);
let sh;
for (let element of getURL) {
if(element.includes("sh") == true){
sh = element
}
}
class GladiatusTools{
static SetTool(){
const mainMenu = document.getElementById("mainmenu");
if (getURL[0] == "?mod=guildMarket" && getURL[1] != "submod=control") {
MarketHelps();
} else if (getURL[0] == "?mod=guildMarket" && getURL[1] == "submod=control") {
//comming soon
} else if (getURL[0] == "?mod=auction") {
AcutionHouseTools();
} else if (getURL[0] == "?mod=forge" && getURL[1] == "submod=smeltery") {
SmelteryTimeSaverExtension();
} else if (getURL[0] == "?mod=forge" && getURL[1] == "submod=forge") {
Herreria();
}else if(getURL[0] == "?mod=packages"){
Paquetes.UI();
Paquetes.MoverFiltros();
}
}
static Run(){
GladiatusTools.SetTool();
Menu.Dibujar();
Notificaciones.Rotativos();
GuardarOro.Run();
ExtenderBotones.Paquetes();
window.addEventListener("load", () => {
localStorage.TimeSaverExist = TimeSaver.Exist();
TimeSaver.setKeyForStop(JSON.parse(localStorage.TimeSaverExist));
TimeSaver.StopOnKey();
});
}
}
class insertOnPage{
// Antes que el propio elemento.
static beforebegin(object, html){
object.insertAdjacentHTML("beforebegin", html);
}
//Justo dentro del elemento, antes de su primer elemento hijo.
static afterbegin(object, html){
object.insertAdjacentHTML("afterbegin", html);
}
//Justo dentro del elemento, después de su último elemento hijo.
static beforeend(object, html){
object.insertAdjacentHTML("beforeend", html);
}
//Después del propio elemento.
static afterend(object, html){
object.insertAdjacentHTML("afterend", html);
}
}
class Observer{
static ForRemovedNodes(ItemForWait, instructions){
const observer = new MutationObserver((mutationList) => {
mutationList.forEach((mutation)=> {
if(mutation.removedNodes.length){
instructions();
}
})
});
// Opcions para el observer
const observerOptions = {
attributes: true,
childList: true,
subtree: true,
characterData: false,
attributeOldValue: false,
characterDataOldValue: false
};
observer.observe(ItemForWait, observerOptions);
}
}
class Menu{
static Dibujar(){
document.body.insertAdjacentHTML("afterbegin",`
`);
let menuOpen = document.getElementById("MenuOpen");
menuOpen.addEventListener("click", Menu.openNav);
let closeMenu = document.getElementById("CloseMenu");
closeMenu.addEventListener("click", Menu.closeNav);
document.addEventListener('mouseup', function(e) {
var container = document.getElementById("menuSidenav");
if (!container.contains(e.target)) {
container.style.display = 'none';
}
});
}
static openNav() {
document.getElementById("menuSidenav").style.display = "block";
}
static closeNav() {
document.getElementById("menuSidenav").style.display = "none";
}
static addConfig(html){
html+= "
"
insertOnPage.beforeend(document.getElementById("menuContent"),html);
}
}
class Notificaciones{
static Rotativos(){
Menu.addConfig(`
`);
let NotificarOro = document.getElementById("NotificarOro"); //.checked indica si está activo o no
if (localStorage.NotificarOro == undefined) {
localStorage.NotificarOro = NotificarOro.checked
} else {
NotificarOro.checked = JSON.parse(localStorage.NotificarOro);
}
NotificarOro.addEventListener("change", () => {
localStorage.NotificarOro = NotificarOro.checked;
})
if (JSON.parse(localStorage.NotificarOro) == true) {
Notificaciones.Mensaje();
}
}
static Mensaje(){
if (oro > 50000) {
let mensaje = "";
if (Math.floor(oro / 50000) >= 2) {
mensaje += `Empaqueta ` + Math.floor(oro / 50000) + ` rotativos de 50k `
} else if (Math.floor(oro / 50000) == 1) {
mensaje += `Empaqueta ` + Math.floor(oro / 50000) + ` rotativo de 50k `
}
if (Math.floor(oro / 100000) >= 2) {
mensaje += `Empaqueta ` + Math.floor(oro / 100000) + ` rotativos de 100k `
} else if (Math.floor(oro / 100000) == 1) {
mensaje += `Empaqueta ` + Math.floor(oro / 100000) + ` rotativo de 100k `
}
if (Math.floor(oro / 200000) >= 2) {
mensaje += `Empaqueta ` + Math.floor(oro / 200000) + ` rotativos de 100k `
} else if (Math.floor(oro / 200000) == 1) {
mensaje += `Empaqueta ` + Math.floor(oro / 200000) + ` rotativo de 200k `
}
if (Math.floor(oro / 500000) >= 2) {
mensaje += `Empaqueta ` + Math.floor(oro / 500000) + ` rotativos de 100k `
} else if (Math.floor(oro / 500000) == 1) {
mensaje += `Empaqueta ` + Math.floor(oro / 500000) + ` rotativo de 500k `
}
if (Math.floor(oro / 1000000) >= 2) {
mensaje += `Empaqueta ` + Math.floor(oro / 1000000) + ` rotativos de 100k `
} else if (Math.floor(oro / 1000000) == 1) {
mensaje += `Empaqueta ` + Math.floor(oro / 1000000) + ` rotativo de 1kk `
}
if (mensaje != "") {
document.getElementById("mmonetbar").insertAdjacentHTML(
"beforeend",
`
`)
let buscarRotativos = document.getElementById("buscarRotativos");
let categoria = document.getElementById("categoria");
buscarRotativos.addEventListener("click",()=>{
Paquetes.PonerEnFavoritos(categoria.value)
})
if(localStorage.paquetesCategoria == undefined){
localStorage.paquetesCategoria = "Mercado";
}else{categoria.value = localStorage.paquetesCategoria}
categoria.addEventListener("change",()=>{localStorage.paquetesCategoria = categoria.value});
}
static PonerEnFavoritos(textContent){
let MercadoFavoritos = document.getElementById("MercadoFavoritos");
let rotativos = Paquetes.EncontrarRotativos(textContent);
MercadoFavoritos.style.display = "block";
MercadoFavoritos.innerHTML = ``;
let mensaje = document.getElementById("mensaje");
if (rotativos.length > 0){
mensaje.innerText = "Objetos Encontrados!";
for (let item of rotativos) {
MercadoFavoritos.append(item)
}
} else {mensaje.innerHTML = `
No se encontraron objetos, intenta nuevamente.
`;}
}
static EncontrarRotativos(textContent){
let rotativos = []
let packages = document.getElementById("packages");
//packages.children[1].children[2].children[0].attributes[6].textContent.includes("Oro")
for (let item of packages.children) {
if(!!item.children[1] == true &&
item.children[1].textContent == textContent
){
let atributes = item.children[2].children[0].attributes;
for (let atribute of atributes) {
if(atribute.name == "data-tooltip"){
if(atribute.textContent.includes('Oro","white"') == false){
rotativos.push(item)
}
}
}
}
}
return rotativos
}
static MoverFiltros(){
let filtros = document.getElementsByClassName("package-advance-filters")[0];
filtros.setAttribute("style","width: 500px;margin-left: auto;")
let article = document.getElementsByTagName("article")[0];
let sectionHeaders = document.getElementsByClassName("section-header")
for (let section of sectionHeaders) {
if(section.innerHTML.includes("Paquetes")==true){
article.insertBefore(filtros,section)
}
}
}
}
//style="width: 500px;margin-left: auto;"
class TimeSaver{
static Exist(){
const timeSaverr = !!document.getElementsByClassName("auto-settings")[0]
return timeSaverr;
}
static setKeyForStop(timeSaverExist){
if(timeSaverExist==true){
Menu.addConfig(`
TimeSaver
Atajos de Teclado
✔ Cambios guardados correctamente
`);
let timeSaverHotKeySelectedKey = document.getElementById("timeSaverHotKeySelectedKey");
let timeSaverHotKeyCheckbox = document.getElementById("timeSaverHotKeyCheckbox");
let timeSaverHotKeyConfirmation = document.getElementById("timeSaverHotKeyConfirmation");
let Btnconfirmar = document.getElementById("Btnconfirmar");
Btnconfirmar.addEventListener("click",()=>{Btnconfirmar.textContent = ""; timeSaverHotKeyConfirmation.hidden = false;});
if(localStorage.timeSaverHotKeyCheckbox == undefined){
localStorage.timeSaverHotKeyCheckbox = false;
} else {
timeSaverHotKeyCheckbox.checked = JSON.parse(localStorage.timeSaverHotKeyCheckbox);
}
timeSaverHotKeyCheckbox.addEventListener("change",()=>{localStorage.timeSaverHotKeyCheckbox=timeSaverHotKeyCheckbox.checked;})
if(localStorage.timeSaverHotKeySelectedKey == undefined){
localStorage.timeSaverHotKeySelectedKey = "";
} else {
timeSaverHotKeySelectedKey.value = localStorage.timeSaverHotKeySelectedKey;
}
timeSaverHotKeySelectedKey.addEventListener("keydown",()=>{timeSaverHotKeySelectedKey.select();
Btnconfirmar.textContent = "✅";
})
timeSaverHotKeySelectedKey.addEventListener("change",()=>{localStorage.timeSaverHotKeySelectedKey = timeSaverHotKeySelectedKey.value;})
}
}
static StopOnKey(){
document.addEventListener('keyup', (e)=>{
let selectKey = localStorage.timeSaverHotKeySelectedKey;
let useControl = JSON.parse(localStorage.timeSaverHotKeyCheckbox);
if (useControl == true && e.ctrlKey && e.key === selectKey) {
TimeSaver.StopBot();
}
if (useControl == false && e.key === selectKey) {
TimeSaver.StopBot();
}
}, false);
}
static StopBot(){
let timeSaver = document.getElementsByClassName("auto-settings")[0]
let botonPlay = timeSaver.children[3];
if (botonPlay.classList[2] == "show") {
//bot desactivado
botonPlay.click();
}
}
}
class ExtenderBotones{
static Paquetes(){
let menue_packages = document.getElementById("menue_packages");
let url = window.location.search.split("&");
insertOnPage.afterend(menue_packages,`
`);
let menuBotonPaquetes = document.getElementById("menuBotonPaquetes");
let extenderPaquetes = document.getElementById("extenderPaquetes");
let menuAbierto = false;
extenderPaquetes.addEventListener("click",()=>{
menuAbierto = !menuAbierto;
if(menuAbierto == true){
menuBotonPaquetes.style.display = 'block';
} else {
menuBotonPaquetes.style.display = 'none';
}
})
document.addEventListener('mouseup', function(e) {
var container = document.getElementById("extenderPaquetes");
if (!container.contains(e.target)) {
menuBotonPaquetes.style.display = 'none';
}
});
}
}
class GuardarOro{
static UI(){
Menu.addConfig(`
Guardar Oro
`);
let GuardarOroCheck = document.getElementById("GuardarOroCheck");
let OroMaximoSuelto = document.getElementById("OroMaximoSuelto");
if (localStorage.GuardarOroCheck == undefined) {
localStorage.GuardarOroCheck = GuardarOroCheck.checked
} else {
GuardarOroCheck.checked = JSON.parse(localStorage.GuardarOroCheck);
}
GuardarOroCheck.addEventListener("change", () => {
localStorage.GuardarOroCheck = GuardarOroCheck.checked;
})
if (localStorage.OroMaximoSuelto == undefined) {
localStorage.OroMaximoSuelto = OroMaximoSuelto.value
} else {
OroMaximoSuelto.value = localStorage.OroMaximoSuelto;
}
OroMaximoSuelto.addEventListener("input", () => {
localStorage.OroMaximoSuelto = OroMaximoSuelto.value;
})
}
static VerSiTengoOro(oroTrigger){
let oroTriggerParse = parseInt(oroTrigger.replace(/\./g, ''))
if(oro > oroTriggerParse){
return true;
}else{
return false;
}
}
static ItemsParaComprar(){
if(getURL[0] == "?mod=guildMarket" && getURL[1] != "submod=control"){
let market_table = document.getElementById("market_table")
let market_table_trs = market_table.children[0].children[0].children
let itemsEnVenta = [];
for (let item of market_table_trs) {
if(item.tagName == "TR" &&
!!item.children[5].children[0] == true &&
item.children[5].children[0].name == "buy"){
itemsEnVenta.push(item)
}
}
return itemsEnVenta;
} else {
return [];
}
}
static sComprarTodo(){
let OroMaximoSuelto = document.getElementById("OroMaximoSuelto").value;
let inv = document.getElementById("inv");
if((!localStorage.CompraItem=="" && !localStorage.CompraVinculado=="" && !localStorage.CompraPrecioCompra=="" && localStorage.itemEnInventario == "No") == true){
console.log("Item Comprado ir a recogerlo")
if(getURL[0] != "?mod=packages"){
document.getElementById("menue_packages").click()
}
if(getURL[0] == "?mod=packages"){
}
}else{
if(localStorage.itemEnInventario == "Si"){
if(getURL[0] != "?mod=guildMarket"){
window.location.replace("index.php?mod=guildMarket&s=pd&"+sh)
}
}
}
}
static VenderItem(){
window.addEventListener("load", ()=>{
let items = document.getElementById("inv").children;
for (let item of items) {
for(let attribute of item.attributes){
if(attribute.name == "data-tooltip"){
if(attribute.textContent.slice(0,19).split(",")[0] == localStorage.CompraItem.slice(0,19)){
item.dispatchEvent(dobleClickEvent);
setTimeout(function () {
document.getElementById("preis").value = localStorage.CompraPrecioCompra;
document.getElementById("dauer").selectedIndex = 2;
// document.getElementsByName("anbieten")[0].click();
localStorage.itemEnInventario = "No"
localStorage.CompraItem = "";
localStorage.CompraVinculado = "";
localStorage.CompraPrecioCompra = "";
}, 2000);
}
}
}
}
})
}
static CogerDeInventario(){
let inv = document.getElementById("inv");
document.getElementById("buscarRotativos").click()
let items = document.getElementById("MercadoFavoritos").children;
for (let index = 1; index < items.length; index++) {
let item = items[index].children[2].children[0];
for (let attribute of item.attributes) {
if(attribute.name == "data-tooltip"){
localStorage.CompraItem_Comprobar = attribute.textContent.slice(0,22).split(",")[0]
}
}
if(localStorage.CompraItem_Comprobar.slice(0,19) == localStorage.CompraItem.slice(0,19)){
Observer.ForRemovedNodes(inv, ()=>{
item.dispatchEvent(dobleClickEvent);
localStorage.itemEnInventario = "Si";
});
}
}
}
static ComprarTodo(){
let OroMaximoSuelto = document.getElementById("OroMaximoSuelto").value;
if(GuardarOro.VerSiTengoOro(OroMaximoSuelto) == true){
let itemsComprados = [];
for(let item of GuardarOro.ItemsParaComprar()){
let itemPrice = parseInt(item.children[2].textContent.replace(/\./g, ''));
if(itemPrice2){
break;
}
}
localStorage.CompraPrecioCompra = itemPrice;
//itemsComprados.push(atributosGuardar)
}
}
item.children[5].children[0].click();
}
}
//Guardar Objetos en local storage
//localStorage.test3 = JSON.stringify({"test":"testContend"})
//let test = JSON.parse(localStorage.test3)
}
}
static Run(){
GuardarOro.UI();
let OroMaximoSuelto = document.getElementById("OroMaximoSuelto").value;
localStorage.AutoGuardarOro = "NoGuardado";
console.log(localStorage.AutoGuardarOro, OroMaximoSuelto)
}
}
//////////////////////////////////////////////////////////////////////
/**
* run script
*/
GladiatusTools.Run();