I just did it because I'm bored... How you will use this menu depends on you! I did it for the developers of cheats on Moo Moo.io, but it can be used on any game.
// ==UserScript== // @name Menu template for your script // @namespace none // @version 1 // @description I just did it because I'm bored... How you will use this menu depends on you! I did it for the developers of cheats on Moo Moo.io, but it can be used on any game. // @author 00100110#6361 // @match *://moomoo.io/* // @match *://*.moomoo.io/* // @grant none // ==/UserScript== /* Stting menu */ let menu = { opacity: 1, position: { relative: `relative`, absolute: `absolute`, top: `${70}px`, left: `${20}px`, bottom: `${0}px`, right: `${0}px`, }, size: { width: `${330}px`, height: `${400}px`, height_title_block: `${30}px`, border_body_block: `${5}px`, border_radius_body_block: `${7}px`, font_size_title_block: `${21}px`, font_size_inner_block: `${18}px` }, colors: { background_title_block: `rgba(66, 66, 66, 0.61)`, background_body_block: `rgba(0, 0, 0, 0.25)`, background_inner_block: `rgba(0, 0, 0, 0.25)`, border_body_block: `rgba(38, 38, 38, 0.72)`, title_text: `#fff`, inner_block: `#fff`, }, display: { block: `block`, flex: `flex`, none: `none` }, align: { left: `left`, center: `center`, right: `right`, bottom: `bottom` } } menu = new Proxy(menu, { set(target, prop, val) { if (prop in target) { return true if (typeof val != 'string') { target[prop] = val.toString() } else { return target[prop] } } else { return prop return false throw new Error(`Prop: ${prop} not defined in ${target}`) } } }); /* Create menu HTML code */ const html = ` <!-- <main></main> & <passive></passive> - are not embedded tags in HTML. I use this to denote the significance of the blocks. class="" & id="" - I use to denote blocks, id for everything else --> <!-- Add holder --> <main class="menu--holder"> <main class="menu--body"> <passive id="menu--title"> Menu </passive> <main class="menu--inner-gui"> <passive class="menu--inner-gui-block"> <passive id="menu--inner-gui-block-text"> Your text <input type="checkbox" id="Your id"> </passive> </passive> </main> </main> </main> ` /* Create menu CSS code */ let css = ` <style> /* . - use for class # - use for id */ /* Style for holder menu. */ main.menu--holder { position: ${menu.position.absolute}; top: ${menu.position.top}; left: ${menu.position.left}; width: ${menu.size.width}; height: ${menu.size.height}; display: ${menu.display.none}; } /* Style for body menu. */ main.menu--body { width: 100% !important; height: 100% !important; background: ${menu.colors.background_body_block}; border-radius: ${menu.size.border_radius_body_block}; border: ${menu.size.border_body_block} solid ${menu.colors.border_body_block}; opacity: ${menu.opacity}; } /* Style for title menu */ passive#menu--title { cursor: move; position: ${menu.position.relative}; display: ${menu.display.flex}; width: 92.6% !important; background: ${menu.colors.background_title_block}; color: ${menu.colors.title_text}; align-content: ${menu.align.center}; justify-content: ${menu.align.center}; font-size: ${menu.size.font_size_title_block}; text-align: ${menu.align.center}; height: ${menu.size.height_title_block}; box-shadow: 0px 0px 4px #1a1a1a; flex-wrap: wrap; margin-left: 12px; margin-top: 5px; } /* Style for inner menu gui */ main.menu--inner-gui { margin: 0px 2px; display: ${menu.display.flex}; } /* Style for inner menu gui block */ passive.menu--inner-gui-block { width: 290px; vertical-align: top; height: 330px; margin: 0px 10px 10px 10px; background: rgba(66, 66, 66, 0.61); box-shadow: 0px 0px 4px #1a1a1a; border-radius: 3px; overflow-x: hidden; overflow-y: auto; color: #fff; padding: 10px; margin-top: 10px; } /* Style for text in inner menu */ passive#menu--inner-gui-block-text { color: ${menu.colors.inner_block}; font-size: ${menu.size.font_size_inner_block}; display: ${menu.display.block}; } input[type="checkbox"] { vertical-align: middle; user-select: none; box-sizing: border-box; cursor: pointer; } </style> ` /* Create menu JS code */ let js = ` <script> // If you click outside of the menu location $(document).mouseup(function (e) { let container = $(".menu--holder") if (container.has(e.target).length === 0 && container.css('display') == 'block'){ container.css('opacity', '0.35') } else { container.css('opacity', '1') } }) // Drag element dragElement(document.querySelector((".menu--holder"))) function dragElement(elmnt) { let pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0 if (document.getElementById("menu--title")) { /* if present, the header is where you move the DIV from:*/ document.getElementById("menu--title").onmousedown = dragMouseDown } else { /* otherwise, move the DIV from anywhere inside the DIV:*/ elmnt.onmousedown = dragMouseDown } function dragMouseDown(e) { e = e || window.event // get the mouse cursor position at startup: pos3 = e.clientX pos4 = e.clientY document.onmouseup = closeDragElement // call a function whenever the cursor moves: document.onmousemove = elementDrag } function elementDrag(e) { e = e || window.event // calculate the new cursor position: pos1 = pos3 - e.clientX pos2 = pos4 - e.clientY pos3 = e.clientX pos4 = e.clientY // set the element's new position: elmnt.style.top = (elmnt.offsetTop - pos2) + "px" elmnt.style.left = (elmnt.offsetLeft - pos1) + "px" } function closeDragElement() { /* stop moving when mouse button is released:*/ document.onmouseup = null document.onmousemove = null } } </script> ` /* Add menu in body */ $('body').append(html, css, js) /* Add toggler for menu */ let openMenu = true document.addEventListener("keydown", function(event) { if (event.code == "Escape") { if (openMenu) { openMenu = false $('.menu--holder').css('display', menu.display.block) } else { openMenu = true $('.menu--holder').css('display', menu.display.none) } } })