您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds an cat which wanders around your screen and sometimes tries to make you die
// ==UserScript== // @name Bonk kitten // @namespace https://bonk.io/ // @version 0.4 // @description Adds an cat which wanders around your screen and sometimes tries to make you die // @author You // @match https://bonk.io/* // @run-at document-start // @grant none // @noframes // @icon https://www.google.com/s2/favicons?sz=64&domain=bonk.io // ==/UserScript== function keyEvent (keyCode, type, modifiers) { let gdocument = document.getElementById("maingameframe").contentDocument; var evtName = (typeof(type) === "string") ? "key" + type : "keydown"; var modifier = (typeof(modifiers) === "object") ? modifier : {}; var event = document.createEvent("HTMLEvents"); event.initEvent(evtName, true, false); event.keyCode = keyCode; for (var i in modifiers) { event[i] = modifiers[i]; } gdocument.dispatchEvent(event); } //let SKIN = new Image(); //let CAT = new Image(); //SKIN.src = 'https://bonkclans.itsdawildshadow.repl.co/file/keyboard.png'; //CAT.src = 'https://bonkclans.itsdawildshadow.repl.co/file/cat.png'; //console.log(SKIN); // TEMPORARY SOLUTION! let mouse = { x: 0, y: 0, lx: 0, ly: 0, vx: 0, vy: 0, drag: false } let canvas = document.createElement("canvas"); canvas.style.width = window.innerWidth+"px"; canvas.style.position = 'fixed'; canvas.style.height = window.innerHeight+"px"; canvas.style.left = "0px"; canvas.style.top = "0px"; canvas.width = window.innerWidth; canvas.height = window.innerHeight; canvas.style.zIndex = 10; canvas.style.pointerEvents = "none"; setTimeout(() => { document.body.appendChild(canvas); },4000); let cvt = canvas.getContext("2d"); let assistent = { x: 0, y: 0, vy: 0, vx: 0, mode: "idle", right: false, left: false, jump: false } let lastCall = Date.now(); let decision = 1; let randomInput = 0; let lastInput = [0,0,0,0]; let lasterInput = [0,0,0,0]; let wander = 1; let lastScroll = 0; window.onscroll = function (e) { assistent.y += lastScroll-(document.documentElement.scrollTop || document.body.scrollTop); if (assistent.y > canvas.height-50){ assistent.vy = ((document.documentElement.scrollTop || document.body.scrollTop)-lastScroll)*3; assistent.y = canvas.height-50; } if (assistent.y < 50){ assistent.vy = (lastScroll-(document.documentElement.scrollTop || document.body.scrollTop))*3; assistent.y = 50; } lastScroll = document.documentElement.scrollTop || document.body.scrollTop } window.addEventListener("resize", (event) => { canvas.style.width = window.innerWidth+"px"; canvas.style.position = 'fixed'; canvas.style.height = window.innerHeight+"px"; canvas.style.left = "0px"; canvas.style.top = "0px"; canvas.width = window.innerWidth; canvas.height = window.innerHeight; }); setInterval(() => { let dt = (Date.now()-lastCall)/1000; mouse.vx = (mouse.x-mouse.lx)/dt; mouse.vy = (mouse.y-mouse.ly)/dt; if (mouse.drag){ assistent.x = mouse.x; assistent.y = mouse.y; assistent.vx = mouse.vx/3; assistent.vy = mouse.vy/3; } lastCall = Date.now(); decision -= dt; if (decision <= 0){ decision = Math.random()*6; let mode = Math.floor(Math.random()*5); if (mode <= 3){ assistent.mode = 'type'; } if (mode == 4){ assistent.mode = 'wander'; } if (mode == 5){ assistent.mode = 'idle'; } } if (assistent.mode == "wander"){ decision += dt/2; wander -= dt; if (wander <= 0){ wander = (Math.random()*3); if (Math.random()*3 <= 1){ assistent.left = true; assistent.right = false; }else if (Math.random()*3 <= 1){ assistent.right = true; assistent.left = false; }else{ assistent.right = false; assistent.left = false; } } } cvt.clearRect(0,0,canvas.width,canvas.height); cvt.fillStyle = 'white'; cvt.beginPath(); cvt.arc(assistent.x,assistent.y,25,0,Math.PI*2); cvt.fill(); cvt.closePath(); //if (CAT.complete){ //cvt.drawImage(CAT,assistent.x-25,assistent.y-25,50,50); //} if (assistent.mode == 'type'){ decision -= dt*1.5 //cvt.drawImage(SKIN,assistent.x-60,assistent.y-20,120,60) if (randomInput <= 0){ randomInput = Math.random()*2; lastInput = [Math.floor(Math.random()*3)-1,Math.floor(Math.random()*3)-1,Math.floor(Math.random()*3)-1,Math.floor(Math.random()*3)-1] } randomInput -= dt; if (lasterInput !== lastInput){ if (lastInput[1] > 0){ keyEvent(68); keyEvent(65,'up'); }else if (lastInput[1] < 0){ keyEvent(68,'up'); keyEvent(65); }else{ keyEvent(68,'up'); keyEvent(65,'up'); } if (lastInput[1] > 0){ keyEvent(87); keyEvent(83,'up'); }else if (lastInput[1] < 0){ keyEvent(87,'up'); keyEvent(83); }else{ keyEvent(83,'up'); keyEvent(87,'up'); } if (lastInput[2] > 0){ keyEvent(32); }else{ keyEvent(32,'up'); } if (lastInput[3] > 0){ keyEvent(90); }else{ keyEvent(90,'up'); } lasterInput = lastInput; } } assistent.vy += 200*dt; assistent.y += assistent.vy*dt; if (assistent.right){ assistent.vx += 30*dt; }else if (assistent.left){ assistent.vx -= 30*dt; }else{ assistent.vx *= 0.99; } assistent.x += assistent.vx*dt; if (assistent.x < 25){ assistent.x = 25; assistent.vx *= -0.9; } if (assistent.x > canvas.width-25){ assistent.x = canvas.width-25; assistent.vx *= -0.9; } if (assistent.y > canvas.height-30){ assistent.y = canvas.height-30; assistent.vy *= -0.6 } if (assistent.y < 50){ assistent.y = 50; assistent.vy *= -0.6 } },0);