Starve.io

Starve.io Auto Atack Auto Crafting extended UI

Устаревшая версия за 24.09.2020. Перейдите к последней версии.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey, Greasemonkey или Violentmonkey.

Для установки этого скрипта вам необходимо установить расширение, такое как Tampermonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Violentmonkey.

Чтобы установить этот скрипт, вы сначала должны установить расширение браузера, например Tampermonkey или Userscripts.

Чтобы установить этот скрипт, сначала вы должны установить расширение браузера, например Tampermonkey.

Чтобы установить этот скрипт, вы должны установить расширение — менеджер скриптов.

(у меня уже есть менеджер скриптов, дайте мне установить скрипт!)

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение браузера, например Stylus.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

Чтобы установить этот стиль, сначала вы должны установить расширение — менеджер стилей.

(у меня уже есть менеджер стилей, дайте мне установить скрипт!)

// ==UserScript==
// @name         Starve.io
// @namespace    http://tampermonkey.net/
// @version      0.1.2
// @description  Starve.io Auto Atack Auto Crafting extended UI
// @author       You
// @match        https://starve.io/*
// @grant        none
// ==/UserScript==

(function() {
    //polyfills
    function Event(e,t){this.script=e,this.target=t,this._cancel=!1,this._replace=null,this._stop=!1}Event.prototype.preventDefault=function(){this._cancel=!0},Event.prototype.stopPropagation=function(){this._stop=!0},Event.prototype.replacePayload=function(e){this._replace=e};var callbacks=[],addBeforeScriptExecuteListener=function(e){if(!e instanceof Function)throw new Error("Event handler must be a function.");callbacks.push(e)},removeBeforeScriptExecuteListener=function(e){for(var t=callbacks.length;t--;)callbacks[t]===e&&callbacks.splice(t,1)},addev=window.addEventListener.bind(window),rmev=window.removeEventListener.bind(window);window.addEventListener=function(){"beforescriptexecute"===arguments[0].toLowerCase()?addBeforeScriptExecuteListener(arguments[1]):addev.apply(null,arguments)},window.removeEventListener=function(){"beforescriptexecute"===arguments[0].toLowerCase()?removeBeforeScriptExecuteListener(arguments[1]):rmev.apply(null,arguments)};var dispatch=function(e,t){var r=new Event(e,t);if(window.onbeforescriptexecute instanceof Function)try{window.onbeforescriptexecute(r)}catch(e){console.error(e)}for(var n=0;n<callbacks.length&&!r._stop;n++)try{callbacks[n](r)}catch(e){console.error(e)}return r},observer=new MutationObserver(e=>{for(var t=0;t<e.length;t++)for(var r=0;r<e[t].addedNodes.length;r++){var n=e[t].addedNodes[r];if("SCRIPT"===n.tagName){var o=dispatch(n,e[t].target);o._cancel?n.remove():"string"==typeof o._replace&&(n.textContent=o._replace)}}});observer.observe(document,{childList:!0,subtree:!0});
    //polyfills
    //options
    let craftImg,craftItems,craftHelperE;
    let options={
        gameFuncName:"wi",
        circleTimerFuncName:"fh",
        showLastPlayerUI:true,
        timeoutLastPlayerUI:undefined
    };
    let craftHelper=[{"imgSrc":"https://starve.io/img/inv-bag-out.png","items":[{"imgSrc":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEYAAABLCAYAAADNsPFaAAAPNklEQVR4Xu2ceWwc13nA31w7O7P3ffI+RFIkl6IOW5YsyZJtxYrhOI4UwxaSxkXaon8UzT9F/iiQog0K9AiKtkCLpvEfQWo3VoTGliKniVxJlnVatMVdSuJ97i6X5N7XzOzOsVO8lSlTXFG7S67dRtQDBrvYee+b9/3m+7755nuPRMAD2rFjx7DRTsXzKEH0ogTqAgiqfVC/39nf5EK6IBTmC4Iw1DHCnz158qS0Whdk9Q+evzj+PEKRLyEIqv6dVbyKictyIStz+dO+v3z77Mph94Hp/atvfxcjFXurkPvIdJXy/OWhH/zszWWF7oHZzFCWYayEUwQD3Qelqdcfmdu/AUUKLPef0K0QGGgntmv+abPElHLMYMxp+zTzp0jPD46/gKuoV8sN2EznRYY7gXh++J3vowq8czMpXk7XAi+OINv+5vf/+YvKU1AUBQTAMBVB4DiCoZzICxkxL5ab2P/5ebmQRrb97Xd/upGJoDJAtCRFWEgNZSTVlB6nKBWuUJC4AlMgGEGiBEZgGI4hKJoTBT7KM9loPs3G8lk2xKWyCZ7hN3L95bF6WkPA70k2I9RC3rrAGEmarKfNWhupURuVKkpH0CodpqRVhBJCUZIYrsCRIgwcRZB7KUFBluV8QcxlBI7JijzrZ2Ox69GZuYnMYmqjyuxr7jV32Bv0N4Pj0U/8Y8mNyqsKjF5BKZpVFn2P3u1ooE1WnYJS0RhJEThKIPLnACqdFCfyOT+bWPxwaXTsRnxmsdJxq/vZNEby+I5nW/a3eZoi6UT2NyMDUxcmBsMxNr1ua6wIjAaniWaNWdejczhaNDa7ldQYlRihXK8iq8eNpRdn/itw0zuVDafXIxOCOdyxw/lcx67mRpPNEmfT2YsTvulfD1/3jy75s+uRWRaMm9ard1ta3Z1ah8tKak0URlCrLySKIsjl84DneSBJEgAIAEpSCWiKAhiGlZ0XK+XZ80ujvncDg+NlO6/RwURrFf31WwyHO3c29LvbGwCQCwOzI/6TvosT63Gth4KxK3X0s/aOlu3GxnYtQZW8VDIMA5aiEZBIJgHLcYAX7oKBTgXBWExm4HI4gUZd/n30Unjc99OZq971glke1+1o0hxs3+460Opptmj02rMjN0Z+fOXMSDibqMqt1gRjJlXkIVtn85Pm5g4tQZeUHZKpFJianQZzgQDIMFlQKBRKdFKr1GBbTy9obWp+qL5iQZIuRSa8b81ev71RMHA8RSiwV/r2uV/ddrAHQ1H0nZvnh04OXvTnhHzpJNe44APBUKgCe9rW6n7G1tljJTWm1WPTmTQYnRgHU3OzIJfLramLVqMBfd29oKWx6aH6pgQuc25xxPt+aGi6FmCgDPj4/vbOwy0vde/uCiYjiX+5dMo74B9JVCr/gWB6dW7TC66enmaV2Y2jpUEiMB8Eg7eHQCweX/M6NEWD9pYW0N7SClS06qHzmc5EAqfmfd7bqeDaAivVaEW/Votb9QdPHunqc7e5Lk8Pzbx5/b/HFlLRte/kirElYBQohn2jfseWp8wtvTSmIB80n1giDkbGx4F/PgDy+fx9XQiCADqtFtQ73aCpoRFAq3lYg4H3anh6+HTIN86IuZokZyuv9/Xep13feeJwH8Pn+Z9cO+O9MD4YqYRxCZh6lUl9tK6/b6vO1bKWAFGSQDKZBKGlBRCNxYpPJBzHi08hrUYLjHo9MBmMgKJKHmAlImeYaOBUYNB3KzUfq2TC1fbpdTbr/mT/NzxuvcXw9sAHvrc++WC2EhklYHYZm+wvuj0eF6W3lxMgCEIx8EKrwTEc0DQFlEolwNDyj2goW0IAfz02NXxiZmD4i7CW5Vjz/UOv9e5r7W1/z3d56B8unBiWZFkup1sJmGcdXQ3P27f2mRQqfbnBGzmvpGnAEnLyzMyn3lMTN+Y2Iqvc2O8dONpxtO9A37XZO9M/OnfCt5SJ3+//DxBQAuawo6fxOXtnn0FB68pdcL3nSUoJLE4H4HA59fPBC74Tty7OrFdWJeO+t/9o57H+A56PZ0dm//78CW8lAbgEzD5ru/srjm6PTak1V3LRavtAKCaHDRitVpCXBPGXgxe9/3jl3TvVyqm0v1mtU/zZM6969rdvaz9z++qtv/ufd27zklA2nykB06K2ar/u7u/dorU1r3wzrnQia/WDT31KRQO9xQz0FhNQkCSQRBGcvTMw/KMLJ3y1Kj+svv7O+g7DHz/9sqdebzG+c/O8781r709VoksJGALF0actre7n7F091hpYDQSipCmg1mmBxmAAtEYFcKJYOim2m1PDCz/56LT348hUuJIJV9PHqjYoXt9xqPlI15OdESaZ+fGVX3k/mvRFK5HxwARPiysVe6ytridMLW12pdZMoNjnmlQgFb444qQCQLeh1WpAa+4ehEJRMjq0EOJ+PvCB7+3Ry2MViK64C8x8v9azx/1K794uI61V/2Z0YOTfLp0arbQUsea7Eo2T+Fatw+Qx1LnqVSaLjdYZVEqKLNadEATAz+KBogCWMGEegxH4Z59EEQIEAw8Mx9dUKJNKyVcnhqYGo3NBrVpb7MgL+UImzwkJNpMPpWNcKBXjsnm2ZBl1LaGwDPF8xw7Hi9272506s3FkcS701o2zwx9ND1VkLVBu2bKDkVSRXVqH+YWmHR2ehlY3pVKtgHIXDnQXDMcAjhPFTwir0ibwPEhkUoyAAZ4mlUXLlKSCxIl5gcnn8kk2y8XZNBdlUmwoFWOmY6HMVHSBSbDpkizZQGuJXmeTbm9Lr3Nn/ZY6HaWmxpb8i+8OXZq4Mn0nWg3csmDgRGHd9o3OA90v9z/dY7HbsRXVykr1X7MfzLVEXgAJLptdYpNxJp8rlgdIQkEYaDWlpzRqlYJUCJIkJbgME8mmMkvpeGYhHcvGmXQ+k2d5FEFRk1pP1unNmlaLy2zTGHR5UeS9gYn5M3euzX4aHE/wolA2qVs5yYrAwAEv1fe3vr79kKe5sUm9MnhumAwAIJtKg8G50bnTkwMjgXSMgTI1Cgp36s20S29R2TUGlUWtVxloDaVVqigV9E8AQE7I8xyfFzAMRdQkpVSgOJ7Oc7nJSCA8MDe2cGXmVngmtsiuZ44Vg9ljaXUe3/aMx9O21QrdqZaNSWfAjdGh+Z95z3l9yUBJHKAJJebUm5VunZm2agxKi9pAmdQa2kRrKQgLWl2Sy7LhbJKZiYbS3vnJ+GQ0lK3WStZlMVu0Dv23ug/07d3a36A11PZtQRQEMD09xf3i5ofeXwY+rai8qSRI1KYxkG69mS4UZDmQCHNRNp2vphj1sJtbscXAFYLf27Lf89VtezpNNhtS6zizFJgHZ7yX7/zH1BVfRqh9+aFaC68YDHwkv9b4ROcrffv66hoaFLWOM4lIFFwf9gVPjF72DqWCX0gJoho4FYOBQg/buxq/6Tng6Wht19c6zrBZBkxPTnK3A5OLS7l0Ki9LfJhLM342moIrlqzIV5zHVANgrb5Vgek31Ftf697v2dnR66x1nIHvTQtzARAJhoAMgCxIkpARc9kgl4hcjY5P34z6IwUEnvpyWlVgnJRe9a2OfZ5nu3e1Ge3WYnJXyxYOzoOF2QAowLWpzxovSfxgwj/23vzNkXAuw9XyejUJvsWkCyew401P9rzs2ddtr3NhtY4zyUgMLMz5QY65P/WYYaLB0wHvlxp7qrIYCOdrddvaXuna09fa2krXPM5ksmBh1g/S8ftXOaaZSOC9wKD3TipU01WEmlkMFHTQ1lF/tGOPp6u9w1jLOAPdJxGJAehOKy1GBnJhMOEfPTF3YyiaZ8qWJGvlalVbzEuuvrYjDR5PS0ubqlZxBmau0EoW5wKAzdy/Bg8D8LnFEd/7C7cmH7TaWSsQq+VUBQYu277asKu339TYaXM5EWud676i03omKRcKIJNMgSV/sPjOtLKJBUkcSy/N/io0dLsWe2iqmV9VYHYZG20vujweF21w6M0mYG+sAxuJM9B9IJRwMASyydK9Q+F8JvbB4vDQpfBEUCiIZeu01Sherm9VYGCC95yz22MgaL1KqwH2xnqw3jgD6zCZRArEF5eKlrJ6qYeVeO6T6NzYr5dujUW4dEXLquWUreZ8VWCesXXUwxUEM6k2KpQksLpdwGAxAxTHilW8ShpM5HIsV4wpqVi8+B2608qWFXLscGpx5lz4zsRkJrLhbWiVzGtDMeYpS6vziLPX41BqrRAEpVYDSk0XS5d3D6y4UahY0fvs8+6eABmIggiEPA9yDAOYTBZwDFMsUK1uSZ5L30oFpz8Mj07PZmOZ9ShVizFVWUw9bVC/7O7v6dG7W1AE+XwdFpY3UfQBUO7+BvN4SRAAdB8+z9+X2S4rAffIxHgmMRj3T1+JTMyFcql1FZhqAQXKqAoMHAALVkccPX12SmepxSQgkIyUzwSy8citZDDgTQXC8S8xX1lLh6rBaHAlsd3YYN9hbGpwqfRWNU6qUIBUFmBWzIIvSGJa4NIBNhaZSIeXJrLhaJBNMnyh/CphLW5IORlVg1kW2EibNN0Gt62OMhjNSo1Wq6BUakyhUqD4A9egRLkgcRLPZXiOyYg5NpzLpP1MPDbGhOOLbIKtZAdCOWVqeX7dYOAk4HKBUaEhnZRObVVq1EZSTVMoXrqqBgAQgSymBI6L5NJMJJdlF3Np7ova+lELQBsCU4sJ/H+V8RjMGnfmMZjHYKpz2scW89hiHltMdQQeW0x1vB7HmLUspu+v3/hXBMfo6ng+2r1lUWKRrX/++g8VWrru0Va1Ou34NBtAWt74yh9pO9y7qxv6aPdOjwavIeoG18GWPzx8DMXR8n8R8WjzKGpXEAvc1L//9iSidNsP2A/1thu66p/aBHqXVTEx7L+6eG5oHKFc1t0ygpJN39z7hNKm39T/yiC3lByZ+cXljxG5kEcUblsPCpDin/dtZjjLUIruBOQYQteZnQUZb1+2MehWunb3ts0Sc2BMSY0HB6H7LDNAEXEcbnBBKKd1t4yi9ypvOIahtoM9bUqn0U3QpOlRy3NgniKw+VguFA8unb81IUrSvYUtpFDguVD4WnHnD91gdhQkfEvZyLQJOqCYOMbORRfubYki3ZY2BGCuTaD7mirKQJrPByMTsMN9e8U2M5yVUErALLuVLKBNK2POo2xFMKYgRGEGus9KPdfaXQifVg5RxkyYLKthnvMowYF5ioQgWRyRYmygCKRkN+j/Avz2rVoCZAk+AAAAAElFTkSuQmCC","number":"6"},{"imgSrc":"data:image/png;base64,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","number":"5"}]}],craftHelperID;
    let ws;
    let circleTime;
    const lastplayers=["Player1","Player2","Player3","Player4","Player5",];
    let commands={lastCraftCommand:{keyCode:"KeyE",wsSend:"[7,49]"},
                  meatCraft:{keyCode:"KeyZ",wsSend:"[7,49]"},
                  bandageCraft:{keyCode:"KeyX",wsSend:"[7,54]"},
                  fillBottle:{keyCode:"KeyC",wsSend:"[7,111]"},
                  autoClick:{keyCode:"KeyQ",active:false,wsSend:"0"}
                 }
    let oldfunc={};
    let newfunc={};
    //options
    //functions
    function run(){
        history.pushState('id', 'id', '/?id=1');
    }
    function viewCraftHelper(craftHelperID){
        if(craftHelper.length>0 && craftHelperID<craftHelper.length){
            craftImg.innerHTML="";
            craftItems.innerHTML="";
            craftImg.insertAdjacentHTML('beforeend',`<img class="img_recipe" id="img_1" src=${craftHelper[craftHelperID].imgSrc} style="display: inline-block;">`);
            craftHelper[craftHelperID].items.forEach((item)=>{
                craftItems.insertAdjacentHTML('beforeend',`<div><img class="inv" id="inv1" src="${item.imgSrc}" style="display: inline-block; vertical-align: middle;"><span>${item.number}</span></div>`);

            });
        }
    }
    function prev(){
        craftHelperID--;
        if(craftHelperID<0){
            craftHelperID=craftHelper.length-1;
        }
        craftHelper.length>1 && viewCraftHelper(craftHelperID);
    }
    function next(){
        craftHelperID++;
        if(craftHelperID>=craftHelper.length){
            craftHelperID=0;
        }
       craftHelper.length>1 && viewCraftHelper(craftHelperID);
    }
    function remove(){
        if(craftHelper.length>1){
            craftHelper.splice(craftHelperID,1);
            prev();
        }else if(craftHelper.length==1){viewCraftHelper(0);}
    }
    //functions
    //hooks
    /* //If there is an update, bring the new function name.
      oldfunc['String.indexOf']=String.prototype.indexOf;
    String.prototype.indexOf=newfunc['String.indexOf']=new Proxy(String.prototype.indexOf,{
     apply:function(target, thisArg, argArray){
      if(argArray[0]=="http://starve.io/beta"){ console.log(arguments.callee.caller.name)
      String.prototype.indexOf=oldfunc['String.indexOf'];
      }
         return target.apply(thisArg, argArray);
     }});
     */
    oldfunc.webSocket=window.WebSocket;
    window.WebSocket=newfunc.webSocket=new Proxy(window.WebSocket,{
        construct:function(target,args){
            ws = new target(...args);

            const messageHandler = (e) => {
                if ("string" === typeof e.data){
                    switch (e = JSON.parse(e.data), e[0]) {
                        case 2:
                            lastplayers.unshift(e[2]+" | "+e[1]) && lastplayers.length>5 &&lastplayers.pop();
                            options.showLastPlayerUI=true;
                            options.timeoutLastPlayerUI && clearTimeout(options.timeoutLastPlayerUI);
                            options.timeoutLastPlayerUI=setTimeout(()=>{options.showLastPlayerUI=false;},5000);
                            break;
                    }
                }else{
                    var d = new Uint8Array(e.data);
                    switch (d[0]) {
                        case 16:
                            circleTime=Date.now();
                            break;
                    }
                }
            };

            const closeHandler = (event) => {
                console.log('Close', event);
                ws.removeEventListener('message', messageHandler);
                ws.removeEventListener('close', closeHandler);
            };
            ws.addEventListener('message', messageHandler);
            ws.addEventListener('close', closeHandler);

            oldfunc['ws.send']=ws.send;
            newfunc['ws.send']= ws.send= new Proxy(ws.send, {
                apply: function(target, thisArg, args) {
                    if(typeof args[0]==='string' ){
                        let arr=JSON.parse(args[0]);
                        if(arr[0]===7){
                            commands.lastCraftCommand.wsSend=args[0];
                        }else if(arr[0]===3){
                            if(commands.autoClick.active){
                                arr[0]=4;
                                args[0]=JSON.stringify(arr);
                            }else{
                                commands.autoClick.wsSend=arr[1];
                            }
                        }else if(arr[0]===14){
                            commands.autoClick.active=false;
                        }
                    }
                    target.apply(thisArg, args);
                }
            });
            return ws;
        }
    });
    oldfunc['canvas.fillRect'] = CanvasRenderingContext2D.prototype.fillRect;
    newfunc['canvas.fillRect'] = CanvasRenderingContext2D.prototype.fillRect= new Proxy(CanvasRenderingContext2D.prototype.fillRect, {
        apply: function(target, _this, _arguments) {
            if(arguments.callee.caller && arguments.callee.caller.name===options.circleTimerFuncName && _this.fillStyle==="#669bb1"){
                _this.fillStyle = "red";
                _this.font = "25px Arial";
                _this.fillText(`${circleTime? (5-(Date.now()-circleTime)/1000).toFixed(1):'5'}`,_arguments[0]+180,_arguments[1]+20);
                if(options.showLastPlayerUI){
                    lastplayers.forEach((p,i)=>{
                        _this.fillText(p,_arguments[0]+180,_arguments[1]+20+i*30-180);
                    });
                }
                _this.fillStyle="#669bb1"
            }
            return Function.prototype.apply.apply(target, [_this, _arguments]);;
        }
    });
    //hooks
    //handler
    /*  window.addEventListener('beforescriptexecute',e => {
	 if (e.script.src.includes('c9')) {
			e.preventDefault();
         fetch('https://starve.io/js/c9.js').then(response=>response.text()).then((dataStr) => {
        let sc=document.createElement('script');
         sc.textContent=dataStr.replace(new RegExp('function '+options.gameFuncName+'\\(\\)\\{',"gi"),"function "+options.gameFuncName+"(){'object' === typeof this && window!==this && ((obj)=>{window.GAME=obj})(this);");
         e.target.append(sc);
         })
		}
	});*/
    document.addEventListener('keydown', (event)=>{
        if(event.code==="KeyQ"){
            commands.autoClick.active=!commands.autoClick.active;
            commands.autoClick.active ? ws.send(`[4,${commands.autoClick.wsSend}]`) : ws.send("[14]")
        }else{
            for (const [key, value] of Object.entries(commands)) {
                if(value.keyCode===event.code){
                    ws.send(value.wsSend);
                }
            }
        }
    });
    document.addEventListener("DOMContentLoaded", function(event) {
        //style
        document.getElementById("game_canvas") && document.getElementById("game_canvas").style && (function(){document.getElementById("game_canvas").style.filter = "brightness(1.1)"})();
        //style
        //create craft Helper Panel
        craftHelperE=document.createElement('div');
        document.body.insertAdjacentHTML('beforeend','<div style=" position: absolute; left: 0; color: white; bottom: 0; margin: 10px; "><div id="craftItems" style=" opacity: 0.5; "></div> <div id="craftImg"></div><div><span id="prev">&lt;&lt;</span><span id="remove">Remove</span><span id="next">&gt;&gt;</span></div>');
        craftImg=document.getElementById('craftImg');
        craftItems=document.getElementById('craftItems');
        document.getElementById('prev').addEventListener('click',prev);
        document.getElementById('next').addEventListener('click',next);
        document.getElementById('remove').addEventListener('click',remove);
        document.getElementsByClassName('content')[0].addEventListener('click',(e)=>{
            if(e.target instanceof HTMLImageElement){
            let items=[];
            craftItems.innerHTML="";
            craftImg.innerHTML="";
            craftImg.appendChild(e.target.cloneNode());
            document.querySelectorAll('.recipe >img').forEach((e,i)=>{
                if(e.style['display']=="inline-block"){
                    let div=document.createElement('div'); e.style['vertical-align']='middle';
                    items.push({imgSrc:e.src, number:document.getElementById('numb'+(i+1)).textContent});
                    div.appendChild(e.cloneNode());
                    div.insertAdjacentHTML('beforeend',`<span>${document.getElementById('numb'+(i+1)).textContent}</span>`);
                    craftItems.appendChild(div);
                }
            });
            craftHelper[craftHelper.length]={imgSrc:e.target.src,items:items};
            craftHelperID=craftHelper.length-1;
}
        });
        viewCraftHelper(0);

    });

    document.addEventListener('contextmenu', function(e) {
        ws.send(`[5,7]`);
    });


    //handler
    //app
    run();
    //app

})();