glitchdetector icon

PlayRustIO Map Modification

glitchdetector | PRO | 04/06/16 09:49:06 PM UTC | 0 ⭐ | 479 👁️ | Never ⏰ | []
JavaScript |

6.75 KB

|

None

|

0 👍

/

0 👎

var socket;
var dropCount = 0;
var clanHomes = "http://pastebin.com/raw/X368aBh3";
 
function newConnect() {
    
    if (typeof WebSocket == "undefined") {
        alert(_("Sorry, your browser does not support WebSockets. Please consider an upgrade to use RustWeb!"));
        return;
    }
    console.log("[RLRC] connecting to websocket ...");
    socket = connect.socket = new WebSocket("ws://" + endpoint + "/ms");
    socket.onopen = function() {
        console.log("[RLRC] connected to websocket");
    }
    socket.onmessage = function(e) {
        var msg = e.data,
            cmd, data;
        var p = msg.indexOf(" ");
        if (p < 0) {
            cmd = msg;
            data = null;
        } else {
            cmd = msg.substring(0, p);
            data = JSON.parse(msg.substring(p + 1));
        }
        console.log("[RLRC Command] " + cmd + "");
        
        switch (cmd) {
            case "plane.drop":
                console.log("[RLRC] Plane Drop at " + data);
                updateDropLocation(cmd, data);
                break;
            case "ping":
                console.log("[RLRC] ping");
                break;
            default:
                break;
        }
    }
}
 
newConnect();
 
 
 
function updateDropLocation(type, data) {
    var loc, pos = worldToMap(data),
        rot, elem;
    var key, name, img;
    key = "loot";
    name = _("Drop");
    img = "http://i.imgur.com/EAebaHz.png";
    rot = 0;
    data.id = 54461337 + dropCount;
    dropCount += 1;
    if (!locations.hasOwnProperty(data.id)) {
        if (data.k)
            return;
        if (inBounds(pos)) {
            console.log("[RLRC] Creating " + key + ": " + data.id);
            sound("drop");
            $landmarks.append(elem = $('<img class="' + key + '" alt="" id="' + key + '-' + data.id + '" />'));
            elem.prop("title", name);
            elem.prop("src", img);
            elem.css({
                width: iconSize + "px",
                left: (pos.x - iconSize / 2) + "px",
                top: (pos.y - iconSize / 2) + "px",
                transform: "rotate(" + rot + "deg)",
                zIndex: 200
            });
            elem.bind("mousedown", function(evt) {
                evt.stopPropagation();
            });
            loc = locations[data.id] = {};
            loc.type = key;
            loc.id = data.id;
            loc.pos = pos;
            loc.rot = rot;
            loc.time = Date.now();
            loc.elem = elem;
            setTimeout(function(){ 
                console.log("[RLRC] Removing " + key + ": " + data.id);
                loc.elem.remove();
                delete locations[data.id];
                }, 15 * (60 * 1000));
        }
    } else {
        loc = locations[data.id];
        if (inBounds(pos) && !data.k) {
            loc.time = Date.now();
            var realRot = rot;
            var diff = loc.rot - rot;
            if (diff > 180)
                rot += 360;
            else if (diff < -180)
                rot -= 360;
            loc.elem.transition({
                "left": (pos.x - iconSize / 2) + "px",
                "top": (pos.y - iconSize / 2) + "px",
                "rotate": rot + "deg"
            }, 990, "linear", function() {
                loc.elem.css({
                    "transform": "rotate(" + realRot + "deg)"
                });
            });
            loc.pos = pos;
            loc.rot = realRot;
        } else {
            console.log("[RLRC] Removing " + key + ": " + data.id);
            loc.elem.remove();
            delete locations[data.id];
        }
    }
}
 
function updateSpecialLocation(type, data) {
    var loc, pos = worldToMap(data),
        rot = data.r,
        elem;
    var key, name, img;
    if (type === "p") {
        key = "plane";
        name = _("Plane");
        img = "img/plane.png";
    } else {
        key = "helicopter";
        name = _("Helicopter");
        img = "img/heli.gif";
        rot += 180;
    }
    if (!locations.hasOwnProperty(data.id)) {
        if (data.k)
            return;
        if (inBounds(pos)) {
            console.log("[RLRC] Creating " + key + ": " + data.id);
            switch (type) {
                case "p": 
                    sound("plane");
                    break;
                case "h":
                    sound("heli");
                    break;
            }
            $landmarks.append(elem = $('<img class="' + key + '" alt="" id="' + key + '-' + data.id + '" />'));
            elem.prop("title", name);
            elem.prop("src", img);
            elem.css({
                width: iconSize + "px",
                left: (pos.x - iconSize / 2) + "px",
                top: (pos.y - iconSize / 2) + "px",
                transform: "rotate(" + rot + "deg)",
                zIndex: 200
            });
            elem.bind("mousedown", function(evt) {
                evt.stopPropagation();
            });
            loc = locations[data.id] = {};
            loc.type = key;
            loc.id = data.id;
            loc.pos = pos;
            loc.rot = rot;
            loc.time = Date.now();
            loc.elem = elem;
        }
    } else {
        loc = locations[data.id];
        if (inBounds(pos) && !data.k) {
            loc.time = Date.now();
            var realRot = rot;
            var diff = loc.rot - rot;
            if (diff > 180)
                rot += 360;
            else if (diff < -180)
                rot -= 360;
            loc.elem.transition({
                "left": (pos.x - iconSize / 2) + "px",
                "top": (pos.y - iconSize / 2) + "px",
                "rotate": rot + "deg"
            }, 990, "linear", function() {
                loc.elem.css({
                    "transform": "rotate(" + realRot + "deg)"
                });
            });
            loc.pos = pos;
            loc.rot = realRot;
        } else {
            console.log("[RLRC] Removing " + key + ": " + data.id);
            loc.elem.remove();
            delete locations[data.id];
        }
    }
}
 
function sound(type) {
    var file = "";
    switch (type) {
        case "info":
            file = "http://soundbible.com/mp3/Industrial%20Alarm-SoundBible.com-1012301296.mp3";
            break;
        case "warning":
            file = "http://static1.grsites.com/archive/sounds/emergency/emergency029.mp3";
            break;
        case "heli":
            file = "http://static1.grsites.com/archive/sounds/emergency/emergency029.mp3";
            break;
        case "plane":
            file = "http://soundbible.com/mp3/Industrial%20Alarm-SoundBible.com-1012301296.mp3";
            break;
        case "drop":
            file = "http://www.flashkit.com/imagesvr_ce/flashkit/soundfx/Electronic/Arcade/Arcade_S-wwwbeat-8530/Arcade_S-wwwbeat-8530_hifi.mp3";
            break;
        default:
            file = "http://soundbible.com/mp3/Industrial%20Alarm-SoundBible.com-1012301296.mp3";
            break;
    }
    var audio = new Audio(file);
    audio.play();
}

Comments