您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Entra automaticamente em uma sala específica em gartic.io, envia uma mensagem aleatória (incluindo mensagens "evil") e sai imediatamente após o primeiro voto de kick, votando contra quem votou.
// ==UserScript== // @name Anonimbiri Anti kick Instant Exit with Random Evil Message // @description Entra automaticamente em uma sala específica em gartic.io, envia uma mensagem aleatória (incluindo mensagens "evil") e sai imediatamente após o primeiro voto de kick, votando contra quem votou. // @namespace http://tampermonkey.net/ // @version 0.8 // @match https://gartic.io/* // @grant none // ==/UserScript== (function() { 'use strict'; var sw = window.WebSocket.prototype.send; let setTrue = false; let linkSent = false, windowurl, exitingame; window.array = {}; // Lista de mensagens aleatórias const messages = [ "a̶͕͖̦͆̏̿n̷̳̤͉͖͎̞̗̒̏̈́ṱ̴̨̟͔̖͌̚ị̴̍̃̇̚̚ ̸̢̡̯̭͉̱̝̣̊ķ̶̭̯̼̜̺͎̲̦̳̈́͋͆͝͝i̷̛̘̰͂̿̀͆̃̃͘͘͝c̶̰̪̱͐́͗̔̕͘͝k̶̡͙̱̭͍̞̯̟̯̅̍͂̐͝ ̷̧̢͓͖̖̽̀̑̏̃̾͂̕͝a̶͚̤̖̦͎̟͌͂̅͘͝ţ̴͓͍̥͓͈̖͍̠̏̂͌̍͠͠ĭ̵̺͇͕̪̼̯̙̱̤̍͑̏̇͋͆̈́͘ͅv̵̢͑̽̌ͅa̴̟̘̘͍̬̲̎ḓ̷̢̖̰̣̩̏̄̓̋̔̅́̂̀̆ͅó̷̢̡̟̲̰͚̲͈̘̼̌̑̈́", "KKKKK não consegue me expulsar!", "Tá difícil aí?", "Você é muito lerdo!", "Melhor sorte da próxima vez!" ]; // Lista de mensagens "evil" const evilMessages = [ "Desistiram? Achei que conseguiriam me expulsar!", "Parece que vocês desistiram de me expulsar!", "KKKKK, vocês ainda estão tentando? Eu já desisti de brincar com vocês!", "Nem com a força de todos vocês conseguem me expulsar!", "Desisti? Só estou esperando vocês me expulsarem, se conseguirem!", "Me expulsar? Parece que vocês vão precisar de mais esforço!", "Vocês realmente acham que podem me tirar? Sonhem mais!", "Desisti de vocês... Isso é o melhor que conseguem?", "Ué, pensei que vocês já tinham conseguido... mas ainda estou aqui!", "Vocês cansaram? Porque eu tô só começando!" ]; // Função para enviar mensagem aleatória e sair do jogo function sendMessageAndExit() { if (window.array && window.array.id) { // Seleciona aleatoriamente entre uma mensagem normal ou uma "evil" const isEvil = Math.random() < 0.3; // 30% de chance de enviar uma mensagem "evil" const messageList = isEvil ? evilMessages : messages; const message = messageList[Math.floor(Math.random() * messageList.length)]; window.array.send(`42[11,${window.array.id},"${message}"]`); // Pequeno atraso para garantir que a mensagem seja enviada antes de sair setTimeout(() => { exitingame = `42[24,${window.array.id}]`; window.array.send(exitingame); console.log("Mensagem enviada e saindo do jogo devido a um voto de kick."); }, 100); } } // Função para votar na pessoa que votou em você function voteAgainstKicker(kickerId) { if (window.array && window.array.id) { const voteMessage = `42[22,${window.array.id},${kickerId}]`; window.array.send(voteMessage); console.log(`Votando contra: ${kickerId}`); } } // Sobrescreve o WebSocket para monitorar mensagens window.WebSocket.prototype.send = function(aa) { sw.apply(this, arguments); if (Object.keys(window.array).length === 0) { window.array = this; window.ar(); } }; // Função para monitorar kicks window.ar = () => { if (!setTrue) { window.array.addEventListener("message", (msg) => { try { let data = JSON.parse(msg.data.slice(2)); if (data[0] === 5) { // Guarda o ID do socket ao conectar window.array.id = data[2]; } else if (data[0] === 21) { // Detecta voto de kick const kickerId = data[2]; // ID do jogador que votou voteAgainstKicker(kickerId); // Vota na pessoa que votou em você sendMessageAndExit(); } } catch (err) {} }); setTrue = true; } }; // Observa mutações no DOM para detectar mensagens de kick const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.type === 'childList') { const addedNodes = mutation.addedNodes; for (let i = 0; i < addedNodes.length; i++) { const node = addedNodes[i]; if (node.nodeType === Node.ELEMENT_NODE && node.classList.contains('msg') && node.classList.contains('alert')) { const strongElements = node.querySelectorAll('strong'); if (strongElements.length === 2) { const strong2 = strongElements[1].textContent.trim(); const myuser = document.querySelector("#users > div > div.scrollElements > div.user.you > div.infosPlayer > span.nick"); if (myuser && strong2 === myuser.textContent) { sendMessageAndExit(); return; } } } } } }); }); // Configura o observador para monitorar o DOM const config = { childList: true, subtree: true }; observer.observe(document.body, config); })();