Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var ws;
- var reconnect;
- var calls = [];
- var callIndex = 1;
- var inroom = false;
- var target;
- var targetObject;
- var toggle = false;
- var macros;
- var loadChatInterval;
- var whispering = false;
- var renderCall = function(i) {
- callIndex = i;
- var call = calls[i - 1];
- $('#reporter').html(call.reporter);
- $('#room').html(call.room_name + ' [' + call.room_id + ']');
- $('#message').html(call.message);
- $('#pageCount').html(i + '/' + calls.length);
- $('.flasher').show();
- $('#callcontainer').show();
- }
- var nextCall = function(i) {
- if (callIndex + 1 <= calls.length) {
- renderCall(callIndex + 1);
- }
- }
- var prevCall = function(i) {
- if (callIndex - 1 > 0) {
- renderCall(callIndex - 1);
- }
- }
- var renderMacros = function() {
- var macroList = '';
- macros.forEach(function(macro) {
- macroList += '' + '<li id="' + macro.id + '" class="list-group-item amacro">' + '<h4 class="list-group-item-heading"><small>Command:</small> ' + macro.macro + '</h4>' + '<p class="list-group-item-text">' + '<small>Key:</small> <b>' + macro.keypress + '</b>' + '<div style="margin-bottom: 25px;">' + '<button style="float: right;" type="submit" class="btn btn-success btn-danger btn-sm deletemacro">Delete</button>' + '<button style="float: right; margin-right: 5px" type="submit" class="btn btn-success btn-warning btn-sm editmacro">Edit</button>' + '</div>' + '</p>' + '</li>';
- });
- $('#macrolist').empty();
- $('#macrolist').append(macroList);
- $('#addmacrobtn').removeAttr('disabled');
- }
- var renderBusStops = function(busstops) {
- var busStopList = '';
- busstops.forEach(function(busstop) {
- busStopList += '' + '<li class="list-group-item">' + '<button style="margin-top: -5px;" class="btn btn-sm btn-success pull-right busdestination" id="' + busstop.room_id + '">Take me there!</button>' +
- busstop.name + '</li>'
- });
- $('#busstops').empty();
- $('#busstops').append(busStopList);
- $('#bus').fadeIn();
- }
- var loadChat = function() {
- if (!inroom && ws.OPEN) {
- ws.send('inroom');
- }
- }
- var toggleChat = function() {
- var $chatbox = $('#chatbox').find('input');
- if ($('#toggle').hasClass('btn-success')) {
- $chatbox.focus();
- toggle = true;
- $('#toggle').removeClass('btn-success').addClass('btn-danger').html('Chat Mode');
- } else {
- $chatbox.blur();
- toggle = false;
- $('#toggle').removeClass('btn-danger').addClass('btn-success').html('Game Mode');
- }
- }
- connect = function() {
- console.log('Attempting to connect to WebSocket...');
- ws = new WebSocket('ws://ws.obborp.com:3000');
- ws.onopen = function() {
- console.log('WebSocket connected.');
- var ping;
- var ping_counter;
- var sso = flashvars['sso.ticket'];
- var data = JSON.stringify({
- sso: sso
- });
- ws.send('sso_login ' + data);
- loadChatInterval = setInterval(loadChat, 5000);
- ws.onmessage = function(ev) {
- var data = ev.data;
- var msg_regex = /([^\s]+)*\s?(.+)?/;
- var msg = data.match(msg_regex);
- var command = msg[1] ? msg[1] : msg[0];
- switch (command) {
- case 'ready':
- console.log('Ready.');
- ws.send('look');
- break;
- case 'pong':
- ping_counter--;
- console.log('PONG.');
- break;
- case 'sso_login':
- console.log('Authenticated.');
- ws.send('hello');
- ws.send('look');
- ws.send('getmacros');
- break;
- case 'inroom':
- if (!inroom) {
- $('#loadingtext').fadeOut();
- clearInterval(loadChatInterval);
- inroom = true;
- $('#chatbox').fadeIn();
- $('#stats').fadeIn();
- $('#chatbox').focus();
- if (target) {
- $('#statstarget').fadeIn();
- }
- ws.send('stats');
- }
- break;
- case 'look':
- var data = JSON.parse(msg[2]);
- $('#head').html('<img id="headimg" src="https://www.habbo.com/habbo-imaging/avatarimage?figure=' + data.look + '&action=wav&direction=2&head_direction=3&gesture=srp&size=m&headonly=1">').fadeOut().fadeIn();
- break;
- case 'stats':
- var data = JSON.parse(msg[2]);
- $('#healthbar').width(data.health + '%');
- $('#energybar').width(data.energy + '%');
- break;
- case 'targetstats':
- var data = JSON.parse(msg[2]);
- if (data.id == target) {
- $('#targethealthbar').width(data.health + '%');
- $('#targetenergybar').width(data.energy + '%');
- } else {
- $('#statstarget').fadeOut();
- $('#headtarget').html('<img id="headimg" src="https://www.habbo.com/habbo-imaging/avatarimage?figure=' + data.look + '&action=wav&direction=2&head_direction=3&gesture=srp&size=m&headonly=1">')
- $('#targethealthbar').width(data.health + '%');
- $('#targetenergybar').width(data.energy + '%');
- target = data.id;
- targetObject = data;
- $('#statstarget').fadeIn();
- }
- break;
- case 'macros':
- var data = JSON.parse(msg[2]);
- macros = data;
- renderMacros();
- break;
- case 'busstops':
- var data = JSON.parse(msg[2]);
- renderBusStops(data);
- break;
- case 'atm':
- toggle = false;
- $('#containeratm').fadeIn();
- break;
- case '911':
- var data = JSON.parse(msg[2]);
- calls.push(data);
- renderCall(calls.length);
- var policeBeep = document.getElementById('policeBeep');
- policeBeep.play();
- break;
- case 'clear_wanted':
- $('#content').empty();
- $('#content').append('<span id="nobody">It looks like nobody is wanted.</span>');
- $('#wanted').fadeIn();
- case 'wanted':
- var user = JSON.parse(msg[2]);
- var charges = '';
- for (charge of user.charges) {
- charges += '<div style="width: 60%; float: left">Crime: ' + charge.crime + '</div>' + '<div style="width: 20%; float: left">' + charge.count + '</div>';
- }
- var criminal = '' + '<div style="width:100%; clear: left;">' + '<div style="width:20%; float:left">' + '<img src="https://www.habbo.com/habbo-imaging/avatarimage?figure=' + user.look + '&action=wav&direction=2&head_direction=3&gesture=srp&size=m&headonly=1">' + '</div>' + '<div style="width: 80%; float:left; padding-top:10px">' + '<div style="width: 60%; float: left">' + '<b>User: ' + user.username + '</b><br />' + '</div>' + charges + '</div>' + '</div>' + '<br />';
- $('#content').append(criminal);
- $('#nobody').remove();
- break;
- case 'whisper':
- $('#chatinput').val(':whisper ' + targetObject.username + ' ');
- $('#chatinput').focus();
- whispering = true;
- break;
- }
- }
- ws.onclose = function() {
- console.log('RIP WebSocket.');
- clearInterval(ping);
- ws.close();
- if ($('#chatbox').is(':visible')) {
- inroom = false;
- $('#chatbox').fadeOut();
- $('#stats').fadeOut();
- $('#statstarget').fadeOut();
- $('#loadingtext').fadeIn();
- }
- reconnect = setInterval(retry, 5000);
- }
- clearInterval(reconnect);
- ping = setInterval(function() {
- console.log('PING.');
- ws.send('ping');
- ping_counter++;
- }, 30000);
- }
- }
- retry = function() {
- ws.close();
- ws = undefined;
- connect();
- }
- $(document).mouseup(function(ev) {
- if (toggle) {
- $('#chat').find('input').focus();
- }
- });
- $(window).keydown(function(ev) {
- var $chatbox = $('#chatbox').find('input');
- if (ev.keyCode == 8) {
- if (whispering) {
- if ($chatbox.val().length <= (10 + targetObject.username.length)) {
- $chatbox.val('');
- whispering = false;
- }
- }
- }
- });
- $(window).keypress(function(ev) {
- var $chatbox = $('#chatbox').find('input');
- if (whispering && !$chatbox.val().startsWith(':whisper')) {
- whispering = false;
- }
- if (ev.keyCode == 13) {
- if ($chatbox.is(':focus')) {
- var message = $chatbox.val();
- if (message.length) {
- if (ws.OPEN) {
- ws.send('say ' + JSON.stringify({
- message: message,
- shout: ev.shiftKey ? 'true' : 'false'
- }));
- }
- $chatbox.focus();
- } else {
- if (!toggle) {
- $chatbox.blur();
- }
- }
- if (whispering) {
- $chatbox.val(':whisper ' + targetObject.username + ' ', '');
- } else {
- $chatbox.val('');
- }
- } else {
- $chatbox.focus();
- }
- }
- if (!$chatbox.is(':focus') && !$('#macro').is(':visible') && !$('#containeratm').is(':visible')) {
- if (typeof(macros) != 'undefined' && macros.length > 0) {
- macros.forEach(function(macro) {
- if (macro.keypress == String.fromCharCode(ev.keyCode)) {
- if (ws.OPEN) {
- ws.send('say ' + JSON.stringify({
- message: macro.macro,
- shout: ev.shiftKey
- }));
- }
- }
- });
- }
- }
- });
- connect();
- $(function() {
- $('body').on('click', '#submitDeposit', function() {
- var amount = $('#deposit').val();
- ws.send('deposit ' + JSON.stringify({
- amount: amount
- }));
- });
- $('body').on('click', '#submitWithdraw', function() {
- var amount = $('#withdraw').val();
- ws.send('withdraw ' + JSON.stringify({
- amount: amount
- }));
- });
- $('#addmacrobtn').click(function() {
- $(this).attr('disabled', 'disabled');
- $('#macrolist').append('' + '<li id="addmacro" class="list-group-item">' + '<h4 class="list-group-item-heading">Add Macro</h4>' + '<p class="list-group-item-text">' + '<div class="form-group">' + '<label for="macro" class="control-label">Command</label>' + '<input type="text" class="macro form-control input-sm">' + '</div>' + '<div class="form-group">' + '<label for="key" class="control-label">Key</label>' + '<input type="text" class="key form-control input-sm" id="key">' + '</div>' + '<div style="margin-bottom: 25px;" class="form-group">' + '<p class="macroerror"></p>' + '<button id="add" class="btn btn-success btn-sm">Add</button>' + '</div>' + '</p>' + '</li>');
- $('#macrolist').scrollTop($('#macrolist').scrollTop() + $('#addmacro').position().top);
- });
- $('#macrolist').on('click', '#add', function() {
- $('#addmacrobtn').attr('disabled', 'disabled');
- var macro = $('#addmacro').find('.macro').val();
- var key = $('#addmacro').find('.key').val();
- var dupes = $.grep(macros, function(e) {
- return e.keypress == key;
- });
- if (dupes.length > 0) {
- $('#addmacro').find('.macroerror').html('<small>A macro that uses that key already exists.</small>');
- $('#addmacrobtn').removeAttr('disabled');
- } else {
- if (key.length > 1) {
- $('#addmacro').find('.macroerror').html('<small>Please use a single key.</small>');
- $('#addmacrobtn').removeAttr('disabled');
- } else {
- if (ws.OPEN) {
- ws.send('addmacro ' + JSON.stringify({
- macro: macro,
- key: key
- }));
- }
- $('#addmacro').remove();
- $('#addmacrobtn').removeAttr('disabled');
- }
- }
- });
- $('#macrolist').on('click', '.deletemacro', function() {
- $(this).attr('disabled', 'disabled');
- var id = $(this).closest('.amacro').attr('id');
- if (ws.OPEN) {
- ws.send('deletemacro ' + JSON.stringify({
- id: id
- }));
- }
- });
- $('#macrolist').on('click', '.editmacro', function() {
- var id = $(this).closest('.amacro').attr('id');
- var macro = $.grep(macros, function(e) {
- return e.id == id;
- })[0];
- var id = $(this).closest('.amacro').replaceWith('' + '<li id="' + id + '" class="list-group-item macroedit">' + '<h4 class="list-group-item-heading">Edit Macro</h4>' + '<p class="list-group-item-text">' + '<div class="form-group">' + '<label for="macro" class="control-label">Command</label>' + '<input type="text" class="macro form-control input-sm" value="' + macro.macro + '">' + '</div>' + '<div class="form-group">' + '<label for="key" class="control-label">Key</label>' + '<input type="text" class="key form-control input-sm" id="key" value="' + macro.keypress + '">' + '</div>' + '<div style="margin-bottom: 25px;" class="form-group">' + '<p class="macroerror"></p>' + '<button class="btn btn-success btn-sm savemacroedit">Save</button>' + '</div>' + '</p>' + '</li>');
- });
- $('#macrolist').on('click', '.savemacroedit', function() {
- $(this).attr('disabled', 'disabled');
- $macroedit = $(this).closest('.macroedit');
- var id = $macroedit.attr('id');
- var macro = $macroedit.find('.macro').val();
- var key = $macroedit.find('.key').val();
- var dupes = $.grep(macros, function(e) {
- return e.keypress == key;
- });
- if (dupes.length > 0 && dupes[0].id != id) {
- $macroedit.find('.macroerror').html('<small>A macro that uses that key already exists.</small>');
- $(this).attr('disabled', false);
- } else {
- if (key.length > 1) {
- $macroedit.find('.macroerror').html('<small>Please use a single key.</small>');
- $(this).attr('disabled', false);
- } else {
- if (ws.OPEN) {
- ws.send('editmacro ' + JSON.stringify({
- id: id,
- macro: macro,
- key: key
- }));
- }
- }
- }
- });
- $('#busstops').on('click', '.busdestination', function() {
- var room_id = $(this).attr('id');
- if (ws.OPEN) {
- ws.send('bus ' + JSON.stringify({
- room_id: room_id
- }));
- $('#bus').fadeOut();
- }
- });
- $('#statstarget').click(function() {
- target = undefined;
- $(this).fadeOut();
- if (ws.OPEN) {
- ws.send('cleartarget');
- }
- });
- $('#toggle').click(function() {
- toggleChat();
- });
- $('#head').click(function() {
- if (toggle) {
- toggleChat();
- }
- if ($('#macro').is(':visible')) {
- $('#macro').fadeOut();
- } else {
- $('#macro').fadeIn();
- }
- });
- $('#togglemacro').click(function() {
- if (toggle) {
- toggleChat();
- }
- if ($('#macro').is(':visible')) {
- $('#macro').fadeOut();
- } else {
- $('#macro').fadeIn();
- }
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement