- // ==UserScript==
- // @name Circle hitboxes - Sploop
- // @namespace http://tampermonkey.net/
- // @version 2024-04-30
- // @description Accurate Circle Hitboxes For PvP in Sploop.io!
- // @author fizzixww
- // @match https://sploop.io/
- // @icon https://www.google.com/s2/favicons?sz=64&domain=sploop.io
- // @grant none
- // @license MIT
- // ==/UserScript==
- const hitbox_Circle_Colour = "#ff0000"; //Choose the colour of the hitboxes! (search Hex Colour Picker in google)
-
- const Remove_weird_circle_above_animals = 0; //(not recommended) Set this to 1 to remove the weird looking circle above animals. however, you will not be able to see other players hitboxes if you do this.
-
-
- //Code derived from Nudos visual extention.
- (function() {
- class Visuals {
- constructor() {
- this.text = {
- color: {
- all: "#fff",
- rainbow: false
- },
- visible: 1
- };
- this.hi = {
- active: true,
- disttag: true,
- dashline: false,
- color: {
- entity: "#cc5151",
- ally: "#a4cc4f",
- rainbow: false
- },
- size: 1,
- visible: 1
- };
- this.hitboxes = {
- active: false,
- dashline: false,
- color: {
- all: "#5174cd",
- rainbow: false
- },
- size: 1,
- visible: 1
- };
- this.rainbow = {
- old: Date.now(),
- hue: 0,
- power: 3,
- time: 10
- };
- this.offset = [0, Date.now()];
- }
-
- rainbowColor() {
- if (!this.rainbow.old || Date.now() - this.rainbow.old >= this.rainbow.time) {
- this.rainbow.hue += this.rainbow.power * Math.random();
- this.rainbow.old = Date.now();
- }
- visuals.rb = `hsl(${this.rainbow.hue}, 100%, 50%)`;
- }
-
- drawText(text, x, y) {
- Context.save();
- Context.font = '18px "Baloo Paaji"';
- Context.lineWidth = 8;
- Context.strokeStyle = "#3d3f42";
- Context.globalAlpha = this.text.visible;
- Context.textAlign = 'center';
- Context.fillStyle = this.text.color.rainbow ? visuals.rb : this.text.color.all;
- Context.strokeText(text, x, y);
- Context.fillText(text, x, y);
- Context.restore();
- }
-
- updateOffset() {
- if (!this.offset[1] || Date.now() - this.offset[1] >= 10) {
- this.offset[0]++;
- this.offset[1] = Date.now();
- }
- }
-
- dashLine() {
- Context.setLineDash([18, 6, 6, 6]);
- Context.lineDashOffset = -visuals.offset[0];
- }
- }
-
- let visuals = new Visuals();
-
- class fizzBurger {
- constructor() {
- this.allAlly = [];
- this.allEntity = [];
- this.localPlayer = {
- active: false,
- positions: [],
- maxPositions: 50 //amount
- };
- }
-
- drawCircle(x, y, imgWidth, imgHeight, rotation, rad) {
- const radius = rad;
- const offset = -radius;
- const centerX = x + imgWidth / 2;
- const centerY = y + imgHeight / 2;
- const rotatedX = centerX + (radius + offset) * Math.cos(rotation);
- const rotatedY = centerY + (radius + offset) * Math.sin(rotation);
- Context.save();
- Context.beginPath();
- Context.arc(rotatedX, rotatedY, radius, 0, 2 * Math.PI);
- Context.lineWidth = 2;
- Context.strokeStyle = hitbox_Circle_Colour;
- Context.stroke();
- Context.restore();
- }
- updatePositions(x, y) {
- this.localPlayer.positions.push({
- x,
- y
- });
-
- if (this.localPlayer.positions.length > this.localPlayer.maxPositions) {
- this.localPlayer.positions.shift();
- }
- }
-
- drawAllCircles() {
- this.allEntity.forEach(({
- x,
- y,
- imgWidth,
- imgHeight,
- rotation
- }) => {
- this.drawCircle(x, y, imgWidth, imgHeight, rotation);
- });
- }
- }
-
- let QuickQuix = new fizzBurger();
-
- let Context;
-
- let {
- clearRect,
- fillRect,
- fillText,
- drawImage
- } = CanvasRenderingContext2D.prototype;
-
- CanvasRenderingContext2D.prototype.clearRect = function(x, y, width, height) {
- if (this.canvas.id === "game-canvas") {
- Context = this.canvas.getContext("2d");
- }
- return clearRect.apply(this, arguments);
- };
-
- CanvasRenderingContext2D.prototype.fillRect = function(x, y, width, height) {
- if (document.getElementById("homepage").style.display == "none") {
- visuals.updateOffset();
- if (this.fillStyle == "#a4cc4f") {}
- } else {
- QuickQuix.localPlayer.active = false;
- }
- return fillRect.apply(this, arguments);
- };
-
- const imageRadii = {
- "https://sploop.io/img/entity/tree.png?v=1923912": 90,
- "https://sploop.io/img/entity/rock.png?v=1923912": 75,
- "https://sploop.io/img/entity/cherry_tree.png?v=1923912": 90,
- "https://sploop.io/img/entity/gold.png?v=1923912": 76,
- "https://sploop.io/img/entity/hard_spike.png?v=1923912": 45,
- "https://sploop.io/img/entity/spike.png?v=1923912": 45,
- "https://sploop.io/img/entity/wall.png?v=1923912": 45,
- "https://sploop.io/img/entity/platform.png?v=1923912": 60,
- "https://sploop.io/img/entity/boost.png?v=1923912": 40,
- "https://sploop.io/img/entity/lootbox.png?v=1923912": 40,
- "https://sploop.io/img/entity/windmill_base.png?v=1923912": 45,
- "https://sploop.io/img/entity/windmill_top.png?v=1923912": 54,
- "https://sploop.io/img/entity/bed.png?v=1923912": 50,
- "https://sploop.io/img/entity/castle_spike.png?v=1923912": 42,
- "https://sploop.io/img/entity/tornado.png?v=1923912": 220,
- "https://sploop.io/img/entity/cactus.png?v=1923912": 50,
- "https://sploop.io/img/entity/bush.png?v=1923912": 50,
- "https://sploop.io/img/entity/roof.png?v=1923912": 50,
- "https://sploop.io/img/entity/chest.png?v=1923912": 45,
- "https://sploop.io/img/entity/turret_base.png?v=1923912": 45,
- "https://sploop.io/img/entity/cow.png?v=1923912": 90,
- "https://sploop.io/img/entity/trap.png?v=1923912": 40,
- "https://sploop.io/img/entity/wood_farm.png?v=1923912": 80,
- "https://sploop.io/img/entity/shark.png?v=1923912": 90,
- "https://sploop.io/img/entity/castle_wall.png?v=1923912": 59,
- "https://sploop.io/img/entity/wolf.png?v=1923912": 50,
- "https://sploop.io/img/entity/berry_farm.png?v=1923912": 50,
- "https://sploop.io/img/entity/gcow.png?v=1923912": 90,
- "https://sploop.io/img/entity/palm_tree.png?v=1923912": 90,
- "https://sploop.io/img/entity/cave_stone0.png?v=1923912": 92,
- "https://sploop.io/img/entity/cave_stone1.png?v=1923912": 92,
- "https://sploop.io/img/entity/cave_stone2.png?v=1923912": 58,
- "https://sploop.io/img/entity/fireball.png?v=1923912": 100,
- "https://sploop.io/img/entity/ice0.png?v=1923912": 92,
- "https://sploop.io/img/entity/ice1.png?v=1923912": 20,
- "https://sploop.io/img/entity/teleporter.png?v=1923912": 35,
- "https://sploop.io/img/entity/duck.png?v=1923912": 20,
- "https://sploop.io/img/entity/mammoth_body.png?v=1923912": 90,
- "https://sploop.io/img/entity/dragon_2_body.png?v=1923912": 100,
- "https://sploop.io/img/entity/wood_farm_cherry.png?v=1923912": 80,
- "https://sploop.io/img/entity/wood_farm.png?v=1923912": 80,
- "https://sploop.io/img/entity/ruby.png?v=1923912": 100,
- "https://sploop.io/img/skins/body0.png?v=1923912": 35,
- "https://sploop.io/img/skins/body1.png?v=1923912": 35,
- "https://sploop.io/img/skins/body2.png?v=1923912": 35,
- "https://sploop.io/img/skins/body3.png?v=1923912": 35,
- "https://sploop.io/img/skins/body4.png?v=1923912": 35,
- "https://sploop.io/img/skins/body5.png?v=1923912": 35,
- "https://sploop.io/img/skins/body6.png?v=1923912": 35,
- "https://sploop.io/img/skins/body7.png?v=1923912": 35,
- "https://sploop.io/img/skins/body8.png?v=1923912": 35,
- "https://sploop.io/img/skins/body9.png?v=1923912": 35,
- "https://sploop.io/img/skins/body10.png?v=1923912": 35,
- "https://sploop.io/img/skins/body11.png?v=1923912": 35,
- "https://sploop.io/img/skins/body12.png?v=1923912": 35,
- "https://sploop.io/img/skins/body13.png?v=1923912": 35,
- "https://sploop.io/img/skins/body14.png?v=1923912": 35,
- "https://sploop.io/img/skins/body15.png?v=1923912": 35,
- "https://sploop.io/img/skins/body16.png?v=1923912": 35,
- "https://sploop.io/img/skins/body17.png?v=1923912": 35,
- "https://sploop.io/img/skins/body18.png?v=1923912": 35,
- "https://sploop.io/img/skins/body19.png?v=1923912": 35,
- "https://sploop.io/img/skins/body20.png?v=1923912": 35,
- "https://sploop.io/img/skins/body21.png?v=1923912": 35,
- "https://sploop.io/img/skins/body22.png?v=1923912": 35,
- "https://sploop.io/img/skins/body23.png?v=1923912": 35,
- "https://sploop.io/img/skins/body24.png?v=1923912": 35,
- "https://sploop.io/img/skins/body25.png?v=1923912": 35,
- "https://sploop.io/img/skins/body26.png?v=1923912": 35,
- "https://sploop.io/img/skins/body27.png?v=1923912": 35,
- "https://sploop.io/img/skins/body28.png?v=1923912": 35,
- "https://sploop.io/img/skins/body29.png?v=1923912": 35,
- "https://sploop.io/img/skins/body30.png?v=1923912": 35,
- "https://sploop.io/img/skins/body31.png?v=1923912": 35,
- "https://sploop.io/img/skins/body32.png?v=1923912": 35,
- "https://sploop.io/img/skins/body33.png?v=1923912": 35,
- "https://sploop.io/img/skins/body34.png?v=1923912": 35,
- "https://sploop.io/img/skins/body35.png?v=1923912": 35,
- "https://sploop.io/img/skins/body36.png?v=1923912": 35,
- "https://sploop.io/img/skins/body37.png?v=1923912": 35,
- "https://sploop.io/img/skins/body38.png?v=1923912": 35,
- "https://sploop.io/img/skins/body39.png?v=1923912": 35,
- "https://sploop.io/img/skins/body40.png?v=1923912": 35,
- "https://sploop.io/img/skins/body41.png?v=1923912": 35,
- "https://sploop.io/img/skins/body42.png?v=1923912": 35,
- "https://sploop.io/img/skins/body43.png?v=1923912": 35,
- "https://sploop.io/img/skins/body44.png?v=1923912": 35,
- "https://sploop.io/img/skins/body45.png?v=1923912": 35,
- "https://sploop.io/img/skins/body46.png?v=1923912": 35,
- "https://sploop.io/img/skins/body47.png?v=1923912": 35,
- "https://sploop.io/img/skins/body48.png?v=1923912": 35,
- "https://sploop.io/img/skins/body49.png?v=1923912": 35,
- "https://sploop.io/img/skins/body50.png?v=1923912": 35,
- "https://sploop.io/img/skins/body51.png?v=1923912": 35,
- "https://sploop.io/img/skins/body52.png?v=1923912": 35,
- "https://sploop.io/img/skins/body53.png?v=1923912": 35,
- "https://sploop.io/img/skins/body54.png?v=1923912": 35,
- "https://sploop.io/img/skins/body55.png?v=1923912": 35,
- "https://sploop.io/img/skins/body56.png?v=1923912": 35,
- "https://sploop.io/img/skins/body57.png?v=1923912": 35,
- "https://sploop.io/img/skins/body58.png?v=1923912": 35,
- "https://sploop.io/img/skins/body59.png?v=1923912": 35,
- "https://sploop.io/img/skins/body60.png?v=1923912": 35,
- "https://sploop.io/img/skins/body61.png?v=1923912": 35,
- "https://sploop.io/img/skins/body62.png?v=1923912": 35,
- "https://sploop.io/img/skins/body63.png?v=1923912": 35,
- "https://sploop.io/img/skins/body64.png?v=1923912": 35,
- "https://sploop.io/img/skins/body65.png?v=1923912": 35,
- "https://sploop.io/img/skins/body66.png?v=1923912": 35,
- "https://sploop.io/img/skins/body67.png?v=1923912": 35,
- "https://sploop.io/img/skins/body68.png?v=1923912": 35,
- "https://sploop.io/img/skins/body69.png?v=1923912": 35,
- "https://sploop.io/img/skins/body70.png?v=1923912": 35,
- "https://sploop.io/img/skins/body71.png?v=1923912": 35,
- "https://sploop.io/img/skins/body72.png?v=1923912": 35,
- "https://sploop.io/img/skins/body73.png?v=1923912": 35,
- "https://sploop.io/img/skins/body74.png?v=1923912": 35,
- "https://sploop.io/img/skins/body75.png?v=1923912": 35,
- "https://sploop.io/img/skins/body76.png?v=1923912": 35,
- "https://sploop.io/img/skins/body77.png?v=1923912": 35,
- "https://sploop.io/img/skins/body78.png?v=1923912": 35,
- "https://sploop.io/img/skins/body79.png?v=1923912": 35,
- "https://sploop.io/img/skins/body80.png?v=1923912": 35,
- "https://sploop.io/img/skins/body81.png?v=1923912": 35,
- "https://sploop.io/img/skins/body82.png?v=1923912": 35,
- "https://sploop.io/img/skins/body83.png?v=1923912": 35,
- "https://sploop.io/img/skins/body84.png?v=1923912": 35,
- "https://sploop.io/img/skins/body85.png?v=1923912": 35,
- "https://sploop.io/img/skins/body86.png?v=1923912": 35,
- "https://sploop.io/img/skins/body87.png?v=1923912": 35,
- "https://sploop.io/img/skins/body88.png?v=1923912": 35,
- "https://sploop.io/img/skins/body89.png?v=1923912": 35,
- "https://sploop.io/img/skins/body90.png?v=1923912": 35,
- "https://sploop.io/img/skins/body91.png?v=1923912": 35,
- "https://sploop.io/img/skins/body92.png?v=1923912": 35,
- "https://sploop.io/img/skins/body93.png?v=1923912": 35,
- "https://sploop.io/img/skins/body94.png?v=1923912": 35,
- "https://sploop.io/img/skins/body95.png?v=1923912": 35,
- //more bodies added incase of future skins dont worry I didnt type them all out thanks for caring
- "https://sploop.io/img/skins/body96.png?v=1923912": 35,
- "https://sploop.io/img/skins/body97.png?v=1923912": 35,
- "https://sploop.io/img/skins/body98.png?v=1923912": 35,
- "https://sploop.io/img/skins/body99.png?v=1923912": 35,
- "https://sploop.io/img/skins/body100.png?v=1923912": 35,
- "https://sploop.io/img/skins/body101.png?v=1923912": 35,
- "https://sploop.io/img/skins/body102.png?v=1923912": 35,
- "https://sploop.io/img/skins/body103.png?v=1923912": 35,
- "https://sploop.io/img/skins/body104.png?v=1923912": 35,
- "https://sploop.io/img/skins/body105.png?v=1923912": 35,
- "https://sploop.io/img/skins/body106.png?v=1923912": 35,
- "https://sploop.io/img/skins/body107.png?v=1923912": 35,
- "https://sploop.io/img/skins/body108.png?v=1923912": 35,
- "https://sploop.io/img/skins/body109.png?v=1923912": 35,
- "https://sploop.io/img/skins/body110.png?v=1923912": 35,
- "https://sploop.io/img/skins/body111.png?v=1923912": 35,
- "https://sploop.io/img/skins/body112.png?v=1923912": 35,
- "https://sploop.io/img/skins/body113.png?v=1923912": 35,
- "https://sploop.io/img/skins/body114.png?v=1923912": 35,
- "https://sploop.io/img/skins/body115.png?v=1923912": 35,
- "https://sploop.io/img/skins/body116.png?v=1923912": 35,
- "https://sploop.io/img/skins/body117.png?v=1923912": 35,
- "https://sploop.io/img/skins/body118.png?v=1923912": 35,
- "https://sploop.io/img/skins/body119.png?v=1923912": 35,
- "https://sploop.io/img/skins/body120.png?v=1923912": 35,
- "https://sploop.io/img/skins/body121.png?v=1923912": 35,
- "https://sploop.io/img/skins/body122.png?v=1923912": 35,
- "https://sploop.io/img/skins/body123.png?v=1923912": 35,
- "https://sploop.io/img/skins/body124.png?v=1923912": 35,
- "https://sploop.io/img/skins/body125.png?v=1923912": 35,
- "https://sploop.io/img/skins/body126.png?v=1923912": 35,
- "https://sploop.io/img/skins/body127.png?v=1923912": 35,
- "https://sploop.io/img/skins/body128.png?v=1923912": 35,
- "https://sploop.io/img/skins/body129.png?v=1923912": 35,
- "https://sploop.io/img/skins/body130.png?v=1923912": 35,
- "https://sploop.io/img/skins/body131.png?v=1923912": 35,
- "https://sploop.io/img/skins/body132.png?v=1923912": 35,
- "https://sploop.io/img/skins/body133.png?v=1923912": 35,
- "https://sploop.io/img/skins/body134.png?v=1923912": 35,
- "https://sploop.io/img/skins/body135.png?v=1923912": 35,
- "https://sploop.io/img/skins/body136.png?v=1923912": 35,
- "https://sploop.io/img/skins/body137.png?v=1923912": 35,
- "https://sploop.io/img/skins/body138.png?v=1923912": 35,
- "https://sploop.io/img/skins/body139.png?v=1923912": 35,
- "https://sploop.io/img/skins/body140.png?v=1923912": 35,
- "https://sploop.io/img/skins/body141.png?v=1923912": 35,
- "https://sploop.io/img/skins/body142.png?v=1923912": 35,
- "https://sploop.io/img/skins/body143.png?v=1923912": 35,
- "https://sploop.io/img/skins/body144.png?v=1923912": 35,
- "https://sploop.io/img/skins/body145.png?v=1923912": 35,
- "https://sploop.io/img/skins/body146.png?v=1923912": 35,
- "https://sploop.io/img/skins/body147.png?v=1923912": 35,
- "https://sploop.io/img/skins/body148.png?v=1923912": 35,
- "https://sploop.io/img/skins/body149.png?v=1923912": 35,
- "https://sploop.io/img/skins/body150.png?v=1923912": 35,
- };
- CanvasRenderingContext2D.prototype.drawImage = function(img, ...args) {
- if (this.canvas.id === "game-canvas") {
- const imageURL = img.src;
- const radius = imageRadii[imageURL] || 0.0;
-
- if (imageURL in imageRadii) {
- const x = args[0];
- const y = args[1];
- const width = args[2];
- const height = args[3];
- const rotation = args[4] || 0;
-
- drawImage.apply(this, [img, ...args]);
- QuickQuix.drawCircle(x, y, width, height, rotation, radius);
- return;
- }
- }
- return drawImage.apply(this, [img, ...args]);
- };
- })();
-
- //following function draws a second circle using healthbar so that player hitbox can be seen above hat.
-
- (function() {
- class xXSploopyTailXx {
- constructor() {
- this.text = {
- color: {
- all: "#fff"
- },
- visible: 1
- };
- this.rainbow = {};
- this.offset = [0, Date.now()];
- }
-
- xXsploopyColorsXx() {
- if (!this.rainbow.old || Date.now() - this.rainbow.old >= this.rainbow.time) {
- this.rainbow.hue += this.rainbow.power * Math.random();
- this.rainbow.old = Date.now();
- }
- xXsploopyTextXx.rb = `hsl(${this.rainbow.hue}, 100%, 50%)`;
- }
-
- xXsploopyOffsetXx() {
- if (!this.offset[1] || Date.now() - this.offset[1] >= 10) {
- this.offset[0]++;
- this.offset[1] = Date.now();
- }
- }
- }
-
- let xXsploopyTextXx = new xXSploopyTailXx();
-
- class xXSploopyLooperXx {
- constructor() {
- this.localPlayer = {
- position: {
- x: 0,
- y: 0
- },
- maxPositions: 50
- };
- }
-
- drawXxSplooptailXx(x, y) {
- const radius = 35;
-
- Context.save();
- Context.beginPath();
- Context.arc(x, y, radius, 0, 2 * Math.PI);
- Context.lineWidth = 2;
- Context.strokeStyle = hitbox_Circle_Colour;
- Context.stroke();
- Context.restore();
- }
-
- updateXxSploopyPositionXx(x, y) {
- this.localPlayer.position = {
- x,
- y
- };
- }
-
- drawXxSploopyCircleXx() {
- const {
- x,
- y
- } = this.localPlayer.position;
- this.drawXxSplooptailXx(x, y);
- }
- }
-
- let xXsploopyLooperXx = new xXSploopyLooperXx();
-
- let Context;
-
- let {
- clearRect,
- fillRect
- } = CanvasRenderingContext2D.prototype;
-
- CanvasRenderingContext2D.prototype.clearRect = function(x, y, width, height) {
- if (this.canvas.id === "game-canvas") {
- Context = this.canvas.getContext("2d");
- xXsploopyTextXx.xXsploopyColorsXx();
- }
- return clearRect.apply(this, arguments);
- };
-
- CanvasRenderingContext2D.prototype.fillRect = function(x, y, width, height) {
- if (document.getElementById("homepage").style.display == "none") {
- xXsploopyTextXx.xXsploopyOffsetXx();
- if (this.fillStyle == "#a4cc4f") {
- xXsploopyLooperXx.updateXxSploopyPositionXx(x + 48, y - 70);
- xXsploopyLooperXx.drawXxSploopyCircleXx();
- }
- if (this.fillStyle == "#cc5151" && Remove_weird_circle_above_animals === 0) {
- xXsploopyLooperXx.updateXxSploopyPositionXx(x + 48, y - 70);
- xXsploopyLooperXx.drawXxSploopyCircleXx();
- }
- }
- return fillRect.apply(this, arguments);
- };
- })();