Advertisement
Guest User

Untitled

a guest
Oct 18th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.93 KB | None | 0 0
  1. package net.sf.odinms.net.login.handler;
  2.  
  3. import net.sf.odinms.client.IItem;
  4. import net.sf.odinms.client.MapleCharacter;
  5. import net.sf.odinms.client.MapleCharacterUtil;
  6. import net.sf.odinms.client.MapleClient;
  7. import net.sf.odinms.client.MapleInventory;
  8. import net.sf.odinms.client.MapleInventoryType;
  9. import net.sf.odinms.client.MapleSkinColor;
  10. import net.sf.odinms.net.AbstractMaplePacketHandler;
  11. import net.sf.odinms.server.MapleItemInformationProvider;
  12. import net.sf.odinms.tools.MaplePacketCreator;
  13. import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;
  14.  
  15. public class CreateCharHandler extends AbstractMaplePacketHandler {
  16.  
  17. @Override
  18. public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
  19. String name = slea.readMapleAsciiString();
  20. int face = slea.readInt();
  21. int hair = slea.readInt();
  22. int hairColor = slea.readInt();
  23. int skinColor = slea.readInt();
  24. int top = slea.readInt();
  25. int bottom = slea.readInt();
  26. int shoes = slea.readInt();
  27. int weapon = slea.readInt();
  28. int gender = slea.readByte();
  29. int str = slea.readByte();
  30. int dex = slea.readByte();
  31. int _int = slea.readByte();
  32. int luk = slea.readByte();
  33.  
  34. MapleCharacter newchar = MapleCharacter.getDefault(c);
  35. newchar.setWorld(c.getWorld());
  36. newchar.setFace(face);
  37. newchar.setHair(hair + hairColor);
  38. newchar.setGender(gender);
  39. newchar.setStr(4);
  40. newchar.setDex(4);
  41. newchar.setInt(4);
  42. newchar.setLuk(4);
  43. newchar.setRemainingAp(9);
  44. newchar.setName(name, false);
  45. newchar.setSkinColor(MapleSkinColor.getById(skinColor));
  46.  
  47. MapleInventory equip = newchar.getInventory(MapleInventoryType.EQUIPPED);
  48. IItem eq_top = MapleItemInformationProvider.getInstance().getEquipById(top);
  49. eq_top.setPosition((byte) -5);
  50. equip.addFromDB(eq_top);
  51. IItem eq_bottom = MapleItemInformationProvider.getInstance().getEquipById(bottom);
  52. eq_bottom.setPosition((byte) -6);
  53. equip.addFromDB(eq_bottom);
  54. IItem eq_shoes = MapleItemInformationProvider.getInstance().getEquipById(shoes);
  55. eq_shoes.setPosition((byte) -7);
  56. equip.addFromDB(eq_shoes);
  57. IItem eq_weapon = MapleItemInformationProvider.getInstance().getEquipById(weapon);
  58. eq_weapon.setPosition((byte) -11);
  59. equip.addFromDB(eq_weapon);
  60. IItem pWeap = MapleItemInformationProvider.getInstance().getEquipById(1702132);
  61. pWeap.setPosition((byte) -111);
  62. equip.addFromDB(pWeap);
  63.  
  64. boolean charok = true;
  65.  
  66. int totstats = str + dex + _int + luk;
  67. if (totstats != 25 || str < 4 || dex < 4 || _int < 4 || luk < 4) {
  68. charok = false;
  69. }
  70. if (gender == 0) {
  71. if (face != 20000 && face != 20001 && face != 20002) {
  72. charok = false;
  73. }
  74. if (hair != 30000 && hair != 30020 && hair != 30030) {
  75. charok = false;
  76. }
  77. if (top != 1040002 && top != 1040006 && top != 1040010) {
  78. charok = false;
  79. }
  80. if (bottom != 1060006 && bottom != 1060002) {
  81. charok = false;
  82. }
  83. } else if (gender == 1) {
  84. if (face != 21000 && face != 21001 && face != 21002) {
  85. charok = false;
  86. }
  87. if (hair != 31000 && hair != 31040 && hair != 31050) {
  88. charok = false;
  89. }
  90. if (top != 1041002 && top != 1041006 && top != 1041010 && top != 1041011) {
  91. charok = false;
  92. }
  93. if (bottom != 1061002 && bottom != 1061008) {
  94. charok = false;
  95. }
  96. } else {
  97. charok = false;
  98. }
  99. if (skinColor < 0 || skinColor > 3) {
  100. charok = false;
  101. }
  102. if (weapon != 1302000 && weapon != 1322005 && weapon != 1312004) {
  103. charok = false;
  104. }
  105. if (shoes != 1072001 && shoes != 1072005 && shoes != 1072037 && shoes != 1072038) {
  106. charok = false;
  107. }
  108. if (hairColor != 0 && hairColor != 2 && hairColor != 3 && hairColor != 7) {
  109. charok = false;
  110. }
  111. if (!MapleCharacterUtil.isNameLegal(name)) {
  112. charok = false;
  113. }
  114. if (MapleCharacterUtil.hasSymbols(name)) {
  115. charok = false;
  116. }
  117. if (name.length() < 4 || name.length() > 12) {
  118. charok = false;
  119. }
  120.  
  121. if (charok && MapleCharacterUtil.canCreateChar(name, c.getWorld())) {
  122. newchar.saveToDB(false, true);
  123. c.getSession().write(MaplePacketCreator.addNewCharEntry(newchar, charok));
  124. } else {
  125. System.out.println(MapleClient.getLogMessage(c, "Trying to create a character with a name: " + name));
  126. }
  127. }
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement