您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
credits to cazka for basically 99% of this script, no this is not a multiboxing script
当前为
- // ==UserScript==
- // @name Base Zones
- // @description credits to cazka for basically 99% of this script, no this is not a multiboxing script
- // @version 1.0.6
- // @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';
- //set scale here
- const scales = 1
- function drawZones(scale, notFullScreen) {
- if (player.dead) return;
- ctx.save();
- ctx.globalAlpha = 0.08;
- let radius = 48;
- 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 = [];
- this._init();
- }
- _init() {
- const nonce = `a${Math.floor(Math.random() * 1e5)}`;
- GM_addStyle(
- `.${nonce} button{display:none;font-family:Ubuntu;color:#fff;text-shadow:-.1em -.1em 0 #000,0 -.1em 0 #000,.1em -.1em 0 #000,.1em 0 0 #000,.1em .1em 0 #000,0 .1em 0 #000,-.1em .1em 0 #000,-.1em 0 0 #000;opacity:.8;border:0;padding:.3em .5em;width:100%;transition:all .15s}.${nonce}{top:0;left:0;position:absolute}.${nonce} button:active:not([disabled]){filter:brightness(.9)}.${nonce} button:hover:not([disabled]):not(:active){filter:brightness(1.1)}`
- );
- }
- }
- 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', false);
- this._viewportWidth = setTransformArgs[0];
- this._viewportHeight = setTransformArgs[3];
- setTransformArgs = undefined;
- }
- };
- this._ctxHook('setTransform', onsetTransform);
- this._ctxHook('fillRect', onfillRect);
- setTimeout(() => unsafeWindow.input.set_convar('ren_minimap_viewport', true), 1000);
- 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;
- }, 400);
- 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;
- }
- static scale(x, y) {
- return {
- x: Math.floor(22300 * (x - 0.5) + 0.5),
- y: Math.floor(22300 * (y - 0.5) + 0.5),
- };
- }
- static unscale(x, y) {
- return {
- x: x / 22300 + 0.5,
- y: y / 22300 + 0.5,
- };
- }
- }
- class Player {
- constructor() {
- this._minimap = new Minimap();
- this._mouse = {
- x: 0,
- y: 0,
- };
- this._inputs = {
- left: false,
- down: false,
- up: false,
- right: false,
- };
- 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 });
- //Message Listener
- const notify = (text) => {
- if (this.onmessage) this.onmessage(text);
- };
- CanvasRenderingContext2D.prototype.fillText = new Proxy(CanvasRenderingContext2D.prototype.fillText, {
- apply(target, thisArg, args) {
- if (args[0].startsWith("You've killed ")) {
- notify(args[0]);
- }
- return Reflect.apply(target, thisArg, args);
- },
- });
- }
- set useGamepad(value) {
- this._gamepad.connected = value;
- }
- get position() {
- const position = Arena.scale(this._minimap.x, this._minimap.y);
- const previous = Arena.scale(this._minimap.x_previous, this._minimap.y_previous);
- return {
- x: position.x,
- y: position.y,
- x_previous: previous.x,
- y_previous: previous.y,
- };
- }
- get dead() {
- return this._dead;
- }
- get gamemode() {
- return unsafeWindow.localStorage.gamemode;
- }
- }
- /**
- *this code is useless, but do not delete as that messes up something
- */
- class Chat {
- constructor(player) {
- this._player = player;
- this._inputBox = document.body.appendChild(document.createElement('div'));
- this._hookonkeydown();
- this._hookAnimationFrame();
- }
- _onkeydown(e) {
- let preventDefault = false;
- if (player.dead) return;
- return preventDefault;
- }
- _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 chat = new Chat(player);
- const minimap = new Minimap();
- var a = 0
- var d = minimap._minimapWidth;
- //setup canvas
- const ctx = document.getElementById('canvas').getContext('2d');
- // run main Loop
- unsafeWindow.requestAnimationFrame = new Proxy(unsafeWindow.requestAnimationFrame, {
- apply: function (target, thisArg, args) {
- setInterval(() => {
- if(window.innerHeight == screen.height) {
- a = 0;} else {a = 1;}}, 500);
- setInterval(() => {d = minimap._minimapWidth}, 100);
- drawZones(d / 175, a);
- setTimeout(() => Reflect.apply(target, thisArg, args), 0);
- },
- });