// ==UserScript== // @name Kour.io Zeph Menu // @match *://kour.io/* // @version 2.0 // @author Happyjeffery // @icon https://i.imgur.com/11sYWVM.png // @description Speed Hack, Invisibility, Instakill, Set Secondary and Melee Weapons, Profiler Modder (Set Class Kills, Stats Setter) // @run-at document-start // @grant unsafeWindow // @namespace https://greasyfork.org/users/1369586 // @downloadURL https://update.greasyfork.icu/scripts/526361/Kourio%20Zeph%20Menu.user.js // @updateURL https://update.greasyfork.icu/scripts/526361/Kourio%20Zeph%20Menu.meta.js // ==/UserScript== (function () { ("use strict"); /*************************************** * Performance.now Speed Hack ***************************************/ const originalPerfNow = performance.now.bind(performance); function updatePerformanceNow(multiplier) { if (multiplier === 1) { performance.now = originalPerfNow; return; } performance.now = new Proxy(originalPerfNow, { apply(target, thisArg, argArray) { try { throw new Error(); } catch (e) { if (!e.stack.includes("invoke_")) { return target.apply(thisArg, argArray) * multiplier; } } return target.apply(thisArg, argArray); }, }); } updatePerformanceNow(1); /*************************************** * Invisibility + Instakill ***************************************/ const Signatures = { damageTaken: "f3 04 c8 02 f5 15 04", updateState: "f3 02 fd 02 f4 03 c8", }; function hexOf(buf) { return Array.from(new Uint8Array(buf)) .map((b) => b.toString(16).padStart(2, "0")) .join(" "); } function shouldBlockDamage(ev) { return ( ev.data instanceof ArrayBuffer && hexOf(ev.data).startsWith(Signatures.damageTaken) && kourInstance.config.Invisible ); } (function hookWS() { const OrigWS = unsafeWindow.WebSocket; unsafeWindow.WebSocket = function (...args) { const ws = new OrigWS(...args); const { addEventListener } = ws; ws.addEventListener = (type, fn, opts) => addEventListener.call( ws, type, type === "message" ? (ev) => shouldBlockDamage(ev) || fn(ev) : fn, opts ); const protoDesc = Object.getOwnPropertyDescriptor( OrigWS.prototype, "onmessage" ); Object.defineProperty(ws, "onmessage", { set(fn) { protoDesc.set.call(this, (ev) => shouldBlockDamage(ev) || fn(ev)); }, get() { return protoDesc.get.call(this); }, }); const originalSend = ws.send; ws.send = function (data) { if (data instanceof ArrayBuffer) { const hex = hexOf(data); if ( hex.startsWith(Signatures.updateState) && kourInstance.config.Instakill ) { for (let i = 0; i < 41; i++) originalSend.call(ws, data); return; } } return originalSend.call(ws, data); }; return ws; }; unsafeWindow.WebSocket.prototype = OrigWS.prototype; })(); class Kour { constructor() { this.config = { Invisible: true, Instakill: false, }; } } const kourInstance = new Kour(); unsafeWindow.kourInstance = kourInstance; /*************************************** * Weapon Changer (Lobby Only!) ***************************************/ const weapons = [ { name: "AK-47", id: "0" }, { name: "Deagle", id: "1" }, { name: "AWP", id: "2" }, { name: "Bayonet", id: "3" }, { name: "Uzi", id: "4" }, { name: "PKM", id: "5" }, { name: "Revolver", id: "6" }, { name: "RPG", id: "7" }, { name: "USPS", id: "8" }, { name: "MP5", id: "9" }, { name: "Shotgun", id: "10" }, { name: "Glock", id: "11" }, { name: "Karambit", id: "12" }, { name: "Knife", id: "13" }, { name: "Scar", id: "14" }, { name: "Minigun", id: "15" }, { name: "Famas", id: "16" }, { name: "Vector", id: "17" }, { name: "Flamethrower", id: "18" }, { name: "Kar98k", id: "19" }, { name: "M4A4", id: "20" }, { name: "Tec-9", id: "21" }, { name: "CZ", id: "22" }, { name: "Berretta92fs", id: "23" }, { name: "AK-109", id: "24" }, { name: "P90", id: "25" }, { name: "Thompson", id: "26" }, { name: "UMP45", id: "27" }, { name: "XM1014", id: "28" }, { name: "Butterfly", id: "29" }, { name: "Laser Gun", id: "30" }, { name: "Bomb", id: "31" }, { name: "Smoke Grenade", id: "32" }, { name: "Molotov", id: "33" }, { name: "Grenade", id: "34" }, { name: "Flashbang", id: "35" }, { name: "Glizzy", id: "36" }, { name: "Axe", id: "37" }, { name: "Bare Fists", id: "38" }, ]; function setSecondaryWeapon(weaponID) { firebase .database() .ref("users/" + firebase.auth().currentUser.uid) .child("overrideWeaponIndexes1") .set(weaponID); showUserDetails( firebase.auth().currentUser.email, firebase.auth().currentUser ); } function setMeleeWeapon(weaponID) { firebase .database() .ref("users/" + firebase.auth().currentUser.uid) .child("overrideWeaponIndexes2") .set(weaponID); showUserDetails( firebase.auth().currentUser.email, firebase.auth().currentUser ); } /*************************************** * Class Kills ***************************************/ const classMap = { Soldier: "class0kills", Hitman: "class1kills", Gunner: "class2kills", Heavy: "class3kills", Rocketeer: "class4kills", Agent: "class5kills", Brawler: "class6kills", Investor: "class7kills", Assassin: "class8kills", Juggernaut: "class9kills", Recon: "class10kills", Pyro: "class11kills", Rayblader: "class15kills", }; function setClassKills() { const existingDialog = document.getElementById("classSelectionDialog"); if (existingDialog) existingDialog.remove(); const classSelectionDialog = document.createElement("div"); classSelectionDialog.id = "classSelectionDialog"; Object.assign(classSelectionDialog.style, { position: "fixed", top: "50%", left: "50%", transform: "translate(-50%, -50%)", backgroundColor: "#5a2d72", color: "#fff", padding: "20px", zIndex: "10002", fontFamily: "Arial, sans-serif", fontSize: "14px", borderRadius: "8px", boxShadow: "0 4px 8px rgba(0,0,0,0.2)", width: "300px", maxHeight: "400px", overflowY: "auto", cursor: "move", userSelect: "none", }); const closeBtn = document.createElement("button"); closeBtn.textContent = "×"; closeBtn.style.position = "absolute"; closeBtn.style.top = "5px"; closeBtn.style.right = "5px"; closeBtn.style.background = "none"; closeBtn.style.border = "none"; closeBtn.style.color = "#fff"; closeBtn.style.fontSize = "16px"; closeBtn.style.cursor = "pointer"; closeBtn.addEventListener("click", () => classSelectionDialog.remove()); classSelectionDialog.appendChild(closeBtn); const dialogTitle = document.createElement("div"); dialogTitle.textContent = "Select Class"; dialogTitle.style.fontWeight = "bold"; dialogTitle.style.fontSize = "18px"; dialogTitle.style.marginBottom = "15px"; dialogTitle.style.textAlign = "center"; classSelectionDialog.appendChild(dialogTitle); const classButtonContainer = document.createElement("div"); classButtonContainer.style.display = "grid"; classButtonContainer.style.gridTemplateColumns = "repeat(2, 1fr)"; classButtonContainer.style.gap = "8px"; Object.keys(classMap).forEach((className) => { const classBtn = document.createElement("button"); classBtn.textContent = className; Object.assign(classBtn.style, { padding: "8px", cursor: "pointer", backgroundColor: "#9b3e9f", border: "none", borderRadius: "5px", fontSize: "13px", color: "#fff", transition: "background-color 0.3s", }); classBtn.addEventListener( "mouseover", () => (classBtn.style.backgroundColor = "#a74cbf") ); classBtn.addEventListener( "mouseout", () => (classBtn.style.backgroundColor = "#9b3e9f") ); classBtn.addEventListener("click", () => { const killsValue = prompt( `Enter kill count for ${className}:`, "10000" ); if (killsValue === null) return; const numKills = Number(killsValue); if (isNaN(numKills)) { alert("Please enter a valid number!"); return; } const dbField = classMap[className]; updateClassKills(dbField, numKills); classSelectionDialog.remove(); }); classButtonContainer.appendChild(classBtn); }); classSelectionDialog.appendChild(classButtonContainer); const cancelBtn = document.createElement("button"); cancelBtn.textContent = "Cancel"; Object.assign(cancelBtn.style, { width: "100%", marginTop: "15px", padding: "8px", cursor: "pointer", backgroundColor: "#444", border: "none", borderRadius: "5px", color: "#fff", }); cancelBtn.addEventListener("click", () => classSelectionDialog.remove()); classSelectionDialog.appendChild(cancelBtn); let pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; classSelectionDialog.onmousedown = dragMouseDown; function dragMouseDown(e) { if (e.target.tagName === "BUTTON" || e.target.tagName === "INPUT") { return; } e = e || window.event; e.preventDefault(); pos3 = e.clientX; pos4 = e.clientY; document.onmouseup = closeDragElement; document.onmousemove = elementDrag; } function elementDrag(e) { e = e || window.event; e.preventDefault(); pos1 = pos3 - e.clientX; pos2 = pos4 - e.clientY; pos3 = e.clientX; pos4 = e.clientY; classSelectionDialog.style.top = classSelectionDialog.offsetTop - pos2 + "px"; classSelectionDialog.style.left = classSelectionDialog.offsetLeft - pos1 + "px"; classSelectionDialog.style.transform = "none"; } function closeDragElement() { document.onmouseup = null; document.onmousemove = null; } document.body.appendChild(classSelectionDialog); } function updateClassKills(classField, killCount) { if (!firebase.auth().currentUser) { console.log("[Zeph Menu] User is not logged in"); return; } const updateData = {}; updateData[classField] = killCount; firebase .database() .ref(`users/${firebase.auth().currentUser.uid}`) .update(updateData) .then(() => { showUserDetails( firebase.auth().currentUser.email, firebase.auth().currentUser ); console.log( `[Zeph Menu] ${classField} successfully updated to ${killCount}` ); showUserDetails( firebase.auth().currentUser.email, firebase.auth().currentUser ); }) .catch((err) => { console.error(`[Zeph Menu] Failed to update ${classField}:`, err); }); } /*************************************** * Stats Changer ***************************************/ function updateKDStats(kills, deaths, score, elo) { if (!firebase.auth().currentUser) { console.log("[Zeph Menu] User is not logged in"); alert("login first!"); return; } const updateData = { totalKills: kills, totalDeaths: deaths, totalScore: score, elo: elo, }; firebase .database() .ref(`users/${firebase.auth().currentUser.uid}`) .update(updateData) .then(() => { showUserDetails( firebase.auth().currentUser.email, firebase.auth().currentUser ); console.log( `[Zeph Menu] Stats updated to Kills:${kills}/Deaths:${deaths}/XP:${score}/Elo:${elo}` ); }) .catch((err) => { console.error("[Zeph Menu] Failed to update stats:", err); }); } function setKDStats() { const kills = prompt("Enter new Total Kills:", "1337"); if (kills === null) return; const parsedKills = Number(kills); const deaths = prompt("Enter new Total Deaths:", "420"); if (deaths === null) return; const parsedDeaths = Number(deaths); const score = prompt("Enter new Total Score:", "10000000"); if (score === null) return; const parsedScore = Number(score); const elo = prompt("Enter new Elo:", "30000"); if (elo === null) return; const parsedElo = Number(elo); if (isNaN(parsedKills) || isNaN(parsedDeaths)) { alert("Please enter valid numbers for kills and deaths."); return; } updateKDStats(parsedKills, parsedDeaths, parsedScore, parsedElo); } (function () { "use strict"; const MIN_VERTICES = 1450; const MAX_VERTICES = 1490; window.espEnabled = true; window.addEventListener("keydown", (e) => { if (e.key.toLowerCase() === "p") { window.espEnabled = !window.espEnabled; const espCheckbox = document.getElementById("espToggle"); if (espCheckbox) espCheckbox.checked = window.espEnabled; console.log(`[Zeph ESP] Toggled ${window.espEnabled ? "ON" : "OFF"}`); } }); const WebGL = WebGL2RenderingContext.prototype; HTMLCanvasElement.prototype.getContext = new Proxy( HTMLCanvasElement.prototype.getContext, { apply(target, thisArgs, args) { return Reflect.apply(...arguments); }, } ); const drawHandler = { apply(target, thisArgs, args) { const program = thisArgs.getParameter(thisArgs.CURRENT_PROGRAM); if (!program.uniforms) { program.uniforms = { vertexCount: thisArgs.getUniformLocation(program, "vertexCount"), espToggle: thisArgs.getUniformLocation(program, "espToggle"), }; } const count = args[1]; if (program.uniforms.vertexCount) { thisArgs.uniform1f(program.uniforms.vertexCount, count); } if (program.uniforms.espToggle) { thisArgs.uniform1f(program.uniforms.espToggle, window.espEnabled ? 1.0 : 0.0); } return Reflect.apply(...arguments); }, }; WebGL.drawElements = new Proxy(WebGL.drawElements, drawHandler); WebGL.drawElementsInstanced = new Proxy( WebGL.drawElementsInstanced, drawHandler ); WebGL.shaderSource = new Proxy(WebGL.shaderSource, { apply(target, thisArgs, args) { let [shader, src] = args; if (src.includes("gl_Position")) { src = src.replace( /void\s+main\s*\(\s*\)\s*\{/, `uniform float vertexCount;\nuniform float espToggle;\nout float vVertexCount;\nvoid main() {\nvVertexCount = vertexCount;\n` ); src = src.replace( /(gl_Position\s*=.+;)/, `$1\nif (espToggle > 0.5 && vertexCount >= ${MIN_VERTICES}.0 && vertexCount <= ${MAX_VERTICES}.0) {\n gl_Position.z = 0.01 + gl_Position.z * 0.1;\n}` ); } if (src.includes("SV_Target0")) { src = src .replace( /void\s+main\s*\(\s*\)\s*\{/, `uniform float espToggle;\nin float vVertexCount;\nvoid main() {` ) .replace( /return;/, `if(espToggle > 0.5 && vVertexCount >= ${MIN_VERTICES}.0 && vVertexCount <= ${MAX_VERTICES}.0 && SV_Target0.a > 0.99) {\n SV_Target0 = vec4(1.0, 0.0, 0.0, 1.0);\n}\nreturn;` ); } args[1] = src; return Reflect.apply(...arguments); }, }); })(); let kpGeneratorInterval = null; let kpGeneratorActive = false; function toggleKpGenerator() { kpGeneratorActive = !kpGeneratorActive; const kpGeneratorBtn = document.getElementById("kpGeneratorBtn"); if (kpGeneratorBtn) { kpGeneratorBtn.textContent = kpGeneratorActive ? "Turn off KP Generator" : "Turn on KP Generator"; if (kpGeneratorActive) { kpGeneratorBtn.style.background = "linear-gradient(135deg, #ff4d4d 0%, #e01b1b 100%)"; } else { kpGeneratorBtn.style.background = "linear-gradient(135deg, #7d5b94 0%, #4a6bab 100%)"; } } if (kpGeneratorActive) { showKpGeneratorInstructions(); kpGeneratorInterval = setInterval(() => { if (!firebase.auth().currentUser) return; firebase.database().ref(`users/${firebase.auth().currentUser.uid}/mission-1claimDate`).remove(); firebase.database().ref(`users/${firebase.auth().currentUser.uid}/mission-1claimed`).remove(); firebase.database().ref(`users/${firebase.auth().currentUser.uid}/mission-1kills`).set("5000"); showUserDetails(firebase.auth().currentUser.email, firebase.auth().currentUser); }, 5000); } else { if (kpGeneratorInterval) { clearInterval(kpGeneratorInterval); kpGeneratorInterval = null; } } } function showKpGeneratorInstructions() { const existingDialog = document.getElementById("kpGeneratorInstructions"); if (existingDialog) existingDialog.remove(); const instructionsDialog = document.createElement("div"); instructionsDialog.id = "kpGeneratorInstructions"; Object.assign(instructionsDialog.style, { position: "fixed", top: "50%", left: "50%", transform: "translate(-50%, -50%)", backgroundColor: "#3a1a52", color: "#fff", padding: "20px", zIndex: "10002", fontFamily: "Arial, sans-serif", fontSize: "14px", borderRadius: "12px", boxShadow: "0 6px 16px rgba(0,0,0,0.4)", width: "340px", maxHeight: "450px", overflowY: "auto", cursor: "move", userSelect: "none", border: "2px solid #9b3e9f", }); const closeBtn = document.createElement("button"); closeBtn.textContent = "×"; closeBtn.style.position = "absolute"; closeBtn.style.top = "10px"; closeBtn.style.right = "10px"; closeBtn.style.background = "none"; closeBtn.style.border = "none"; closeBtn.style.color = "#fff"; closeBtn.style.fontSize = "20px"; closeBtn.style.cursor = "pointer"; closeBtn.style.fontWeight = "bold"; closeBtn.addEventListener("click", () => instructionsDialog.remove()); instructionsDialog.appendChild(closeBtn); const dialogTitle = document.createElement("div"); dialogTitle.textContent = "✨ KP Generator Instructions ✨"; dialogTitle.style.fontWeight = "bold"; dialogTitle.style.fontSize = "20px"; dialogTitle.style.marginBottom = "15px"; dialogTitle.style.textAlign = "center"; dialogTitle.style.textShadow = "0 0 5px rgba(255,255,255,0.3)"; instructionsDialog.appendChild(dialogTitle); const instructionsContent = document.createElement("div"); instructionsContent.innerHTML = `
🚀 How to Use:
  1. 📋 Go to the missions section and claim the Christmas one
  2. ⏱️ Close it and wait 5 seconds
  3. 🔄 Go back
  4. 🔁 Rinse and Repeat
