// ==UserScript== // @name Gladiatus Tools // @namespace https://greasyfork.org/users/904482 // @version 0.2.1 // @description Set of tools and aids for the game Gladiatus // @author lpachecob // @grant none // @match *.gladiatus.gameforge.com/game/index.php* // @icon https://cdn.jsdelivr.net/gh/lpachecob/Gladiatus-Tools@main/images/favicon.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") { Mercado.Run(); } 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(){ Menu.Dibujar(); GladiatusTools.SetTool(); 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 Formatter{ static abbreviateNumber(number){ var SI_SYMBOL = ["", "k", "kk", "kkk", "kkkk", "kkkkk", "kkkkkk"]; // what tier? (determines SI symbol) var tier = Math.log10(Math.abs(number)) / 3 | 0; // if zero, we don't need a suffix if(tier == 0) return number; // get suffix and determine scale var suffix = SI_SYMBOL[tier]; var scale = Math.pow(10, tier * 3); // scale the number var scaled = number / scale; // format number and add suffix return scaled.toFixed(1) + suffix; } } 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(`

Notificaciones

`); let MontosNotificar = document.getElementById("MontosNotificar"); let InputNotificarOro = document.getElementById("InputNotificarOro"); let MontosGuardados = []; if(localStorage.MontosGuardados == undefined){ localStorage.MontosGuardados = '["100000"]'; }else{ MontosGuardados = JSON.parse(localStorage.MontosGuardados) } InputNotificarOro.addEventListener("keypress",(input)=>{ if (input.key === 'Enter') { if (!MontosGuardados.includes(InputNotificarOro.value) && InputNotificarOro.value != "") { MontosGuardados.push(InputNotificarOro.value); InputNotificarOro.value = ""; localStorage.MontosGuardados = JSON.stringify(MontosGuardados.sort(function(a, b){return a - b})); window.location.reload() } } }); 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(); Notificaciones.MostrarRotativosSeleccionados(); Notificaciones.EliminarRotativo(); } } static Mensaje(){ let MontosGuardados = JSON.parse(localStorage.MontosGuardados); let mensaje = ""; for(let monto of MontosGuardados){ if (Math.floor(oro / monto) >= 2) { mensaje += `Empaqueta ` + Math.floor(oro / monto) + ` rotativos de `+ Formatter.abbreviateNumber(monto)+`\n`; } else if (Math.floor(oro / monto) == 1) { mensaje += `Empaqueta ` + Math.floor(oro / monto) + ` rotativo de `+ Formatter.abbreviateNumber(monto)+`\n`; } } if (mensaje != "") { document.getElementById("mmonetbar").insertAdjacentHTML("beforeend",`
` + mensaje + `
`) 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

`); 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();