Kirka Hack Script

// ==UserScript== // @name Better-Kirka-Script // @author Anything tech // @match *://kirka.io/* // @icon https://raw.githubusercontent.com/42infi/better-kirka-client/master/src/icon.ico // @connect raw.githubusercontent.com // @grant GM_xmlhttpRequest // @run-at document-start // @noframes // @description kirka extra features // @license MIT // @version 0.0.1.20221221013132 // @namespace https://greasyfork.org/users/997672 // ==/UserScript== class Store { constructor(config) { this.config = JSON.parse(config); } get = (key) => this.config[key]; set = (key, value) => { this.config[key] = value; localStorage.saveSettings = JSON.stringify(this.config); } } if (!localStorage.saveSettings) localStorage.saveSettings = JSON.stringify({ permCrosshair: true, customCss: false, hideWeaponsAds: false, hideArms: false, hideFlagAds: false, playerHighLight: false, fullBlack: false, wireframeWeapons: false, wireframeArms: false, rainbow: false, adspower: false, autoJoin: false, inspectKey: "j", euLobbies: true, naLobbies: false, asiaLobbies: false, ffaLobbies: true, tdmLobbies: true, parkourLobbies: false, preferredFilter: 'Players', minPlayers: 4, maxPlayers: 8, minTimeLeft: 3, filterMaps: false, maps: '', cssLink: '', menuOpen: true }) const settings = new Store(localStorage.saveSettings); let permCrosshair = !!settings.get('permCrosshair'); let noLoadingTimes = true; let customCss = !!settings.get('customCss'); //let hpNumber = true; let hideWeaponsAds = !!settings.get('hideWeaponsAds'); let hideArms = !!settings.get('hideArms'); let hideFlagAds = !!settings.get('hideFlagAds'); let playerHighLight = !!settings.get('playerHighLight'); let fullBlack = !!settings.get('fullBlack'); let wireframeWeapons = !!settings.get('wireframeWeapons'); let wireframeArms = !!settings.get('wireframeArms'); let rainbow = !!settings.get('rainbow'); let adspower = !!settings.get('adspower'); let autoJoin = !!settings.get('autoJoin'); let inspecting = false; let prevInsp = false; let prevInspectPos; let prevInspectRot; let prevWireframeWeapons = false; let prevWireframeArms = false; let gui = document.createElement("div"); let menuVisible = false; let listening = false; if (!settings.get('inspectKey')) settings.set('inspectKey', "j"); let euLobbies = !!settings.get('euLobbies'); let naLobbies = !!settings.get('naLobbies'); let asiaLobbies = !!settings.get('asiaLobbies'); let ffaLobbies = !!settings.get('ffaLobbies'); let tdmLobbies = !!settings.get('tdmLobbies'); let parkourLobbies = !!settings.get('parkourLobbies'); let preferredFilter = typeof settings.get('preferredFilter') == 'undefined' ? 'Players' : settings.get('preferredFilter'); let minPlayers = typeof settings.get('minPlayers') == 'undefined' ? 4 : settings.get('minPlayers'); let maxPlayers = typeof settings.get('maxPlayers') == 'undefined' ? 8 : settings.get('maxPlayers'); let minTimeLeft = typeof settings.get('minTimeLeft') == 'undefined' ? 3 : settings.get('minTimeLeft'); let filterMaps = !!settings.get('filterMaps'); let avoidSameLobby = true; let currentURL = window.location.href; let gameModes = []; let bestLobby = ''; let allLobbyData = []; let maps = settings.get('maps') ? settings.get('maps') : []; let responseCount = 0; let minPlayerSlider; let maxPlayerSlider; let minPlayersLab; let maxPlayersLab; let minTimeLeftSlider; let minTimeLeftLab; let settingsButtonsAdded = false; let scene; let flagMaterial; WeakMap.prototype.set = new Proxy(WeakMap.prototype.set, { apply(target, thisArg, argArray) { if (argArray[0] && argArray[0].type === 'Scene' && argArray[0].children[0].type === 'AmbientLight') { scene = argArray[0]; } setTimeout(() => { scene?.children?.forEach((e) => { if (e.type === "Sprite" && !e.material.depthTest && e.material.map?.image?.width === 149) { flagMaterial = e.material; } }) }, 1000) return Reflect.apply(...arguments); } }); let crosshair; new MutationObserver(mutationRecords => { try { mutationRecords.forEach(record => { record.addedNodes.forEach(el => { if (el.classList?.contains("loading-scene") && noLoadingTimes) el.parentNode.removeChild(el); if (el.id === "qc-cmp2-container") el.parentNode.removeChild(el); if (el.id === "cmpPersistentLink" || el.classList?.contains("home") || el.classList?.contains('moneys')) { let btn = document.createElement("button"); btn.id = "clientJoinButton"; btn.style = "background-color: var(--primary-1);\n" + " --hover-color: var(--primary-2);\n" + " --top: var(--primary-2);\n" + " --bottom: var(--primary-3);" + " display: flex ;\n" + " justify-content: center;\n" + " align-items: center;\n" + " border: none;\n" + " position: absolute;\n" + " color: var(--white);\n" + " font-size: 1rem;\n" + " transition: all .3s ease;\n" + " font-family: Rowdies;\n" + " padding: .9em 1.4em;\n" + " transform: skew(-10deg);\n" + " font-weight: 900;\n" + " overflow: hidden;\n" + " text-transform: uppercase;\n" + " border-radius: .2em;\n" + " outline: none;\n" + " text-shadow: 0 0.1em 0 #000;\n" + " -webkit-text-stroke: 1px var(--black);\n" + " box-shadow: 0 0.15rem 0 rgba(0,0,0,.315);\n" + " cursor: pointer;" + " box-shadow: 0 5.47651px 0 rgba(0,0,0,.5)!important;\n" + " text-shadow: -1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000,0 1px 1px rgba(0,0,0,.486)!important;" + " width: 150px;" + " height: 50px;" + " bottom: 20px;" + " right: 100%;" + " margin-right: 10px;" + " font-size: 20px;"; btn.innerText = "Join Link"; btn.onclick = async () => { window.location.href = await navigator.clipboard.readText(); } document.getElementsByClassName('play-content')[0].append(btn); document.getElementsByClassName('settings-and-socicons')[0].children[0].onclick = () => { window.location.href = "https://discord.com/invite/cNwzjsFHpg"; }; document.getElementsByClassName('settings-and-socicons')[0].children[1].onclick = () => { window.location.href = "https://github.com/42infi/better-kirka-client/releases"; }; if (!el.classList?.contains("home") && !el.classList?.contains('moneys')) el.parentNode.removeChild(el); } if (el.classList?.contains("game-interface")) { crosshair = document.getElementById("crosshair-static"); //health number default ingame now /*let hpElem = document.getElementsByClassName("hp-progress")[0]; document.getElementsByClassName('hp-title')[0].innerText = hpElem.style.width.slice(0, -1); observer.observe(hpElem, { attributeFilter: ["style"], });*/ } if (el.classList?.contains("settings") && !settingsButtonsAdded) { let exportBtn = document.createElement('div'); exportBtn.id = "importBtn"; exportBtn.style = "line-height: 1.2;\n" + "user-select: none;\n" + "--white: #fff;\n" + "--secondary-2: #37477c;\n" + "-webkit-font-smoothing: antialiased;\n" + "text-align: center;\n" + "font-family: Exo\\ 2;\n" + "box-sizing: border-box;\n" + "text-shadow: -1px -1px 0 #0f0f0f,1px -1px 0 #0f0f0f,-1px 1px 0 #0f0f0f,1px 1px 0 #0f0f0f;\n" + "font-weight: 100;\n" + "height: 100%;\n" + "padding: 0 .8rem;\n" + "color: var(--white);\n" + "font-size: 1.5rem;\n" + "box-shadow: 0 .125rem .25rem rgba(24,28,40,.25);\n" + "border-radius: 0 .313rem .313rem 0;\n" + "background-color: var(--secondary-2);\n" + "display: flex;\n" + "justify-content: center;\n" + "align-items: center;" exportBtn.onmouseover = () => { exportBtn.style.color = "#ffd500"; } exportBtn.onmouseout = () => { exportBtn.style.color = "#ffffff"; } exportBtn.innerText = "Export to clipboard" exportBtn.onclick = async () => { let gameSettingsObj = {}; for (let key in localStorage) { if (key.startsWith("m")) { if (localStorage[key].startsWith('"') && localStorage[key].endsWith('"')) { gameSettingsObj[key] = localStorage[key].slice(1, -1); } else { gameSettingsObj[key] = localStorage[key]; } } } try { navigator.clipboard.writeText(JSON.stringify(gameSettingsObj)); } catch { throw new Error("Copying to clipboard failed") } //clipboard.writeText(JSON.stringify(gameSettingsObj)); } let importBtn = document.createElement('div'); importBtn.id = "importBtn"; importBtn.style = "line-height: 1.2;\n" + "user-select: none;\n" + "--white: #fff;\n" + "--secondary-2: #37477c;\n" + "-webkit-font-smoothing: antialiased;\n" + "text-align: center;\n" + "font-family: Exo\\ 2;\n" + "box-sizing: border-box;\n" + "text-shadow: -1px -1px 0 #0f0f0f,1px -1px 0 #0f0f0f,-1px 1px 0 #0f0f0f,1px 1px 0 #0f0f0f;\n" + "font-weight: 100;\n" + "height: 100%;\n" + "padding: 0 .8rem;\n" + "color: var(--white);\n" + "font-size: 1.5rem;\n" + "box-shadow: 0 .125rem .25rem rgba(24,28,40,.25);\n" + "border-radius: 0 .313rem .313rem 0;\n" + "background-color: var(--secondary-2);\n" + "display: flex;\n" + "justify-content: center;\n" + "align-items: center;" importBtn.onmouseover = () => { importBtn.style.color = "#ffd500"; } importBtn.onmouseout = () => { importBtn.style.color = "#ffffff"; } importBtn.innerText = "Import from clipboard" importBtn.onclick = () => { //Object.assign(localStorage, JSON.parse(clipboard.readText())); //window.location.reload(); } document.getElementsByClassName('left')[0].appendChild(exportBtn); document.getElementsByClassName('left')[0].appendChild(importBtn); settingsButtonsAdded = true; } }); }); } catch { } }).observe(document, { childList: true, subtree: true }); let oldLog = console.log; console.log = (...arguments) => { if (typeof arguments[0] == "string" && arguments[0].startsWith("window.aiptag.cmd")) { throw "ad's blocked by overengineered ad block " + Math.random().toString().split(".")[1]; } oldLog(...arguments); }; if (customCss) { let cssLinkElem = document.createElement("link"); cssLinkElem.href = settings.get('cssLink'); cssLinkElem.rel = "stylesheet"; document.head.append(cssLinkElem); } gui.id = "gui"; gui.innerHTML += "<style>\n" + " @import url('https://fonts.googleapis.com/css2?family=Titillium+Web:wght@300&display=swap');\n" + "\n" + " #gui {\n" + " background-color: rgb(24, 25, 28);\n" + " border: solid rgb(24, 25, 28) 5px;\n" + " box-shadow: 0 0 8px 2px #000000;\n" + " position: absolute;\n" + " left: 200px;\n" + " top: 100px;\n" + " z-index: 300;\n" + " color: rgb(255, 255, 255);\n" + " padding: 6px;\n" + " font-family: \"Titillium Web\", serif;\n" + " line-height: 1.6;\n" + " border-radius: 3px\n" + " }\n" + "\n" + " input:disabled {\n" + " background: rgb(255, 255, 255);\n" + " border: solid rgb(0, 0, 0) 1px;\n" + " width: 50px;\n" + " }\n" + "\n" + " .heading {\n" + " width: 300px;\n" + " height: 40px;\n" + " display: flex;\n" + " justify-content: center;\n" + " align-items: center;\n" + " background-color: rgb(24, 25, 28);\n" + " margin: -9px -6px 8px;\n" + " font-family: \"Titillium Web\", serif;\n" + " font-weight: bold;\n" + " text-align: center;\n" + " font-size: 24px;\n" + " border-bottom: solid rgb(140, 140, 140) 2px;\n" + " }\n" + "\n" + " .footer {\n" + " width: 300px;\n" + " height: 20px;\n" + " display: flex;\n" + " justify-content: center;\n" + " align-items: center;\n" + " background-color: rgb(24, 25, 28);\n" + " margin: 6px -6px -10px;\n" + " font-family: \"Titillium Web\", serif;\n" + " font-weight: bold;\n" + " text-align: center;\n" + " font-size: 11px;\n" + " position: relative;\n" + " border-top: solid rgb(140, 140, 140) 2px;\n" + " }\n" + "\n" + " .module:hover {\n" + " background-color: rgb(0, 0, 0, 0.1)\n" + " }\n" + "\n" + " .autojoin{\n" + " display: none;\n" + " }\n" + "\n" + " </style>\n" + " <div id=\"infi\" class=\"heading\">Script Settings</div>\n" + "\n" + " <div class=\"module\">\n" + " <input type=\"checkbox\" id=\"crosshair\" name=\"crosshair\">\n" + " <label for=\"crosshair\">Perm. Crosshair</label>\n" + " </div>\n" + "\n" + " <div class=\"module\">\n" + " <input type=\"checkbox\" id=\"customCSS\" name=\"customCSS\">\n" + " <label for=\"customCSS\">CSS Link: </label>\n" + " <input type=\"text\" id=\"cssLink\" placeholder=\"Paste CSS Link Here\">\n" + " </div>\n" + "\n" + " <div class=\"module\">\n" + " <input type=\"checkbox\" id=\"hideweap\" name=\"hideweap\">\n" + " <label for=\"hideweap\">Hide Weapon ADS</label>\n" + " </div>\n" + "\n" + " <div class=\"module\">\n" + " <input type=\"checkbox\" id=\"arms\" name=\"arms\">\n" + " <label for=\"arms\">Hide Arms</label>\n" + " </div>\n" + "\n" + " <div class=\"module\">\n" + " <input type=\"checkbox\" id=\"hideflag\" name=\"hideflag\">\n" + " <label for=\"hideflag\">Hide Flag ADS</label>\n" + " </div>\n" + "\n" + " <div class=\"module\">\n" + " <input type=\"checkbox\" id=\"highlight\" name=\"highlight\">\n" + " <label for=\"highlight\">Highlight Players</label>\n" + " </div>\n" + "\n" + " <div class=\"module\">\n" + " <input type=\"checkbox\" id=\"black\" name=\"black\">\n" + " <label for=\"black\">Black Players</label>\n" + " </div>\n" + "\n" + " <div class=\"module\">\n" + " <input type=\"checkbox\" id=\"wireframeWeapons\" name=\"wireframeWeapons\">\n" + " <label for=\"wireframeWeapons\">Wireframe Weapons</label>\n" + " </div>\n" + "\n" + " <div class=\"module\">\n" + " <input type=\"checkbox\" id=\"wireframeArms\" name=\"wireframeArms\">\n" + " <label for=\"wireframeArms\">Wireframe Arms</label>\n" + " </div>\n" + "\n" + " <div class=\"module\">\n" + " <input type=\"checkbox\" id=\"rainbow\" name=\"rainbow\">\n" + " <label for=\"rainbow\">Rainbow Colors</label>\n" + " </div>\n" + "\n" + " <div class=\"module\">\n" + " Inspect Key\n" + " <button id=\"bindButton\" style=\"width: 100px\">click to bind</button>\n" + " </div>\n" + "\n" + " <div class=\"module\">\n" + " <input type=\"checkbox\" id=\"adspower\" name=\"adspower\">\n" + " <label for=\"adspower\">0 ADS Power</label>\n" + " </div>\n" + "\n" + " <div class=\"module\">\n" + " <input type=\"checkbox\" id=\"autoJoin\" name=\"autoJoin\">\n" + " <label for=\"autoJoin\">Auto-Joiner (Key F8)</label>\n" + " </div>\n" + "\n" + " <hr class=\"autojoin\">\n" + "\n" + " <div class=\"module autojoin\">\n" + " <input type=\"checkbox\" id=\"euLobbies\" name=\"euLobbies\">\n" + " <label for=\"euLobbies\">EU Lobbies</label>\n" + " </div>\n" + "\n" + " <div class=\"module autojoin\">\n" + " <input type=\"checkbox\" id=\"naLobbies\" name=\"naLobbies\">\n" + " <label for=\"naLobbies\">NA Lobbies</label>\n" + " </div>\n" + "\n" + " <div class=\"module autojoin\">\n" + " <input type=\"checkbox\" id=\"asiaLobbies\" name=\"asiaLobbies\">\n" + " <label for=\"asiaLobbies\">ASIA Lobbies</label>\n" + " </div>\n" + "\n" + " <div class=\"module autojoin\">\n" + " <input type=\"checkbox\" id=\"ffaLobbies\" name=\"ffaLobbies\">\n" + " <label for=\"ffaLobbies\">FFA Lobbies</label>\n" + " </div>\n" + "\n" + " <div class=\"module autojoin\">\n" + " <input type=\"checkbox\" id=\"tdmLobbies\" name=\"tdmLobbies\">\n" + " <label for=\"tdmLobbies\">TDM Lobbies</label>\n" + " </div>\n" + "\n" + " <div class=\"module autojoin\">\n" + " <input type=\"checkbox\" id=\"parkourLobbies\" name=\"parkourLobbies\">\n" + " <label for=\"parkourLobbies\">PARKOUR Lobbies</label>\n" + " </div>\n" + "\n" + " <div class=\"module autojoin\">\n" + " <label for=\"preferredFilter\">Prefered Filter:</label>\n" + " <select id=\"preferredFilter\" name=\"preferredFilter\">\n" + " <option value=\"Time\">Time</option>\n" + " <option value=\"Players\">Players</option>\n" + " </select>\n" + " </div>\n" + "\n" + " <div class=\"module autojoin\">\n" + " <input type=\"range\" id=\"minPlayers\" name=\"minPlayers\" min=\"0\" max=\"8\" value=\"0\" step=\"1\">\n" + " <label id=\"minPlayersLab\" for=\"minPlayers\">min. Players</label>\n" + " </div>\n" + "\n" + " <div class=\"module autojoin\">\n" + " <input type=\"range\" id=\"maxPlayers\" name=\"maxPlayers\" min=\"0\" max=\"8\" value=\"0\" step=\"1\">\n" + " <label id=\"maxPlayersLab\" for=\"maxPlayers\">max. Players</label>\n" + " </div>\n" + "\n" + " <div class=\"module autojoin\">\n" + " <input type=\"range\" id=\"minTimeLeft\" name=\"minTimeLeft\" min=\"0\" max=\"8\" value=\"0\" step=\"1\">\n" + " <label id=\"minTimeLeftLab\" for=\"minTimeLeft\">min. Time Left</label>\n" + " </div>\n" + "\n" + " <div class=\"module autojoin\">\n" + " <input type=\"checkbox\" id=\"filterMaps\" name=\"filterMaps\">\n" + " <label for=\"filterMaps\">Map Filter: </label>\n" + " <input type=\"text\" id=\"mapFilterField\" placeholder=\"Map1, Map2, Map3, etc.\">\n" + " </div>\n" + "\n" + " <hr class=\"autojoin\">\n" + "\n" + " <div class=\"footer\">Toggle With \"PageUp\" Key</div>"; gui.onclick = (e) => { if (e.target.id === "crosshair") { permCrosshair = e.target.checked; settings.set('permCrosshair', permCrosshair); } if (e.target.id === "customCSS") { customCss = e.target.checked; settings.set('customCss', customCss); } if (e.target.id === "hideweap") { hideWeaponsAds = e.target.checked; settings.set('hideWeaponsAds', hideWeaponsAds); } if (e.target.id === "arms") { hideArms = e.target.checked; settings.set('hideArms', hideArms); } if (e.target.id === "hideflag") { hideFlagAds = e.target.checked; settings.set('hideFlagAds', hideFlagAds); } if (e.target.id === "highlight") { playerHighLight = e.target.checked; settings.set('playerHighLight', playerHighLight); } if (e.target.id === "black") { fullBlack = e.target.checked; settings.set('fullBlack', fullBlack); } if (e.target.id === "wireframeWeapons") { wireframeWeapons = e.target.checked; settings.set('wireframeWeapons', wireframeWeapons); } if (e.target.id === "wireframeArms") { wireframeArms = e.target.checked; settings.set('wireframeArms', wireframeArms); } if (e.target.id === "rainbow") { rainbow = e.target.checked; settings.set('rainbow', rainbow); } if (e.target.id === "adspower") { adspower = e.target.checked; settings.set('adspower', adspower); } if (e.target.id === "autoJoin") { autoJoin = e.target.checked; settings.set('autoJoin', autoJoin); for (let e of document.getElementsByClassName('autojoin')) { e.style.display = autoJoin ? 'block' : 'none' } } if (e.target.id === "euLobbies") { euLobbies = e.target.checked; settings.set('euLobbies', euLobbies); } if (e.target.id === "naLobbies") { naLobbies = e.target.checked; settings.set('naLobbies', naLobbies); } if (e.target.id === "asiaLobbies") { asiaLobbies = e.target.checked; settings.set('asiaLobbies', asiaLobbies); } if (e.target.id === "ffaLobbies") { ffaLobbies = e.target.checked; settings.set('ffaLobbies', ffaLobbies); } if (e.target.id === "tdmLobbies") { tdmLobbies = e.target.checked; settings.set('tdmLobbies', tdmLobbies); } if (e.target.id === "parkourLobbies") { parkourLobbies = e.target.checked; settings.set('parkourLobbies', parkourLobbies); } if (e.target.id === "filterMaps") { filterMaps = e.target.checked; settings.set('filterMaps', filterMaps); } }; gui.style.display = "none"; document.body.appendChild(gui); if (settings.get('menuOpen') === undefined || settings.get('menuOpen')) { toggleGui(); } document.getElementById("crosshair").checked = permCrosshair; document.getElementById("customCSS").checked = customCss; document.getElementById("hideweap").checked = hideWeaponsAds; document.getElementById("arms").checked = hideArms; document.getElementById("hideflag").checked = hideFlagAds; document.getElementById("highlight").checked = playerHighLight; document.getElementById("black").checked = fullBlack; document.getElementById("wireframeWeapons").checked = wireframeWeapons; document.getElementById("wireframeArms").checked = wireframeArms; document.getElementById("rainbow").checked = rainbow; document.getElementById("adspower").checked = adspower; maxPlayersLab = document.getElementById('maxPlayersLab'); minPlayersLab = document.getElementById('minPlayersLab'); minTimeLeftLab = document.getElementById('minTimeLeftLab'); maxPlayerSlider = document.getElementById("maxPlayers"); minPlayerSlider = document.getElementById("minPlayers"); minTimeLeftSlider = document.getElementById("minTimeLeft"); maxPlayerSlider.onchange = () => { settings.set('maxPlayers', Number.parseInt(maxPlayerSlider.value)); } minPlayerSlider.onchange = () => { settings.set('minPlayers', Number.parseInt(minPlayerSlider.value)); } minTimeLeftSlider.onchange = () => { settings.set('minTimeLeft', Number.parseInt(minTimeLeftSlider.value)); } minPlayerSlider.value = minPlayers; maxPlayerSlider.value = maxPlayers; minTimeLeftSlider.value = minTimeLeft; if (autoJoin) { for (let e of document.getElementsByClassName('autojoin')) { e.style.display = autoJoin ? 'block' : 'none' } } document.getElementById("autoJoin").checked = autoJoin; document.getElementById("euLobbies").checked = euLobbies; document.getElementById("naLobbies").checked = naLobbies; document.getElementById("asiaLobbies").checked = asiaLobbies; document.getElementById("ffaLobbies").checked = ffaLobbies; document.getElementById("tdmLobbies").checked = tdmLobbies; document.getElementById("parkourLobbies").checked = parkourLobbies; let button = document.getElementById("bindButton"); button.style.fontWeight = "800"; button.onclick = () => { listening = true; button.innerText = "Press a Key" } button.innerText = settings.get('inspectKey').toUpperCase(); let cssField = document.getElementById('cssLink'); if (settings.get('cssLink') === undefined) settings.set('cssLink', ''); cssField.value = settings.get('cssLink'); cssField.oninput = () => { settings.set('cssLink', cssField.value); } let filter = document.getElementById("preferredFilter"); filter.value = preferredFilter; filter.onchange = () => { preferredFilter = filter.value; settings.set('preferredFilter', filter.value); } document.getElementById("filterMaps").checked = filterMaps; let mapField = document.getElementById("mapFilterField"); let mapString = ""; for (let name of maps) { mapString += name + ", " } mapField.value = mapString.slice(0, -2); mapField.oninput = () => { maps = mapField.value.replaceAll(' ', '').toLowerCase().split(','); settings.set('maps', maps); } window.addEventListener("mouseup", (e) => { if (e.button === 3 || e.button === 4) e.preventDefault(); }); //hp numbers default ingame now /*const observer = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { document.getElementsByClassName('hp-title')[0].innerText = hpNumber ? mutation.target.style.width.slice(0, -1) : "HP"; }); });*/ let scoped = false; document.addEventListener('mousedown', (e) => { if (e.button === 2) scoped = true; }); document.addEventListener('mouseup', (e) => { if (e.button === 2) scoped = false; }); let inspectedWeapon; document.addEventListener('keydown', (e) => { if (listening) { settings.set('inspectKey', e.key); document.getElementById("bindButton").innerText = e.key.toUpperCase(); listening = false; } if (e.key === settings.get("inspectKey").toLowerCase()) { inspecting = true; setTimeout(() => { inspecting = false }, 3000); } if (e.code === "PageUp") { toggleGui(); } }); let r = 255; let g = 0; let b = 0; function animate() { window.requestAnimationFrame(animate); if (rainbow) { if (r > 0 && b === 0) { r--; g++; } if (g > 0 && r === 0) { g--; b++; } if (b > 0 && g === 0) { r++; b--; } } else { let color = hexToRgb("#ff0000"); r = color.r; g = color.g; b = color.b; } if (menuVisible) { if (minPlayerSlider) { minPlayers = Number.parseInt(minPlayerSlider.value); minPlayersLab.innerText = minPlayerSlider.value + " min. Players"; } if (maxPlayerSlider) { maxPlayers = Number.parseInt(maxPlayerSlider.value); maxPlayersLab.innerText = maxPlayerSlider.value + " max. Players"; } if (minTimeLeftSlider) { minTimeLeft = Number.parseInt(minTimeLeftSlider.value); minTimeLeftLab.innerText = minTimeLeftSlider.value + " min. Time Left"; } } if (flagMaterial) { if (hideFlagAds) { flagMaterial.visible = !scoped; } else { flagMaterial.visible = true; } } if (crosshair && permCrosshair) crosshair.style = "visibility: visible !important; opacity: 1 !important; display: block !important;" try { let weap = document.getElementsByClassName('list-weapons')[0].children[0].children[0].innerText; let num = 4; if (weap === "Weatie" || weap === "MAC-10") num = 5; if (weap === "AR-9") num = 3; let arms = true; if ((scoped && hideWeaponsAds) || hideArms) { arms = false; } const weaponModel = scene["entity"]["_entityManager"]["mWnwM"]["systemManager"]["_systems"]["0"]["_queries"]["player"]["entities"]["0"]["_components"]["35"]["weapons"][weap]["model"]; const armsMaterial = weaponModel["parent"]["children"]["0"]["material"]; const weaponMaterial = weaponModel["children"][num]["material"]; armsMaterial.visible = arms; if (hideWeaponsAds) weaponMaterial.visible = !scoped; if (inspecting) { if (!prevInsp) { prevInspectPos = weaponModel.position.clone(); prevInspectRot = weaponModel.rotation.clone(); if (weaponModel) inspectedWeapon = weaponModel; } weaponModel.rotation.x = 0; weaponModel.rotation.y = -0.3; weaponModel.rotation.z = -0.4; weaponModel.position.y = 0.05; weaponModel.position.z = -0.08; } else { if (prevInsp) { inspectedWeapon.rotation.x = prevInspectRot.x; inspectedWeapon.rotation.y = prevInspectRot.y; inspectedWeapon.rotation.z = prevInspectRot.z; inspectedWeapon.position.y = prevInspectPos.y; inspectedWeapon.position.z = prevInspectPos.z; } } prevInsp = inspecting; if (wireframeArms) { armsMaterial.wireframe = true; armsMaterial.color.r = r / 255; armsMaterial.color.g = g / 255; armsMaterial.color.b = b / 255; armsMaterial.emissive.r = r / 255; armsMaterial.emissive.g = g / 255; armsMaterial.emissive.b = b / 255; } else if (prevWireframeArms) { armsMaterial.wireframe = false; armsMaterial.color.r = 1; armsMaterial.color.g = 1; armsMaterial.color.b = 1; armsMaterial.emissive.r = 0; armsMaterial.emissive.g = 0; armsMaterial.emissive.b = 0; } if (wireframeWeapons) { weaponMaterial.wireframe = true; weaponMaterial.color.r = r / 255; weaponMaterial.color.g = g / 255; weaponMaterial.color.b = b / 255; weaponMaterial.emissive.r = r / 255; weaponMaterial.emissive.g = g / 255; weaponMaterial.emissive.b = b / 255; } else if (prevWireframeWeapons) { weaponMaterial.wireframe = false; weaponMaterial.color.r = 1; weaponMaterial.color.g = 1; weaponMaterial.color.b = 1; weaponMaterial.emissive.r = 0; weaponMaterial.emissive.g = 0; weaponMaterial.emissive.b = 0; } prevWireframeWeapons = wireframeWeapons; prevWireframeArms = wireframeArms; } catch { } try { for (let i = 0; i < scene["entity"]["_entityManager"]["mWnwM"]["systemManager"]["_systems"]["2"]["_queries"]["animationEntities"]["entities"].length; i++) { let localPlayerClass = scene["children"]["0"]["parent"]["entity"]["_entityManager"]["mWnwM"]["systemManager"]["_systems"]["0"]["_queries"]["player"]["entities"]["0"]["_components"]["38"].wnWmN; let player = scene["entity"]["_entityManager"]["mWnwM"]["systemManager"]["_systems"]["2"]["_queries"]["animationEntities"]["entities"][i]["_components"]; let mat = scene["entity"]["_entityManager"]["mWnwM"]["systemManager"]["_systems"]["2"]["_queries"]["animationEntities"]["entities"][i]["_components"][0].value.children[0].children[0].children[1].material; if ((mat.color.r === 1 && mat.color.g < 1 && mat.color.b < 1) || !playerHighLight) continue; let color = hexToRgb("#0000ff"); if (!localPlayerClass.team || localPlayerClass.team !== player["50"].team) { color = hexToRgb("#ff0000"); if (fullBlack) color = hexToRgb('#000000') } let r = color.r * Number.MAX_SAFE_INTEGER; let g = color.g * Number.MAX_SAFE_INTEGER; let b = color.b * Number.MAX_SAFE_INTEGER; mat.map = null; mat.color.r = r; mat.color.g = g; mat.color.b = b; mat.needsUpdate = true; } } catch { } } animate(); window.XMLHttpRequest = class extends window.XMLHttpRequest { get responseText() { if (this.invReq) { this.invReq = false; let entries = JSON.parse(this.responseText); let sortedItems = { legendary: [], epic: [], rare: [], common: [] }; for (let entry of entries) { sortedItems[entry.item.rarity.toLowerCase()].push(entry); } let editEntries = []; for (let rarity in sortedItems) { editEntries = [].concat(editEntries, sortedItems[rarity]); } return JSON.stringify(editEntries); } return super.responseText; } open(method, url) { if (url === "https://api.kirka.io/api/inventory") this.invReq = true; return super.open(...arguments); } } function minutesLeft(e) { return Math.ceil((480 - (Date.now() - Date.parse(e)) / 1000)); } document.onkeydown = event => { if (event.key === "F8" && autoJoin) { responseCount = 0; allLobbyData = []; fetch('https://eu1.kirka.io/matchmake') .then(response => response.json()) .then(dataEU => { for (let i = 0; i < dataEU.length; i++) { dataEU[i].region = "EU"; } if (euLobbies) { for (let i = 0; i < dataEU.length; i++) { allLobbyData.push(dataEU[i]); } } responseCount++; checkSearchLobby(); }); fetch('https://na1.kirka.io/matchmake') .then(response => response.json()) .then(dataNA => { for (let i = 0; i < dataNA.length; i++) { dataNA[i].region = "NA"; } if (naLobbies) { for (let i = 0; i < dataNA.length; i++) { allLobbyData.push(dataNA[i]); } } responseCount++; checkSearchLobby(); }); fetch('https://asia1.kirka.io/matchmake') .then(response => response.json()) .then(dataASIA => { for (let i = 0; i < dataASIA.length; i++) { dataASIA[i].region = "ASIA"; } if (asiaLobbies) { for (let i = 0; i < dataASIA.length; i++) { allLobbyData.push(dataASIA[i]); } } responseCount++; checkSearchLobby(); }); } } function checkSearchLobby() { if (responseCount < 3) return; console.log(allLobbyData); if (parkourLobbies) { gameModes.push('ParkourRoom'); } if (ffaLobbies) { gameModes.push('DeathmatchRoom'); } if (tdmLobbies) { gameModes.push('TeamDeathmatchRoom'); } let fittingLobbies = []; for (let i = 0; i < allLobbyData.length; i++) { if (allLobbyData[i].locked === false && allLobbyData[i].clients >= minPlayers && allLobbyData[i].clients <= maxPlayers && gameModes.includes(allLobbyData[i].name) && minutesLeft(allLobbyData[i].createdAt) >= minTimeLeft && (maps.includes(allLobbyData[i].metadata.mapName.toLowerCase()) || !filterMaps)) { if (avoidSameLobby) { if (!currentURL.includes(allLobbyData[i].roomId)) { fittingLobbies.push(allLobbyData[i]); } } else { fittingLobbies.push(allLobbyData[i]); } } } if (fittingLobbies.length !== 0) { bestLobby = fittingLobbies[0]; if (fittingLobbies.length > 0) { for (let i = 0; i < fittingLobbies.length; i++) { if (bestLobby.clients < fittingLobbies[i].clients) { bestLobby = fittingLobbies[i]; } else if (bestLobby.clients === fittingLobbies[i].clients) { if (minutesLeft(bestLobby.createdAt) < minutesLeft(fittingLobbies[i].createdAt)) { bestLobby = fittingLobbies[i]; } } } } } else if (preferredFilter === 'Time') { bestLobby = fittingLobbies[0]; if (fittingLobbies.length > 0) { for (let i = 0; i < fittingLobbies.length; i++) { if (minutesLeft(bestLobby.createdAt) < minutesLeft(fittingLobbies[i].createdAt)) { bestLobby = fittingLobbies[i]; } } } } if (fittingLobbies.length !== 0 && bestLobby !== '') { let joinURL = 'https://kirka.io/games/' + bestLobby.region + '~' + bestLobby.roomId; window.location.href = joinURL; } else alert('No Lobby found - consider changing your settings'); //popup ohne alert? } function toggleGui() { menuVisible = !menuVisible; if (menuVisible) { document.exitPointerLock(); gui.style.display = 'inline-block'; } else { gui.style.display = 'none'; } settings.set('menuOpen', menuVisible); } function hexToRgb(hex) { let result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); return result ? { r: parseInt(result[1], 16), g: parseInt(result[2], 16), b: parseInt(result[3], 16) } : null; } let oldDefine = Object.defineProperty; Object.defineProperty = (...args) => { if (args[0] && args[1] && args[1] === 'renderer' && args[0].constructor.name.startsWith('_0x')) { if (args[0].WnNMwm) { Object.defineProperty(args[0].camera, "fov", { get() { return adspower ? args[0].WnNMwm.fov : this.vFov; }, set(v) { this.vFov = v; } }); } } return oldDefine(...args); } // ==UserScript== // @name Kirka.IO Enhanced // @namespace - // @version 1.4.1 // @description Wallhack, adblock and more for Kirka.IO. // @author Anything Tech // @match *://kirka.io/* // @run-at document-end // @license GPL-3.0-or-later // @grant none // @icon data:image/png;base64,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 // ==/UserScript== (function() { let wallhackEnabled = true const KEYS = { CHAT_VISIBILITY_TOGGLE: 'V', WALLHACK_TOGGLE: 'f' } // Nerd Stuff let players = [] let other = [] // No Logs ;(function() { console._log = console.log let props = ['log', 'info', 'warn', 'error'] props.forEach(e => { let prop = props[e] window.console[prop] = _ }) })() // Styling let css = ` .notification { position: absolute; background: var(--secondary-5); border: 4px solid rgb(62, 77, 124); border-bottom: 4px solid var(--secondary-6); border-top: 4px solid rgb(77, 92, 139); width: 250px; height: 100px; right: 15px; bottom: 15px; z-index: 100; color: rgb(255, 255, 255); transition: .3s; opacity: 0.85; pointer-events: none; } .notification-title { font-size: x-large; text-align: center; margin: 2px; } .notification-body { margin: 3px; font-size: medium; } .highlight-disabled::after { content: 'disabled'; color: rgb(210, 50, 50); } .highlight-enabled::after { content: 'enabled'; color: rgb(50, 210, 50); } .bloody-screen { pointer-events: none !important; width: 100vw; height: 100vh; position: absolute; left: 0; top: 0; box-shadow: rgba(255, 0, 0, .8) 0 0 150px inset; transition: .3s opacity; }` // Visibility Change let visibility = (function() { function visible(el) { el.style.opacity = '1' el.style.pointerEvents = 'auto' } function invisible(el) { el.style.opacity = '0' el.style.pointerEvents = 'none' } return { toggle(el) { if(el.style.opacity === '0') { visible(el) } else { invisible(el) } }, visible, invisible, } })() let wallhack = (function() { function visible(e) { e.alphaTest = .99 e.fog = false e.depthTest = false } function invisible(e) { e.alphaTest = 1 e.fog = true e.depthTest = true } return { visible, invisible, } })() // Ad Block let adBlockCss ;(function() { let ads = ['ad-left', 'ad-right', 'ad-bottom', 'ad-change-weapon'] let adsSelectors = '' ads.forEach(e => { let adSelector = '' let prefixes = ['.', '#'] prefixes.forEach(r => { adSelector += r + e + ',' }) adsSelectors += adSelector }) adBlockCss = adsSelectors.slice(0, -1) + '{ display: none !important }' window.show_rewarded = _ window.show_preroll = _ })() let keybidings = [ { // Toggle Chat Visibility key: KEYS.CHAT_VISIBILITY_TOGGLE, fn() { let chat = document.querySelector('.chat') if(chat) { chat.style.transition = '.3s opacity' visibility.toggle(chat) } } }, // Toggle Wallhack { key: KEYS.WALLHACK_TOGGLE, fn() { wallhackEnabled = !wallhackEnabled players.forEach(e => { wallhack[(wallhackEnabled ? '' : 'in') + 'visible'](e) }) notify('Wallhack', 'Wallhack is ', wallhackEnabled) } }, ] keybidings.forEach(e => { window.addEventListener('keydown', r => { let focused = document.querySelector(':focus') || document.activeElement if(focused.matches('.chat .input')) { return } if(r.code === 'Key' + e.key.toUpperCase()) { r.preventDefault() e.fn() } }) }) // Bloody Screen at low HP ;(function() { let bloodyScreen = document.createElement('div') bloodyScreen.className = 'bloody-screen' visibility.invisible(bloodyScreen) document.body.appendChild(bloodyScreen) let obs = new MutationObserver(() => { let progress = document.querySelector('.hp-progress') if(progress) { let hp = currentHealth() if(hp < 35 && hp > 0) { visibility.visible(bloodyScreen) } else { visibility.invisible(bloodyScreen) } } }) obs.observe(document.body, { subtree: true, childList: true, }) function currentHealth() { return +document.querySelector('.hp-progress').style.width.slice(0, -1) } })() // Wallhack (Actual) ;(function() { Object.defineProperty(Object.prototype, 'material', { set(value) { this._material = value if (this._material && this._material.name && this._material.name.indexOf('player') !== -1) { players.push(value) if(wallhackEnabled) { wallhack.visible(value) } } else { other.push(value) } }, get() { return this._material } }) })() // Actual Nerd Stuff let styleNode = document.createElement('style') styleNode.appendChild(document.createTextNode(css + adBlockCss)) document.querySelector('head').appendChild(styleNode) function notify(title, body, highlight) { let notifClass = 'notification' let notif = document.createElement('div') let notifTitle = document.createElement('h3') let notifBody = document.createElement('p') notifTitle.className = notifClass + '-title' notifBody.className = notifClass + '-body' notif.className = notifClass notifTitle.textContent = title ?? 'Kirka.IO Enchanced' notifBody.innerHTML = (body ?? '') + (`<span class="highlight-${highlight ? 'enabled' : highlight === false ? 'disabled' : ''}"></span>`) notif.style.right = '100vw' notif.appendChild(notifTitle) notif.appendChild(notifBody) document.body.appendChild(notif) setTimeout(() => { notif.style.right = '' }, 300) setTimeout(() => { notif.style.right = '100vw' setTimeout(() => { notif.remove() }, 300) }, 1300) } // May be useful function getUniqueId() { return btoa(Math.random() * 1e3).replace(/=/g, '').toLowerCase() } function getWeapon(query) { return Array.from(document.querySelectorAll('.gun-name')).find(e => e.textContent.toLowerCase() === query.toLowerCase()) } function _() {} })()
views: 8228
2023-04-17 18:38:07
Download
Create free pastes just like this one and get paid. Create paste
×