PageRenderTime 151ms CodeModel.GetById 30ms RepoModel.GetById 2ms app.codeStats 0ms

/AE_GameServer/src/com/aionemu/gameserver/network/aion/PlayerInfo.java

https://github.com/weachina/aion-emu-backup
Java | 312 lines | 252 code | 34 blank | 26 comment | 15 complexity | e59e033f4a5f195a051d0b1ecca60d78 MD5 | raw file
  1. /**
  2. * This file is part of aion-emu <aion-emu.com>.
  3. *
  4. * aion-emu is free software: you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License as published by
  6. * the Free Software Foundation, either version 3 of the License, or
  7. * (at your option) any later version.
  8. *
  9. * aion-emu is distributed in the hope that it will be useful,
  10. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. * GNU General Public License for more details.
  13. *
  14. * You should have received a copy of the GNU General Public License
  15. * along with aion-emu. If not, see <http://www.gnu.org/licenses/>.
  16. */
  17. package com.aionemu.gameserver.network.aion;
  18. import java.nio.ByteBuffer;
  19. import org.apache.log4j.Logger;
  20. import com.aionemu.gameserver.model.account.PlayerAccountData;
  21. import com.aionemu.gameserver.model.gameobjects.player.PlayerAppearance;
  22. import com.aionemu.gameserver.model.gameobjects.player.PlayerCommonData;
  23. import com.aionemu.gameserver.model.gameobjects.player.PlayerItems;
  24. /**
  25. *
  26. * @author AEJTester
  27. * @author Nemesiss
  28. * @author Niato
  29. */
  30. public abstract class PlayerInfo extends AionServerPacket
  31. {
  32. private static Logger log= Logger.getLogger(PlayerInfo.class);
  33. protected PlayerInfo()
  34. {
  35. }
  36. protected void writePlayerInfo(ByteBuffer buf, PlayerAccountData accPlData, PlayerItems playerItems)
  37. {
  38. PlayerCommonData pbd = accPlData.getPlayerCommonData();
  39. final int raceId = pbd.getRace().getRaceId();
  40. final int genderId = pbd.getGender().getGenderId();
  41. final PlayerAppearance playerAppearance = accPlData.getAppereance();
  42. writeD(buf, pbd.getPlayerObjId());
  43. writeS(buf, pbd.getName());
  44. /**
  45. * Stupid NC...
  46. */
  47. int size = 44 - (pbd.getName().length() * 2 + 2);
  48. byte[] stupidNc = new byte[size];
  49. writeB(buf, stupidNc);
  50. writeD(buf, genderId);
  51. writeD(buf, raceId);
  52. writeD(buf, pbd.getPlayerClass().getClassId());
  53. writeD(buf, playerAppearance.getVoice());
  54. writeD(buf, playerAppearance.getSkinRGB());
  55. writeD(buf, playerAppearance.getHairRGB());
  56. writeD(buf, playerAppearance.getEyeRGB());
  57. writeD(buf, playerAppearance.getLipRGB());
  58. writeC(buf, playerAppearance.getFace());
  59. writeC(buf, playerAppearance.getHair());
  60. writeC(buf, playerAppearance.getDeco());
  61. writeC(buf, playerAppearance.getTattoo());
  62. writeC(buf, 4);// always 4 o0
  63. writeC(buf, playerAppearance.getFaceShape());
  64. writeC(buf, playerAppearance.getForehead());
  65. writeC(buf, playerAppearance.getEyeHeight());
  66. writeC(buf, playerAppearance.getEyeSpace());
  67. writeC(buf, playerAppearance.getEyeWidth());
  68. writeC(buf, playerAppearance.getEyeSize());
  69. writeC(buf, playerAppearance.getEyeShape());
  70. writeC(buf, playerAppearance.getEyeAngle());
  71. writeC(buf, playerAppearance.getBrowHeight());
  72. writeC(buf, playerAppearance.getBrowAngle());
  73. writeC(buf, playerAppearance.getBrowShape());
  74. writeC(buf, playerAppearance.getNose());
  75. writeC(buf, playerAppearance.getNoseBridge());
  76. writeC(buf, playerAppearance.getNoseWidth());
  77. writeC(buf, playerAppearance.getNoseTip());
  78. writeC(buf, playerAppearance.getCheek());
  79. writeC(buf, playerAppearance.getLipHeight());
  80. writeC(buf, playerAppearance.getMouthSize());
  81. writeC(buf, playerAppearance.getLipSize());
  82. writeC(buf, playerAppearance.getSmile());
  83. writeC(buf, playerAppearance.getLipShape());
  84. writeC(buf, playerAppearance.getJawHeigh());
  85. writeC(buf, playerAppearance.getChinJut());
  86. writeC(buf, playerAppearance.getEarShape());
  87. writeC(buf, playerAppearance.getHeadSize());
  88. // 1.5.x 0x00, shoulderSize, armLength, legLength (BYTE) after HeadSize
  89. writeC(buf, 0x00); // 0x00
  90. writeC(buf, 0x01); // shoulderSize
  91. writeC(buf, 0x01); // armLength
  92. writeC(buf, 0x01); // legLength
  93. writeC(buf, playerAppearance.getNeck());
  94. writeC(buf, playerAppearance.getNeckLength());
  95. writeC(buf, playerAppearance.getShoulders());
  96. writeC(buf, playerAppearance.getTorso());
  97. writeC(buf, playerAppearance.getChest());
  98. writeC(buf, playerAppearance.getWaist());
  99. writeC(buf, playerAppearance.getHips());
  100. writeC(buf, playerAppearance.getArmThickness());
  101. writeC(buf, playerAppearance.getHandSize());
  102. writeC(buf, playerAppearance.getLegThicnkess());
  103. writeC(buf, playerAppearance.getFootSize());
  104. writeC(buf, playerAppearance.getFacialRate());
  105. writeC(buf, 0x00); // always 0 may be acessLevel
  106. writeC(buf, 0x00); // always 0 - unk
  107. writeF(buf, playerAppearance.getHeight());
  108. int raceSex = 100000 + raceId * 2 + genderId;
  109. writeD(buf, raceSex);
  110. writeD(buf, pbd.getPosition().getMapId());//mapid for preloading map
  111. writeF(buf, pbd.getPosition().getX());
  112. writeF(buf, pbd.getPosition().getY());
  113. writeF(buf, pbd.getPosition().getZ());
  114. writeD(buf, 0);// unk 0x6f
  115. writeD(buf, pbd.getLevel());// lvl confirmed
  116. writeD(buf, -1);// unk -1 -1 = played 0 = neverplayed
  117. writeD(buf, 0);// unk 0
  118. writeD(buf, 0);// unk 41549824 can be 0
  119. writeD(buf, 0);// unk 1 can be 0
  120. writeD(buf, 0);// unk 25118405 elyos : 25642769
  121. writeD(buf, 0);// unk 1
  122. writeD(buf, 0);// unk 0
  123. writeD(buf, 0);// unk 2 can be 0
  124. writeD(buf, 0);// unk 0
  125. writeD(buf, 0);// unk 0
  126. writeD(buf, 0);// unk 1242826833
  127. writeD(buf, 0);// unk 0
  128. writeD(buf, 0);// unk 0
  129. writeD(buf, 0);// unk 0
  130. writeD(buf, 0);// unk 73138176
  131. writeD(buf, 0);// unk 0
  132. writeD(buf, 0);// unk 73182320
  133. writeD(buf, 0);// unk 0
  134. writeD(buf, 0);// unk 50379392
  135. writeD(buf, 0);// unk 1242638636
  136. int itemsSize = 0;
  137. int i=0;
  138. if (playerItems.getWarmer()!=0)
  139. {
  140. writeC(buf, i);
  141. writeD(buf, playerItems.getWarmer());
  142. writeD(buf, 0);
  143. writeD(buf, 0);
  144. i++;
  145. itemsSize = itemsSize + 13;
  146. }
  147. if (playerItems.getShield()!=0)
  148. {
  149. writeC(buf, i);
  150. writeD(buf, playerItems.getShield());
  151. writeD(buf, 0);
  152. writeD(buf, 0);
  153. i++;
  154. itemsSize = itemsSize + 13;
  155. }
  156. if (playerItems.getHelmet()!=0)
  157. {
  158. writeC(buf, i);
  159. writeD(buf, playerItems.getHelmet());
  160. writeD(buf, 0);
  161. writeD(buf, 0);
  162. i++;
  163. itemsSize = itemsSize + 13;
  164. }
  165. if (playerItems.getArmor()!=0)
  166. {
  167. writeC(buf, i);
  168. writeD(buf, playerItems.getArmor());
  169. writeD(buf, 0);
  170. writeD(buf, 0);
  171. i++;
  172. itemsSize = itemsSize + 13;
  173. }
  174. if (playerItems.getBoots()!=0)
  175. {
  176. writeC(buf, i);
  177. writeD(buf, playerItems.getBoots());
  178. writeD(buf, 0);
  179. writeD(buf, 0);
  180. i++;
  181. itemsSize = itemsSize + 13;
  182. }
  183. if (playerItems.getLearrings()!=0)
  184. {
  185. writeC(buf, i);
  186. writeD(buf, playerItems.getLearrings());
  187. writeD(buf, 0);
  188. writeD(buf, 0);
  189. i++;
  190. itemsSize = itemsSize + 13;
  191. }
  192. if (playerItems.getRearrings()!=0)
  193. {
  194. writeC(buf, i);
  195. writeD(buf, playerItems.getRearrings());
  196. writeD(buf, 0);
  197. writeD(buf, 0);
  198. i++;
  199. itemsSize = itemsSize + 13;
  200. }
  201. if (playerItems.getLring()!=0)
  202. {
  203. writeC(buf, i);
  204. writeD(buf, playerItems.getLring());
  205. writeD(buf, 0);
  206. writeD(buf, 0);
  207. i++;
  208. itemsSize = itemsSize + 13;
  209. }
  210. if (playerItems.getRring()!=0)
  211. {
  212. writeC(buf, i);
  213. writeD(buf, playerItems.getRring());
  214. writeD(buf, 0);
  215. writeD(buf, 0);
  216. i++;
  217. itemsSize = itemsSize + 13;
  218. }
  219. if (playerItems.getNecklace()!=0)
  220. {
  221. writeC(buf, i);
  222. writeD(buf, playerItems.getNecklace());
  223. writeD(buf, 0);
  224. writeD(buf, 0);
  225. i++;
  226. itemsSize = itemsSize + 13;
  227. }
  228. if (playerItems.getPauldron()!=0)
  229. {
  230. writeC(buf, i);
  231. writeD(buf, playerItems.getPauldron());
  232. writeD(buf, 0);
  233. writeD(buf, 0);
  234. i++;
  235. itemsSize = itemsSize + 13;
  236. }
  237. if (playerItems.getPants()!=0)
  238. {
  239. writeC(buf, i);
  240. writeD(buf, playerItems.getPants());
  241. writeD(buf, 0);
  242. writeD(buf, 0);
  243. i++;
  244. itemsSize = itemsSize + 13;
  245. }
  246. if (playerItems.getRshard()!=0)
  247. {
  248. writeC(buf, i);
  249. writeD(buf, playerItems.getRshard());
  250. writeD(buf, 0);
  251. writeD(buf, 0);
  252. i++;
  253. itemsSize = itemsSize + 13;
  254. }
  255. if (playerItems.getLshard()!=0)
  256. {
  257. writeC(buf, i);
  258. writeD(buf, playerItems.getLshard());
  259. writeD(buf, 0);
  260. writeD(buf, 0);
  261. i++;
  262. itemsSize = itemsSize + 13;
  263. }
  264. if (playerItems.getWing()!=0)
  265. {
  266. writeC(buf, i);
  267. writeD(buf, playerItems.getWing());
  268. writeD(buf, 0);
  269. writeD(buf, 0);
  270. i++;
  271. itemsSize = itemsSize + 13;
  272. }
  273. stupidNc = new byte[208-itemsSize];
  274. writeB(buf, stupidNc);
  275. writeD(buf, accPlData.getDeletionTimeInSeconds());
  276. writeD(buf, 0x00);// unk
  277. }
  278. }