您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
credits to cazka for basically 99% of this script, no this is not a multiboxing script
当前为
- // ==UserScript==
- // @name Base Zones REAL
- // @description credits to cazka for basically 99% of this script, no this is not a multiboxing script
- // @version 1.0.8
- // @author none
- // @match *://diep.io/*
- // @grant GM_addStyle
- // @grant GM_getValue
- // @grant GM_setValue
- // @grant GM_addValueChangeListener
- // @grant GM_removeValueChangeListener
- // @namespace https://greasyfork.org/users/790354
- // ==/UserScript==
- 'use strict';
- (function() {
- var isActive = true;
- function f(e){
- if (!isActive) return;
- var a = new KeyboardEvent("keydown", {
- bubbles: true,
- cancelable: true,
- shiftKey: false
- });
- delete a.keyCode;
- Object.defineProperty(a, "keyCode", {
- "value": 76
- });
- dispatchEvent(a);
- }
- function a(e) {
- addEventListener(e, f);
- }
- for (var i of ["focus", "blur", "keyup"]) {
- a(i);
- }
- addEventListener("keydown", function(e) {
- if (e.keyCode == 76 && e.isTrusted) {
- isActive ^= true;
- }
- });
- }());
- function fillBlue2(flag) {
- if (flag == 1) {
- if (player.dead) return;
- ctx.save();
- ctx.globalAlpha = 0.12;
- if (player.gamemode === 'teams') {
- ctx.fillStyle = '#006480';
- ctx.beginPath();
- ctx.fillRect(0,0,1920,1080);
- }
- ctx.restore();
- }
- }
- function fillRed2(flag) {
- if (flag == 1) {
- if (player.dead) return;
- ctx.save();
- ctx.globalAlpha = 0.12;
- if (player.gamemode === 'teams') {
- ctx.fillStyle = '#963033';
- ctx.beginPath();
- ctx.fillRect(0,0,1920,1080);
- }
- ctx.restore();
- }
- }
- function fillBlue(flag) {
- if (flag == 1) {
- if (player.dead) return;
- ctx.save();
- ctx.globalAlpha = 0.12;
- if (player.gamemode === '4teams') {
- ctx.fillStyle = '#006480';
- ctx.beginPath();
- ctx.fillRect(0,0,1920,1080);
- }
- if (player.gamemode === 'teams') {
- ctx.fillStyle = '#006480';
- ctx.beginPath();
- ctx.fillRect(0,0,1920,1080);
- }
- ctx.restore();
- }
- }
- function fillRed(flag) {
- if (flag == 1) {
- if (player.dead) return;
- ctx.save();
- ctx.globalAlpha = 0.12;
- if (player.gamemode === '4teams') {
- ctx.fillStyle = '#963033';
- ctx.beginPath();
- ctx.fillRect(0,0,1920,1080);
- }
- if (player.gamemode === 'teams') {
- ctx.fillStyle = '#963033';
- ctx.beginPath();
- ctx.fillRect(0,0,1920,1080);
- }
- ctx.restore();
- }
- }
- function fillGreen(flag) {
- if (flag == 1) {
- if (player.dead) return;
- ctx.save();
- ctx.globalAlpha = 0.12;
- if (player.gamemode === '4teams') {
- ctx.fillStyle = '#00803e';
- ctx.beginPath();
- ctx.fillRect(0,0,1920,1080);
- }
- ctx.restore();
- }
- }
- function fillPurple(flag) {
- if (flag == 1) {
- if (player.dead) return;
- ctx.save();
- ctx.globalAlpha = 0.12;
- if (player.gamemode === '4teams') {
- ctx.fillStyle = '#644280';
- ctx.beginPath();
- ctx.fillRect(0,0,1920,1080);
- }
- ctx.restore();
- }
- }
- function drawZones(scale, notFullScreen) {
- if (player.dead) return;
- ctx.save();
- ctx.globalAlpha = 0.12;
- let radius = 52;
- let width = 169;
- let compensation = notFullScreen * (width-2);
- if (player.gamemode === '4teams') {
- //blue
- ctx.fillStyle = '#006480';
- ctx.beginPath();
- ctx.arc(1920-(1920-1728)*scale, 1080-(1080-888)*scale-compensation, radius*scale, 0 * Math.PI, 1/2 * Math.PI);
- ctx.fill();
- ctx.beginPath();
- ctx.moveTo(1920-(1920-1728)*scale, 1080-(1080-888)*scale-compensation);
- ctx.lineTo(1920-(1920-1728)*scale+radius*scale, 1080-(1080-888)*scale-compensation);
- ctx.lineTo(1920-(1920-1728)*scale, 1080-(1080-888)*scale+radius*scale-compensation);
- ctx.fill();
- //purple
- ctx.fillStyle = '#644280';
- ctx.beginPath();
- ctx.arc(1920-(1920-1728)*scale+width*scale, 1080-(1080-888)*scale-compensation, radius*scale, 1/2 * Math.PI, Math.PI);
- ctx.fill();
- ctx.beginPath();
- ctx.moveTo(1920-(1920-1728)*scale+width*scale, 1080-(1080-888)*scale-compensation);
- ctx.lineTo(1920-(1920-1728)*scale+radius*scale+width*scale-2*radius*scale, 1080-(1080-888)*scale-compensation);
- ctx.lineTo(1920-(1920-1728)*scale+width*scale, 1080-(1080-888)*scale+radius*scale-compensation);
- ctx.fill();
- //green
- ctx.fillStyle = '#00803e';
- ctx.beginPath();
- ctx.arc(1920-(1920-1728)*scale, 1080-(1080-888)*scale+width*scale-compensation, radius*scale, 3/2 * Math.PI, 2 * Math.PI);
- ctx.fill()
- ctx.beginPath();
- ctx.moveTo(1920-(1920-1728)*scale, 1080-(1080-888)*scale+width*scale-compensation);
- ctx.lineTo(1920-(1920-1728)*scale+radius*scale, 1080-(1080-888)*scale+width*scale-compensation);
- ctx.lineTo(1920-(1920-1728)*scale, 1080-(1080-888)*scale+radius*scale+width*scale-2*radius*scale-compensation);
- ctx.fill();
- //red
- ctx.fillStyle = '#963033';
- ctx.beginPath();
- ctx.arc(1920-(1920-1728)*scale+width*scale, 1080-(1080-888)*scale+width*scale-compensation, radius*scale, Math.PI, 3/2 * Math.PI);
- ctx.fill();
- ctx.beginPath();
- ctx.moveTo(1920-(1920-1728)*scale+width*scale, 1080-(1080-888)*scale+width*scale-compensation);
- ctx.lineTo(1920-(1920-1728)*scale+radius*scale+width*scale-2*radius*scale, 1080-(1080-888)*scale+width*scale-compensation);
- ctx.lineTo(1920-(1920-1728)*scale+width*scale, 1080-(1080-888)*scale+radius*scale+width*scale-2*radius*scale-compensation);
- ctx.fill();
- } else if (player.gamemode === 'teams') {
- let radius2 = 40;
- //blue
- ctx.fillStyle = '#006480';
- ctx.fillRect(1920-(1920-1728)*scale, 1080-(1080-890)*scale-compensation, radius2*scale, 170*scale);
- //red
- ctx.fillStyle = '#963033';
- ctx.fillRect(1920-(1920-1728)*scale+124*scale, 1080-(1080-890)*scale-compensation, radius2*scale, 170*scale);
- }
- ctx.restore();
- }
- class Gui {
- constructor(title) {
- this._buttons = [];
- }
- }
- class Minimap {
- constructor() {
- this._minimapWidth;
- this._minimapHeight;
- this._x00;
- this._y00;
- this._pointX;
- this._pointY;
- this._pointX_previous;
- this._pointY_previous;
- this._viewportWidth;
- this._viewportHeight;
- this._fov;
- this._minimapHook();
- this._arrowHook();
- this._viewportHook();
- this._fovHook();}
- get x() {
- return this._pointX ? (this._pointX - this._x00) / this._minimapWidth : 0;
- }
- get y() {
- return this._pointY ? (this._pointY - this._y00) / this._minimapHeight : 0;
- }
- get x_previous() {
- return this._pointX_previous ? (this._pointX_previous - this._x00) / this._minimapWidth : 0;
- }
- get y_previous() {
- return this._pointY_previous ? (this._pointY_previous - this._y00) / this._minimapHeight : 0;
- }
- get scale() {
- return {
- x: this._viewportWidth / this._minimapWidth,
- y: this._viewportHeight / this._minimapHeight,
- };
- }
- get fov() {
- return this._fov;
- }
- _minimapHook() {
- let setTransformArgs;
- const onsetTransform = (args) => {
- if (args[0] === args[3]) setTransformArgs = args;
- };
- const onstrokeRect = () => {
- if (setTransformArgs) {
- this._minimapWidth = setTransformArgs[0];
- this._minimapHeight = setTransformArgs[3];
- this._x00 = setTransformArgs[4];
- this._y00 = setTransformArgs[5];
- setTransformArgs = undefined;
- }
- };
- this._ctxHook('setTransform', onsetTransform);
- this._ctxHook('strokeRect', onstrokeRect);
- }
- _arrowHook() {
- let index = 0;
- const stack = Array(4);
- let pointA;
- let pointB;
- let pointC;
- const calculatePos = () => {
- const side1 = Math.floor(
- Math.sqrt(Math.pow(pointA[0] - pointB[0], 2) + Math.pow(pointA[1] - pointB[1], 2))
- );
- const side2 = Math.floor(
- Math.sqrt(Math.pow(pointA[0] - pointC[0], 2) + Math.pow(pointA[1] - pointC[1], 2))
- );
- const side3 = Math.floor(
- Math.sqrt(Math.pow(pointB[0] - pointC[0], 2) + Math.pow(pointB[1] - pointC[1], 2))
- );
- if (side1 == side2 && side2 == side3) return;
- this._pointX_previous = this._pointX;
- this._pointY_previous = this._pointY;
- this._pointX = (pointA[0] + pointB[0] + pointC[0]) / 3;
- this._pointY = (pointA[1] + pointB[1] + pointC[1]) / 3;
- };
- const onbeginPath = () => {
- index = 0;
- stack[index++] = 0;
- };
- const onmoveTo = (args) => {
- if (index === 1 && stack[index - 1] === 0) {
- stack[index++] = 1;
- pointA = args;
- return;
- }
- index = 0;
- };
- const onlineTo = (args) => {
- if (index === 2 && stack[index - 1] === 1) {
- stack[index++] = 2;
- pointB = args;
- return;
- }
- if (index === 3 && stack[index - 1] === 2) {
- stack[index++] = 2;
- pointC = args;
- return;
- }
- index = 0;
- };
- const onfill = () => {
- if (index === 4 && stack[index - 1] === 2) {
- calculatePos();
- return;
- }
- index = 0;
- };
- this._ctxHook('beginPath', onbeginPath);
- this._ctxHook('moveTo', onmoveTo);
- this._ctxHook('lineTo', onlineTo);
- this._ctxHook('fill', onfill);
- }
- _viewportHook() {
- let setTransformArgs;
- const onsetTransform = (args) => {
- if ((args[0] / args[3]).toFixed(4) !== (unsafeWindow.innerWidth / unsafeWindow.innerHeight).toFixed(4)) return;
- if (args[0] >= unsafeWindow.innerWidth && args[3] >= unsafeWindow.innerHeight) return;
- setTransformArgs = args;
- };
- const onfillRect = () => {
- if (setTransformArgs) {
- unsafeWindow.input.set_convar('ren_minimap_viewport', true);
- this._viewportWidth = setTransformArgs[0];
- this._viewportHeight = setTransformArgs[3];
- setTransformArgs = undefined;
- }
- };
- this._ctxHook('setTransform', onsetTransform);
- this._ctxHook('fillRect', onfillRect);
- setInterval(() => {
- unsafeWindow.input.set_convar('ren_minimap_viewport', true);
- }, 1000);
- }
- _fovHook() {
- let solid_background = false;
- setTimeout(() => {
- solid_background = unsafeWindow.input.get_convar('ren_solid_background') === 'true' ? true : false;
- }, 1000);
- const calculateFov = (fov) => {
- this._fov = fov * 10;
- };
- function onstroke() {
- if (this.fillStyle === '#cdcdcd') {
- if (solid_background) unsafeWindow.input.set_convar('ren_solid_background', true);
- calculateFov(this.globalAlpha);
- }
- }
- this._ctxHook('stroke', onstroke);
- setInterval(() => {
- if (solid_background) unsafeWindow.input.set_convar('ren_solid_background', false);
- }, 10000);
- }
- _ctxHook(method, hook) {
- const target = window.CanvasRenderingContext2D.prototype;
- target[method] = new Proxy(target[method], {
- apply(target, thisArg, args) {
- args = hook.call(thisArg, args) || args;
- return target.apply(thisArg, args);
- },
- });
- }
- }
- class Vector {}
- class Arena {
- static get BLOCKSIZE() {
- return 50;
- }
- }
- class Player {
- constructor() {
- this._minimap = new Minimap();
- this._dead = true;
- //Dead Listener
- new MutationObserver((args) => {
- this._dead = args[0].target.style.display === 'block';
- if (this.ondead && this._dead) this.ondead();
- }).observe(document.getElementById('a'), { attributes: true });
- }
- get dead() {
- return this._dead;
- }
- get gamemode() {
- return unsafeWindow.localStorage.gamemode;
- }
- }
- class Chat {
- constructor(player) {
- this._player = player;
- this._inputBox = document.body.appendChild(document.createElement('div'));
- this._hookonkeydown();
- this._hookAnimationFrame();
- }
- _hookonkeydown() {
- const _this = this;
- unsafeWindow.onkeydown = new Proxy(unsafeWindow.onkeydown, {
- });
- }
- _hookAnimationFrame() {
- const _this = this;
- unsafeWindow.requestAnimationFrame = new Proxy(unsafeWindow.requestAnimationFrame, {
- });
- }
- }
- const player = new Player();
- const arena = new Arena();
- const chat = new Chat(player);
- const minimap = new Minimap();
- const radius = 52;
- const width = 169;
- var a,fj,fk,fl,fm,tj,tk = 0;
- var scale = d/175
- var x = minimap._pointX;
- var y = minimap._pointY;
- var d = minimap._minimapWidth;
- var compensation = a * (width-2);
- //setup canvas
- const ctx = document.getElementById('canvas').getContext('2d');
- // run main Loop
- unsafeWindow.requestAnimationFrame = new Proxy(unsafeWindow.requestAnimationFrame, {
- apply: function (target, thisArg, args) {
- //4 teams
- //Blue
- setInterval(() => {
- x = minimap._pointX;
- scale = d / 175
- y = minimap._pointY;
- compensation = a * (width-2);
- if(Math.pow(1920-(1920-1728)*scale-x,2) + Math.pow(1080-(1080-888)*scale-compensation-y,2)<Math.pow(radius*scale, 2)) {
- fj = 1;}
- else {fj = 0;}
- }, 2000);
- //Purple
- setInterval(() => {
- x = minimap._pointX;
- scale = d / 175
- y = minimap._pointY;
- compensation = a * (width-2);
- if(Math.pow(1920-(1920-1728)*scale+width*scale-x,2) + Math.pow(1080-(1080-888)*scale-compensation-y,2)<Math.pow(radius*scale, 2)) {
- fk = 1;}
- else {fk = 0;}
- }, 2000);
- //Green
- setInterval(() => {
- x = minimap._pointX;
- scale = d / 175
- y = minimap._pointY;
- compensation = a * (width-2);
- if(Math.pow(1920-(1920-1728)*scale-x,2) + Math.pow(1080-(1080-888)*scale+width*scale-compensation-y,2)<Math.pow(radius*scale, 2)) {
- fl = 1;}
- else {fl = 0;}
- }, 2000);
- //Red
- setInterval(() => {
- x = minimap._pointX;
- scale = d / 175
- y = minimap._pointY;
- compensation = a * (width-2);
- if(Math.pow(1920-(1920-1728)*scale+width*scale-x,2) + Math.pow(1080-(1080-888)*scale+width*scale-compensation-y,2)<Math.pow(radius*scale, 2)) {
- fm = 1;}
- else {fm = 0;}
- }, 2000);
- //2 teams
- //Blue
- setInterval(() => {
- x = minimap._pointX;
- scale = d / 175
- y = minimap._pointY;
- compensation = a * (width-2);
- if(1920-(1920-1728)*scale+d*scale<x) {
- tj = 1;}
- else {tj = 0;}
- }, 2000);
- //Red
- setInterval(() => {
- x = minimap._pointX;
- scale = d / 175
- y = minimap._pointY;
- compensation = a * (width-2);
- if(1920-(1920-1728)*scale+radius*scale>x) {
- tk = 1;}
- else {tk = 0;}
- }, 2000);
- //Old
- setInterval(() => {
- if(window.innerHeight == screen.height) {
- a = 0;} else {a = 1;}}, 2000);
- setInterval(() => {d = minimap._minimapWidth}, 2000);
- // drawZones(d / 175, a);
- fillBlue(fj);
- fillPurple(fk);
- fillGreen(fl);
- fillRed(fm);
- fillBlue2(tj);
- fillBlue2(tk);
- setTimeout(() => Reflect.apply(target, thisArg, args), 0);
- },
- });