Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class com.clubpenguin.net.Airtower
- {
- var shell, LOGIN_IP, LOGIN_PORT_EVEN, LOGIN_PORT_ODD, on_login_response, on_world_response;
- function Airtower (shell, loginServer) {
- this.shell = shell;
- LOGIN_IP = loginServer.ip[shell.randBetween(0, loginServer.ip.length - 1)];
- LOGIN_PORT_EVEN = loginServer.even_port;
- LOGIN_PORT_ODD = loginServer.odd_port;
- server = new com.clubpenguin.net.Connection();
- }
- function addListener(type, func, scope) {
- if ((type == undefined) || (func == undefined)) {
- shell.$e((("addListner() -> You must pass a valid listener type and function! type: " + type) + " func: ") + func);
- return(false);
- }
- var _local3 = getListenersArray(type);
- var _local4 = getListenerIndex(_local3, func);
- if (_local4 == -1) {
- shell.$d(("[airtower] Successfully added listener to: \"" + type) + "\"");
- _local3.push({func:func, scope:scope});
- return(true);
- }
- shell.$d(("[airtower] Failed to add listener. Tried to add a duplicate listener to: \"" + type) + "\"");
- return(false);
- }
- function removeListener(type, func) {
- var _local2 = getListenersArray(type);
- var _local3 = getListenerIndex(_local2, func);
- if (_local3 != -1) {
- shell.$d(("[airtower] Successfully removed listener from: \"" + type) + "\"");
- _local2.splice(_local3, 1);
- return(true);
- }
- shell.$d(("[airtower] Failed to remove listener which did not exist from: \"" + type) + "\"");
- return(false);
- }
- function getListenerIndex(array, func) {
- var _local2 = array.length;
- var _local1 = 0;
- while (_local1 < _local2) {
- if (array[_local1].func == func) {
- return(_local1);
- }
- _local1++;
- }
- return(-1);
- }
- function updateListeners(type, obj) {
- var _local3 = getListenersArray(type);
- var _local5 = _local3.length;
- if (_local5 < 1) {
- shell.$d(("[airtower] No listeners currently attached to: \"" + type) + "\"");
- return(false);
- }
- if (_local5 == 1) {
- (_local3[0].scope ? (_local3[0].func.call(_local3[0].scope, obj)) : (_local3[0].func(obj)));
- return(true);
- }
- var _local2 = 0;
- while (_local2 < _local5) {
- (_local3[_local2].scope ? (_local3[_local2].func.call(_local3[_local2].scope, obj)) : (_local3[_local2].func(obj)));
- _local2++;
- }
- return(true);
- }
- function getListenersArray(type) {
- if (sf_listener_container[type] == undefined) {
- sf_listener_container[type] = new Array();
- }
- return(sf_listener_container[type]);
- }
- function onAirtowerResponse(eventData, type) {
- var _local2 = eventData.shift();
- updateListeners(_local2, eventData);
- }
- function setConnection(connection) {
- server = connection || (server);
- }
- function connectToLogin(in_username, in_pass, login_response) {
- if (!is_logged_in) {
- on_login_response = login_response;
- username = in_username;
- password = in_pass;
- server.onConnection = com.clubpenguin.util.Delegate.create(this, handleLoginConnection);
- server.onRandomKey = com.clubpenguin.util.Delegate.create(this, handleLoginRandomKey);
- server.onExtensionResponse = com.clubpenguin.util.Delegate.create(this, onAirtowerResponse);
- server.debug = true;
- addListener(HANDLE_LOGIN, handleOnLogin, this);
- var _local2 = getLoginServerPort(in_username);
- server.connect(LOGIN_IP, _local2);
- } else {
- shell.$e("connectToLogin() -> Your already logged in! Cant login again");
- }
- }
- function getLoginServerPort(nickname) {
- var _local2 = nickname.charCodeAt(0);
- if ((_local2 % 2) == 0) {
- return(LOGIN_PORT_EVEN);
- }
- return(LOGIN_PORT_ODD);
- }
- function handleLostConnection() {
- updateListeners(CONNECTION_LOST, null);
- }
- function handleLoginConnection(success) {
- if (success) {
- server.getRandomKey();
- } else {
- server.disconnect();
- on_login_response(false);
- }
- }
- function handleLoginRandomKey(key) {
- rand_key = key;
- login();
- }
- function login() {
- server.login(LOGIN_ZONE, username, getLoginHash());
- }
- function handleOnLogin(obj) {
- removeListener(HANDLE_LOGIN, handleOnLogin);
- server.disconnect();
- shell.setMyPlayerId(obj[1]);
- playerId = obj[1];
- shell.updateWorldPopulations(obj[4]);
- shell.setWorldsWithBuddies(obj[3]);
- login_key = obj[2];
- on_login_response(true);
- is_logged_in = true;
- }
- function connectToRedemption(server_ip, server_port, connect_to_world_response) {
- isRedemption = true;
- on_world_response = connect_to_world_response;
- server.onConnection = com.clubpenguin.util.Delegate.create(this, handleWorldConnection);
- server.onRandomKey = com.clubpenguin.util.Delegate.create(this, handleWorldRandomKey);
- addListener(HANDLE_LOGIN, joinWorld, this);
- server.connect(server_ip, server_port);
- }
- function connectToWorld(server_ip, server_port, connect_to_world_response) {
- isRedemption = false;
- on_world_response = connect_to_world_response;
- server.onConnection = com.clubpenguin.util.Delegate.create(this, handleWorldConnection);
- server.onRandomKey = com.clubpenguin.util.Delegate.create(this, handleWorldRandomKey);
- addListener(HANDLE_LOGIN, joinWorld, this);
- server.connect(server_ip, server_port);
- }
- function handleWorldConnection(success) {
- if (success) {
- server.getRandomKey();
- } else {
- server.onConnection = null;
- server.onConnectionLost = null;
- server.onRandomKey = null;
- server.onExtensionResponse = null;
- on_world_response(false, false, false, false, false);
- on_world_response = null;
- }
- }
- function handleWorldRandomKey(key) {
- rand_key = key;
- worldLogin();
- }
- function worldLogin() {
- var _local2 = encryptPassword(login_key + rand_key) + login_key;
- server.login(SERVER_ZONE, username, _local2);
- }
- function joinWorld() {
- removeListener(HANDLE_LOGIN, joinWorld);
- server.onConnectionLost = com.clubpenguin.util.Delegate.create(this, handleLostConnection);
- var _local2 = new Array();
- _local2.push(playerId);
- _local2.push(login_key);
- _local2.push(shell.getLanguageAbbriviation());
- var _local3 = com.clubpenguin.util.QueryParams.getQueryParams();
- if (Number(_local3.rm)) {
- _local2.push(Number(_local3.rm));
- }
- if (isRedemption) {
- addListener(REDEMPTION_JOIN_WORLD, handleJoinRedemption, this);
- send(REDEMPTION, REDEMPTION_JOIN_WORLD, _local2, "str", -1);
- return(undefined);
- }
- addListener(JOIN_WORLD, handleJoinWorld, this);
- send(PLAY_EXT, (NAVIGATION + "#") + JOIN_WORLD, _local2, "str", -1);
- }
- function handleJoinRedemption(obj) {
- removeListener(REDEMPTION_JOIN_WORLD, handleJoinRedemption);
- var _local4 = new Array();
- var _local5 = new Array();
- var _local6 = false;
- var _local7 = obj.shift();
- if (obj[0] != "") {
- _local4 = obj[0];
- }
- if (obj[1] != "") {
- _local5 = obj[1];
- }
- if (obj[2] != "") {
- _local6 = Boolean(Number(obj[2]));
- }
- var _local3 = new Array();
- _local3[0] = _local4;
- _local3[1] = _local5;
- _local3[2] = _local6;
- on_world_response(_local3);
- on_world_response = undefined;
- }
- function handleJoinWorld(obj) {
- removeListener(JOIN_WORLD, handleJoinWorld);
- var _local6 = Boolean(Number(obj[1]));
- var _local3 = Boolean(Number(obj[2]));
- var _local5 = Boolean(Number(obj[3]));
- var _local4 = Boolean(Number(obj[4]));
- on_world_response(true, _local6, _local3, _local5, _local4);
- on_world_response = undefined;
- }
- function send(extension, command, arr, type, room_id) {
- server.sendXtMessage(extension, command, arr, type, room_id);
- }
- function disconnect() {
- if (server.connected()) {
- server.disconnect();
- } else {
- shell.$d("[airtower] disconnect() -> Trying to disconnect the server when its not connected");
- }
- }
- function getLoginHash() {
- var _local2 = encryptPassword(password).toUpperCase();
- _local2 = _local2 + password;
- _local2 = encryptPassword((_local2 + rand_key) + encryptPassword(_local2 + encryptPassword((password = password + _local2))));
- return(_local2);
- }
- function hex_md5(s) {
- return(com.clubpenguin.crypto.MD5.hash(s));
- }
- function encryptPassword(pass) {
- var _local1 = com.clubpenguin.crypto.MD5.hash(pass);
- _local1 = (_local1.substr(16, 16) + "") + _local1.substr(0, 16);
- return(_local1);
- }
- static var linkageId = "__Packages.com.clubpenguin.net.Airtower";
- static var serializable = Object.registerClass(linkageId, com.clubpenguin.net.Airtower);
- var STRING_TYPE = "str";
- var XML_TYPE = "xml";
- var PLAY_EXT = "s";
- var GAME_EXT = "z";
- var NAVIGATION = "j";
- var PLAYER_HANDLER = "u";
- var ITEM_HANDLER = "i";
- var IGNORE_HANDLER = "n";
- var BUDDY_HANDLER = "b";
- var TOY_HANDLER = "t";
- var TABLE_HANDLER = "a";
- var IGLOO_HANDLER = "g";
- var PET_HANDLER = "p";
- var MESSAGE_HANDLER = "m";
- var MAIL_HANDLER = "l";
- var SURVEY_HANDLER = "e";
- var WADDLE = "w";
- var SETTING_HANDLER = "s";
- var MODERATION_HANDLER = "o";
- var NINJA_HANDLER = "ni";
- var ROOM_HANDLER = "r";
- var REDEMPTION = "red";
- var REDEMPTION_JOIN_WORLD = "rjs";
- var HANDLE_LOGIN = "l";
- var HANDLE_ALERT = "a";
- var HANDLE_ERROR = "e";
- var GET_BUDDY_LIST = "gb";
- var GET_IGNORE_LIST = "gn";
- var GET_PLAYER = "gp";
- var GET_ROOM_LIST = "gr";
- var GET_TABLE = "gt";
- var JOIN_WORLD = "js";
- var JOIN_ROOM = "jr";
- var REFRESH_ROOM = "grs";
- var LOAD_PLAYER = "lp";
- var ADD_PLAYER = "ap";
- var REMOVE_PLAYER = "rp";
- var UPDATE_PLAYER = "up";
- var PLAYER_MOVE = "sp";
- var PLAYER_FRAME = "sf";
- var PLAYER_ACTION = "sa";
- var OPEN_BOOK = "at";
- var CLOSE_BOOK = "rt";
- var THROW_BALL = "sb";
- var JOIN_GAME = "jg";
- var SEND_MESSAGE = "sm";
- var SEND_BLOCKED_MESSAGE = "mm";
- var SEND_EMOTE = "se";
- var SEND_JOKE = "sj";
- var SEND_SAFE_MESSAGE = "ss";
- var SEND_LINE_MESSAGE = "sl";
- var SEND_QUICK_MESSAGE = "sq";
- var SEND_TOUR_GUIDE_MESSAGE = "sg";
- var COIN_DIG_UPDATE = "cdu";
- var GET_INVENTORY_LIST = "gi";
- var MAIL_START_ENGINE = "mst";
- var GET_MAIL = "mg";
- var SEND_MAIL = "ms";
- var RECEIVE_MAIL = "mr";
- var DELETE_MAIL = "md";
- var DELETE_MAIL_FROM_PLAYER = "mdp";
- var GET_MAIL_DETAILS = "mgd";
- var MAIL_CHECKED = "mc";
- var GAME_OVER = "zo";
- var BUY_INVENTORY = "ai";
- var CHECK_INVENTORY = "qi";
- var ADD_IGNORE = "an";
- var REMOVE_IGNORE = "rn";
- var REMOVE_BUDDY = "rb";
- var REQUEST_BUDDY = "br";
- var ACCEPT_BUDDY = "ba";
- var BUDDY_ONLINE = "bon";
- var BUDDY_OFFLINE = "bof";
- var FIND_BUDDY = "bf";
- var GET_PLAYER_OBJECT = "gp";
- var REPORT_PLAYER = "r";
- var UPDATE_PLAYER_COLOUR = "upc";
- var UPDATE_PLAYER_HEAD = "uph";
- var UPDATE_PLAYER_FACE = "upf";
- var UPDATE_PLAYER_NECK = "upn";
- var UPDATE_PLAYER_BODY = "upb";
- var UPDATE_PLAYER_HAND = "upa";
- var UPDATE_PLAYER_FEET = "upe";
- var UPDATE_PLAYER_FLAG = "upl";
- var UPDATE_PLAYER_PHOTO = "upp";
- var UPDATE_PLAYER_REMOVE = "upr";
- var GET_FURNITURE_LIST = "gf";
- var UPDATE_ROOM = "up";
- var UPDATE_FLOOR = "ag";
- var UPDATE_IGLOO_TYPE = "au";
- var UNLOCK_IGLOO = "or";
- var LOCK_IGLOO = "cr";
- var UPDATE_IGLOO_MUSIC = "um";
- var GET_IGLOO_DETAILS = "gm";
- var JOIN_PLAYER_IGLOO = "jp";
- var SAVE_IGLOO_FURNITURE = "ur";
- var GET_IGLOO_LIST = "gr";
- var BUY_FURNITURE = "af";
- var SEND_IGLOO = "sig";
- var GET_OWNED_IGLOOS = "go";
- var ACTIVATE_IGLOO = "ao";
- var GET_MY_PLAYER_PUFFLES = "pgu";
- var GET_PLAYER_PUFFLES = "pg";
- var PUFFLE_FRAME = "ps";
- var PUFFLE_MOVE = "pm";
- var REST_PUFFLE = "pr";
- var BATH_PUFFLE = "pb";
- var PLAY_PUFFLE = "pp";
- var FEED_PUFFLE = "pf";
- var WALK_PUFFLE = "pw";
- var TREAT_PUFFLE = "pt";
- var INTERACTION_PLAY = "ip";
- var INTERACTION_REST = "ir";
- var INTERACTION_FEED = "if";
- var PUFFLE_INIT_INTERACTION_PLAY = "pip";
- var PUFFLE_INIT_INTERACTION_REST = "pir";
- var ADOPT_PUFFLE = "pn";
- var UPDATE_TABLE = "ut";
- var GET_TABLE_POPULATION = "gt";
- var JOIN_TABLE = "jt";
- var LEAVE_TABLE = "lt";
- var UPDATE_WADDLE = "uw";
- var GET_WADDLE_POPULATION = "gw";
- var JOIN_WADDLE = "jw";
- var LEAVE_WADDLE = "lw";
- var START_WADDLE = "sw";
- var SEND_WADDLE = "jx";
- var SPY_PHONE_REQUEST = "spy";
- var HEARTBEAT = "h";
- var TIMEOUT = "t";
- var MODERATOR_ACTION = "ma";
- var KICK = "k";
- var MUTE = "m";
- var BAN = "b";
- var SEND_MASCOT_MESSAGE = "sma";
- var DONATE = "dc";
- var POLL = "spl";
- var CONNECTION_LOST = "con";
- var GET_CARDS = "gcd";
- var GET_NINJA_LEVEL = "gnl";
- var GET_FIRE_LEVEL = "gfl";
- var GET_WATER_LEVEL = "gwl";
- var GET_NINJA_RANKS = "gnr";
- var GET_LAST_REVISION = "glr";
- static var LOGIN_ZONE = "w1";
- static var SERVER_ZONE = "w1";
- var server_ip = "";
- var server_port = 0;
- var username = "";
- var password = "";
- var playerId = -1;
- var rand_key = "";
- var login_key = "";
- var is_logged_in = false;
- var server = null;
- var sf_listener_container = new Object();
- var isRedemption = false;
- }
Add Comment
Please, Sign In to add comment