Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void decode(Player player) {
- if (player == null) {
- return;
- }
- long sessionKey = new SecureRandom().nextLong();
- int serverResponse = 2;
- switch (player.loginStage) {
- case Codec.LOGIN_START:
- if (fillStream(player, 2)) {
- int connectionType = player.stream.readUnsignedByte();
- switch (connectionType) {
- case 15:
- player.loginStage = Codec.SEND_UPDATE_SERVER;
- break;
- case 14:
- case 16:
- case 18:
- player.stream.writeByte(0);
- player.stream.writeQWord(sessionKey);
- directFlushStream(player);
- player.loginStage = Codec.READ_FROM_CLIENT;
- break;
- }
- }
- break;
- case Codec.SEND_UPDATE_SERVER:
- if (fillStream(player, 3)) {
- player.stream.readUnsignedByte();
- int clientVersion = player.stream.readUnsignedWord();
- if (clientVersion == Codec.CLIENT_VERSION) {
- player.stream.writeByte(0);
- player.loginStage = Codec.SEND_CRCS;
- } else {
- player.stream.writeByte(6);
- player.loginStage = Codec.QUIT_LOGIN;
- }
- directFlushStream(player);
- }
- break;
- case Codec.SEND_CRCS:
- if (fillStream(player, 8)) {
- for (int i : Misc.uKeys) {
- player.stream.writeByte(i);
- }
- directFlushStream(player);
- player.loginStage = Codec.QUIT_LOGIN;
- }
- break;
- case Codec.READ_FROM_CLIENT:
- int loginPacketSize = -1;
- if (fillStream(player, 3)) {
- loginPacketSize = player.stream.readUnsignedWord();
- } else {
- return;
- }
- if (fillStream(player, loginPacketSize)) {
- int clientVersion = player.stream.readDWord();
- if (clientVersion == Codec.CLIENT_VERSION) {
- player.stream.readUnsignedByte();
- boolean isHd = player.stream.readUnsignedByte() == 1 ? true : false;
- boolean isResizable = player.stream.readUnsignedByte() == 1 ? true : false;
- int width = player.stream.readUnsignedWord();
- int height = player.stream.readUnsignedWord();
- System.out.println("Hd Client: " + isHd + " Resizable " + isResizable + " Client width " + width
- + " Client height " + height);
- for (int i = 0; i < 24; i ++) {
- player.stream.readUnsignedByte();
- }
- player.stream.readString();
- for (int i = 0; i < 29; i ++) {
- player.stream.readDWord();
- }
- int rsaOpcode = player.stream.readUnsignedByte();
- if (rsaOpcode != 10) {
- int encryptPacketSize = player.stream.readUnsignedByte();
- if (encryptPacketSize != 10) {
- System.out.println("Invalid packet size");
- player.loginStage = Codec.QUIT_LOGIN;
- }
- }
- player.stream.readQWord();
- player.stream.readQWord();
- username = Misc.longToString(player.stream.readQWord()).toLowerCase().replaceAll("_", " ").trim();
- password = player.stream.readString();
- player.username = this.username;
- player.password = this.password;
- player.loginStage = Codec.SEND_INGAME;
- }
- }
- break;
- case Codec.SEND_INGAME:
- player.stream.writeByte(serverResponse);
- if (serverResponse == 2) {
- player.stream.writeByte(player.rights);
- for (int i = 0; i < 4; i ++) {
- player.stream.writeByte(0);
- }
- player.stream.writeQWord(player.playerId);
- player.stream.writeByte(0);
- }
- if (serverResponse == 2) {
- Engine.fileManager.loadCharacter(player);
- if (this.password.equals(player.password)) {
- serverResponse = 3;
- }
- if (player.teleportToX == -1 && player.teleportToY == -1) {
- player.setCoords(3243, 3518, 0);
- }
- Engine.playerMovement.getNextPlayerMovement(player);
- player.frames.setMapRegion(player);
- player.frames.setWindowPane(player, 548);
- player.frames.setInterfaces(player);
- for (int i = 0; i < player.skillLvl.length; i++) {
- player.frames.setSkillLvl(player, i);
- }
- player.frames.setItems(player, 149, 0, 93, player.items, player.itemsN);
- player.frames.setItems(player, 387, 28, 93, player.equipment, player.equipmentN);
- player.frames.setPlayerOption(player, "Attack", 1);
- player.frames.setPlayerOption(player, "Trade", 2);
- player.frames.setPlayerOption(player, "Follow", 3);
- player.frames.setConfig(player, 173, 0);
- player.frames.setConfig(player, 313, -1);
- player.frames.setConfig(player, 465, -1);
- player.frames.setConfig(player, 802, -1);
- player.frames.setConfig(player, 1085, 249852);
- player.playerWeapon.setWeapon();
- player.calculateEquipmentBonus();
- player.online = true;
- player.appearanceUpdateReq = true;
- player.updateReq = true;
- player.runEnergyUpdateReq = true;
- }
- break;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement