Brofist.io Hack 2018

My Best Hack for brofist.io 2018 works on 2PA

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Brofist.io Hack 2018
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  My Best Hack for brofist.io 2018 works on 2PA
// @author       You
// @match        http://brofist.io/modes/twoPlayer/c/index.html
// @grant        none
// ==/UserScript==

function getId(ID){return document.getElementById(ID)};
function getCl(cl){return document.getElementsByClassName(cl)};
function getTag(tag){return document.getElementsByTagName(tag)};

var grav=9.779999732971191,n=false,fl1=true;

function fixEvent(e){
	e=e||window.event;

	if(e.pageX==null&&e.clientX!=null){
		var html=document.documentElement;
		var body=document.body;
		e.pageX=e.clientX+(html&&html.scrollLeft||body&&body.scrollLeft||0)-(html.clientLeft||0);
		e.pageY=e.clientY+(html&&html.scrollTop||body&&body.scrollTop||0)-(html.clientTop||0)
	};

	if(!e.which&&e.button){
		e.which=e.button&1?1:(e.button&2?3:(e.button&4?2:0))
	};

	return e
};




var dragMaster=(function(){

	var dragObject;
	var mouseOffset;

	function getMouseOffset(target,e){
		var docPos=getPosition(target);
		return{x:e.pageX-docPos.x,y:e.pageY-docPos.y}
	};

	function mouseUp(){
		dragObject=null;

		document.onmousemove=null;
		document.onmouseup=null;
		document.ondragstart=null;
		document.body.onselectstart=null
	};

	function mouseMove(e){
		e=fixEvent(e);

		getCl('div')[0].style.opacity='0.2';

		with(dragObject.style){
			position='absolute';
			top=e.pageY-mouseOffset.y+'px';
			left=e.pageX-mouseOffset.x+'px';
		};
		return false
	};
	function mouseDown(e){
		e=fixEvent(e);
		if(e.which!=1)return;

		dragObject=this;

		mouseOffset=getMouseOffset(this,e);

		document.onmousemove=mouseMove;
		document.onmouseup=mouseUp;

		document.ondragstart=function(){return false};
		document.body.onselectstart=function(){return false};

		return false
	}

	return{
		makeDraggable:function(element){
			element.onmousedown=mouseDown
		}
	};
}());

function getPosition(e){
	var left=0;
	var top =0;

	while(e.offsetParent){
		left+=e.offsetLeft;
		top +=e.offsetTop;
		e=e.offsetParent
	};

	left+=e.offsetLeft;
	top +=e.offsetTop;

	return {x:left,y:top}
};

var txt="";
txt+="<style>";
	txt+=".div{padding:6px;overflow-x:hidden;color:#BFCFD2;font-family:Arial;position:absolute;z-index:999;border:2px solid #BFCFD2;background:#0B0B0C;user-select:none;width:230px;height:430px;text-align:center}";
	txt+=".div::-webkit-scrollbar{width:10px}.div::-webkit-scrollbar-track{background:#FFF}.div::-webkit-scrollbar-track-piece{background:#B0B0B0}.div::-webkit-scrollbar-track-piece:active{background:#909090}.div::-webkit-scrollbar-thumb{background:#C7C7C7}.div::-webkit-scrollbar-thumb:hover{background:#E0E0E0}.div::-webkit-scrollbar-thumb:active{background:#909090}.div::-webkit-scrollbar-button{background:#C7C7C7}.div::-webkit-scrollbar-button:hover{background:#E0E0E0}.div::-webkit-scrollbar-button:active{background:#909090}";

	txt+=".button{font-size:18px;font-weight:bold;display:inline-block;text-align:center;color:#e1eff0;width:98.4%;padding:4px 0px;border:1px solid rgba(191,207,210,.5);background-color:rgba(191,207,210,.1);border-radius:1px;cursor:pointer;transition:.2s}.button:hover{background-color:rgba(191,207,210,.2);border:1px solid rgba(191,207,210,.7)}.button:active{background-color:rgba(191,207,210,.5);border:1px solid rgba(191,207,210,1)}";
	txt+=".checkbox2{top:3px;position:relative;width:20px;height:10px;-webkit-appearance:none;background:#C6C6C6;outline:none;border-radius:20px;box-shadow:inset 0 0 5px #00000020;transition:.2s}.checkbox2:checked[type='checkbox']{background:#03A9F4}.checkbox2:before{content:'';position:absolute;width:10px;height:10px;border-radius:20px;top:0;left:0;background:#FFF;transform:scale(1.1);transition:.2s;box-shadow:0 2px 5px #00000020}.checkbox2:checked:before{left:10px}";

	txt+="#overlay{position:fixed;z-index:3;top:0;left:0;width:100%;height:100vh;opacity:0}";
txt+="</style>";

txt+="<div id='overlay'></div>";

txt+="<div class='div'>";
	txt+="<b style='display:block;margin-top:3px'>Pleasure</b>";
	txt+="<hr color='#BFCFD2'>";

	txt+=`<div id='chOnOff'class='button'onclick='n=!n;this.innerHTML='Cheat: '+n;console.log("%cЧиты на NumPad\'е = "+n,"background:#0000FF;color:#FF00FF");'>Cheat: `+n+`</div>`;
	txt+="<hr color='#BFCFD2'>";

	txt+="<div id='sp'class='button'>Spawn</div>";
	txt+="<div id='dr'class='button'>Door</div>";
	txt+="<hr color='#BFCFD2'>";



	txt+="<div class='button'onclick='gravit(`uSSSS`)'style='float:left;width:48%'>↥</div>";
	txt+="<div class='button'onclick='gravit(`dSSSS`)'style='float:left;width:48%'>↧</div><br>";

	txt+="<div class='button'onclick='gravit(`uSSSSS`)'style='float:left;width:48%'>▲</div>";
	txt+="<div class='button'onclick='gravit(`dSSSSS`)'style='float:left;width:48%'>▼</div><br>";

	txt+="<div class='button'onclick='gravit(`u`)'style='float:left;width:48%'>↑</div>";
	txt+="<div class='button'onclick='gravit(`d`)'style='float:left;width:48%'>↓</div><br>";

	txt+="<div class='button'onclick='gravit(`uS`)'style='float:left;width:48%'>⇡</div>";
	txt+="<div class='button'onclick='gravit(`dS`)'style='float:left;width:48%'>⇣</div><br>";

	txt+="<div class='button'onclick='gravit(`uSS`)'style='float:left;width:48%'>⇈</div>";
	txt+="<div class='button'onclick='gravit(`dSS`)'style='float:left;width:48%'>⇊</div><br>";

	txt+="<div class='button'onclick='gravit(`uSSS`)'style='float:left;width:48%'>⤒</div>";
	txt+="<div class='button'onclick='gravit(`dSSS`)'style='float:left;width:48%'>⤓</div><br><br><br><br><br><br>";
	txt+="<hr color='#BFCFD2'>";




	txt+="<input class='checkbox2'type='checkbox'id='gr'name='Class2'checked>";
	txt+="<label for='gr'><b>Gravity</b></label><br>";

	txt+="<input class='checkbox2'type='checkbox'id='noc'name='Class2'>";
	txt+="<label for='noc'><b>Noclip</b></label>";
txt+="</div>";
document.body.insertBefore(createFragment(txt),document.body.childNodes[0]);function createFragment(t){var frag=document.createDocumentFragment(),temp=document.createElement('div');temp.innerHTML=t;while(temp.firstChild){frag.appendChild(temp.firstChild)}return frag}
dragMaster.makeDraggable(getCl('div')[0]);

getId('overlay').onmousemove=function(){getCl('div')[0].style.opacity='0.2'}
getCl('div')[0].onmousemove=function(){this.style.opacity='1'}

getId('gr').oninput=function(){if(this.checked){gravit(`d`)}else{setGravit(0,0)}}
getId('noc').oninput=function(){if(this.checked){setColl(true)}else{setColl(false)}}

function tp(X,Y){
	gp.pWorld.islandManager.islands[0].bodies[0].position[1]=Y;
	gp.pWorld.islandManager.islands[0].bodies[0].position[0]=X
}
function setGravit(X,Y){gp.pWorld.islandManager.islands[0].bodies[0].world.gravity=[X,Y]}
function setColl(t){gp.pWorld.solver.useZeroRHS=t}

function drsp(t){
	if(t=='door'){
		for(var i=0;i<gp.list.length;i++) {
			if(gp.list[i].id=="door"){
				gp.pWorld.islandManager.islands[0].bodies[0].position[1]=gp.list[i].p.position[1];
				gp.pWorld.islandManager.islands[0].bodies[0].position[0]=gp.list[i].p.position[0];
				break
			}
		};
		gp.pWorld.islandManager.islands[0].bodies[0].position[1]+=0.1
	};
	if(t=='spawn'){
		for(var g=0;g<gp.pWorld.islandManager.nodes.length;g++){
			if(gp.pWorld.islandManager.nodes[g].body.ref.id=="spawn"){
				gp.pWorld.islandManager.islands[0].bodies[0].position[0]=gp.pWorld.islandManager.nodes[g].body.position[0];
				gp.pWorld.islandManager.islands[0].bodies[0].position[1]=gp.pWorld.islandManager.nodes[g].body.position[1];
				break
			}
		};
		gp.pWorld.islandManager.islands[0].bodies[0].position[1]+=0.1
	}
}

function gravit(t) {
	if(t=='u'){gp.pWorld.islandManager.islands[0].bodies[0].world.gravity=[0,grav]};
	if(t=='d'){gp.pWorld.islandManager.islands[0].bodies[0].world.gravity=[0,-grav]};

	if(t=='uS'){gp.pWorld.islandManager.islands[0].bodies[0].world.gravity=[0,grav*2]};
	if(t=='dS'){gp.pWorld.islandManager.islands[0].bodies[0].world.gravity=[0,-grav*2]};

	if(t=='uSS'){gp.pWorld.islandManager.islands[0].bodies[0].world.gravity=[0,grav*3]}
	if(t=='dSS'){gp.pWorld.islandManager.islands[0].bodies[0].world.gravity=[0,-grav*3]};

	if(t=='uSSS'){gp.pWorld.islandManager.islands[0].bodies[0].world.gravity=[0,grav*5]}
	if(t=='dSSS'){gp.pWorld.islandManager.islands[0].bodies[0].world.gravity=[0,-grav*5]};

	if(t=='uSSSS'){gp.pWorld.islandManager.islands[0].bodies[0].world.gravity=[0,grav/5]}
	if(t=='dSSSS'){gp.pWorld.islandManager.islands[0].bodies[0].world.gravity=[0,-grav/5]};

	if(t=='uSSSSS'){gp.pWorld.islandManager.islands[0].bodies[0].world.gravity=[0,grav/2]}
	if(t=='dSSSSS'){gp.pWorld.islandManager.islands[0].bodies[0].world.gravity=[0,-grav/2]};
}

getId('sp').onclick=function(){drsp('spawn')}
getId('dr').onclick=function(){drsp('door')}

getId('chOnOff').onclick=function(){n=!n;getId('chOnOff').innerHTML='Cheat: '+n;console.log("%cЧиты на NumPad'е = "+n,"background:#0000FF;color:#FF00FF")}

