Advertisement
Guest User

Untitled

a guest
Jun 10th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.55 KB | None | 0 0
  1. public void decode(Player player) {
  2. if (player == null) {
  3. return;
  4. }
  5. long sessionKey = new SecureRandom().nextLong();
  6. int serverResponse = 2;
  7. switch (player.loginStage) {
  8. case Codec.LOGIN_START:
  9. if (fillStream(player, 2)) {
  10. int connectionType = player.stream.readUnsignedByte();
  11. switch (connectionType) {
  12. case 15:
  13. player.loginStage = Codec.SEND_UPDATE_SERVER;
  14. break;
  15. case 14:
  16. case 16:
  17. case 18:
  18. player.stream.writeByte(0);
  19. player.stream.writeQWord(sessionKey);
  20. directFlushStream(player);
  21. player.loginStage = Codec.READ_FROM_CLIENT;
  22. break;
  23. }
  24. }
  25. break;
  26. case Codec.SEND_UPDATE_SERVER:
  27. if (fillStream(player, 3)) {
  28. player.stream.readUnsignedByte();
  29. int clientVersion = player.stream.readUnsignedWord();
  30. if (clientVersion == Codec.CLIENT_VERSION) {
  31. player.stream.writeByte(0);
  32. player.loginStage = Codec.SEND_CRCS;
  33. } else {
  34. player.stream.writeByte(6);
  35. player.loginStage = Codec.QUIT_LOGIN;
  36. }
  37. directFlushStream(player);
  38. }
  39. break;
  40. case Codec.SEND_CRCS:
  41. if (fillStream(player, 8)) {
  42. for (int i : Misc.uKeys) {
  43. player.stream.writeByte(i);
  44. }
  45. directFlushStream(player);
  46. player.loginStage = Codec.QUIT_LOGIN;
  47. }
  48. break;
  49. case Codec.READ_FROM_CLIENT:
  50. int loginPacketSize = -1;
  51. if (fillStream(player, 3)) {
  52. loginPacketSize = player.stream.readUnsignedWord();
  53. } else {
  54. return;
  55. }
  56. if (fillStream(player, loginPacketSize)) {
  57. int clientVersion = player.stream.readDWord();
  58. if (clientVersion == Codec.CLIENT_VERSION) {
  59. player.stream.readUnsignedByte();
  60. boolean isHd = player.stream.readUnsignedByte() == 1 ? true : false;
  61. boolean isResizable = player.stream.readUnsignedByte() == 1 ? true : false;
  62. int width = player.stream.readUnsignedWord();
  63. int height = player.stream.readUnsignedWord();
  64. System.out.println("Hd Client: " + isHd + " Resizable " + isResizable + " Client width " + width
  65. + " Client height " + height);
  66. for (int i = 0; i < 24; i ++) {
  67. player.stream.readUnsignedByte();
  68. }
  69. player.stream.readString();
  70. for (int i = 0; i < 29; i ++) {
  71. player.stream.readDWord();
  72. }
  73. int rsaOpcode = player.stream.readUnsignedByte();
  74. if (rsaOpcode != 10) {
  75. int encryptPacketSize = player.stream.readUnsignedByte();
  76. if (encryptPacketSize != 10) {
  77. System.out.println("Invalid packet size");
  78. player.loginStage = Codec.QUIT_LOGIN;
  79. }
  80. }
  81. player.stream.readQWord();
  82. player.stream.readQWord();
  83. username = Misc.longToString(player.stream.readQWord()).toLowerCase().replaceAll("_", " ").trim();
  84. password = player.stream.readString();
  85. player.username = this.username;
  86. player.password = this.password;
  87. player.loginStage = Codec.SEND_INGAME;
  88. }
  89. }
  90. break;
  91. case Codec.SEND_INGAME:
  92. player.stream.writeByte(serverResponse);
  93. if (serverResponse == 2) {
  94. player.stream.writeByte(player.rights);
  95. for (int i = 0; i < 4; i ++) {
  96. player.stream.writeByte(0);
  97. }
  98. player.stream.writeQWord(player.playerId);
  99. player.stream.writeByte(0);
  100. }
  101. if (serverResponse == 2) {
  102. Engine.fileManager.loadCharacter(player);
  103. if (this.password.equals(player.password)) {
  104. serverResponse = 3;
  105. }
  106. if (player.teleportToX == -1 && player.teleportToY == -1) {
  107. player.setCoords(3243, 3518, 0);
  108. }
  109. Engine.playerMovement.getNextPlayerMovement(player);
  110. player.frames.setMapRegion(player);
  111. player.frames.setWindowPane(player, 548);
  112. player.frames.setInterfaces(player);
  113. for (int i = 0; i < player.skillLvl.length; i++) {
  114. player.frames.setSkillLvl(player, i);
  115. }
  116. player.frames.setItems(player, 149, 0, 93, player.items, player.itemsN);
  117. player.frames.setItems(player, 387, 28, 93, player.equipment, player.equipmentN);
  118. player.frames.setPlayerOption(player, "Attack", 1);
  119. player.frames.setPlayerOption(player, "Trade", 2);
  120. player.frames.setPlayerOption(player, "Follow", 3);
  121. player.frames.setConfig(player, 173, 0);
  122. player.frames.setConfig(player, 313, -1);
  123. player.frames.setConfig(player, 465, -1);
  124. player.frames.setConfig(player, 802, -1);
  125. player.frames.setConfig(player, 1085, 249852);
  126. player.playerWeapon.setWeapon();
  127. player.calculateEquipmentBonus();
  128. player.online = true;
  129. player.appearanceUpdateReq = true;
  130. player.updateReq = true;
  131. player.runEnergyUpdateReq = true;
  132.  
  133. }
  134. break;
  135. }
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement