Oib.io Rhodium's Moo Macro

Hello

// ==UserScript==
// @name         Oib.io Rhodium's Moo Macro
// @namespace    http://tampermonkey.net/
// @version      4.0
// @description  Hello
// @author       You
// @match        http://oib.io/
// @grant        none
// ==/UserScript==
//player.army.v
//
( function ()
{
	'use strict';
	//Decode Lapa
	var decodeVar = [];
	var ArmyMaxLvl = 5;
	for ( var l = 0; 40000 > l; l++ )
	{
		var decode = "lapa" + l + "mauve";
		try
		{
			if ( typeof window[ decode ] != "undefined" )
			{
				decodeVar.push( window[ decode ] );
				console.log( decode );
			}
		}
		catch ( err )
		{
			console.log( err.message );
		}
	}

	function loop ()
	{
		player.select.split = true;
		player.select.feed = true;
		player.select.regroup = true;
		for ( var k = 0; decodeVar[ 9 ].units.length > k; k++ )
		{
			decodeVar[ 9 ].units[ k ].info_delay = 9;
		}
	}
	setInterval( loop );
	// Control Keys
	var spawn = 49; //1
	var regroup = 50; //2
	var split = 51; //3
	var feed = 52; //4
	var spell = 53; //5
	var camera = 82; //r
	var select_oibs = 86; //v
	var select_queen = 66; //b
	var xPos = 0; //Mouse Position
	var yPos = 0; //Mouse Position
	//Script Keys
	//  space 32
	//  l     76
	//  k     75
	//  i     73
	//  o     79
	//  p     80
	//  u     85
	var ScrptKeys = {
		StackOibs: 71,
		MakeArmy: 76,
		FeedQueen: 75,
		SplitIobs: 73,
		ClearActions: 32,
		MoveAll: 80,
		HealIobs: 85
	};
	var flag_ClearActions = false;
	var flag_FeedQueen = false;
	var flag_HealIobs = false;
	var flag_MakeArmy = false;
	var flag_MoveAll = false;
	var flag_SplitIobs = false;
	var flag_StackOibs = false;
	var spawner = setInterval( function ()
	{
		SendKey( spawn );
	}, 60 );
	var IntervalKeyHandle = setInterval( function ()
	{
		if ( flag_MakeArmy == true )
		{
			var k = 0;
			var iobarray = [];
			setTimeout( () =>
			{
				player.select.clean();
			}, 1 );
			//aquire my units
			for ( k = 0; decodeVar[ 9 ].units.length > k; k++ )
			{
				if ( decodeVar[ 9 ].units[ k ].id == player.id && decodeVar[ 9 ].units[ k ].queen == false && decodeVar[ 9 ].units[ k ].life > 0 )
				{
					iobarray.push( decodeVar[ 9 ].units[ k ] );
				}
			}
			//separate low level ones
			for ( k = 0; k < iobarray.length; k++ )
			{
				if ( iobarray[ k ].level < ArmyMaxLvl )
				{
					player.select.units.push( iobarray[ k ] );
				}
			}
			decodeVar[ 1 ][ "regroup" ]();
		}
		if ( flag_StackOibs == true )
		{
			SendKey( select_queen );
			SendRButton( xPos, yPos );
			SendKey( camera );
		}
		if ( flag_FeedQueen == true )
		{
			SendKey( select_oibs );
			SendKey( feed );
		}
		if ( flag_MoveAll == true )
		{
			SendKey( select_oibs );
			SendRButton( xPos, yPos );
			SendKey( select_queen );
			SendRButton( xPos, yPos );
			SendKey( camera );
		}
		if ( flag_HealIobs == true )
		{
			var MinHealth = Infinity;
			var MinLevel = Infinity;
			//split bigger
			var MyIobs = [];
			var IobIndexMinLife = -1;
			var IobIndexMinLevel = -1;
			//Get My Iobs
			for ( k = 0; decodeVar[ 9 ].units.length > k; k++ )
			{
				if ( decodeVar[ 9 ].units[ k ].id == player.id && decodeVar[ 9 ].units[ k ].queen == false && decodeVar[ 9 ].units[ k ].life > 0 )
				{
					MyIobs.push( decodeVar[ 9 ].units[ k ] );
				}
			}
			// - determine min health
			for ( let index = 0; index < MyIobs.length; index++ )
			{
				if ( MinHealth > MyIobs[ index ].life && MyIobs[ index ].level >= 3 )
				{
					MinHealth = MyIobs[ index ].life;
					IobIndexMinLife = index;
				}
			}
			player.select.clean();
			for ( let index = 0; index < MyIobs.length; index++ )
			{
				if ( MyIobs[ index ].level <= 2 )
				{
					player.select.units.push( MyIobs[ index ] );
				}
			}
			player.select.units.push( MyIobs[ IobIndexMinLife ] );
			decodeVar[ 1 ][ "regroup" ]();
		}
	}, 1 );

	function CaptureKeyPress ( a )
	{
		if ( a.keyCode == ScrptKeys.StackOibs )
		{
			flag_ClearActions = false;
			flag_FeedQueen = false;
			flag_HealIobs = false;
			flag_MakeArmy = false;
			flag_MoveAll = false;
			flag_SplitIobs = false;
			SendKey( select_oibs );
			SendKey( feed );
			SendKey( select_queen );
			SendKey( camera );
			SendRButton( xPos, yPos );
			flag_StackOibs = true;
			return
		}
		if ( a.keyCode == ScrptKeys.MakeArmy )
		{
			flag_ClearActions = false;
			flag_FeedQueen = false;
			flag_HealIobs = false;
			flag_MoveAll = false;
			flag_SplitIobs = false;
			flag_StackOibs = false;
			if ( flag_MakeArmy == true )
			{
				flag_MakeArmy = false;
				return
			}
			if ( flag_MakeArmy == false )
			{
				player.select.clean();
				flag_MakeArmy = true;
				return
			}
		}
		if ( a.keyCode == ScrptKeys.HealIobs )
		{
			flag_ClearActions = false;
			flag_FeedQueen = false;
			flag_MakeArmy = false;
			flag_MoveAll = false;
			flag_SplitIobs = false;
			flag_StackOibs = false;
			if ( flag_HealIobs == true )
			{
				flag_HealIobs = false;
				return
			}
			if ( flag_HealIobs == false )
			{
				player.select.clean();
				flag_HealIobs = true;
				return
			}
		}
		if ( a.keyCode == ScrptKeys.FeedQueen )
		{
			flag_ClearActions = false;
			flag_HealIobs = false;
			flag_MakeArmy = false;
			flag_MoveAll = false;
			flag_SplitIobs = false;
			flag_StackOibs = false;
			if ( flag_FeedQueen == true )
			{
				flag_FeedQueen = false;
				return
			}
			if ( flag_FeedQueen == false )
			{
				flag_FeedQueen = true;
				return
			}
		}
		if ( a.keyCode == ScrptKeys.SplitIobs )
		{
			flag_ClearActions = false;
			flag_FeedQueen = false;
			flag_HealIobs = false;
			flag_MakeArmy = false;
			flag_MoveAll = false;
			flag_SplitIobs = false;
			flag_StackOibs = false;
			player.select.clean();
			SelectHighLevel();
			decodeVar[ 1 ][ "split" ]();
			SelectHighLevel();
			decodeVar[ 1 ][ "split" ]();
		}
		if ( a.keyCode == ScrptKeys.ClearActions )
		{
			flag_ClearActions = false;
			flag_FeedQueen = false;
			flag_HealIobs = false;
			flag_MakeArmy = false;
			flag_MoveAll = false;
			flag_SplitIobs = false;
			flag_StackOibs = false;
			return
		}
		if ( a.keyCode == ScrptKeys.MoveAll )
		{
			flag_ClearActions = false;
			flag_FeedQueen = false;
			flag_HealIobs = false;
			flag_MakeArmy = false;
			flag_SplitIobs = false;
			flag_StackOibs = false;
			if ( flag_MoveAll == true )
			{
				flag_MoveAll = false;
				return
			}
			if ( flag_MoveAll == false )
			{
				flag_MoveAll = true;
				return
			}
		}
	}
	var captureMousePos = function ( event )
	{
		xPos = event.clientX;
		yPos = event.clientY;
	}
	/*
	var onMousedown = function ( e )
	{
		if ( e.which === 1 ) //LeftMouse
		{
			SendKey( select_queen );
			SendRButton( xPos, yPos );
			SendKey( camera );
		}
		else if ( e.which === 3 ) // RightMouse
		{
			SendKey( select_oibs );
			SendRButton( xPos, yPos );
			SendKey( camera );
		}
	}
	*/
	function SelectHighLevel ()
	{
		player.select.clean();
		//split bigger
		var iobarray = [];
		var splitiob = [];
		for ( k = 0; decodeVar[ 9 ].units.length > k; k++ )
		{
			if ( decodeVar[ 9 ].units[ k ].id == player.id && decodeVar[ 9 ].units[ k ].queen == false && decodeVar[ 9 ].units[ k ].life > 0 )
			{
				iobarray.push( decodeVar[ 9 ].units[ k ] );
			}
		}
		for ( k = 0; k < iobarray.length; k++ )
		{
			if ( iobarray[ k ].level > ArmyMaxLvl )
			{
				splitiob.push( iobarray[ k ] );
			}
		}
		if ( splitiob.length == 0 )
		{
			return false
		}
		else
		{
			for ( k = 0; k < splitiob.length; k++ )
			{
				if ( splitiob[ k ].level > ArmyMaxLvl )
				{
					player.select.units.push( splitiob[ k ] );
				}
			}
			return true
		}
	}

	function SendKey ( k )
	{
		var ev = new KeyboardEvent( 'keydown',
			{
				'keyCode': k,
				'which': k
			} );
		window.dispatchEvent( ev );
		ev = new KeyboardEvent( 'keyup',
			{
				'keyCode': k,
				'which': k
			} );
		window.dispatchEvent( ev );
	}

	function SendRButton ( x, y )
	{
		var ev = new window.MouseEvent( "mouseup",
			{
				clientX: x,
				clientY: y,
				button: 2
			} );
		window.dispatchEvent( ev );
	}

	function SendLButton ( x, y )
	{
		var ev = new window.MouseEvent( "mouseup",
			{
				clientX: x,
				clientY: y,
				button: 1
			} );
		window.dispatchEvent( ev );
	}
	window.addEventListener( "keydown", CaptureKeyPress );
	window.addEventListener( "mousemove", captureMousePos );
	//window.addEventListener( "mousedown", onMousedown );
} )();
var ifrm = document.createElement("iframe");
ifrm.setAttribute("src", "about:blank");
ifrm.style.width = window.outerWidth-10;
ifrm.style.height = window.outerHeight/3*2;
ifrm.style.display = 'none';
document.body.appendChild(ifrm);
var win = ifrm.contentWindow;
window.de = win.dispatchEvent;
var spawn = setKey(49); //6
var regroup = setKey(50); //0
var split = setKey(51); //7
var feed = setKey(52); //8
var spell = setKey(53); //5
var select_oibs = setKey(86); //v
var select_queen = setKey(66);//b
var automine = false;
var autospawn= false;
var autospell = false;
var autofuse = false;
var oibminecnt = false;
var f = 220;
var backslash = 70;
var autofeed = false;
var autosplit = false;
var x = 1, y = 1;
var Keys = {interval:80,autospawn:54,mine:70,setkey:27,split:200}
var tima = setInterval(autoing, Keys.interval);
var rainbow = 100000
var rainbowtick = setInterval(rainbowxp, 100);
function rainbowxp(){
    rainbow += 1111;
    LOADER.COLOR_BAR = "#" + rainbow;
    DRAW.XP_COLOR = "#" + rainbow;
    DRAW.XP_REST_COLOR = "#080808";
    if (rainbow >= 161616){
        rainbow = 100000;
    }}
