您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
surviv.io Hack
// ==UserScript== // @name surrviv.io Hack // @description surviv.io Hack // @version 1.0.0 // @match *://surviv.io/* // @author IceHacks // @grant GM_xmlhttpRequest // @run-at document-start // @namespace https://greasyfork.org/users/703117 // ==/UserScript== class Hack { constructor() { this._enabled = true this.name = "esp" this.UI = { name: "ESP", description: "Shows where players are at", } this._options = [ { value: true, name: "laser", UI: { name: "Flashlight", }, }, { value: true, name: "nade", UI: { name: "Blast Radius", }, }, { value: 2, name: "width", UI: { name: "Tracer Width", }, } ] this.values = { pixi: null, } } option(o) { let op try { op = this._options.filter(k => k.name === o)[0].value } catch (e) { op = false } return op } get enabled() { return this._enabled } set enabled(t) { this._enabled = t } names(player) { if (!player) return if ( !player.nameText._text || player.nameText._text == "" || player.nameText._text.length < 1 ) return player.nameText.tint = 0xff0000 player.nameText.visible = true } draw(enemies, activePlayer, data, dataAccessor) { if(!enemies || !activePlayer) { return; } let points = enemies.map(enemy => { return { x: (dataAccessor.GetPlayerPosition(enemy).x - dataAccessor.GetPlayerPosition(activePlayer).x) * 16, y: (dataAccessor.GetPlayerPosition(activePlayer).y - dataAccessor.GetPlayerPosition(enemy).y) * 16, img: enemy.img || false, type: enemy.__type, id: enemy.__id, layer: dataAccessor.GetPlayerLayer(enemy), } }); let pixi = this.values.pixi if(!pixi) { pixi = new window.PIXI.Graphics(); this.values.pixi = pixi; activePlayer.container.addChild(pixi); activePlayer.container.setChildIndex(pixi, 0); } if(!pixi.graphicsData) { return; } pixi.clear(); points.forEach(point => { if(point.type == 2 && point.layer !== dataAccessor.GetPlayerLayer(activePlayer)) { return; } pixi.lineStyle(this.option("width"), 0xff0000, 0.5); if(point.layer !== dataAccessor.GetPlayerLayer(activePlayer)) { pixi.lineStyle(this.option("width"), 0xffffff, 0.5); } if(point.type == 2) { pixi.lineStyle(this.option("width"), 0xffff00, 0.5); } pixi.moveTo(0, 0); pixi.lineTo(point.x, point.y); }); if(data.aimPred) { pixi.lineStyle(2, 0xffffff, 0.5); pixi.moveTo(0, 0); pixi.lineTo( (data.aimPred.x - dataAccessor.GetPlayerPosition(activePlayer).x) * 16, (dataAccessor.GetPlayerPosition(activePlayer).y - data.aimPred.y) * 16 ) } enemies.forEach(n => { if(n.__type == 1) { this.names(n); } }); pixi.lineStyle(0); if(this.option("nade")) { data.getObjects() .filter(obj => { if(obj.__type === data.data.Type.Projectile || (obj.img && obj.img.match(/barrel-/g) && obj.smokeEmitter && data.items[obj.type].explosion)) { return true; } return false; }) .forEach(obj => { //If the object is inside a bunker and you're not etc, make the blast radius white if(obj.layer !== dataAccessor.GetPlayerLayer(activePlayer)) { pixi.beginFill(0xffffff, 0.3); } else { pixi.beginFill(0xff0000, 0.2) ; } pixi.drawCircle( (obj.pos.x - dataAccessor.GetPlayerPosition(activePlayer).x) * 16, (dataAccessor.GetPlayerPosition(activePlayer).y - obj.pos.y) * 16, (data.explosions[ data.items[obj.type].explosionType || data.items[obj.type].explosion ].rad.max + 1) * 16 ) }); } points = null; } end() { this.values.pixi = null; this.laser = null; } findWeap(player, game, dataAccessor) { var weap = dataAccessor.GetPlayerWeaponType(player); return weap && game.guns[weap] ? game.guns[weap] : false; } findBullet(curWeapon, game) { return !!curWeapon ? game.bullets[curWeapon.bulletType] : false; } laserPointer( curBullet, curWeapon, curPlayer, acPlayer, color, opac, dataAccessor ) { if(!curPlayer || !curPlayer.container) { return; } this.laser = this.laser || {}; var laser = this.laser; var lasic = {}; let isMoving = curPlayer.posOldOld && (dataAccessor.GetPlayerPosition(curPlayer).x != curPlayer.posOldOld.x || dataAccessor.GetPlayerPosition(curPlayer).y != curPlayer.posOldOld.y); if(curBullet) { lasic.active = true; lasic.range = curBullet.distance * 16.25; lasic.direction = Math.atan2( dataAccessor.GetPlayerDirection(curPlayer).x, dataAccessor.GetPlayerDirection(curPlayer).y ) - Math.PI / 2; lasic.angle = ((curWeapon.shotSpread + (isMoving ? curWeapon.moveSpread : 0)) * 0.01745329252) / 2; } else { lasic.active = false; } var draw = laser.draw; if(!draw) { draw = new window.PIXI.Graphics(); laser.draw = draw; curPlayer.container.addChildAt(draw, 0); } if(!draw.graphicsData) { return; } if(!lasic.active) { return; } var curPlayerPos = dataAccessor.GetPlayerPosition(curPlayer); var acPlayerPos = dataAccessor.GetPlayerPosition(acPlayer); var center = { x: (curPlayerPos.x - acPlayerPos.x) * 16, y: (acPlayerPos.y - curPlayerPos.y) * 16, }; var radius = lasic.range; var angleFrom = lasic.direction - lasic.angle; var angleTo = lasic.direction + lasic.angle; angleFrom = angleFrom > Math.PI * 2 ? angleFrom - Math.PI * 2 : angleFrom < 0 ? angleFrom + Math.PI * 2 : angleFrom; angleTo = angleTo > Math.PI * 2 ? angleTo - Math.PI * 2 : angleTo < 0 ? angleTo + Math.PI * 2 : angleTo; draw.beginFill(color || 0x0000ff, opac || 0.3); draw.moveTo(center.x, center.y); draw.arc(center.x, center.y, radius, angleFrom, angleTo); draw.lineTo(center.x, center.y); draw.endFill(); } loop(dataAccessor, player, input, data, plugins) { var enemies = data .getEnemies( plugins["aimbot"] ? plugins["aimbot"].option("object") : false ) .filter(p => p && dataAccessor.GetPlayerNetData(p) ? plugins["aimbot"] && plugins["aimbot"].option("down") ? true : !dataAccessor.IsPlayerDowned(p) : true ); this.draw(enemies, player, data, dataAccessor); var curWeapon = this.findWeap(player, data, dataAccessor); var curBullet = this.findBullet(curWeapon, data); if(this.laser && this.laser.draw) { this.laser.draw.clear(); } if(!this.option("laser")) { return; } this.laserPointer( curBullet, curWeapon, player, player, undefined, undefined, dataAccessor ); enemies .filter(n => n.__type == 1) .forEach(enemy => { var eW = this.findWeap(enemy, data, dataAccessor) this.laserPointer( this.findBullet(eW, data), eW, enemy, player, "0", 0.2, dataAccessor ) }); enemies = null; } }