您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Australia On Fire
当前为
// ==UserScript== // @name KrunkerSkid - bushfire-disaster-appeal // @namespace https://www.communityenterprisefoundation.com.au/make-a-donation/bushfire-disaster-appeal/ // @version 1.9.6.1 // @description Australia On Fire // @author Skid Lamer // @match *://krunker.io/* // @run-at document-start // @grant none // @noframes // ==/UserScript== //****************************************************************************************************************** // If you steal my script and pretend you made it IDC as long as you leave the link to donate to the bushfire appeal // and this notice, thankyou - Skid Lamer. //****************************************************************************************************************** (function() { //'use strict'; //======================================================================================> var count = 0, vars = {}; const downKeys = new Set(); const upKeys = new Set(); const defined = object => typeof object !== "undefined"; console.json = object => console.log(JSON.stringify(object, undefined, 2)); let toJson = object => console.log(JSON.stringify(object, undefined, 2)); let getDistance3D = (fromX, fromY, fromZ, toX, toY, toZ) => { var distX = fromX - toX, distY = fromY - toY, distZ = fromZ - toZ; return Math.sqrt(distX * distX + distY * distY + distZ * distZ); } let getDistance = (player1, player2) => { return getDistance3D(player1.x, player1.y, player1.z, player2.x, player2.y, player2.z); } let getDirection = (fromZ, fromX, toZ, toX) => { return Math.atan2(fromX - toX, fromZ - toZ); } let getXDir = (fromX, fromY, fromZ, toX, toY, toZ) => { var dirY = Math.abs(fromY - toY), dist = getDistance3D(fromX, fromY, fromZ, toX, toY, toZ); return Math.asin(dirY / dist) * (fromY > toY ? -1 : 1); } let getAngleDist = (start, end) => { return Math.atan2(Math.sin(end - start), Math.cos(start - end)); } addEventListener("keydown", e => { if ("INPUT" == window.document.activeElement.tagName) return; const key = e.key.toUpperCase(); const code = e.code; if (!downKeys.has(code)) downKeys.add(code); }); addEventListener("keyup", e => { const key = e.key.toUpperCase(); const code = e.code; if (downKeys.has(code)) downKeys.delete(code); if (!upKeys.has(code)) upKeys.add(code); }) const Pi = Math.PI / 2; const PI2 = 2 * Math.PI; const consts = { cameraHeight: 1.5, playerHeight: 11, cameraHeight: 1.5, headScale: 2, crouchDst: 3, camChaseTrn: 0.0022, camChaseSpd: 0.0012, camChaseSen: 0.2, camChaseDst: 24, recoilMlt: 0.3, nameOffset: 0.6, nameOffsetHat: 0.8, verClans: [ "DEV", "FaZe", "Lore", "nV", "Oxic", "Verb", "Omen", "ロリ幼女", "VOID", "JBP", "PHIL", "TIMP", "24/7", "g59", "GLXY", "MMOK", "ODTY" ], }; const input = { speed: 1, ydir: 2, xdir: 3, shoot: 5, scope: 6, jump: 7, crouch: 8, reload: 9, weapon: 10, }; let settings = { isSliding: false, distance: Infinity, scopingOut: false, canShoot: true, } function onTick(me, world, inputs, renderer) { 'use strict'; const controls = world.controls; let getInView = (entity) => (null == world[vars.canSee](me, entity.x, entity.y, entity.z)) && (null == world[vars.canSee](renderer.camera[vars.getWorldPosition](), entity.x, entity.y, entity.z, 10)); let getIsFriendly = (entity) => (me && me.team ? me.team : me.spectating ? 0x1 : 0x0) == entity.team; let keyDown = (code) => { return downKeys.has(code); } let keyUp = (code) => { if (upKeys.has(code)) { upKeys.delete(code); return true; } return false; } // AutoAim let ty = controls.object.rotation.y; let tx = controls[vars.pchObjc].rotation.x; let target = world.players.list.filter(x => { x[vars.cnBSeen] = true; const inView = getInView(x); const isFriendly = getIsFriendly(x); return defined(x[vars.objInstances]) && x[vars.objInstances] && x.active && !x.renderYou && inView && !isFriendly }).sort((p1, p2) => p1[vars.objInstances].position.distanceTo(me) - p2[vars.objInstances].position.distanceTo(me)).shift(); if (target) { if (me.weapon[vars.nAuto] && me[vars.didShoot]) { inputs[input.shoot] = 0; } else if (!me.aimVal) { inputs[input.shoot] = 1; inputs[input.scope] = 1; } else { inputs[input.scope] = 1; } let offset1 = ((consts.playerHeight - consts.cameraHeight) - (target.crouchVal * consts.crouchDst)); let offset2 = consts.playerHeight - consts.headScale / 2 - target.crouchVal * consts.crouchDst; ty = getDirection(controls.object.position.z, controls.object.position.x, target.z, target.x); tx = getXDir(controls.object.position.x, controls.object.position.y, controls.object.position.z, target.x, target.y + offset2, target.z); tx -= consts.recoilMlt * me[vars.recoilAnimY]; } else { inputs[input.shoot] = controls[vars.mouseDownL]; inputs[input.scope] = controls[vars.mouseDownR]; } // silent aim inputs[input.xdir] = +(tx % PI2).toFixed(3); inputs[input.ydir] = +(ty % PI2).toFixed(3); // auto bHop let autoBhop = (value) => { if (!value) return; if (keyDown("Space") || value == 1 || value == 3) { controls.keys[controls.jumpKey] = !controls.keys[controls.jumpKey]; if (value >= 2) { if (settings.isSliding) { controls.keys[controls.crouchKey] = 1; return; } if (me.yVel < -0.04 && me.canSlide) { settings.isSliding = true; setTimeout(() => { settings.isSliding = false; controls.keys[controls.crouchKey] = 0; }, 350); controls.keys[controls.crouchKey] = 1; } } } } autoBhop(2); // auto reload const ammoLeft = me[vars.ammos][me[vars.weaponIndex]]; if (!ammoLeft) inputs[input.reload] = 1; } function onRender(canvas, scale, world, renderer, me, scale2) { if (world && world.players) { world.players.list.map((entity, index, array)=> { if (defined(entity[vars.objInstances]) && entity[vars.objInstances]) { for (let i = 0; i < entity[vars.objInstances].children.length; i++) { const object3d = entity[vars.objInstances].children[i]; for (let j = 0; j < object3d.children.length; j++) { const mesh = object3d.children[j]; if (mesh && mesh.type == "Mesh") { const material = mesh.material; material.depthTest = 0; material.alphaTest = 1; //material.emissive.r = 1; material.emissive.g = 1; material.emissive.b = 1; material.wireframe = true; } } } } }); } if (me) { // onTick Hook if (!defined(me.procInputs)) { // Do once: me.procInputs = me[vars.procInputs]; me[vars.procInputs] = function() { const inputs = arguments[0]; //const world = arguments[1]; onTick(this, world, inputs, renderer); return me.procInputs(...arguments); } } } } function findVariables(script) { const regex = new Map() .set("procInputs", /this\['(\w+)']=function\((\w+),(\w+),\w+,\w+\){(this)/) .set("objInstances", /\[\w+\]\['\w+'\]=!\w+,this\['\w+'\]\[\w+\]\['\w+'\]&&\(this\['\w+'\]\[\w+\]\['(\w+)'\]\['\w+'\]=!\w+/) //renderYou //.set("isYou", /,this\['\w+'\]=!\w+,this\['\w+'\]=!\w+,this\['(\w+)'\]=\w+,this\['\w+'\]\['length'\]=\w+,this\[/) .set("cnBSeen", /\['(\w+)']=!0x0,!spectating/) .set("canSee", /,this\['(\w+)'\]=function\(\w+,\w+,\w+,\w+,\w+\){if\(!\w+\)return!\w+;/) .set("pchObjc", /\(\w+,\w+,\w+\),this\['(\w+)'\]=new \w+\['\w+'\]\(\)/) .set("recoilAnimY", /\w*1,this\['\w+'\]=\w*0,this\['\w+'\]=\w*0,this\['\w+'\]=\w*1,this\['\w+'\]=\w*1,this\['\w+'\]=\w*0,this\['\w+'\]=\w*0,this\['(\w+)'\]=\w*0,this\['\w+'\]=\w*0,this\['\w+'\]=\w*0,this\['\w+'\]=\w*0,/) .set("mouseDownL", /this\['\w+'\]=function\(\){this\['(\w+)'\]=\w*0,this\['(\w+)'\]=\w*0,this\['\w+'\]={}/) .set("mouseDownR", /this\['(\w+)']=0x0,this\['keys']=/) .set("getWorldPosition", /\['camera']\['(\w+)']\(\);if/) .set("maxHealth", /this\['health']\/this\['(\w+)']\?/) .set("didShoot", /\w+\['(\w+)']=!0x1,\w+\['burstCount']=0x0/) .set("ammos", /{!\w+\['reloadTimer']&&\w+\['(\w+)']/) .set("nAuto", /'(\w+)':!0x0,'burst':/) .set("weaponIndex", /\['reloadTimer']&&\w+\['\w+']\[\w+\['(\w+)']/) for (const [name, search] of regex) { const found = search.exec(script); if (!found) { alert(`Failed to find ${name}`); vars[name] = null; continue; } else { console.log("found ", name, " - ", found[1]); vars[name] = found[1]; } } } class Hook { constructor(target, fn, blocking = false) { this.hook = { apply: function(_target, _this, _arguments) { let _returnValue = _target.apply(_this, _arguments); // uncomment for hook logs - skid /* console.log('//======================================================================================>'); console.log('HOOKED: ', _target.name, '\n'); console.log('Parent: ', _this); console.log('Arguments: ', _arguments); console.log('ReturnValue: ', _returnValue); console.log('//======================================================================================>'); */ fn({ main: _this, args: _arguments, rv: _returnValue }); if (!blocking) return _returnValue; } }; return new Proxy(target, this.hook); } }; //======================================================================================> TextEncoder.prototype.encodeInto = new Hook(TextEncoder.prototype.encodeInto, (params) => { const data = params.args; if (!count) { findVariables(data[0]); } count++; }); const original_CRC2dSave = CanvasRenderingContext2D.prototype.restore; CanvasRenderingContext2D.prototype.restore = function() { const render = arguments.callee.caller; const args = [this.canvas, ...render.arguments]; render.bind(render.caller, onRender(...args)); return original_CRC2dSave.apply(this, arguments); } //======================================================================================> })();