document.onkeydown=function(e){
	var kc=e.keyCode;

	if(kc==106/*Num**/){
		n=!n;
		getId('chOnOff').innerHTML='Cheat: '+n;
		console.log("%cЧиты на NumPad'е = "+n,"background:#0000FF;color:#FF00FF");
	}else if(n){
		if(kc==36/*Home*/){
			gp.pWorld.islandManager.islands[0].bodies[0].velocity[1]=8;
			gp.pWorld.islandManager.islands[0].bodies[0].invMass=0
		}
		if(kc==104/*Num8*/){
			gp.pWorld.islandManager.islands[0].bodies[0].position[1]+=6;
			gp.pWorld.islandManager.islands[0].bodies[0].invMass=0
		}
		if(kc==101/*Num5*/){
			gp.pWorld.islandManager.islands[0].bodies[0].collisionResponse=0;
			gp.pWorld.islandManager.islands[0].bodies[0].position[1]-=6
		}
		if(kc==35/*End*/){
			gp.pWorld.islandManager.islands[0].bodies[0].collisionResponse=0;
			gp.pWorld.islandManager.islands[0].bodies[0].velocity[1]-=8;
		}
		if(kc==46/*Delete*/){

			gp.pWorld.islandManager.islands[0].bodies[0].invMass=0;
			gp.pWorld.islandManager.islands[0].bodies[0].velocity[0]-=8;
		}
		if(kc==34/*PgDn*/){
			gp.pWorld.islandManager.islands[0].bodies[0].invMass=0;
			gp.pWorld.islandManager.islands[0].bodies[0].velocity[0]=8;
		}
		if(kc==100/*Num4*/){
			gp.pWorld.islandManager.islands[0].bodies[0].position[0]-=6;
			gp.pWorld.islandManager.islands[0].bodies[0].invMass=0;
			gp.pWorld.islandManager.islands[0].bodies[0].velocity[1]=0
		}
		if(kc==102/*Num6*/){
			gp.pWorld.islandManager.islands[0].bodies[0].position[0]+=6;
			gp.pWorld.islandManager.islands[0].bodies[0].invMass=0;
			gp.pWorld.islandManager.islands[0].bodies[0].velocity[1]=0
		}

		if(kc==103/*Num7*/){
			setGravit(0,0);
			gp.pWorld.islandManager.islands[0].bodies[0].velocity=[0,0];
			getId('gr').checked=0;
			fl1=false;

			setColl(true);
			getId('noc').checked=1
		}

		if(kc==105/*Num9*/){
			gravit(`d`);
			gp.pWorld.islandManager.islands[0].bodies[0].velocity=[0,0];
			getId('gr').checked=1;
			fl1=true;

			setColl(false);
			getId('noc').checked=0
		}

		if(kc==109/*Num-*/){
			drsp('spawn');
			gp.pWorld.islandManager.islands[0].bodies[0].velocity=[0,0]
		}
		if(kc==107/*Num+*/){
			drsp('door');
			gp.pWorld.islandManager.islands[0].bodies[0].velocity=[0,0]
		}
	}
	if(kc==45/*Insert*/){
		if(fl1){
			setColl(true);
			getId('noc').checked=1
		}
	}
	if(kc==33/*PgUp*/){
		setGravit(0,0);
		getId('gr').checked=0
	}
}

document.onkeyup=function(e){
	var kc=e.keyCode;

	if(n){
		if(kc==36/*Home*/){
			gp.pWorld.islandManager.islands[0].bodies[0].invMass=1
		}
		if(kc==104/*Num8*/){
			gp.pWorld.islandManager.islands[0].bodies[0].invMass=1
		}
		if(kc==101/*Num5*/){
			gp.pWorld.islandManager.islands[0].bodies[0].collisionResponse=1
		}
		if(kc==35/*End*/){
			gp.pWorld.islandManager.islands[0].bodies[0].collisionResponse=1
		}
		if(kc==46/*Delete*/){
			gp.pWorld.islandManager.islands[0].bodies[0].invMass=1
		}
		if(kc==34/*PgDn*/){
			gp.pWorld.islandManager.islands[0].bodies[0].invMass=1
		}
		if(kc==100/*Num4*/){
			gp.pWorld.islandManager.islands[0].bodies[0].invMass=1
		}
		if(kc==102/*Num6*/){
			gp.pWorld.islandManager.islands[0].bodies[0].invMass=1
		}
	}
	if(kc==45/*Insert*/){
		if(fl1){
			setColl(false);
			getId('noc').checked=0
		}
	}
	if(kc==33/*PgUp*/){
		gravit(`d`)
		getId('gr').checked=1
	}
}