Guest User

Untitled

a guest
Apr 22nd, 2017
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class com.clubpenguin.net.Airtower
  2. {
  3. var shell, LOGIN_IP, LOGIN_PORT_EVEN, LOGIN_PORT_ODD, on_login_response, on_world_response;
  4. function Airtower (shell, loginServer) {
  5. this.shell = shell;
  6. LOGIN_IP = loginServer.ip[shell.randBetween(0, loginServer.ip.length - 1)];
  7. LOGIN_PORT_EVEN = loginServer.even_port;
  8. LOGIN_PORT_ODD = loginServer.odd_port;
  9. server = new com.clubpenguin.net.Connection();
  10. }
  11. function addListener(type, func, scope) {
  12. if ((type == undefined) || (func == undefined)) {
  13. shell.$e((("addListner() -> You must pass a valid listener type and function! type: " + type) + " func: ") + func);
  14. return(false);
  15. }
  16. var _local3 = getListenersArray(type);
  17. var _local4 = getListenerIndex(_local3, func);
  18. if (_local4 == -1) {
  19. shell.$d(("[airtower] Successfully added listener to: \"" + type) + "\"");
  20. _local3.push({func:func, scope:scope});
  21. return(true);
  22. }
  23. shell.$d(("[airtower] Failed to add listener. Tried to add a duplicate listener to: \"" + type) + "\"");
  24. return(false);
  25. }
  26. function removeListener(type, func) {
  27. var _local2 = getListenersArray(type);
  28. var _local3 = getListenerIndex(_local2, func);
  29. if (_local3 != -1) {
  30. shell.$d(("[airtower] Successfully removed listener from: \"" + type) + "\"");
  31. _local2.splice(_local3, 1);
  32. return(true);
  33. }
  34. shell.$d(("[airtower] Failed to remove listener which did not exist from: \"" + type) + "\"");
  35. return(false);
  36. }
  37. function getListenerIndex(array, func) {
  38. var _local2 = array.length;
  39. var _local1 = 0;
  40. while (_local1 < _local2) {
  41. if (array[_local1].func == func) {
  42. return(_local1);
  43. }
  44. _local1++;
  45. }
  46. return(-1);
  47. }
  48. function updateListeners(type, obj) {
  49. var _local3 = getListenersArray(type);
  50. var _local5 = _local3.length;
  51. if (_local5 < 1) {
  52. shell.$d(("[airtower] No listeners currently attached to: \"" + type) + "\"");
  53. return(false);
  54. }
  55. if (_local5 == 1) {
  56. (_local3[0].scope ? (_local3[0].func.call(_local3[0].scope, obj)) : (_local3[0].func(obj)));
  57. return(true);
  58. }
  59. var _local2 = 0;
  60. while (_local2 < _local5) {
  61. (_local3[_local2].scope ? (_local3[_local2].func.call(_local3[_local2].scope, obj)) : (_local3[_local2].func(obj)));
  62. _local2++;
  63. }
  64. return(true);
  65. }
  66. function getListenersArray(type) {
  67. if (sf_listener_container[type] == undefined) {
  68. sf_listener_container[type] = new Array();
  69. }
  70. return(sf_listener_container[type]);
  71. }
  72. function onAirtowerResponse(eventData, type) {
  73. var _local2 = eventData.shift();
  74. updateListeners(_local2, eventData);
  75. }
  76. function setConnection(connection) {
  77. server = connection || (server);
  78. }
  79. function connectToLogin(in_username, in_pass, login_response) {
  80. if (!is_logged_in) {
  81. on_login_response = login_response;
  82. username = in_username;
  83. password = in_pass;
  84. server.onConnection = com.clubpenguin.util.Delegate.create(this, handleLoginConnection);
  85. server.onRandomKey = com.clubpenguin.util.Delegate.create(this, handleLoginRandomKey);
  86. server.onExtensionResponse = com.clubpenguin.util.Delegate.create(this, onAirtowerResponse);
  87. server.debug = true;
  88. addListener(HANDLE_LOGIN, handleOnLogin, this);
  89. var _local2 = getLoginServerPort(in_username);
  90. server.connect(LOGIN_IP, _local2);
  91. } else {
  92. shell.$e("connectToLogin() -> Your already logged in! Cant login again");
  93. }
  94. }
  95. function getLoginServerPort(nickname) {
  96. var _local2 = nickname.charCodeAt(0);
  97. if ((_local2 % 2) == 0) {
  98. return(LOGIN_PORT_EVEN);
  99. }
  100. return(LOGIN_PORT_ODD);
  101. }
  102. function handleLostConnection() {
  103. updateListeners(CONNECTION_LOST, null);
  104. }
  105. function handleLoginConnection(success) {
  106. if (success) {
  107. server.getRandomKey();
  108. } else {
  109. server.disconnect();
  110. on_login_response(false);
  111. }
  112. }
  113. function handleLoginRandomKey(key) {
  114. rand_key = key;
  115. login();
  116. }
  117. function login() {
  118. server.login(LOGIN_ZONE, username, getLoginHash());
  119. }
  120. function handleOnLogin(obj) {
  121. removeListener(HANDLE_LOGIN, handleOnLogin);
  122. server.disconnect();
  123. shell.setMyPlayerId(obj[1]);
  124. playerId = obj[1];
  125. shell.updateWorldPopulations(obj[4]);
  126. shell.setWorldsWithBuddies(obj[3]);
  127. login_key = obj[2];
  128. on_login_response(true);
  129. is_logged_in = true;
  130. }
  131. function connectToRedemption(server_ip, server_port, connect_to_world_response) {
  132. isRedemption = true;
  133. on_world_response = connect_to_world_response;
  134. server.onConnection = com.clubpenguin.util.Delegate.create(this, handleWorldConnection);
  135. server.onRandomKey = com.clubpenguin.util.Delegate.create(this, handleWorldRandomKey);
  136. addListener(HANDLE_LOGIN, joinWorld, this);
  137. server.connect(server_ip, server_port);
  138. }
  139. function connectToWorld(server_ip, server_port, connect_to_world_response) {
  140. isRedemption = false;
  141. on_world_response = connect_to_world_response;
  142. server.onConnection = com.clubpenguin.util.Delegate.create(this, handleWorldConnection);
  143. server.onRandomKey = com.clubpenguin.util.Delegate.create(this, handleWorldRandomKey);
  144. addListener(HANDLE_LOGIN, joinWorld, this);
  145. server.connect(server_ip, server_port);
  146. }
  147. function handleWorldConnection(success) {
  148. if (success) {
  149. server.getRandomKey();
  150. } else {
  151. server.onConnection = null;
  152. server.onConnectionLost = null;
  153. server.onRandomKey = null;
  154. server.onExtensionResponse = null;
  155. on_world_response(false, false, false, false, false);
  156. on_world_response = null;
  157. }
  158. }
  159. function handleWorldRandomKey(key) {
  160. rand_key = key;
  161. worldLogin();
  162. }
  163. function worldLogin() {
  164. var _local2 = encryptPassword(login_key + rand_key) + login_key;
  165. server.login(SERVER_ZONE, username, _local2);
  166. }
  167. function joinWorld() {
  168. removeListener(HANDLE_LOGIN, joinWorld);
  169. server.onConnectionLost = com.clubpenguin.util.Delegate.create(this, handleLostConnection);
  170. var _local2 = new Array();
  171. _local2.push(playerId);
  172. _local2.push(login_key);
  173. _local2.push(shell.getLanguageAbbriviation());
  174. var _local3 = com.clubpenguin.util.QueryParams.getQueryParams();
  175. if (Number(_local3.rm)) {
  176. _local2.push(Number(_local3.rm));
  177. }
  178. if (isRedemption) {
  179. addListener(REDEMPTION_JOIN_WORLD, handleJoinRedemption, this);
  180. send(REDEMPTION, REDEMPTION_JOIN_WORLD, _local2, "str", -1);
  181. return(undefined);
  182. }
  183. addListener(JOIN_WORLD, handleJoinWorld, this);
  184. send(PLAY_EXT, (NAVIGATION + "#") + JOIN_WORLD, _local2, "str", -1);
  185. }
  186. function handleJoinRedemption(obj) {
  187. removeListener(REDEMPTION_JOIN_WORLD, handleJoinRedemption);
  188. var _local4 = new Array();
  189. var _local5 = new Array();
  190. var _local6 = false;
  191. var _local7 = obj.shift();
  192. if (obj[0] != "") {
  193. _local4 = obj[0];
  194. }
  195. if (obj[1] != "") {
  196. _local5 = obj[1];
  197. }
  198. if (obj[2] != "") {
  199. _local6 = Boolean(Number(obj[2]));
  200. }
  201. var _local3 = new Array();
  202. _local3[0] = _local4;
  203. _local3[1] = _local5;
  204. _local3[2] = _local6;
  205. on_world_response(_local3);
  206. on_world_response = undefined;
  207. }
  208. function handleJoinWorld(obj) {
  209. removeListener(JOIN_WORLD, handleJoinWorld);
  210. var _local6 = Boolean(Number(obj[1]));
  211. var _local3 = Boolean(Number(obj[2]));
  212. var _local5 = Boolean(Number(obj[3]));
  213. var _local4 = Boolean(Number(obj[4]));
  214. on_world_response(true, _local6, _local3, _local5, _local4);
  215. on_world_response = undefined;
  216. }
  217. function send(extension, command, arr, type, room_id) {
  218. server.sendXtMessage(extension, command, arr, type, room_id);
  219. }
  220. function disconnect() {
  221. if (server.connected()) {
  222. server.disconnect();
  223. } else {
  224. shell.$d("[airtower] disconnect() -> Trying to disconnect the server when its not connected");
  225. }
  226. }
  227. function getLoginHash() {
  228. var _local2 = encryptPassword(password).toUpperCase();
  229. _local2 = _local2 + password;
  230. _local2 = encryptPassword((_local2 + rand_key) + encryptPassword(_local2 + encryptPassword((password = password + _local2))));
  231. return(_local2);
  232. }
  233. function hex_md5(s) {
  234. return(com.clubpenguin.crypto.MD5.hash(s));
  235. }
  236. function encryptPassword(pass) {
  237. var _local1 = com.clubpenguin.crypto.MD5.hash(pass);
  238. _local1 = (_local1.substr(16, 16) + "") + _local1.substr(0, 16);
  239. return(_local1);
  240. }
  241. static var linkageId = "__Packages.com.clubpenguin.net.Airtower";
  242. static var serializable = Object.registerClass(linkageId, com.clubpenguin.net.Airtower);
  243. var STRING_TYPE = "str";
  244. var XML_TYPE = "xml";
  245. var PLAY_EXT = "s";
  246. var GAME_EXT = "z";
  247. var NAVIGATION = "j";
  248. var PLAYER_HANDLER = "u";
  249. var ITEM_HANDLER = "i";
  250. var IGNORE_HANDLER = "n";
  251. var BUDDY_HANDLER = "b";
  252. var TOY_HANDLER = "t";
  253. var TABLE_HANDLER = "a";
  254. var IGLOO_HANDLER = "g";
  255. var PET_HANDLER = "p";
  256. var MESSAGE_HANDLER = "m";
  257. var MAIL_HANDLER = "l";
  258. var SURVEY_HANDLER = "e";
  259. var WADDLE = "w";
  260. var SETTING_HANDLER = "s";
  261. var MODERATION_HANDLER = "o";
  262. var NINJA_HANDLER = "ni";
  263. var ROOM_HANDLER = "r";
  264. var REDEMPTION = "red";
  265. var REDEMPTION_JOIN_WORLD = "rjs";
  266. var HANDLE_LOGIN = "l";
  267. var HANDLE_ALERT = "a";
  268. var HANDLE_ERROR = "e";
  269. var GET_BUDDY_LIST = "gb";
  270. var GET_IGNORE_LIST = "gn";
  271. var GET_PLAYER = "gp";
  272. var GET_ROOM_LIST = "gr";
  273. var GET_TABLE = "gt";
  274. var JOIN_WORLD = "js";
  275. var JOIN_ROOM = "jr";
  276. var REFRESH_ROOM = "grs";
  277. var LOAD_PLAYER = "lp";
  278. var ADD_PLAYER = "ap";
  279. var REMOVE_PLAYER = "rp";
  280. var UPDATE_PLAYER = "up";
  281. var PLAYER_MOVE = "sp";
  282. var PLAYER_FRAME = "sf";
  283. var PLAYER_ACTION = "sa";
  284. var OPEN_BOOK = "at";
  285. var CLOSE_BOOK = "rt";
  286. var THROW_BALL = "sb";
  287. var JOIN_GAME = "jg";
  288. var SEND_MESSAGE = "sm";
  289. var SEND_BLOCKED_MESSAGE = "mm";
  290. var SEND_EMOTE = "se";
  291. var SEND_JOKE = "sj";
  292. var SEND_SAFE_MESSAGE = "ss";
  293. var SEND_LINE_MESSAGE = "sl";
  294. var SEND_QUICK_MESSAGE = "sq";
  295. var SEND_TOUR_GUIDE_MESSAGE = "sg";
  296. var COIN_DIG_UPDATE = "cdu";
  297. var GET_INVENTORY_LIST = "gi";
  298. var MAIL_START_ENGINE = "mst";
  299. var GET_MAIL = "mg";
  300. var SEND_MAIL = "ms";
  301. var RECEIVE_MAIL = "mr";
  302. var DELETE_MAIL = "md";
  303. var DELETE_MAIL_FROM_PLAYER = "mdp";
  304. var GET_MAIL_DETAILS = "mgd";
  305. var MAIL_CHECKED = "mc";
  306. var GAME_OVER = "zo";
  307. var BUY_INVENTORY = "ai";
  308. var CHECK_INVENTORY = "qi";
  309. var ADD_IGNORE = "an";
  310. var REMOVE_IGNORE = "rn";
  311. var REMOVE_BUDDY = "rb";
  312. var REQUEST_BUDDY = "br";
  313. var ACCEPT_BUDDY = "ba";
  314. var BUDDY_ONLINE = "bon";
  315. var BUDDY_OFFLINE = "bof";
  316. var FIND_BUDDY = "bf";
  317. var GET_PLAYER_OBJECT = "gp";
  318. var REPORT_PLAYER = "r";
  319. var UPDATE_PLAYER_COLOUR = "upc";
  320. var UPDATE_PLAYER_HEAD = "uph";
  321. var UPDATE_PLAYER_FACE = "upf";
  322. var UPDATE_PLAYER_NECK = "upn";
  323. var UPDATE_PLAYER_BODY = "upb";
  324. var UPDATE_PLAYER_HAND = "upa";
  325. var UPDATE_PLAYER_FEET = "upe";
  326. var UPDATE_PLAYER_FLAG = "upl";
  327. var UPDATE_PLAYER_PHOTO = "upp";
  328. var UPDATE_PLAYER_REMOVE = "upr";
  329. var GET_FURNITURE_LIST = "gf";
  330. var UPDATE_ROOM = "up";
  331. var UPDATE_FLOOR = "ag";
  332. var UPDATE_IGLOO_TYPE = "au";
  333. var UNLOCK_IGLOO = "or";
  334. var LOCK_IGLOO = "cr";
  335. var UPDATE_IGLOO_MUSIC = "um";
  336. var GET_IGLOO_DETAILS = "gm";
  337. var JOIN_PLAYER_IGLOO = "jp";
  338. var SAVE_IGLOO_FURNITURE = "ur";
  339. var GET_IGLOO_LIST = "gr";
  340. var BUY_FURNITURE = "af";
  341. var SEND_IGLOO = "sig";
  342. var GET_OWNED_IGLOOS = "go";
  343. var ACTIVATE_IGLOO = "ao";
  344. var GET_MY_PLAYER_PUFFLES = "pgu";
  345. var GET_PLAYER_PUFFLES = "pg";
  346. var PUFFLE_FRAME = "ps";
  347. var PUFFLE_MOVE = "pm";
  348. var REST_PUFFLE = "pr";
  349. var BATH_PUFFLE = "pb";
  350. var PLAY_PUFFLE = "pp";
  351. var FEED_PUFFLE = "pf";
  352. var WALK_PUFFLE = "pw";
  353. var TREAT_PUFFLE = "pt";
  354. var INTERACTION_PLAY = "ip";
  355. var INTERACTION_REST = "ir";
  356. var INTERACTION_FEED = "if";
  357. var PUFFLE_INIT_INTERACTION_PLAY = "pip";
  358. var PUFFLE_INIT_INTERACTION_REST = "pir";
  359. var ADOPT_PUFFLE = "pn";
  360. var UPDATE_TABLE = "ut";
  361. var GET_TABLE_POPULATION = "gt";
  362. var JOIN_TABLE = "jt";
  363. var LEAVE_TABLE = "lt";
  364. var UPDATE_WADDLE = "uw";
  365. var GET_WADDLE_POPULATION = "gw";
  366. var JOIN_WADDLE = "jw";
  367. var LEAVE_WADDLE = "lw";
  368. var START_WADDLE = "sw";
  369. var SEND_WADDLE = "jx";
  370. var SPY_PHONE_REQUEST = "spy";
  371. var HEARTBEAT = "h";
  372. var TIMEOUT = "t";
  373. var MODERATOR_ACTION = "ma";
  374. var KICK = "k";
  375. var MUTE = "m";
  376. var BAN = "b";
  377. var SEND_MASCOT_MESSAGE = "sma";
  378. var DONATE = "dc";
  379. var POLL = "spl";
  380. var CONNECTION_LOST = "con";
  381. var GET_CARDS = "gcd";
  382. var GET_NINJA_LEVEL = "gnl";
  383. var GET_FIRE_LEVEL = "gfl";
  384. var GET_WATER_LEVEL = "gwl";
  385. var GET_NINJA_RANKS = "gnr";
  386. var GET_LAST_REVISION = "glr";
  387. static var LOGIN_ZONE = "w1";
  388. static var SERVER_ZONE = "w1";
  389. var server_ip = "";
  390. var server_port = 0;
  391. var username = "";
  392. var password = "";
  393. var playerId = -1;
  394. var rand_key = "";
  395. var login_key = "";
  396. var is_logged_in = false;
  397. var server = null;
  398. var sf_listener_container = new Object();
  399. var isRedemption = false;
  400. }
Add Comment
Please, Sign In to add comment