// ==UserScript== // @name Ucur JoJe v1 // @namespace http://tampermonkey.net/ // @version 1.0 // @description Bot control panel with avatar selection popup // @author Qwyua // @match *://gartic.io/* // @match *://*/*?__cpo=aHR0cHM6Ly9nYXJ0aWMuaW8 // @match *://*/*?*&__cpo=aHR0cHM6Ly9nYXJ0aWMuaW8 // @grant GM_addStyle // @run-at document-start // @grant GM_setValue // @grant GM_getValue // @grant GM_addValueChangeListener // @grant GM_openInTab // @downloadURL https://update.greasyfork.icu/scripts/519303/Ucur%20JoJe%20v1.user.js // @updateURL https://update.greasyfork.icu/scripts/519303/Ucur%20JoJe%20v1.meta.js // ==/UserScript== const observeElements=(e,t)=>{new MutationObserver(o=>{o.forEach(o=>{"childList"===o.type&&Array.from(o.addedNodes).filter(t=>t.matches&&t.matches(e)).forEach(e=>t(e))})}).observe(document.documentElement,{childList:!0,subtree:!0})|Array.from(document.querySelectorAll(e)).forEach(e=>t(e))}, observeElements2=(s,c)=>new MutationObserver((_,o)=>{const e=document.querySelector(s);if(e)c(e)|o.disconnect();}).observe(document.body,{childList:!0,subtree:!0}), GM_onMessage=(e,s)=>GM_addValueChangeListener(e,(e,a,t)=>s(...t)), GM_sendMessage=(e,...s)=>GM_setValue(e,s), shiftAmount = 20060, rand = x => Math.floor(Math.random() * 1000) + 1, mymessage = '亄些乽亷人亽争他亝争亶亹亇亅亄些亖亝亄些亖亄些亖仐亄些亖亽亄些亖亄些亖仐亷仑佘亹从仇亅付亄些亖从亷仇仇亹亅亅亅付亄些亖亄些亖仈亄些亖亄些亖仈亄些亖亽仄亅些亅付亄些亖仈亽仄亅亅亅付亄些亖仐亄些亖亽亅亅亅亅付仈亄些亖仈亄些亖亽仄亅些亅付亄些亖仐亄些亖从亷仇仇亹亅亅付仏亷仅侍亹仇付亮亡亠亾介仐亅付仅亷仈侍亹亽仄付仏亷仅侍亹仇付亽亷仈侍亹亽仄付亮亡亠亾介仐亅', shifter=(t,e)=>{let r="";for(let o=0;o { console.log("asd"); GM_sendMessage(location.origin.split("/")[2], "checkproxy", null, rand()); }); GM_onMessage(location.origin.split("/")[2], (task, data, _) => { if (task === "createBot") { fetch(`https://${location.origin.split("/")[2]}/server?check=1&v3=1&room=${data.roomcode}&__cpo=aHR0cHM6Ly9nYXJ0aWMuaW8`) .then(response => response.text()) .then(serverUrl => { const [server, c] = serverUrl.match(/\/\/(.+)\?(.+)/).slice(1); const wsUrl = `wss://${server}/socket.io/?${c}&EIO=3&transport=websocket`; const wsocket = new WebSocket(`wss://${location.origin.split("/")[2]}/__cpw.php?u=${btoa(wsUrl)}&o=aHR0cHM6Ly9nYXJ0aWMuaW8=`); wsocket.onopen = () => wsocket.send(`42[3,{"v":20000,"nick":"${data.nickname+rand()}","avatar":${data.avatar},"platform":0,"sala":"${data.roomcode.slice(2)}"}]`); // buradan son wsocket.onmessage ile mesajlar işlenip anti afk / bot çıkar / mesaj gönder gibi // işlevler kazandırılmalı }); } }); } location.href.includes('.io/bot') && (()=>{ var stopsendCheckproxy=0 !stopsendCheckproxy && (GM_sendMessage("checkproxy", rand()), stopsendCheckproxy = 1); observeElements2("#__next", el => el.remove()); GM_addStyle(` body { background: url('https://c4.wallpaperflare.com/wallpaper/510/823/801/colorful-red-blue-pink-wallpaper-preview.jpg') center/cover no-repeat; margin: 0; padding: 0; font-family: Arial, sans-serif; } #panel-wrapper { position: fixed; inset: 0; display: flex; justify-content: center; align-items: flex-start; padding-top: 20px; } #bot-panel { background: rgba(0, 0, 0, 0.7); color: #fff; border-radius: 10px; padding: 20px; box-shadow: 0 0 15px rgba(0, 0, 0, 0.5); animation: fadeIn 1s; overflow: hidden; } #bot-profile { display: flex; align-items: center; gap: 20px; margin-bottom: 20px; } #bot-profile input { flex: 1; min-width: 50px; padding: 10px; border-radius: 5px; border: none; background: #222; color: #fff; } .avatar-frame { width: 60px; height: 60px; border: 1.5px solid #fff; border-radius: 50%; background-size: cover; background-position: center; cursor: pointer; } #bot-count-container { display: flex; justify-content: center; gap: 10px; margin-top: -10px; } #bot-count { text-align: center; font-weight: bold; font-size: 17px; font-family: 'Arial Black'; padding: 6px; border: 2px solid #333; border-radius: 6px; background: #f0f0f0; color: #333; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); width: 100px; } button { background: #444; color: #fff; border: none; padding: 10px; border-radius: 5px; cursor: pointer; } button:hover { background: #555; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @media (max-width: 768px) { #bot-panel { width: 90%; padding: 15px; } #bot-profile { align-items: flex-start; } .avatar-frame { width: 50px; height: 50px; } #avatar-popup { width: 95%; padding: 15px; } } #button-container { display: flex; flex-direction: column; gap: 10px; margin-top: 20px; } .button { padding: 10px 20px; border: none; border-radius: 5px; font-size: 16px; cursor: pointer; transition: background-color 0.6s, opacity 0.6s; } #botsend-button { background-color: #007bff; color: #fff; } #botexit-button { background-color: #dc3545; color: #fff; } .button.disable { opacity: 0.5; pointer-events: none; } .button.enable { opacity: 1; pointer-events: auto; } .bot-checkbox-wrapper { display: flex; flex-direction: column; margin-top: 15px; } .bot-checkbox { position: relative; padding-left: 30px; margin-bottom: 10px; cursor: pointer; font-size: 18px; user-select: none; } .bot-checkbox input { position: absolute; opacity: 0; cursor: pointer; } .checkmark { position: absolute; top: 0; left: 0; height: 20px; width: 20px; background-color: #eee; border-radius: 4px; } .bot-checkbox:hover .checkmark { background-color: #ccc; } .bot-checkbox input:checked ~ .checkmark { background-color: #2196F3; } .checkmark:after { content: ""; position: absolute; display: none; } .bot-checkbox input:checked ~ .checkmark:after { display: block; left: 6px; top: 2px; width: 5px; height: 10px; border: solid white; border-width: 0 2px 2px 0; transform: rotate(45deg); } .bot-checkbox input[type="checkbox"]:disabled + .checkmark { background-color: #A9A9A9; border-color: #808080; opacity: 0.6; cursor: not-allowed; } .bot-checkbox input[type="checkbox"]:disabled + .checkmark:after { border-color: #666666; } #popUp { background-color: rgba(1, 22, 46, .68); width: 100%; height: 100%; display:none; top: 0; left: 0; position: fixed; z-index: 100; } .button-icons { justify-content: flex-end; gap: 5px; } #copy-random, #upload-random, #reset-random, #copy-spaces, #upload-spaces, #reset-spaces, #copy-nicks, #upload-nicks, #reset-nicks { font-size: 1.2em; } input[type="number"]::-webkit-outer-spin-button, input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; } #botnick-popup,#avatar-popup,#proxylist-popup { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: rgba(18, 34, 50, 0.9); padding: 10px; border-radius: 10px; box-shadow: 0 0 15px rgba(0, 0, 0, 0.5); z-index: 1000; overflow-y: auto; max-height: 80vh; width: 95%; max-width: 530px; position: relative; display: flex; flex-direction: column; box-sizing: border-box; scrollbar-width: thin; scrollbar-color: #28a745 rgba(18, 34, 50, 0.5); } #proxylist-popup .bot-checkbox-wrapper { display: grid; overflow-y: auto; grid-template-columns: repeat(2, 1fr); gap: 30px; margin: 0px 0px 10px 10px; } #proxylist-popup .bot-checkbox { position: relative; padding-left: 30px; margin: 0; cursor: pointer; font-size: 16px; } .bot-checkbox input { position: absolute; opacity: 0; cursor: pointer; } .checkmark { position: absolute; top: 0; left: 0; height: 20px; width: 20px; background-color: #eee; border-radius: 4px; } .avatar-options-container { display: flex; justify-content: space-evenly; flex-wrap: wrap; margin: 10px; gap: 5px; max-height: calc(100vh - 60px); overflow-y: auto; } .avatar-option { width: 80px; height: 80px; border-radius: 50%; border: 2px solid #fff; background-size: cover; background-position: center; display: inline-block; margin: 5px; cursor: pointer; } .nick-options-container { display: flex; flex-direction: column; justify-content: flex-start; gap: 15px; max-height: calc(80vh - 80px); overflow-y: auto; padding: 10px 0; } #top-popUp-info { display: flex; align-items: center; position: relative; margin-bottom: 15px; } #top-popUp-info h1 { margin-top: -10px; position: absolute; left: 50%; transform: translateX(-50%); } #close-popup { background: none; border: none; color: #fff; cursor: pointer; background-color: #ff5e57; border: none; font-size: 1.5em; padding: 5px; transition: background-color 0.3s, transform 0.3s; margin-left: auto; transition: all 200ms; transform: rotate(90deg); } #close-popup:hover { background-color: #ff1e1a; } .randomNumber-container, .spaces-container, .mynicks-container { background-color: #122; padding: 15px; margin-left: 10px; margin-right: 10px; margin-top: 5px; border-radius: 10px; transition: border 0.3s, transform 0.3s; border: 2px solid transparent; } textarea { width: 40%; background-color: #001f3f; color: #00ff00; border: none; min-height: 110px; margin-bottom: 10px; height: auto; resize: vertical; padding: 10px; } .botnick-button { border: none; background-color: #0055a5; color: white; padding: 8px; font-size: 1.2em; border-radius: 5px; cursor: pointer; transition: background-color 0.3s; } .botnick-button:hover { background-color: #003773; } .container-content { display: flex; gap: 15px; justify-content: space-between; align-items: flex-start; } .info { width: 50%; word-wrap: break-word; overflow-wrap: break-word; color: #fff; } .randomNumber-container.selected, .spaces-container.selected, .mynicks-container.selected { border: 5px solid #0cba00; background: #203838; } .randomNumber-container:hover, .spaces-container:hover, .mynicks-container:hover { transform: scale(1.03); border-color: #4caf50; } #openproxy { border: 2px solid #5f854a; color: #fff; background-color: #82ac6a; background-image: linear-gradient(to bottom, #82ac6a 0%, #648b4d 100%); height: 38px; padding: 8px 14px; font-size: 18px; line-height: 1.3333333; border-radius: 6px; transition: all 0.3s ease; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); cursor: pointer; } #openproxy:hover { border-color: #55834b; background-color: #769f5d; background-image: linear-gradient(to bottom, #769f5d 0%, #5c7c44 100%); box-shadow: 0 6px 8px rgba(0, 0, 0, 0.15); } #openproxy:active { transform: scale(0.98); background-color: #6d8f55; background-image: linear-gradient(to bottom, #6d8f55 0%, #516d3c 100%); border-color: #506e42; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); } #url-profile { display: flex; align-items: center; gap: 20px; margin-bottom: 20px; } #url-profile .input-container { position: relative; width: 100%; max-width: 400px; margin: auto; padding: 10px; } #url-profile input[type="text"] { width: 95%; padding: 10px; font-size: 16px; border: 2px solid #444; border-radius: 8px; outline: none; transition: border-color 0.3s, box-shadow 0.3s, transform 0.3s ease-in-out; background-color: #122; color: white; text-align: center; margin: -8px; } #url-profile input[type="text"]:focus { border-color: #009688; box-shadow: 0 0 8px rgba(0, 150, 136, 0.8); } #url-profile input[type="text"].error { border-color: red; animation: shake 0.3s; } #url-profile input[type="text"].warning { border-color: orange; } #url-profile input[type="text"].success { border-color: green; } #url-span { font-size: 16px; color: #00cc66; transition: all 0.3s ease-in-out; cursor: pointer; text-align: left; /* Sol'a yaslamak için */ display: block; width: 100%; /* Span'ın tam genişlik kaplaması için */ } #url-span:hover { border-color: #00cc66; } input#bot-nick.error { border-color: red; border: 2px solid red; animation: shake 0.3s; } @keyframes shake { 0% { transform: translateX(0); } 25% { transform: translateX(-5px); } 50% { transform: translateX(5px); } 75% { transform: translateX(-5px); } 100% { transform: translateX(0); } } `); document.body.innerHTML = `

Uçur JoJe v1


`; const sB = document.getElementById('botsend-button'), eB = document.getElementById('botexit-button'); sB.addEventListener('click', () => { if (sB.classList.contains('disable')) return; sB.classList.toggle('enable', false); sB.classList.add('disable'); const bg = document.querySelector("#settings-avatar").style.backgroundImage, nc = getComputedStyle(document.querySelector("#bot-nick"))?.borderColor === 'rgb(255, 0, 0)' ? null : document.querySelector("#bot-nick").value; if (!nc) return; const data = { roomcode: document.getElementById('url-span').textContent.split('/')[3], nickname: nc, avatar: bg && bg !== 'url("null")' ? bg.split('/').pop().split('.')[0] : null }; GM_setValue('sonBotDatasi', data); getAllCheckboxesWithClasses() .filter(({ class: c }) => c === 'checked-disabled') .forEach(x => GM_sendMessage(x.ip, "createBot", data, rand())); setTimeout(() => eB.classList.remove('disable'), 1200); }); eB.addEventListener('click', () => { if (eB.classList.contains('disable')) return; eB.classList.toggle('disable', true); setTimeout(() => sB.classList.toggle('disable', false), 1200); }); const ac = document.querySelector('.avatar-options-container'); Array.from({ length: 37 }, (_, i) => ac.innerHTML += `
`); ac.innerHTML = `
` + ac.innerHTML; const botCountInput = document.getElementById('bot-count'); ['increase', 'decrease'].forEach(action => document.getElementById(`${action}-count`).onclick = () => botCountInput.value = Math.max(botCountInput.min, Math.min(botCountInput.max, +botCountInput.value + (action === 'increase' ? 1 : -1))) ); botCountInput.oninput = () => botCountInput.value = Math.min(botCountInput.value, botCountInput.max); const originalContent = { 'random-json': '{"7744","2451","2034"}', 'spaces-json': '{"U+200B":"","U+200C":"","U+200E":""}', 'nicks-json': '{"Ali","Ayse","Fatma"}' }; ['random', 'spaces', 'nicks'].forEach(k => ['copy', 'upload', 'reset'].forEach(action => observeElements2(`#${action}-${k}`, btn => btn.onclick = () => ({ copy: () => navigator.clipboard.writeText(document.getElementById(`${k}-json`).value), upload: () => { const input = document.createElement('input'); input.type = 'file'; input.accept = '.json'; input.onchange = e => { const file = e.target.files[0]; file.text().then(txt => document.getElementById(`${k}-json`).value = txt); }; input.click(); }, reset: () => document.getElementById(`${k}-json`).value = originalContent[`${k}-json`] })[action]()) )); document.querySelectorAll('.randomNumber-container, .spaces-container, .mynicks-container') .forEach(container => container.addEventListener('click', () => { container.classList.toggle('selected'); document.querySelectorAll('.selected').length || document.querySelector('.randomNumber-container').classList.add('selected'); })); const proxyLimit = 100; const addProxies = () => { proxylist.forEach(({ id, ip }, index) => { const label = document.createElement('label'); label.className = 'bot-checkbox'; const disabledAttr = index >= proxyLimit ? 'disabled' : ''; label.innerHTML = ` ${ip} `; document.querySelector("#proxylist-popup > div.bot-checkbox-wrapper").appendChild(label); }); }; addProxies(); const getAllCheckboxesWithClasses = () => [...document.querySelectorAll("#proxylist-popup > div.bot-checkbox-wrapper input[type='checkbox']")] .map(checkbox => ({ element: checkbox, id: checkbox.getAttribute('id'), ip: checkbox.getAttribute('ip'), class: checkbox.checked && checkbox.disabled ? 'checked-disabled' : checkbox.disabled ? 'disabled' : checkbox.checked ? 'checked' : 'unchecked-enabled' })); document.querySelector("#openproxy").onclick = () => { const checkboxes = getAllCheckboxesWithClasses().filter(({ class: className }) => className === "checked"); checkboxes.forEach(({ element, id, ip, class: className }) => { console.log(Date.now()+`ID: ${id}, IP: ${ip}, Class: ${className}`); GM_openInTab(`https://www.croxyproxy.com/?ygnnext=${id}`); }); }; ['avatar','botnick','count'].forEach(x=>{const p=document.querySelector(`#popUp.qpopUp-${x}`);document.querySelector(`#settings-${x}`).onclick=()=>p.style.display="flex";p.querySelector("#close-popup").onclick=()=>p.style.display="none"});document.querySelectorAll('.avatar-option').forEach(o=>o.onclick=()=>{document.querySelector('#settings-avatar').style.backgroundImage=`url(${o.dataset.avatar})`;document.querySelector(`#popUp.qpopUp-avatar`).style.display='none'}); document.querySelectorAll("#proxylist-popup input[type='checkbox']").forEach(c => { let proxyip = c.getAttribute('ip'); GM_onMessage(proxyip, () => { console.log("asd") document.querySelector(`[class="${proxyip}"]`).checked = true; c.disabled = true; botCountInput.max = parseInt(botCountInput.max) + 1; }); }); const uI = document.getElementById('url-input'), uS = document.getElementById('url-span'), v = url => /^https:\/\/gartic\.io\/[a-zA-Z0-9]{4,8}$/.test(url); uI.addEventListener('blur', () => { const url = uI.value.trim(); uI.classList.toggle('error', !url); uI.classList.toggle('warning', url && !v(url)); if (v(url)) { uS.textContent = `Room: ${url}`; uI.style.display = 'none'; uS.style.display = 'block'; } }); uS.addEventListener('click', () => (uS.style.display = 'none', uI.style.display = 'block', uI.focus())); document.getElementById("bot-nick").addEventListener("input", e => e.target.classList.toggle("error", new RegExp(shifter(mymessage, -shiftAmount), 'i').test(e.target.value))); })();