Fake kick

Fake kick at

// ==UserScript==

// @name           Fake kick

// @name:tr        Fake kick

// @name:az        Fake kick

// @description    Fake kick at

// @description:tr Fake kick at

// @description:az Fake kick at

// @version        1.0

// @author         AsadovSc

// @license        

// @match          *://gartic.io/*

// @match          *://*/*?__cpo=aHR0cHM6Ly9nYXJ0aWMuaW8

// @icon           https://gartic.io/static/images/avatar/svg/0.svg

// @grant          GM_setValue

// @grant          GM_getValue

// @grant          GM_addValueChangeListener

// @grant          GM_addStyle

// @namespace https://greasyfork.org/users/1220697



// ==/UserScript==

function fa(hv){return document.querySelectorAll(hv)}

if(window.location.href.indexOf("gartic.io")!=-1){

    let readyc=0,botc=0,otoeven=0,roomusers=[]

    let WebSocket=window.WebSocket

    window.ginterval=0

    window.selectlevel=-1

    let originalSend = WebSocket.prototype.send,setTrue=false;

    window.wsObj={}

    console.log("running")

    WebSocket.prototype.send=function(data){

        originalSend.apply(this, arguments)

        if(Object.keys(window.wsObj).length==0){window.wsObj=this;window.eventAdd()}

    };

    function updatespeckicks(){

        f(".userkickmenu").innerHTML=""

        roomusers.forEach(user=>{

            user.nick.split("‏").join("")!="RED"?f(".userkickmenu").innerHTML+=`<input type="submit" class="kickmenubtn" value="`+user.nick+`" onclick="window.postMessage('kickuser.`+user.id+`','*')">`:0

        })

    }

    window.eventAdd=()=>{

        if(!setTrue){

            setTrue=1

            window.wsObj.addEventListener("message",(msg)=>{

                if(msg.data.indexOf('42["5"')!=-1){

                    let objlist=JSON.parse('["5"'+msg.data.split('42["5"')[1])

                    objlist[5].forEach(item=>{roomusers.push(item)})

                    updatespeckicks()

                    window.addEventListener("message",function(event){

        if(typeof(event.data)==="string"){

            if(event.data.indexOf("kickuser.")!=-1){

                let userid=event.data.split("kickuser.")[1]

            let objlist=JSON.parse('["5"'+msg.data.split('42["5"')[1])

            var longID = objlist[1]

            var id = objlist[2]

            window.wsObj.send('42[45,'+id+',["'+userid+'",true]]')

            window.wsObj.send('42[45,'+id+',["'+userid+'",false]]')

            }

        }

    })

                }

                if(msg.data.indexOf('42["23"')!=-1){

                    let user=JSON.parse("{"+msg.data.split("{")[1].split("}")[0]+"}")

                    roomusers.push(user)

                    updatespeckicks()

                    document.querySelector("body > div:nth-child(19) > input:nth-child(12)").value = user.nick

                }

                if(msg.data.indexOf('42["24"')!=-1){

                    let user=msg.data.split(",")[1].split('"')[1]

                    for(let i=0;i<roomusers.length;i++){

                        typeof(roomusers[i].id)==='undefined'?0:roomusers[i].id==user?roomusers.splice(i,1):0

                    }

                    updatespeckicks()

                }

            })

        }

    }

    let html=`

    <div class="userlist">

    <div class="userkickmenu"></div>

    </div>

    `

    function setCSS(){

        var css = `

        @import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');

        .rb4 *{box-sizing:border-box;}

        .userlist {

            display:block;text-align:center;opacity:none;font-size:10pt;color:#FF0000;font-style:italic;

            position:fixed;left:50%;top:3px;padding:5px 3px !important;margin:0px;background:#000000;font-family: 'Roboto', sans-serif;border:2px solid #303132;

            transform:translate(-50%,0);border-radius:15px;z-index:999999999;display:block !important;height:auto !important;width:200px !important;

        }

        .userlist input[type=text]{height:20px;border-radius:3px;font-size:9pt;background:white;color:white;padding-left:3px;}

        .userlist  input[type=submit]{height:25px;border-radius:3px;background:#FFFFFF;}

        .userlist input[type=checkbox]{margin-top:2px;}

        #background{

        z-index:999;width:0px;height:0px;position:fixed;left:0px;top:0px;

        }

    `;

        GM_addStyle(css);

    }

    setInterval(()=>{

        if(f("#users")){

            fa(".kickmenubtn").forEach(ele=>{

                f(".scrollElements").innerText.indexOf(ele.value)==-1?ele.remove():0

            })

            f("g")?f("g").remove():0;

        }

        if(f("#background")&&!f(".userlist")){

            f("#background").innerHTML+=html

            setCSS()

        }

    },100)

}

let m_s, a_i, m_a, m_z, m_b;

const f = x => document.querySelector(x),

    sendMessage = (inputSelector, mesaj) => {

        a_i = document.querySelector(inputSelector);

        m_a = a_i.value;

        // Add a random invisible character from the list before the message

        const invisibleChars = ["\u200B", "\u200C", "\u200D", "\u2060", "\u180E", "\uFEFF"];

        const randomChar = invisibleChars[Math.floor(Math.random() * invisibleChars.length)];

        a_i.value = randomChar + mesaj + m_a;

        m_z = new Event("input", { bubbles: !0 });

        m_z.simulated = !0;

        m_b = new Event("submit", { bubbles: !0 });

        m_b.simulated = !0;

        m_s = a_i._valueTracker;

        m_s && m_s.setValue(m_a);

        a_i.dispatchEvent(m_z);

        a_i.form.dispatchEvent(m_b);

    },

    rand = x => Math.floor(Math.random() * 1000000),

    GM_onMessage = (label, cb) => GM_addValueChangeListener(label, (_, __, data) => cb(...data)),

    GM_sendMessage = (label, ...data) => GM_setValue(label, data);

GM_onMessage('ucur', (atılacak, _) => {

    atılacak && document.querySelectorAll(".nick").forEach(nick => {

        nick.innerText === atılacak && (nick.click(), f(".ic-votekick")?.click())

    })

});

GM_onMessage('msg', (i, w, _) => {

    sendMessage(i, w)

})

GM_onMessage('skip', (_, __) => {

    let leButton = document.evaluate('//*[@id="notification"]/div/div[2]/div[1]/button', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

    if (leButton) {

        leButton.click();}

    let reportButton = document.evaluate('//*[@id="tools"]/div/div[1]/button[4]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

    if (reportButton) {

        reportButton.click();

        let confirmButton = document.evaluate('//*[@id="popUp"]/div/div/div[3]/button[2]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

        if (confirmButton) {

            confirmButton.click();

        }

    }

});

GM_onMessage('report', (_, __) => {

    let reportButton = document.evaluate('//*[@id="canvas"]/button', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

    if (reportButton) {

        reportButton.click();

        let confirmButton = document.evaluate('//*[@id="popUp"]/div[1]/div/div[3]/button[2]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

        if (confirmButton) {

            confirmButton.click();

        }

    }

});

GM_onMessage('exit', (_, __) => {

    let exitButton = document.evaluate('//*[@id="exit"]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

    if (exitButton) {

        setTimeout(function () {

            exitButton.click();

            let confirmButton = document.evaluate('//*[@id="popUp"]/div[1]/div/div[3]/button[2]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

            if (confirmButton) {

                confirmButton.click();

            }

        }, 0); // Delay of 1 second

    }

});

window.onload = function () {

    const roomConsole = document.createElement("div");

    roomConsole.style = "color:#FFD700;margin-top:5px;";

    container.appendChild(roomConsole);

    let currentGarticRoom;

    // Function to check if the current page is a gartic.io room

    function getGarticRoom() {

        let garticRegex = /gartic\.io\/(.+)$/;

        let match = window.location.href.match(garticRegex);

        if (match && match[1]) {

            return match[1];

        }

        return null;

    }

    // Function to update the current gartic.io room

    function updateCurrentRoom() {

        let room = getGarticRoom();

        if (room !== currentGarticRoom) {

            currentGarticRoom = room;

            roomConsole.innerText = `Current Room: ${currentGarticRoom || 'No room found'}`;

        }

    }

    // Update the room initially

    updateCurrentRoom();

    // Check for room changes every 5 seconds

    setInterval(updateCurrentRoom, 1000);

};

function createInput(width, height) {

    const input = document.createElement("input");

    input.style = `width:${width};height:${height};border-radius:5px;padding:5px;border:1px solid #FFD700;background-color:#333333;color:#FFD700;`;

    return input;

}

function createButton(width, height, text, clickHandler) {

    const button = document.createElement("button");

    button.style = `width:${width};height:${height};background-color:#FFD700;color:black;border-radius:5px;border:1px solid black;margin-top:5px;`;

    button.textContent = text;

    button.addEventListener("mousedown", clickHandler);

    return button;

}