Greasy Fork

splixHax Vbetter

better than other splix hacks

目前为 2019-04-11 提交的版本。查看 最新版本

// ==UserScript==
// @name         splixHax Vbetter
// @namespace    http://tampermonkey.net/
// @version      7.7
// @description  better than other splix hacks
// @author       You
// @match        *://splix.io/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
window.addEventListener('load',function(){
    MAX_ZOOM=10000;
    USERNAME_SIZE=6;
    var defzm=BLOCKS_ON_SCREEN,zm=1;
    window.addEventListener('wheel',function(e){
        zm+=e.deltaY/Math.abs(e.deltaY)*.5;
        if(defzm*zm>16000)zm-=.5;
        if(defzm*zm<100)zm+=.5;
        BLOCKS_ON_SCREEN=defzm*zm;
    });
});
    window.myOldPlayer=null;
    //window.myRealTrueName=null;
    window.macroMaker=async function(k,s){
      if(typeof k=="undefined"||typeof s=="undefined")return "1st arg=array of keys, 2nd arg=ms between presses";
      for(var i=0;i<k.length;i++){
        await new Promise(r=>setTimeout(r,s));
        pressedKeys=[k[i]];
      }
    };
    window.spectate=function(back){
      pressedKeys=[];
      if(typeof back!="undefined"&&back){
        if(myOldPlayer==myPlayer)return;
        myPlayer.isMyPlayer=false;
        myOldPlayer.isMyPlayer=true;
        myPlayer=myOldPlayer;
        lstPlyrIndx=players.indexOf(myPlayer);
        return;
      }
      if(lstPlyrIndx==-1)lstPlyrIndx=players.indexOf(myPlayer);
      if(players.length<2)return "error: there is nobody else nearby to spectate";
      players[lstPlyrIndx].isMyPlayer=false;
      lstPlyrIndx+=1;
      if(lstPlyrIndx>=players.length)lstPlyrIndx=0;
      players[lstPlyrIndx].isMyPlayer=true;
      myPlayer.trails=[];
      myPlayer=players[lstPlyrIndx];
      myPlayer.trails=[];
      return 'now spectating "'+myPlayer.name+'"';
    }
    var lstPlyrIndx=-1,high=false,spam=false,dark=false,keyHandler=function(e){
        if(document.activeElement.tagName=="input")return;
        if(e.type.endsWith("n")){
            switch(e.key){
              case "y":
              if(myOldPlayer==myPlayer){
                document.title=spectate();
                sendDir(4);
              }
              break;
            }
            if("y".split("").includes(e.key)){
              if(e.key=="y"?myOldPlayer==myPlayer:true)myPlayer.addHitLine(myPlayer.pos,myColorId);
              resetTitle();
            }
        };
        if(e.type.endsWith("p")){
            switch(e.key){
                case "h":
                    high=!high;
                    document.title="high mode "+(high?"en":"dis")+"abled";
                    break;
                case "g":
                    spam=!spam;
                    document.title="spam mode "+(spam?"en":"dis")+"abled";
                    break;
                case "f":
                    GLOBAL_SPEED=.006+(+(GLOBAL_SPEED==.006))*.00075;
                    document.title="speed mode "+(GLOBAL_SPEED==.006?"dis":"en")+"abled";
                    break;
                case "t":
                    dark=!dark;
                    document.title="dark mode "+(dark?"en":"dis")+"abled";
                    break;
                case "y":
                    spectate(1);
                    myPlayer.addHitLine(myPlayer.pos,myColorId);
                    break;
            }
            if("hgft".split("").includes(e.key)){
                myPlayer.addHitLine(myPlayer.pos,myColorId);
                resetTitle();
            }
        }
    };
    function resetTitle(){setTimeout(()=>document.title="splix.io",3000);}
    window.addEventListener('keydown',keyHandler);
    window.addEventListener('keyup',keyHandler);
    var tmpColId;
    setInterval(()=>{if(!isConnectingWithTransition&&myPlayer!=null&&myOldPlayer!=myPlayer)spectate();},3000);
    setInterval(()=>{
          if(myPlayer==null)return;
          if(myOldPlayer==null)myOldPlayer=myPlayer;
          tmpColId=myColorId;
          while(myColorId==tmpColId)myColorId=Math.floor(Math.random()*13);
          tmpColId=myColorId;
          myPlayer.skinBlock=(high|!dark)?myColorId:13;
          if(high)myColorId=13;
          colorUI();
          if(high)myColorId=tmpColId;
          //make other players stoopid
          players.filter(v=>v!=myPlayer&&!v.name.startsWith('[stoopid] ')&&v!=myOldPlayer).forEach(v=>v.name="[stoopid] "+v.name);
          players.filter(v=>v!=myPlayer&&v!=myOldPlayer).forEach(v=>{v.skinBlock=high?13:myColorId;});
    },1000);
    setInterval(async ()=>{
        if(isConnectingWithTransition){
          //myOldPlayer=null;
          while(!myOldPlayer)await new Promise(r=>setTimeout(r,100));
          sendDir(4);
        }
        if(myPlayer==null)return;
        if(myPlayer!=myOldPlayer&&myPlayer.id==myOldPlayer.id)myOldPlayer=myPlayer;
        if(spam){
            honkStart();
            honkEnd();
            //myPlayer.addHitLine(myPlayer.pos,myColorId);
        }
        if(myPlayer.isDead){
          if(myPlayer==myOldPlayer){
            myPlayer.undoDie();
            myPlayer.deathWasCertain=false;
            sendDir(4);
            //doSkipDeathTransition();
          }else if(myOldPlayer.isDead){
            //myOldPlayer=myPlayer=null;
            setTimeout(()=>myOldPlayer=myPlayer=null,100);
            myOldPlayer.undoDie();
            myOldPlayer.deathWasCertain=false;
            spectate(1);
            sendDir(4);
          }else{spectate();}
        }
        if(high)myPlayer.die();
        if(myPlayer!=myOldPlayer)pressedKeys=[];
        clearTimeout(deathTransitionTimeout);
    },0);
    document.head.innerHTML+="<style>#playUI>*{transition:all .5s linear;}#miniMap{transform-origin:top left;transform:scale(1.25,1.25);}</style>";
})();