Advertisement
Guest User

Untitled

a guest
Jul 8th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.65 KB | None | 0 0
  1. else if (p.loginStage == 1) {
  2. try {
  3. if (!fillStream(p, 3))
  4. return;
  5. } catch (Exception e) {
  6. return;
  7. }
  8. int loginType = p.stream.readUnsignedByte();
  9. if (loginType != 16 && loginType != 18 && loginType != 14) {
  10. p.loginStage = -1;
  11. return;
  12. }
  13. p.loginStage++;
  14. } else if (p.loginStage == 2) {
  15. int loginPacketSize = p.stream.readUnsignedWord();
  16. int loginEncryptPacketSize = loginPacketSize - (36 + 1 + 1 + 2);
  17. if (loginEncryptPacketSize <= 0) {
  18. p.loginStage = -1;
  19. return;
  20. }
  21. try {
  22. if (!fillStream(p, loginPacketSize))
  23. return;
  24. } catch (Exception e) {
  25. return;
  26. }
  27. int clientVersion = p.stream.readDWord();
  28. if (clientVersion != 508) {
  29. p.loginStage = -1;
  30. return;
  31. }
  32. p.stream.readUnsignedByte();
  33. p.stream.readUnsignedWord();
  34. p.stream.readUnsignedWord();
  35. for (int i = 0; i < 24; i++) {
  36. int cacheIDX = p.stream.readUnsignedByte();
  37. if(cacheIDX == 0) {
  38. p.loginStage = -1;
  39. return;
  40. }
  41. }
  42. String junk = p.stream.readString();
  43. for (int i = 0; i < 29; i++) {
  44. int junk2 = p.stream.readDWord();
  45. }
  46. loginEncryptPacketSize--;
  47. int junk29 = p.stream.readUnsignedByte();
  48. int encryption = junk29;
  49. if(!(encryption == 10 || encryption == 64)) {
  50. encryption = p.stream.readUnsignedByte();
  51. }
  52. if (encryption != 10 && encryption != 64) {
  53. p.loginStage = -1;
  54. return;
  55. }
  56.  
  57. clientSessionKey = p.stream.readQWord();
  58. serverSessionKey = p.stream.readQWord();
  59. String user = Misc.longToString(p.stream.readQWord()).toLowerCase();
  60. user = user.replaceAll("_", " ");
  61. user = user.replaceAll("<", "");
  62. user = user.replaceAll(">", "");
  63. p.username = user.trim();
  64. if (p.username == null) {
  65. p.loginStage = -1;
  66. p.username = "";
  67. return;
  68. }
  69. for (int i = 0; i < p.username.length(); i++) {
  70. Character c = new Character(p.username.charAt(i));
  71. if (!Character.isLetterOrDigit(c) && !Character.isSpaceChar(c)) {
  72. p.loginStage = -1;
  73. p.username = "";
  74. return;
  75. }
  76. }
  77. if (playerOnline(p.username, p)) {
  78. returnCode = 5;
  79. }
  80. Server.loadBannedUsers();
  81. if (checkBannedUsers(p.username)) {
  82. returnCode = 4;
  83. }
  84. String password = p.stream.readString();
  85. if (password == null) {
  86. p.loginStage = -1;
  87. return;
  88. }
  89. for (int i = 0; i < password.length(); i++) {
  90. Character c = new Character(password.charAt(i));
  91. if (!Character.isLetterOrDigit(c) && !Character.isSpaceChar(c)) {
  92. p.loginStage = -1;
  93. return;
  94. }
  95. }
  96. FloodDetect.checkClient(p);
  97. Engine.fileManager.loadCharacter(p);
  98. Engine.fileManager.loadFList(p);
  99. if (password != null && p.password != null && p.password != "" && !p.password.equals(password)) {
  100. returnCode = 3;
  101. } else {
  102. p.password = password;
  103. }
  104. FloodDetect.checkClient(p);
  105. p.stream.writeByte(returnCode);
  106. p.stream.writeByte(p.rights);
  107. p.stream.writeByte(0);
  108. p.stream.writeByte(0);
  109. p.stream.writeByte(0);
  110. p.stream.writeByte(1);
  111. p.stream.writeByte(0);
  112. p.stream.writeByte(p.playerId);
  113. p.stream.writeByte(0);
  114. directFlushStream(p);
  115. if (p.teleportToX == -1 && p.teleportToY == -1)
  116. p.setCoords(3087, 3491, 0);
  117. Engine.playerMovement.getNextPlayerMovement(p);
  118. if (p.inJadCave()) {
  119. if (p.heightLevel > 0)
  120. p.heightLevel = 0;
  121. }
  122. p.getActionSender().setMapRegion(p);
  123. if (p.inJadCave())
  124. p.setCoords(3087, 3491, 0);
  125. p.getActionSender().setWindowPane(p, 548);
  126. if (p.clanWarsFightArea())
  127. p.setCoords(3267 + Misc.random(2), 3684 + Misc.random(2), 0);
  128. if(p.godWarsDung())
  129. p.setCoords(3087, 3491, 0);
  130. if(p.bountyArea())
  131. p.setCoords(3165, 3680, 4);
  132. directFlushStream(p);
  133. if(p.bountySafe())
  134. p.heightLevel = 4;
  135. directFlushStream(p);
  136. if (returnCode != 2) {
  137. Engine.fileManager.appendData("characters/ips/" + p.username + ".txt", "[" + Server.socketListener.getAddress(p.socket.socket) + "]: failed login.");
  138. return;
  139. }
  140. Server.engine.fileManager.appendData("characters/ips/" + p.username + ".txt", "[" + Server.socketListener.getAddress(p.socket.socket) + "]: successful login.");
  141. p.getActionSender().setInterfaces(p);
  142. for (int i = 0; i < p.skillLvl.length; i++) {
  143. p.getActionSender().setSkillLvl(p, i);
  144. }
  145.  
  146. p.thievingArray[0] = p.thievingArray[1] = -1;
  147. p.getWorldLoader().addPlayerFeatures();
  148. /*if (p.wildernessZone(p.absX, p.absY)) {
  149. p.getActionSender().setString(p, "Level: " + p.getWildernessLevel(), 380, 1);
  150. p.getActionSender().setOverlay(p, 380);
  151. }*/
  152. p.runEnergyUpdateReq = true;
  153. FloodDetect.checkClient(p);
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement