Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Improved Bullet Stacking By Mekhi Maragh
- // @include *://diep.io/*
- // @author Mekhi MAragh
- // @description Makes some tanks more powerful (Tri-angle branch, spread shot, penta shot, octo tank, gunner trapper, streamliner).
- // @connect diep.io
- // @namespace aaa
- // @version 69
- // ==/UserScript==
- /*
- How to Use:
- Press Shift+R to cycle through the tanks.
- Press Shift+Q to disable/enable the script.
- Press I to hide the dialog. (The script remains functional, though).
- Hold rightclick to activate . For best results, leave autofire off for a bit before doing so.
- If necessary, press Shift+M to re-calibrate the script. Wait for the ms to stabilise.
- Note: This calibration may break for Triple Twin, and is unnecessary for Streamliner.
- */
- (function(){//info
- if(window.updateInfo) return;
- var info = {};
- var info_container = document.createElement("div");
- info_container.style.position = "fixed";
- info_container.style.color = "blue";
- info_container.style["pointer-events"] = "none";
- document.body.appendChild(info_container);
- function toggle_info_container(e){
- if(e.key == "i"){
- info_container.style.display = info_container.style.display=="block" ? "none" : "block";
- }
- }
- window.addEventListener("keyup", toggle_info_container);
- window.updateInfo = function(key, value){
- if(!value) delete info[key];
- else info[key] = value;
- var s = "";
- for(var _key in info){
- s += info[_key] + "\n";
- }
- info_container.innerText = s;
- };
- })();
- function MeasureCycle(){
- var canvas = document.getElementById("canvas");
- var ctx = canvas.getContext("2d");
- var real_arc = ctx.arc;
- var real_setTransform = ctx.setTransform;
- var a;
- var tx = 0, ty = 0;
- var a11 = 1;
- var state = false;
- var found = false;
- var inA = null;
- var direction = 1;
- var frameRequest;
- var intervalEMA = null; // ms
- function arc(){
- real_arc.apply(ctx, arguments);
- if(!found){
- var aimX = window.innerWidth / 2 + 50 * direction;
- var aimY = window.innerHeight / 2;
- found = (tx - a11 < aimX) && (tx + a11 > aimX) && (ty - a11 < aimY) && (ty + a11 > aimY);
- }
- }
- function setTransform(b11, b12, b21, b22, bx, by){
- real_setTransform.apply(ctx, arguments);
- tx = bx, ty = by, a11 = b11;
- }
- function onFrame(_a){
- frameRequest = window.requestAnimationFrame(onFrame);
- a = _a;
- if(!state && found){
- if(inA){
- var da = a - inA;
- inA = a;
- intervalEMA = intervalEMA ? 0.8 * intervalEMA + 0.2 * da : da;
- window.updateInfo && window.updateInfo(
- "intervalEMA",
- "Fire Period: " + intervalEMA.toString().substr(0, 5) + "ms"
- );
- }else{
- inA = a;
- }
- }
- state = found;
- found = false;
- }
- function onMouseEvent(e){
- e.stopPropagation();
- }
- this.start = function(_direction){
- _direction = _direction || 1;
- direction = _direction > 0 ? 1 : -1;
- inA = null;
- intervalEMA = null;
- state = found = false;
- ctx.setTransform = setTransform;
- ctx.arc = arc;
- var aimX = window.innerWidth / 2 + 50 * direction;
- var aimY = window.innerHeight / 2;
- canvas.dispatchEvent(new MouseEvent("mousemove", {clientX: aimX, clientY: aimY}));
- canvas.dispatchEvent(new MouseEvent("mousedown", {clientX: aimX, clientY: aimY}));
- window.addEventListener("mousemove", onMouseEvent, true);
- window.addEventListener("mouseup", onMouseEvent, true);
- window.addEventListener("mousedown", onMouseEvent, true);
- frameRequest = window.requestAnimationFrame(onFrame);
- window.updateInfo && window.updateInfo("measuring", "Measuring...");
- }
- this.terminate = function(){
- ctx.setTransform = real_setTransform;
- ctx.arc = real_arc;
- window.removeEventListener("mousemove", onMouseEvent, true);
- window.removeEventListener("mousedown", onMouseEvent, true);
- window.removeEventListener("mouseup", onMouseEvent, true);
- window.cancelAnimationFrame(frameRequest);
- canvas.dispatchEvent(new MouseEvent("mouseup", {clientX: 10, clientY: 10}));
- window.updateInfo && window.updateInfo("measuring", null);
- return intervalEMA;
- }
- };
- (function(){
- var cycleRate = 0.003125; // ms^-1
- var maxAngle = Math.PI * 45 / 180;
- var secAngle = 0;
- var cycleCounter = 1;
- var NCANNON = 3;
- var angleUnit = maxAngle / (NCANNON - 1);
- var secUnit = secAngle;
- var ax30945=1;
- var sec=false;
- var tankData = [
- {name: "Tri-angle Stack", cycleRate: 0.003125, maxAngle: Math.PI * 150 / 180, secondaryAngle: Math.PI * 150 / 180, NCANNON: 2},
- {name: "Fighter Stack", cycleRate: 0.003135, maxAngle: Math.PI * 90 / 175, secondaryAngle: Math.PI/2, NCANNON: 2},
- {name: "bycycle's retarded script", cycleRate: 0.003125, maxAngle: Math.PI, secondaryAngle: Math.PI, NCANNON: 2},
- {name: "Penta Stack broken", cycleRate: 0.003125, maxAngle: Math.PI/4, secondaryAngle: Math.PI/4, NCANNON: 3},
- {name: "Spread Stack boken", cycleRate: 0.001555, maxAngle: Math.PI * 75 / 180, secondaryAngle: Math.PI * 75 / 180, NCANNON: 6},
- {name: "Octo Stack", cycleRate: 0.003125, maxAngle: Math.PI/4, secondaryAngle: Math.PI/4, NCANNON: 2},
- {name: "GunnerTrapper",cycleRate: 0.0125, maxAngle: Math.PI, secondaryAngle: Math.PI, NCANNON: 2},
- {name: "Streamliner Spread", cycleRate: 0.0625, maxAngle: Math.PI * 15 / 180, secondaryAngle: Math.PI * 15 / 180, NCANNON: 3},
- {name: "random spinny flick shit idk", cycleRate: 0.001, maxAngle: 0, secondaryAngle: 0, NCANNON: 2},
- ];
- var tankIndex = 0;
- var measure = new MeasureCycle();
- var measuring = false;
- var effective = false;
- var frameRequest;
- var toggle1 = true;
- var toggle2 = false;
- var canvas = window.document.getElementById("canvas");
- var mouseX;
- var mouseY;
- var a = 0;
- var startA = 0;
- var artificialMouseMove = false;
- var disabled = false;
- function onMouseDown(e){
- if(e.button == 2){
- sec=false;
- if(!effective){
- startA = a - 25;
- mouseX = e.clientX;
- mouseY = e.clientY;
- canvas.dispatchEvent(new MouseEvent("mousedown", {clientX: mouseX, clientY: mouseY}));
- }
- effective = true;
- cycleCounter=0;
- }
- }
- function onMouseUp(e){
- if(e.button == 2){
- if(effective){
- canvas.dispatchEvent(new MouseEvent("mouseup", {clientX: mouseX, clientY: mouseY}));
- }
- effective = false;
- }
- }
- function onMouseMove(e){
- if(effective){
- if(!artificialMouseMove){
- e.stopPropagation();
- mouseX = e.clientX;
- mouseY = e.clientY;
- }
- }else{
- mouseX = e.clientX;
- mouseY = e.clientY;
- }
- }
- function update(_a){
- frameRequest = window.requestAnimationFrame(update);
- a = _a;
- if(effective){
- var da = a - startA;
- var state = Math.floor(cycleRate * da * NCANNON) % (NCANNON * 2);
- var state1 = state % NCANNON;
- var state2 = Math.floor(state / NCANNON);
- var remainder=cycleRate*da*NCANNON-Math.floor(cycleRate*da*NCANNON);
- var angle = angleUnit * state1 * ax30945;
- var angle2 = secUnit * state1 * ax30945;
- var cx = window.innerWidth / 2;
- var cy = window.innerHeight / 2;
- window.updateInfo && window.updateInfo("reeeee", remainder);
- if (toggle2 && state1==0) {
- toggle2=false;
- cycleCounter++;
- }
- if (state1!=0) toggle2=true;
- if (cycleCounter%3==2) angle=angle2;
- //if (remainder>0.5) angle=0;
- //if (cycleCounter%2==1) angle=-angle;
- var sin = Math.sin(angle);
- var cos = Math.cos(angle);
- var x = mouseX - cx;
- var y = mouseY - cy;
- var _x = cos * x - sin * y;
- var _y = sin * x + cos * y;
- x = _x + cx;
- y = _y + cy;
- artificialMouseMove = true;
- canvas.dispatchEvent(new MouseEvent("mousemove", {clientX: x, clientY: y}));
- artificialMouseMove = false;
- } else {
- var data = tankData[tankIndex];
- if (data.name=="random spinny flick shit idk") {
- da = a - startA;
- state = Math.floor(0.01 * da * 4) % (4 * 2);
- state1 = state % 4;
- state2 = Math.floor(state / 4);
- angle = Math.PI/3 * state1;
- cx = window.innerWidth / 2;
- cy = window.innerHeight / 2;
- sin = Math.sin(angle);
- cos = Math.cos(angle);
- x = mouseX - cx;
- y = mouseY - cy;
- _x = cos * x - sin * y;
- _y = sin * x + cos * y;
- x = _x + cx;
- y = _y + cy;
- artificialMouseMove = true;
- canvas.dispatchEvent(new MouseEvent("mousemove", {clientX: x, clientY: y}));
- artificialMouseMove = false;
- }
- }
- }
- function onKeyUp(e){
- if(e.key == "Z") {
- ax30945=1;
- }
- if(e.key == "Q"){
- disabled = !disabled;
- if(disabled){
- if(measuring){
- cycleRate = 1 / measure.terminate();
- measuring = false;
- } else stop();
- }else start();
- window.updateInfo && window.updateInfo("off", disabled ? "Disabled." : null);
- return;
- }
- if(disabled) return;
- if(e.key == "N"){
- if(measuring){
- cycleRate = 1 / measure.terminate();
- start();
- measuring = false;
- }else{
- stop();
- measure.start(mouseX - window.innerWidth / 2);
- measuring = true;
- }
- }else if(e.key == "R"){
- changeTank((tankIndex + 1) % tankData.length);
- }
- }
- function changeTank(index){
- var data = tankData[index];
- tankIndex = index;
- cycleRate = data.cycleRate; // ms^-1
- maxAngle = data.maxAngle;
- secAngle = data.secondaryAngle;
- NCANNON = data.NCANNON;
- angleUnit = maxAngle / (NCANNON - 1);
- secUnit = secAngle / (NCANNON - 1);
- window.updateInfo && window.updateInfo("changeTank", "Tank: " + data.name);
- }
- function init(){
- window.addEventListener("keyup", onKeyUp);
- start();
- changeTank(0);
- }
- function start(){
- canvas.addEventListener("mousedown", onMouseDown);
- canvas.addEventListener("mouseup", onMouseUp);
- window.addEventListener("mousemove", onMouseMove, true);
- frameRequest = window.requestAnimationFrame(update);
- }
- function stop(){
- canvas.removeEventListener("mousedown", onMouseDown);
- canvas.removeEventListener("mouseup", onMouseUp);
- window.removeEventListener("mousemove", onMouseMove, true);
- window.cancelAnimationFrame(frameRequest);
- effective = false;
- }
- init();
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement