您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Notifies when people join,leave,respawn or die using the inbuilt diep.io player list.
// ==UserScript== // @name Diep.io Join Notifier // @namespace * // @version 1.1.6 // @description Notifies when people join,leave,respawn or die using the inbuilt diep.io player list. // @author rbest // @match https://diep.io/* // @icon https://www.google.com/s2/favicons?sz=64&domain=diep.io // @license rbest // @grant none // ==/UserScript== // made by king rbest // made by king rbest // made by king rbest //toggle which notifications you want let joinNotifications = true; let dieNotifications = true; let respawnNotifications = true; let leaveNotifications = true; //dont touch this; let old = []; let bef = []; let changed = false; let oldPlayers = {}; let oldNames = {}; let times = {}; function toMin(millis) { var minutes = Math.floor(millis / 60000); var seconds = ((millis % 60000) / 1000).toFixed(0); return minutes + ":" + (seconds < 10 ? '0' : '') + seconds; } function check() { let players = window.ui.players; let players2 = {}; players.forEach(player=>{ players2[player.identityId] = player; }) if (players) { bef = old; oldPlayers = {}; bef.forEach(player=>{ oldPlayers[player.identityId] = player; }) old = players; if (bef===old) changed = false; if (bef!==old) changed = true; if (changed === true) { for (let player of players) { if (!oldPlayers[player.identityId]) { if (joinNotifications) notification(`${player.name} joined`); times[player.identityId] = {}; } if (oldPlayers[player.identityId]) { if (oldPlayers[player.identityId].name !== ' (dead)' && player.name === ' (dead)') { oldNames[player.identityId] = oldPlayers[player.identityId].name; if (dieNotifications && times[player.identityId].spawnTime) notification(`${oldPlayers[player.identityId].name} died (${toMin(new Date().getTime()-times[player.identityId].spawnTime)})`) if (dieNotifications && !times[player.identityId].spawnTime) notification(`${oldPlayers[player.identityId].name} died`) } if (oldPlayers[player.identityId].name === ' (dead)' && player.name !== ' (dead)') { if (player.name === oldNames[player.identityId]) { if (respawnNotifications) notification(`${player.name} respawned`); } else if (player.name !== oldNames[player.identityId] && oldNames[player.identityId] !== undefined) { if (respawnNotifications) notification(`${player.name} (${oldNames[player.identityId]}) respawned`); //if they changed username } times[player.identityId] = {}; times[player.identityId].spawnTime = new Date().getTime(); oldNames[player.identityId] = player.name; } } } Object.values(oldPlayers).forEach(playr=>{ if (!players2[playr.identityId] && oldNames[playr.identityId] !== undefined) if (leaveNotifications) notification(`${oldNames[playr.identityId]} left`); if (!players2[playr.identityId] && oldNames[playr.identityId] === undefined) if (leaveNotifications) notification(`${playr.name} left`); }) } } } setInterval(check,100); //Modified notification code from DiepBox let notificationBody = document.body.appendChild(document.createElement('div')); notificationBody.style.pointerEvents = 'none'; notificationBody.style.position = 'fixed'; notificationBody.style.left = `50%`; notificationBody.style.top = `1.9%`; notificationBody.style.opacity = '0.70'; function notification(text, duration = 3500) { const button = document.createElement('button'); button.innerHTML = ` ${text} `; button.style['background-color'] = '#E8B18B'; button.style.display = 'block'; button.style.height = '35px'; button.style.border = 'none'; button.style.color = 'white'; button.style.fontSize = '26px'; button.style.transform = 'translate(-50%, -1.9%)'; button.addEventListener('contextmenu', (e) => e.preventDefault()); notificationBody.appendChild(button); setTimeout(()=>{ button.style.transition = "opacity 250ms"; button.style.opacity = "0"; setTimeout(() => button.remove(), 250); },duration); } // made by king rbest