Advertisement
Guest User

Untitled

a guest
May 19th, 2017
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.94 KB | None | 0 0
  1. package org.rscdaemon.server.packethandler.client;
  2.  
  3. import org.rscdaemon.server.packethandler.PacketHandler;
  4. import org.rscdaemon.server.model.Player;
  5. import org.rscdaemon.server.model.World;
  6. import org.rscdaemon.server.net.Packet;
  7. import org.rscdaemon.server.net.RSCPacket;
  8. import org.rscdaemon.server.packetbuilder.RSCPacketBuilder;
  9. import org.rscdaemon.server.util.DataConversions;
  10. import org.rscdaemon.server.util.Config;
  11. import org.apache.mina.common.IoSession;
  12.  
  13. public class PlayerLogin implements PacketHandler {
  14. /**
  15. * World instance
  16. */
  17. public static final World world = World.getWorld();
  18.  
  19. public void handlePacket(Packet p, IoSession session) throws Exception {
  20. Player player = (Player)session.getAttachment();
  21. byte loginCode;
  22. try {
  23. boolean reconnecting = (p.readByte() == 1);
  24. int clientVersion = p.readShort();
  25. RSCPacket loginPacket = DataConversions.decryptRSA(p.readBytes(p.readByte()));
  26. int[] sessionKeys = new int[4];
  27. for(int key = 0;key < sessionKeys.length;key++) {
  28. sessionKeys[key] = loginPacket.readInt();
  29. }
  30. int uid = loginPacket.readInt();
  31. String username = loginPacket.readString(20).trim();
  32. loginPacket.skip(1);
  33. String password = loginPacket.readString(20).trim();
  34. loginPacket.skip(1);
  35. if(world.countPlayers() >= Config.MAX_PLAYERS) {
  36. loginCode = 10;
  37. }
  38. else if(clientVersion < Config.SERVER_VERSION) {
  39. loginCode = 4;
  40. }
  41. else if(clientVersion > Config.SERVER_VERSION) {
  42. loginCode = 4;
  43. }
  44. else if(!player.setSessionKeys(sessionKeys)) {
  45. loginCode = 5;
  46. }
  47. else {
  48. player.load(username, password, uid, reconnecting);
  49. return;
  50. }
  51. }
  52. catch(Exception e) {
  53. e.printStackTrace();
  54. loginCode = 7;
  55. }
  56. RSCPacketBuilder pb = new RSCPacketBuilder();
  57. pb.setBare(true);
  58. pb.addByte((byte)loginCode);
  59. session.write(pb.toPacket());
  60. player.destroy(true);
  61. }
  62.  
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement