(new, Diep.io)Mario kart

a new game mode that consists of racing with your friends PS:new update will come

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         (new, Diep.io)Mario kart
// @description  a new game mode that consists of racing with your friends PS:new update will come
// @version      0.1
// @author       tariteur#2358
// @match        *://diep.io/*
// @grant        none
// @require      https://greasyfork.org/scripts/433681-diepapi/code/diepAPI.js?version=1012053
// @namespace
// @namespace https://greasyfork.org/users/870564
// ==/UserScript==
//I use diep API by cazka
'use strict';
const { Vector, arenaScaling, player, game, entityManager } = window.diepAPI;
const ctx = document.getElementById('canvas').getContext('2d');
const canvas = document.getElementById('canvas');
const colors = ["#E8B18A", "#E666EA", "#9566EA", "#6690EA", "#E7D063", "#EA6666", "#92EA66", "#808080"];
////////////////////rose////////violet/////bleu///////jaune//////rouge//////vert///////bleu clair//gris////
const textShadow = 'text-shadow:black 0.18vh 0, black -0.18vh 0, black 0 -0.18vh, black 0 0.18vh, black 0.18vh 0.18vh, black -0.18vh 0.18vh, black 0.18vh -0.18vh, black -0.18vh -0.18vh, black 0.09vh 0.18vh, black -0.09vh 0.18vh, black 0.09vh -0.18vh, black -0.09vh -0.18vh, black 0.18vh 0.09vh, black -0.18vh 0.09vh, black 0.18vh -0.09vh, black -0.18vh -0.09vh'
let coords1;
let coords2;
var timerON = false;
var trial = 0;
var Color;

  const html = `
<body>
<label for="color-select">Choose a color:</label>

  <select id="color-select" onchange="colourFunction()">
    <option value="">--choose an color--</option>
    <option class="pink" value="pink">Pink</option>
    <option class="purple" value="purple">Purple</option>
    <option class="blue" value="blue">Blue</option>
    <option class="yellow" value="yellow">Yellow</option>
    <option class="red" value="red">Red</option>
    <option class="green" value="green">Green</option>
    <option class="gray" value="gray">Gray</option>
  </select>
<label for="time-select">Choose a time:</label>

  <select id="time-select" onchange="timeFunction()">
    <option value="">- ⬇ Best Try ⬇ -</option>
  </select>

  <h1 id="test"><time>00:00:00</time></h1>
  <button id="strt">start</button>
  <button id="stp">stop</button>
  <button id="rst">reset</button>

</body>
`
  const css = `
  <style>
#time-select
{
cursor:pointer;
idth:5vw;
height:4vh;
border-radius: 0.5vw;
font-family:Ubuntu;
position: absolute;
display: none;
background:
}
#tool-select
{
cursor:pointer;
idth:5vw;
height:4vh;
border-radius: 0.5vw;
font-family:Ubuntu;
position: absolute;
display: block;
background:
top: 5%;
left: 1%;
}
#block
{
position: absolute;
      top: 1%;
      left: 240px;
      display: block;
}
#sphere
{
position: absolute;
      top: 1%;
      left: 280px;
      display: block;
}
#text
{
position: absolute;
      top: 1%;
      left: 320px;
      display: block;
}
#retour
{
position: absolute;
      top: 1%;
      left: 360px;
      display: block;
}
.white {background:white;}
.pink {background:pink;}
.purple {background:purple;}
.blue {background:blue;}
.yellow {background:yellow;}
.red {background:red;}
.green {background:green}
.gray {background:gray}
#color-select
{
cursor:pointer;
idth:5vw;
height:4vh;
border-radius: 0.5vw;
font-family:Ubuntu;
position: absolute;
display: none;
background:
}
</style>`;

  canvas.insertAdjacentHTML('afterend', css);
  canvas.insertAdjacentHTML('afterend', html);


function drawZones() {
        let img = new Image(); // Crée un nouvel élément Image
    img.src = 'https://cdn.discordapp.com/attachments/937831925484228690/1021459145771204648/channels4_profile.jpg'; // Définit le chemin vers sa source
    let img2 = new Image(); // Crée un nouvel élément Image
    img2.src = 'https://pbs.twimg.com/media/FcPVr3kX0AMhHwv?format=png&name=small'; // Définit le chemin vers sa source
    let img3 = new Image(); // Crée un nouvel élément Image
    img3.src = 'https://pbs.twimg.com/media/FcSiuCMXgAA9rUf?format=png&name=240x240'; // Définit le chemin vers sa source
    let img4 = new Image(); // Crée un nouvel élément Image
    img4.src = 'https://pbs.twimg.com/media/FcVAfmrXoAE1pAa?format=png&name=360x360'; // Définit le chemin vers sa source

    var mylist = document.getElementById("color-select");
    let Color = mylist.options[mylist.selectedIndex].text;
    document.getElementById("color-select").style.background = mylist.options[mylist.selectedIndex].text;
    coords1 = arenaScaling.toScreenPos(new Vector(-2000, -2500));
    document.getElementById("color-select").style.top = coords1.y + "px";
    document.getElementById("color-select").style.left = coords1.x + "px";
    coords1 = arenaScaling.toScreenPos(new Vector(-1350, -2500));
    document.getElementById("time-select").style.top = coords1.y + "px";
    document.getElementById("time-select").style.left = coords1.x + "px";
    document.getElementById('color-select').style.display = "block";
    document.getElementById('test').style.display = "block";
    document.getElementById('time-select').style.display = "block";
    ctx.save();

    ctx.globalAlpha = 0.5;

    coords1 = arenaScaling.toScreenPos(new Vector(-2500, -2500));
    coords2 = arenaScaling.toScreenPos(new Vector(-3000, -2000));
    ctx.drawImage(img, coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(-2500, -2000));
    coords2 = arenaScaling.toScreenPos(new Vector(-3000, -1900));
    ctx.drawImage(img2, coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(-1500, -1500));
    coords2 = arenaScaling.toScreenPos(new Vector(-1000, -1350));
    ctx.drawImage(img3, coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(-2500, -1500));
    coords2 = arenaScaling.toScreenPos(new Vector(-2000, -1350));
    ctx.drawImage(img3, coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(-3000, -1500));
    coords2 = arenaScaling.toScreenPos(new Vector(-2500, -1350));
    ctx.drawImage(img3, coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(-2000, -2500));
    coords2 = arenaScaling.toScreenPos(new Vector(-2500, -2100));
    ctx.drawImage(img4, coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(-2500, -1500));
    ctx.textAlign = "center"
    ctx.font = '48px serif';
    ctx.strokeText('Start', coords1.x, coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(-1250, -1500));
    ctx.textAlign = "center"
    ctx.font = '48px serif';
    ctx.strokeText('Finish', coords1.x, coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(-2250, -2000));
    ctx.textAlign = "center"
    ctx.font = '30px serif';
    ctx.strokeText('created by', coords1.x, coords1.y);
    ctx.strokeText('tariteur#2358', coords1.x, coords1.y+25);

    coords1 = arenaScaling.toScreenPos(new Vector(3000, -3000));
    coords2 = arenaScaling.toScreenPos(new Vector(-3000, -2500));
    ctx.fillStyle = Color;
    ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(-2000, -1500));
    coords2 = arenaScaling.toScreenPos(new Vector(-1500, 1500));
    ctx.fillStyle = Color;
    ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(-1000, -2500));
    coords2 = arenaScaling.toScreenPos(new Vector(-500, 500));
    ctx.fillStyle = Color;
    ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(-3500, -3000));
    coords2 = arenaScaling.toScreenPos(new Vector(-3000, 3000));
    ctx.fillStyle = Color;
    ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(-3000, 2500));
    coords2 = arenaScaling.toScreenPos(new Vector(2500, 3000));
    ctx.fillStyle = Color;
    ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(-1500, 1000));
    coords2 = arenaScaling.toScreenPos(new Vector(1500, 1500));
    ctx.fillStyle = Color;
    ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(0, -2000));
    coords2 = arenaScaling.toScreenPos(new Vector(500, 1000));
    ctx.fillStyle = Color;
    ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(500, -1500));
    coords2 = arenaScaling.toScreenPos(new Vector(2000, -1000));
    ctx.fillStyle = Color;
    ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(3000, -2500));
    coords2 = arenaScaling.toScreenPos(new Vector(3500, 1000));
    ctx.fillStyle = Color;
    ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(1500, -500));
    coords2 = arenaScaling.toScreenPos(new Vector(3000, 0));
    ctx.fillStyle = Color;
    ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(2500, 1000));
    coords2 = arenaScaling.toScreenPos(new Vector(3500, 1500));
    ctx.fillStyle = Color;
    ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    coords1 = arenaScaling.toScreenPos(new Vector(2500, 1500));
    coords2 = arenaScaling.toScreenPos(new Vector(3000, 3000));
    ctx.fillStyle = Color;
    ctx.fillRect(coords1.x, coords1.y, coords2.x - coords1.x, coords2.y - coords1.y);

    ctx.restore();
}

game.once('ready', () => {
    game.on('frame', () => {
        if (!player.isDead) drawZones();
    });
});

function bestTime() {
        trial ++;
        var x = document.getElementById("time-select");
        var option = document.createElement("option");
        option.text = h1.textContent + ", try: "+ trial;
         x.add(option);
    sortList();
    }

function sortList() {
  var list, i, switching, b, shouldSwitch;
  list = document.getElementById("time-select");
  switching = true;

  while (switching) {
    switching = false;
    b = list.getElementsByTagName("option");
    for (i = 0; i < (b.length - 1); i++) {
      shouldSwitch = false;
      if (b[i].innerHTML.toLowerCase() > b[i + 1].innerHTML.toLowerCase()) {
        shouldSwitch = true;
        break;
      }
    }
    if (shouldSwitch) {
      b[i].parentNode.insertBefore(b[i + 1], b[i]);
      switching = true;
    }
  }
}
function getPlayer(){
        const me = entityManager.entities.filter(
            (ent) =>
                ent.type == 0 && Vector.distance(ent.position, player.position) < 28
        );

        return me[0];
    }

game.once('ready', () => {
    game.on('frame', () => {
        if (!player.isDead){
                let ple = getPlayer();
                let margin = ple.extras.radius;
                let px = player.position.x;
                let py = player.position.y;
            if ((-1500 - margin < px &&
            px < -1000 + margin &&
            -1500 - margin < py &&
            py < -1350 + margin)
            ){
                if (timerON) {
                document.getElementById("stp").click();
                bestTime();
                timerON = false;
                }
            };
            if ((-3000 - margin < px &&
            px < -2000 + margin &&
            -1500 - margin < py &&
            py < -1350 + margin)
            ){
                if (!timerON) {
                document.getElementById("strt").click();
                timerON = true;
                } else {
                document.getElementById("rst").click();
                }
            };
            if ((-3000 - margin < px &&
            px < -2500 + margin &&
            -2500 - margin < py &&
            py < -2000 + margin)
            ){
                window.open("https://www.youtube.com/channel/UCT6nOb6Zsjz8Thrse6Nuimw","nom_de_la_fenetre","options_nouvelle_fenetre");
                input.keyDown(40);
             } else {
                input.keyUp(40);
             }
        }
    });
});

var h1 = document.getElementsByTagName('h1')[0];
var start = document.getElementById('strt');
var stop = document.getElementById('stp');
var reset = document.getElementById('rst');
var sec = 0;
var min = 0;
var hrs = 0;
var t;
var sec2;
var min2;
var hrs2;



function tick(){
    sec++;
    if (sec >= 60) {
        sec = 0;
        min++;
        if (min >= 60) {
            min = 0;
            hrs++;
        }
    }
}
function add() {
    tick();
    h1.textContent = (hrs > 9 ? hrs : "0" + hrs)
        	 + ":" + (min > 9 ? min : "0" + min)
       		 + ":" + (sec > 9 ? sec : "0" + sec);
    timer();
}
function timer() {
    t = setTimeout(add, 10);

}

start.onclick = timer;
stop.onclick = function() {
    clearTimeout(t);
}
reset.onclick = function() {
    h1.textContent = "00:00:00";
    sec = 0; min = 0; hrs = 0;
}