// ==UserScript==
// @name Gartic.io Anonim Menu
// @namespace https://gf.qytechs.cn/
// @version 2023-12-21
// @description press F2 to open and close the menu
// @author anonimbiri
// @match https://gartic.io/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=gartic.io
// @require https://update.gf.qytechs.cn/scripts/482771/1299581/Malayala%20Kit.js
// @grant none
// ==/UserScript==
const AnonimbiriAPI = { ws: null, isGame: false, playerId: null, unlimitedKick: false, autoSkip: false, antiAfk: false, noCooldown:false, debug: false };
var kit = new MalayalaKit.CreateMenu({
title: "Anonim Menu",
icon: "",
size: { width: 500, height: 400 },
position: { top: 50, left: 50 },
hotkey: { keyCode: 113, ctrlKey: false, altKey: false, shiftKey: false }
});
var general = new MalayalaKit.Tab("General");
general.addSwitch({ label: "Unlimited Kick", value: false, onchange: function (value) {
AnonimbiriAPI.unlimitedKick = value;
}});
general.addSwitch({ label: "Auto Skip", value: false, onchange: function (value) {
AnonimbiriAPI.autoSkip = value;
}});
general.addSwitch({ label: "Anti Afk", value: false, onchange: function (value) {
AnonimbiriAPI.antiAfk = value;
}});
general.addSwitch({ label: "No Cooldown For Room Change", value: false, onchange: function (value) {
AnonimbiriAPI.noCooldown = value;
}});
kit.addTab(general);
var fakeWinText = "anonimbiri";
var local = new MalayalaKit.Tab("Local");
local.addInput({ label: "Fake Win text", placeholder: "Enter Fake Win text", type: "text", value: fakeWinText, onchange: function (value) {
fakeWinText = value;
}});
local.addButton({ label: "Send Fake Win", buttonLabel: "Send Fake Win", onclick: function () {
const event = new MessageEvent('message', { data: `42["26","${fakeWinText}",10,11,10000]` });
AnonimbiriAPI.ws.dispatchEvent(event);
}});
kit.addTab(local);
var intervalId = null;
var spamText = "anonimbiri";
var spam = new MalayalaKit.Tab("Spam");
spam.addSwitch({ label: "Spam", value: false, onchange: function (value) {
if(value){
intervalId = setInterval(() => {
var randomIndex = Math.floor(Math.random() * (spamText.length + 1));
var newText = spamText.replace(/({${randomIndex}})/, '$1.');
AnonimbiriAPI.ws.send(`42[11,${AnonimbiriAPI.playerId},"${newText}"]`);
}, 800);
}else{
clearInterval(intervalId);
}
}});
spam.addInput({ label: "Spam text", placeholder: "Enter Spam text", type: "text", value: spamText, onchange: function (value) {
spamText = value;
}});
kit.addTab(spam);
window.WebSocket = class extends WebSocket {
constructor(...args) {
super(...args);
AnonimbiriAPI.ws = this;
this.addEventListener('message', (e) => {
AnonimbiriAPI.debug && console.log("%c<--- Received data:", "color: pink", e.data);
const messageData = JSON.parse(e.data.slice(2));
if (messageData[0] === "45" && AnonimbiriAPI.unlimitedKick) {
const OriginalDate = window.Date;
window.Date = class extends Date {
static now() {
return super.now() * 2123;
}
};
setTimeout(() => { window.Date = OriginalDate; }, 2000);
return;
}else if (messageData[0] === "5") {
AnonimbiriAPI.isGame = true;
AnonimbiriAPI.playerId = messageData[2];
}else if(messageData[0] === "16" && AnonimbiriAPI.autoSkip){
AnonimbiriAPI.ws.send(`42[25,${AnonimbiriAPI.playerId}]`);
}else if(messageData[0] === "34"){
AnonimbiriAPI.ws.send(`42[30,${AnonimbiriAPI.playerId}]`);
AnonimbiriAPI.ws.send(`42[30,${AnonimbiriAPI.playerId}]`);
AnonimbiriAPI.ws.send(`42[30,${AnonimbiriAPI.playerId}]`);
}else if (messageData[0] === "19" && AnonimbiriAPI.antiAfk){
window.Date = class extends Date {
static now() {
return super.now() / 2123;
}
}
}else if(messageData[0] === "23"){
!AnonimbiriAPI.debug && console.clear();
var nickElements = document.querySelectorAll('.nick');
nickElements.forEach(function (nickElement) {
var nickName = nickElement.innerText;
if (nickName.startsWith('') && !nickElement.parentElement.querySelector('.cheater') && !nickElement.parentElement.parentElement.classList.contains('you')) {
var newElement = document.createElement('span');
newElement.classList.add('cheater');
newElement.style = 'color:pink; font-weight: bold; font-family: "Lucida Console", "Courier New", monospace;';
newElement.innerText = `🎮 Cheater`;
nickElement.parentElement.appendChild(newElement);
}
});
}
});
}
send(data) {
AnonimbiriAPI.debug && console.log("%c---> Sent data:", "color: pink", data);
const newData = JSON.parse(data.slice(2));
if (newData[1] && newData[1].nick) {
newData[1].nick = `${newData[1].nick}`;
data = data.slice(0, 2) + JSON.stringify(newData);
super.send(data);
}else if(newData[0] === "46"){
}else{
super.send(data);
}
//super.send(data);
}
}
const observer = new MutationObserver(() => {
document.querySelector('input[name="chat"]')?.replaceWith(Object.assign(document.createElement('input'), {type: 'text', name: 'chat', className: 'mousetrap', placeholder: '🔓 Chat Unlocked', autocomplete: 'off', autocorrect: 'off', autocapitalize: 'off', maxLength: 100, value: ''}));
if(document.querySelector('#popUp') && AnonimbiriAPI.noCooldown){
const OriginalDate = window.Date;
window.Date = class extends Date {
static now() {
return super.now() * 2123;
}
};
setTimeout(() => {
window.Date = class extends Date {
static now() {
return super.now() / 2123;
}
};
}, 500);
document.querySelector('.ic-playHome').click();
}
});
observer.observe(document.body, { childList: true, subtree: false });
const keyupEvent = function (e) {
if (e.keyCode === 13){
var chatInput = document.querySelector('input[name="chat"]');
AnonimbiriAPI.ws.send(`42[11,${AnonimbiriAPI.playerId},"${chatInput.value}"]`);
chatInput.value = '';
}
};
window.addEventListener('keyup', keyupEvent);
window.AnonimbiriAPI = AnonimbiriAPI;
kit.render();