您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Mod that adds "Agar.io Movement" for Gats.io
// ==UserScript== // @name Gats.io with "Agar.io Movement" // @namespace http://tampermonkey.net/ // @version 1.4 // @description Mod that adds "Agar.io Movement" for Gats.io // @author Taureon // @match https://gats.io/ // @match https://gats2.com/ // @grant none // @license Unlicense // ==/UserScript== (function main(){ //if the game hasn't loaded yet, wait until it is loaded //it is checked if the game has loaded by checking if the game tick function exists if (typeof a41 !== 'function') return setTimeout(main); document.addEventListener('keydown', ({keyCode}) => { console.dir(keyCode) if (keyCode == 84 /* T */) toggleTracers(); }); //save the function so we can run it in the hook later let old_a41 = a41, //boolean for toggling visual aid on or off drawTracers = true, //copied facilitation functions from tiohax applyStyle = (element, style) => applyAttrbutes(element.style, style), applyAttrbutes = (object, attributes) => { for (let key in attributes) object[key] = attributes[key]; return object; }, makeDiv = (style = {}, attributes = {}, orphans = []) => { let element = document.createElement('div'); applyStyle(element, style); applyAttrbutes(element, attributes); for (let orphan of orphans) element.append(orphan); return element; }, toggleTracers = () => { drawTracers = !drawTracers; divvers.style['background-color'] = drawTracers ? '#0f0': '#f00'; }, divvers; document.body.append(makeDiv({ top: '310px', left: '10px', height: '50px', border: '5px solid #0008', display: 'flex', position: 'absolute', 'z-index': '10', 'border-radius': '5px', 'align-items': 'center', 'background-color': '#fff8' }, {}, [ makeDiv({ padding: '5px', 'font-size': '20px', 'font-family': 'Consolas, monospace' }, { innerText: 'Turn on Visual Aid (T)' }), divvers = makeDiv({ width: '25px', height: '25px', margin: '5px', border: '5px solid #0008', 'border-radius': '5px', 'background-color': drawTracers ? '#0f08': '#f008' }, { onclick: toggleTracers }) ])); a41 = () => { old_a41(); //sanity check if (c3 === null) return; //reset movement for (let inputId of [0, 1, 2, 3]) RF.list[0].send(a59("key-press", {inputId, state: 0})); //you can change this if you want the circle to be smaller or larger or something else let radius = 50, playerMe = RD.pool[c3], me = c2.getRelPos(playerMe), cursor = {x: j9[0] / j6, y: j9[1] / j5}, ctx = j58; //else "me" is one tick too forward me.x -= Math.round(playerMe.spdX / 2.5); me.y -= Math.round(playerMe.spdY / 2.5); //don't draw if that setting turned off if (drawTracers) { //circle ctx.strokeStyle = '#444'; ctx.lineWidth = 2; ctx.beginPath(); ctx.moveTo(me.x + radius, me.y); ctx.arc(me.x, me.y, radius, 0, Math.PI * 2); ctx.stroke(); //lines in circle for (let i = Math.PI / 8; i < Math.PI * 2; i += Math.PI / 4) { ctx.lineWidth = 1; ctx.beginPath(); ctx.moveTo(me.x, me.y); ctx.lineTo(me.x + Math.sin(i) * radius, me.y + Math.cos(i) * radius); ctx.stroke(); } //line from player to cursor ctx.strokeStyle = '#000'; ctx.lineWidth = 1; ctx.beginPath(); ctx.moveTo(me.x, me.y); ctx.lineTo(cursor.x, cursor.y); ctx.stroke(); } //dont move if cursor is on player if (Math.pow(me.y - cursor.y, 2) + Math.pow(me.x - cursor.x, 2) < Math.pow(playerMe.radius, 2)) return; //calculate movement packets to send for (let inputId of [ [1], //'right', [1, 3],//'down right', [3], //'down', [3, 0],//'down left', [0], //'left', [2, 0],//'up left', [2], //'up', [2, 1] //'up right' ][ //SUPER COMPLICATED MAAAAAAAAAAAAAATH Math.round( ( Math.atan2(me.y - cursor.y, me.x - cursor.x) / Math.PI ) * 4 + 4) % 8 //send these movement packets ]) RF.list[0].send(a59("key-press", {inputId, state: 1})); }; })();