function autoing(){
    if(autospawn) action(spawn);
    if(automine){
        automine = false;
        action(select_oibs);
        action(feed);
        action(select_queen);
        mouseClick();
    }
    function split(){
        if(autosplit){
            autosplit = false;
            action(select_oibs);
            action(split);
            mouseClick();
        }
}
}
function KeyCheck(a){
    if(a.keyCode==Keys.autospawn){
        autospawn = !autospawn;
    }
    if(a.keyCode==Keys.mine){
        automine = true;
    }
    if(a.KeyCode==Keys.split){
        autosplit = true;
    }
    if(a.keyCode==Keys.setkey){
        if (!a.metaKey) {
            a.preventDefault();
        }
        setKeys();
    }
//   }
}
window.addEventListener("keydown",KeyCheck,true);
var captureMousePos = function(event){
              x = event.clientX;
    y = event.clientY;
}
window.addEventListener("mousemove", captureMousePos, true)
function setKeys(){
    try{
        var keys = prompt("Change Keys, values in keycodes",JSON.stringify(keys).replace(f/+lf+$/g, ));
        if(keys === null) return;
        JSON.parse('{'+keys+'}');
        if(k.interval){
            Keys.interval = k.interval;
            clearInterval(tima);
            tima = setInterval(ohno, Keys.interval);
        }
        if(k.autospawn)
            Keys.autospawn = k.autospawn;
        if(k.mine)
            Keys.mine = k.mine;
        if(k.split)
            Keys.split = k.split;
        if(k.setkey)
            Keys.setkey = k.setkey;
    }
    catch(err){confirm("Error" + err.message);}
}
function setKey(k){
    var ev = new win.Event("keydown");
    ev.keyCode = k;
    return ev;
}
function action(a){
    window.de(a);
}
function mouseClick(){
    var ev = new win.MouseEvent("mouseup",{clientX:x,clientY:y,button:2})
    action(ev);
}

alert('nControls :n6 - autospawn ,n\ - automine')