Starve.io L3Mod

Starve.io L3Mod, save home, talk with friends, share map ! And more... soon xD

Terá de instalar uma extensão como Tampermonkey, Greasemonkey ou Violentmonkey para instalar este script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

Terá de instalar uma extensão como Tampermonkey ou Violentmonkey para instalar este script.

Terá de instalar uma extensão como Tampermonkey ou Userscripts para instalar este script.

Terá de instalar uma extensão como Tampermonkey para instalar este script.

Terá de instalar uma extensão de gestão de scripts de utilizador para instalar este script.

(Já tenho um gestor de scripts de utilizador, deixe-me instalá-lo!)

Terá de instalar uma extensão como Stylus para instalar este estilo.

Terá de instalar uma extensão como Stylus para instalar este estilo.

Terá de instalar uma extensão como Stylus para instalar este estilo.

Terá de instalar uma extensão de gestão de estilos de utilizador para instalar este estilo.

Terá de instalar uma extensão de gestão de estilos de utilizador para instalar este estilo.

Terá de instalar uma extensão de gestão de estilos de utilizador para instalar este estilo.

(Já tenho um gestor de estilos de utilizador, deixe-me instalá-lo!)

// ==UserScript==
// @name         Starve.io L3Mod
// @namespace    Starve.io L3Mod
// @version      0.1
// @description  Starve.io L3Mod, save home, talk with friends, share map ! And more... soon xD
// @author       l3mpik
// @match        *://starve.io/*
// @require      https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.5/socket.io.min.js
// @require      https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js
// @grant        none
// ==/UserScript==
window.l3 = function() {
 
    this.socket = null;
 
    this.version = "1.0";
    this.name = "";
 
    this.binds = {};
}
 
l3.prototype = {
 
    get: function(data) {
 
        return document.getElementById(data.toString());
    },
 
    getRoom: function(callback) {
 
        var me = this;
 
        try {
 
            //callback(window.webSocket.url), future use bots? :D
            return client.socket.url;
        } catch(e) {
 
            console.error("Undefined ws.url, connect to server!");
        }
    },
 
    connect: function(data) {
 
        var me = this;
 
        me.socket = io.connect("ws://5.196.23.192:1000");
        me.room = data;
 
        me.socket.on('request_room', function() {
 
            me.socket.emit('request_room', me.room);
        });
 
        me.socket.on('disconnect', function(e) {
 
            console.log("%c Kurwa. Jeden Way jesteś Banned! :D", "background: #000000; color: yellow; font-size: 2em;");
        });
 
        me.handleMessages();
    },
 
    getName: function() {
 
        var me = this;
 
        me.name = me.get("nickname_input").value;
 
        return me.name;
    },
 
    sendChat: function(data) {
 
        var me = this;
 
        me.socket.emit('chat', {
            user: me.getName(),
            message: data
        });
    },
 
    handleMessages: function(data) {
 
        var me = this;
        var message_counter = 0;
        var offset = 100;
 
        me.socket.on('chat', function(data) {
 
            if(data.user === me.getName()) {
                //return
            } else {
 
                //console.log("User:", data.user, "Message:", data.message);
                message_counter += 10;
 
                var r_id = me.randomId(data);
 
                offset = offset + message_counter;
 
                $("body").append('<div id="' + r_id + '" class="row" style="width: 30%; position: absolute; z-index: 1; bottom: ' + offset + 'px;"> <div class="alert alert-success" role="alert"> <span class="glyphicon glyphicon-user" aria-hidden="true" style="margin-left: 5px;"></span> <div id="l3_user">' + data.user + '</div>:<div id="l3_message">' + data.message + '</div> </div> </div>');
 
                setTimeout(() => {
 
                    $("#" + r_id).fadeOut("slow");
                    $("#" + r_id).remove();
 
                    message_counter -= 10;
                }, 3000);
            }
        });
    },
    handlebinds: function() {
 
        var me = this;
 
        me.binds = [];
 
        me.binds.push('`|respawn');
 
 
        function isBind(e) {
 
            for(var i in me.binds) {
 
                var bind = me.binds[i].split("|");
 
                if(bind[0] === e.key) {
 
                    switch(bind[1]) {
 
                        case 'respawn':
                            me.respawn();
                            break;
                    }
                }
            }
        }
 
        document.addEventListener('keydown', isBind, false);
 
        console.log("%c Binds initialization Success!", "background: #000000; color: yellow;");
    },
 
    respawn: function() {
 
        var me = this;
 
        me.client.socket.close(1000);
    },
    randomId: function(data) {
 
        return Math.floor(Math.random() * (2 + data.user.length * data.message.length + 2))
    },
 
    override(client, callback) {
 
        var me = this;
 
        try {
 
            client.send_chat = function(data) {
 
                world.fast_units[user.uid].text = data;
                this.socket.send(JSON.stringify([0, data]));
 
                me.sendChat(data);
            };
 
            client.connect = function() {
 
                this.timeout_number = 0;
                this.connect_timeout();
 
                me.name = me.getName();
 
                if(me.socket !== null && me.socket !== void(0)) {
                    me.socket.disconnect();
                }
 
                me.connect(me.getRoom());
            };
 
            window['create_minimap'] = function(c, g) {
                console.log("Spoofing data:", c, " And this array:", g);
                var f = document.createElement("canvas"),
                    d = f.getContext("2d");
                f.width = 200 * c;
                f.height = 200 * c;
                f.id = "minimap";
                d.translate(12 * c, 8 * c);
                d.fillStyle = g[9];
                d.fillRect(-7, 0, f.width - 10, f.height - 18);
                d.fillStyle = g[0];
                d.fillRect(0, 0, f.width - 25, f.height - 25);
 
                create_minimap_object(d, c, g[1], "p", 5, -1);
                create_minimap_object(d, c, g[2], "s", 3, 2, 2);
                create_minimap_object(d, c, g[3], "s", 4, 1, 1);
                create_minimap_object(d, c, g[4], "s", 5, 0, 0);
                create_minimap_object(d, c, g[5], "t", 3, 5, 4);
                create_minimap_object(d, c, g[6], "t", 4, 3,
                    2);
                create_minimap_object(d, c, g[7], "t", 4, 1, 0);
                create_minimap_object(d, c, g[8], "b", 4, 3, 2);
                create_minimap_object(d, c, g[9], "b", 4, 1, 0);
                create_minimap_object(d, c, g[10], "g", 3, 2, 2);
                create_minimap_object(d, c, g[11], "g", 4, 1, 1);
                create_minimap_object(d, c, g[12], "g", 5, 0, 0);
                create_minimap_object(d, c, g[13], "d", 3, 2, 2);
                create_minimap_object(d, c, g[14], "d", 4, 1, 1);
                create_minimap_object(d, c, g[15], "d", 5, 0, 0);
                d.translate(-7, -2);
                round_rect(d, 0, 0, f.width - 9, f.height - 14, 10);
                d.lineWidth = 5;
                d.strokeStyle = g[16];
                d.stroke();
 
            };
 
            me.client = client;
 
            callback();
 
        } catch(e) {
 
            console.error("Kurwa error : ", e)
        }
 
    },
 
    isReady(callback) {
 
        var me = this;
 
        if(window.client && window.Client && window.game && window.world && window.user) {
 
            callback();
 
            return true;
        } else {
 
            return false;
        }
    },
 
    inject(data) {
 
        var link = document.createElement("link");
        link.href = data;
        link.type = "text/css";
        link.rel = "stylesheet";
        document.getElementsByTagName("head")[0].appendChild(link);
 
        console.log("%c Injection Success!", "background: #000000; color: yellow;");
    }
}
 
setTimeout(function() {
 
    var app = new window.l3();
 
    app.isReady(function() {
 
        console.log("Before:", create_minimap);
 
        console.log("%c Game is ready! Im working.... okay? ", "background: #000000; color: yellow;");
 
        app.inject("https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css");
 
        app.override(window.client, function() {
            console.log("%c Override Success!", "background: #000000; color: yellow;");
        });
 
        console.log("Before:", create_minimap);
 
        app.handlebinds();
    });
 
}, 2000);