⚠️ Important Notes:
`; instructionsDialog.appendChild(instructionsContent); const okBtn = document.createElement("button"); okBtn.textContent = "Got it!"; Object.assign(okBtn.style, { width: "100%", marginTop: "20px", padding: "10px", cursor: "pointer", backgroundColor: "#9b3e9f", border: "none", borderRadius: "8px", color: "#fff", fontWeight: "bold", fontSize: "15px", transition: "all 0.2s ease", }); okBtn.addEventListener("mouseover", () => { okBtn.style.backgroundColor = "#b64fc8"; okBtn.style.transform = "scale(1.02)"; }); okBtn.addEventListener("mouseout", () => { okBtn.style.backgroundColor = "#9b3e9f"; okBtn.style.transform = "scale(1)"; }); okBtn.addEventListener("click", () => instructionsDialog.remove()); instructionsDialog.appendChild(okBtn); let pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; instructionsDialog.onmousedown = dragMouseDown; function dragMouseDown(e) { if (e.target.tagName === "BUTTON" || e.target.tagName === "INPUT") { return; } e = e || window.event; e.preventDefault(); pos3 = e.clientX; pos4 = e.clientY; document.onmouseup = closeDragElement; document.onmousemove = elementDrag; } function elementDrag(e) { e = e || window.event; e.preventDefault(); pos1 = pos3 - e.clientX; pos2 = pos4 - e.clientY; pos3 = e.clientX; pos4 = e.clientY; instructionsDialog.style.top = instructionsDialog.offsetTop - pos2 + "px"; instructionsDialog.style.left = instructionsDialog.offsetLeft - pos1 + "px"; instructionsDialog.style.transform = "none"; } function closeDragElement() { document.onmouseup = null; document.onmousemove = null; } document.body.appendChild(instructionsDialog); } function createUI() { const menu = document.createElement("div"); menu.id = "zephMenu"; Object.assign(menu.style, { position: "fixed", top: "50px", right: "50px", width: "250px", backgroundColor: "#5a2d72", color: "#fff", padding: "15px", zIndex: "10000", fontFamily: "Arial, sans-serif", fontSize: "16px", borderRadius: "8px", boxShadow: "0 4px 8px rgba(0,0,0,0.2)", display: "none", transition: "all 0.3s ease-in-out", }); const secondaryWeaponMenu = createWeaponMenu("Secondary Weapon", false); const meleeWeaponMenu = createWeaponMenu("Melee Weapon", true); const profileModderMenu = document.createElement("div"); profileModderMenu.id = "zephProfileModderMenu"; Object.assign(profileModderMenu.style, { position: "fixed", top: "50px", right: "320px", width: "200px", backgroundColor: "#5a2d72", color: "#fff", padding: "15px", zIndex: "10000", fontFamily: "Arial, sans-serif", fontSize: "14px", borderRadius: "8px", boxShadow: "0 4px 8px rgba(0,0,0,0.2)", display: "none", transition: "all 0.3s ease-in-out", }); const profileHeader = document.createElement("div"); profileHeader.textContent = "Profile Modder"; profileHeader.style.textAlign = "center"; profileHeader.style.fontWeight = "bold"; profileHeader.style.marginBottom = "10px"; profileModderMenu.appendChild(profileHeader); const setClassKillsBtn = document.createElement("button"); setClassKillsBtn.textContent = "Set Class Kills"; Object.assign(setClassKillsBtn.style, { width: "100%", margin: "5px 0", padding: "8px", cursor: "pointer", backgroundColor: "#9b3e9f", border: "none", borderRadius: "5px", fontSize: "14px", color: "#fff", transition: "background-color 0.3s", }); setClassKillsBtn.addEventListener("click", setClassKills); setClassKillsBtn.addEventListener("mouseover", () => (setClassKillsBtn.style.backgroundColor = "#a74cbf")); setClassKillsBtn.addEventListener("mouseout", () => (setClassKillsBtn.style.backgroundColor = "#9b3e9f")); profileModderMenu.appendChild(setClassKillsBtn); const setKDStatsBtn = document.createElement("button"); setKDStatsBtn.textContent = "Change Stats"; Object.assign(setKDStatsBtn.style, { width: "100%", margin: "5px 0", padding: "8px", cursor: "pointer", backgroundColor: "#9b3e9f", border: "none", borderRadius: "5px", fontSize: "14px", color: "#fff", transition: "background-color 0.3s", }); setKDStatsBtn.addEventListener("click", setKDStats); setKDStatsBtn.addEventListener("mouseover", () => (setKDStatsBtn.style.backgroundColor = "#a74cbf")); setKDStatsBtn.addEventListener("mouseout", () => (setKDStatsBtn.style.backgroundColor = "#9b3e9f")); profileModderMenu.appendChild(setKDStatsBtn); const headerContainer = document.createElement("div"); headerContainer.style.marginBottom = "15px"; headerContainer.style.position = "relative"; const madeByText = document.createElement("div"); madeByText.textContent = "Made by: Happyjeffery & Rasperiiii"; madeByText.style.fontSize = "10px"; madeByText.style.textAlign = "center"; madeByText.style.marginBottom = "5px"; madeByText.style.fontWeight = "bold"; madeByText.style.letterSpacing = "0.5px"; let hue = 0; function updateRGB() { hue = (hue + 1) % 360; madeByText.style.color = `hsl(${hue}, 100%, 70%)`; requestAnimationFrame(updateRGB); } updateRGB(); headerContainer.appendChild(madeByText); const titleContainer = document.createElement("div"); titleContainer.style.display = "flex"; titleContainer.style.alignItems = "center"; titleContainer.style.justifyContent = "center"; titleContainer.style.gap = "8px"; const header = document.createElement("div"); header.textContent = "Zeph Menu"; header.style.fontWeight = "bold"; header.style.fontSize = "20px"; const discordLogo = document.createElement("img"); discordLogo.src = "https://i.ibb.co/sJV6y56H/Zeph-Menu-Discordlogo.png"; discordLogo.alt = "Discord Logo"; discordLogo.style.width = "22px"; discordLogo.style.height = "22px"; discordLogo.style.cursor = "pointer"; discordLogo.style.transition = "all 0.2s ease"; discordLogo.style.borderRadius = "4px"; discordLogo.addEventListener("click", () => window.open("https://discord.gg/3XCAwXdRUh", "_blank")); discordLogo.addEventListener("mouseover", () => { discordLogo.style.transform = "scale(1.1) rotate(2deg)"; discordLogo.style.filter = "brightness(1.2) drop-shadow(0 0 2px rgba(255,255,255,0.3))"; }); discordLogo.addEventListener("mouseout", () => { discordLogo.style.transform = "scale(1) rotate(0deg)"; discordLogo.style.filter = "none"; }); titleContainer.appendChild(header); titleContainer.appendChild(discordLogo); headerContainer.appendChild(titleContainer); menu.appendChild(headerContainer); const kpGeneratorBtn = document.createElement("button"); kpGeneratorBtn.id = "kpGeneratorBtn"; kpGeneratorBtn.textContent = "Turn on KP Generator"; kpGeneratorBtn.style.fontWeight = "bold"; Object.assign(kpGeneratorBtn.style, { width: "100%", margin: "8px 0", padding: "10px", cursor: "pointer", background: "linear-gradient(135deg, #7d5b94 0%, #4a6bab 100%)", border: "none", borderRadius: "5px", fontSize: "14px", color: "#fff", transition: "all 0.3s ease", boxShadow: "0 2px 4px rgba(0,0,0,0.2)", }); kpGeneratorBtn.addEventListener("click", toggleKpGenerator); kpGeneratorBtn.addEventListener("mouseover", () => { kpGeneratorBtn.style.background = "linear-gradient(135deg, #8e6aa5 0%, #5a7bc1 100%)"; kpGeneratorBtn.style.transform = "scale(1.03)"; kpGeneratorBtn.style.boxShadow = "0 4px 8px rgba(0,0,0,0.3)"; }); kpGeneratorBtn.addEventListener("mouseout", () => { kpGeneratorBtn.style.background = "linear-gradient(135deg, #7d5b94 0%, #4a6bab 100%)"; kpGeneratorBtn.style.transform = "scale(1)"; kpGeneratorBtn.style.boxShadow = "0 2px 4px rgba(0,0,0,0.2)"; }); menu.appendChild(kpGeneratorBtn); const profileModderBtn = document.createElement("button"); profileModderBtn.textContent = "Profile Modder"; Object.assign(profileModderBtn.style, { width: "100%", margin: "8px 0", padding: "8px", cursor: "pointer", backgroundColor: "#9b3e9f", border: "none", borderRadius: "5px", fontSize: "14px", color: "#fff", transition: "background-color 0.3s", }); profileModderBtn.addEventListener("click", () => { profileModderMenu.style.display = profileModderMenu.style.display === "none" ? "block" : "none"; secondaryWeaponMenu.style.display = "none"; meleeWeaponMenu.style.display = "none"; }); profileModderBtn.addEventListener("mouseover", () => (profileModderBtn.style.backgroundColor = "#a74cbf")); profileModderBtn.addEventListener("mouseout", () => (profileModderBtn.style.backgroundColor = "#9b3e9f")); menu.appendChild(profileModderBtn); const secondaryWeaponBtn = document.createElement("button"); secondaryWeaponBtn.textContent = "Set Secondary Weapon"; Object.assign(secondaryWeaponBtn.style, { width: "100%", margin: "8px 0", padding: "8px", cursor: "pointer", backgroundColor: "#53277E", border: "none", borderRadius: "5px", fontSize: "14px", color: "#fff", transition: "background-color 0.3s", }); secondaryWeaponBtn.addEventListener("click", () => { secondaryWeaponMenu.style.display = secondaryWeaponMenu.style.display === "none" ? "block" : "none"; meleeWeaponMenu.style.display = "none"; profileModderMenu.style.display = "none"; }); secondaryWeaponBtn.addEventListener("mouseover", () => (secondaryWeaponBtn.style.backgroundColor = "#6a359c")); secondaryWeaponBtn.addEventListener("mouseout", () => (secondaryWeaponBtn.style.backgroundColor = "#53277E")); menu.appendChild(secondaryWeaponBtn); const meleeWeaponBtn = document.createElement("button"); meleeWeaponBtn.textContent = "Set Melee Weapon"; Object.assign(meleeWeaponBtn.style, { width: "100%", margin: "8px 0", padding: "8px", cursor: "pointer", backgroundColor: "#53277E", border: "none", borderRadius: "5px", fontSize: "14px", color: "#fff", transition: "background-color 0.3s", }); meleeWeaponBtn.addEventListener("click", () => { meleeWeaponMenu.style.display = meleeWeaponMenu.style.display === "none" ? "block" : "none"; secondaryWeaponMenu.style.display = "none"; profileModderMenu.style.display = "none"; }); meleeWeaponBtn.addEventListener("mouseover", () => (meleeWeaponBtn.style.backgroundColor = "#6a359c")); meleeWeaponBtn.addEventListener("mouseout", () => (meleeWeaponBtn.style.backgroundColor = "#53277E")); menu.appendChild(meleeWeaponBtn); const speedContainer = document.createElement("div"); speedContainer.style.margin = "15px 0"; const speedLabel = document.createElement("label"); speedLabel.textContent = "Speed Hack Multiplier: "; speedContainer.appendChild(speedLabel); const speedValue = document.createElement("span"); speedValue.textContent = "1x"; speedContainer.appendChild(speedValue); const speedSlider = document.createElement("input"); speedSlider.type = "range"; speedSlider.min = "1"; speedSlider.max = "6"; speedSlider.step = "0.5"; speedSlider.value = "1"; speedSlider.style.width = "100%"; speedSlider.addEventListener("input", function() { let multiplier = parseFloat(speedSlider.value); speedValue.textContent = multiplier.toFixed(1) + "x"; updatePerformanceNow(multiplier); }); speedContainer.appendChild(speedSlider); menu.appendChild(speedContainer); const invisContainer = document.createElement("div"); const invisCheckbox = document.createElement("input"); invisCheckbox.type = "checkbox"; invisCheckbox.id = "invisToggle"; invisCheckbox.checked = kourInstance.config.Invisible; invisCheckbox.addEventListener("change", function() { kourInstance.config.Invisible = this.checked; console.log("Invisibility set to " + this.checked); }); const invisLabel = document.createElement("label"); invisLabel.htmlFor = "invisToggle"; invisLabel.textContent = " Invisible"; invisContainer.appendChild(invisCheckbox); invisContainer.appendChild(invisLabel); menu.appendChild(invisContainer); const espContainer = document.createElement("div"); const espCheckbox = document.createElement("input"); espCheckbox.type = "checkbox"; espCheckbox.id = "espToggle"; espCheckbox.checked = window.espEnabled || false; espCheckbox.addEventListener("change", function() { window.espEnabled = this.checked; console.log("[Zeph ESP] Toggled " + (this.checked ? "ON" : "OFF")); }); const espLabel = document.createElement("label"); espLabel.htmlFor = "espToggle"; espLabel.textContent = " ESP"; espContainer.appendChild(espCheckbox); espContainer.appendChild(espLabel); menu.appendChild(espContainer); const style = document.createElement("style"); style.textContent = ` @keyframes fadeInOut { 0% { opacity: 0; } 10% { opacity: 1; } 90% { opacity: 1; } 100% { opacity: 0; } } @keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } } @keyframes flashRed { 0% { color: #FF3C3C; } 50% { color: #FFFFFF; } 100% { color: #FF3C3C; } } `; document.head.appendChild(style); document.body.appendChild(menu); document.body.appendChild(secondaryWeaponMenu); document.body.appendChild(meleeWeaponMenu); document.body.appendChild(profileModderMenu); } function createWeaponMenu(title, isMelee) { const weaponMenu = document.createElement("div"); weaponMenu.id = `zeph${isMelee ? "Melee" : "Secondary"}WeaponMenu`; Object.assign(weaponMenu.style, { position: "fixed", top: "50px", right: "320px", width: "250px", maxHeight: "400px", overflowY: "auto", backgroundColor: "#5a2d72", color: "#fff", padding: "15px", zIndex: "10000", fontFamily: "Arial, sans-serif", fontSize: "14px", borderRadius: "8px", boxShadow: "0 4px 8px rgba(0,0,0,0.2)", display: "none", transition: "all 0.3s ease-in-out", }); const weaponHeader = document.createElement("div"); weaponHeader.textContent = title; weaponHeader.style.textAlign = "center"; weaponHeader.style.fontWeight = "bold"; weaponHeader.style.marginBottom = "10px"; weaponMenu.appendChild(weaponHeader); weapons.forEach((weapon) => { const btn = document.createElement("button"); btn.textContent = `${weapon.name} (${weapon.id})`; Object.assign(btn.style, { width: "100%", margin: "5px 0", padding: "5px", cursor: "pointer", backgroundColor: "#9b3e9f", border: "none", borderRadius: "5px", fontSize: "12px", color: "#fff", transition: "background-color 0.3s", }); btn.addEventListener("click", () => { if (isMelee) { setMeleeWeapon(weapon.id); } else { setSecondaryWeapon(weapon.id); } weaponMenu.style.display = "none"; }); btn.addEventListener( "mouseover", () => (btn.style.backgroundColor = "#a74cbf") ); btn.addEventListener( "mouseout", () => (btn.style.backgroundColor = "#9b3e9f") ); weaponMenu.appendChild(btn); }); return weaponMenu; } document.addEventListener("keydown", function (e) { if (e.key === "o" && !e.target.matches("input, textarea")) { const menu = document.getElementById("zephMenu"); if (menu) { const isClosing = menu.style.display !== "none"; menu.style.display = isClosing ? "none" : "block"; if (isClosing) { document.getElementById("zephSecondaryWeaponMenu").style.display = "none"; document.getElementById("zephMeleeWeaponMenu").style.display = "none"; document.getElementById("zephProfileModderMenu").style.display = "none"; } } } }); window.addEventListener("load", createUI); })();