Guest User

Untitled

a guest
Jun 22nd, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.24 KB | None | 0 0
  1. package rsca.gs.phandler;
  2.  
  3. import org.apache.mina.common.IoSession;
  4.  
  5. import rsca.config.Constants;
  6. import rsca.config.Formulae;
  7. import rsca.gs.Instance;
  8. import rsca.gs.builders.RSCPacketBuilder;
  9. import rsca.gs.model.Bank;
  10. import rsca.gs.model.Cache;
  11. import rsca.gs.model.InvItem;
  12. import rsca.gs.model.Inventory;
  13. import rsca.gs.model.Player;
  14. import rsca.gs.model.PlayerAppearance;
  15. import rsca.gs.model.Point;
  16. import rsca.gs.model.World;
  17. import rsca.gs.plugins.CTF;
  18. import rsca.gs.tools.DataConversions;
  19.  
  20. public class PlayerLogin implements PacketHandler {
  21. /**
  22. * World instance
  23. */
  24. private static final World world = Instance.getWorld();
  25.  
  26. /**
  27. * The player to update
  28. */
  29. private Player player;
  30.  
  31. public PlayerLogin(Player player) {
  32. this.player = player;
  33. }
  34.  
  35. public void handlePacket(rsca.gs.connection.Packet p, IoSession session) throws Exception {
  36. byte loginCode = p.readByte();
  37. RSCPacketBuilder pb = new RSCPacketBuilder();
  38. pb.setBare(true);
  39. pb.addByte(loginCode);
  40. player.getSession().write(pb.toPacket());
  41. if (loginCode == 0 || loginCode == 1 || loginCode == 99) {
  42. player.setOwner(p.readInt());
  43. player.setGroupID(p.readInt());
  44.  
  45. player.setSubscriptionExpires(p.readLong());
  46.  
  47. player.setLastIP(DataConversions.IPToString(p.readLong()));
  48. player.setLastLogin(p.readLong());
  49. if (player.getLastLogin() == 0L) {
  50. player.setLocation(Point.location(121, 647), true);
  51. int x = p.readShort();
  52. int y = p.readShort();
  53. } else
  54. player.setLocation(
  55. Point.location(p.readShort(), p.readShort()), true);
  56.  
  57. player.setFatigue(p.readShort());
  58. player.setCombatStyle((int) p.readByte());
  59.  
  60. player.setPrivacySetting(0, p.readByte() == 1);
  61. player.setPrivacySetting(1, p.readByte() == 1);
  62. player.setPrivacySetting(2, p.readByte() == 1);
  63. player.setPrivacySetting(3, p.readByte() == 1);
  64.  
  65. player.setGameSetting(0, p.readByte() == 1);
  66. player.setGameSetting(2, p.readByte() == 1);
  67. player.setGameSetting(3, p.readByte() == 1);
  68. player.setGameSetting(4, p.readByte() == 1);
  69. player.setGameSetting(5, p.readByte() == 1);
  70. player.setGameSetting(6, p.readByte() == 1);
  71.  
  72. PlayerAppearance appearance = new PlayerAppearance(p.readShort(), p
  73. .readShort(), p.readShort(), p.readShort(), p.readShort(),
  74. p.readShort());
  75. if (!appearance.isValid()) {
  76. loginCode = 7;
  77. player.destroy(true);
  78. player.getSession().close();
  79. }
  80.  
  81. /*if(World.isMembers() && !player.isMod()) {
  82. loginCode = 7;
  83. player.destroy(true);
  84. player.getSession().close();
  85. }*/
  86. player.setAppearance(appearance);
  87. player.setWornItems(player.getPlayerAppearance().getSprites());
  88.  
  89. player.setMale(p.readByte() == 1);
  90. long skull = p.readLong();
  91. if (skull > 0)
  92. player.addSkull(skull);
  93.  
  94. for (int i = 0; i < 18; i++) {
  95. int exp = (int) p.readLong();
  96. player.setExp(i, exp);
  97. player.setMaxStat(i, Formulae.experienceToLevel(exp));
  98. player.setCurStat(i, p.readShort());
  99. }
  100.  
  101. player
  102. .setCombatLevel(Formulae.getCombatlevel(player
  103. .getMaxStats()));
  104.  
  105. Inventory inventory = new Inventory(player);
  106. int invCount = p.readShort();
  107. for (int i = 0; i < invCount; i++) {
  108. InvItem item = new InvItem(p.readShort(), p.readInt());
  109. if (p.readByte() == 1 && item.isWieldable()) {
  110. item.setWield(true);
  111. player.updateWornItems(
  112. item.getWieldableDef().getWieldPos(), item
  113. .getWieldableDef().getSprite());
  114. }
  115. inventory.add(item);
  116. }
  117.  
  118. player.setInventory(inventory);
  119.  
  120. Bank bank = new Bank();
  121. int bnkCount = p.readShort();
  122. for (int i = 0; i < bnkCount; i++)
  123. bank.add(new InvItem(p.readShort(), p.readInt()));
  124.  
  125. player.setBank(bank);
  126.  
  127. int friendCount = p.readShort();
  128. for (int i = 0; i < friendCount; i++)
  129. player.addFriend(p.readLong(), p.readShort());
  130.  
  131. int ignoreCount = p.readShort();
  132. for (int i = 0; i < ignoreCount; i++)
  133. player.addIgnore(p.readLong());
  134.  
  135. player.setQuestPoints(p.readShort(), false);
  136. int questCount = p.readShort();
  137. // System.out.println(questCount);
  138. for (int i = 0; i < questCount; i++)
  139. player
  140. .setQuestStage(p.readShort(), p.readShort(), false,
  141. false);
  142.  
  143. /* End of loading methods */
  144.  
  145. /* Send client data */
  146. world.registerPlayer(player);
  147.  
  148. player.updateViewedPlayers();
  149. player.updateViewedObjects();
  150. if(CTF.isInCTFBoundary(player.getX(), player.getY()))
  151. player.teleport(100, 500, false);
  152. /*
  153. if(Instance.getCacheHandler().hasData(player.getUsername())) {
  154. Cache cache = Instance.getCacheHandler().getCache(player.getUsername());
  155. if(Instance.getWorld().isCTFRunning()) {
  156. if(!Instance.getWorld().ctf.isLevelValid(player.getCombatLevel())) {
  157. player.setRedTeam(false);
  158. player.setBlueTeam(false);
  159. if(CTF.isInCTFBoundary(player.getX(), player.getY()))
  160. player.teleport(100, 500, false);
  161. } else {
  162. if(CTF.isInCTFBoundary(player.getX(), player.getY())) {
  163. player.setRedTeam(cache.inRed);
  164. player.setBlueTeam(cache.inBlue);
  165. Instance.getWorld().ctf.revalidateAppearance(player);
  166. Instance.getWorld().ctf.updateScore(player);
  167. }
  168. }
  169.  
  170. }
  171. }*/
  172.  
  173.  
  174. rsca.gs.builders.MiscPacketBuilder sender = player
  175. .getActionSender();
  176. sender.sendServerInfo();
  177. sender.sendFatigue();
  178. sender.sendWorldInfo(); // sends info for the client to load terrain
  179. sender.sendInventory();
  180. sender.sendEquipmentStats();
  181. sender.sendStats();
  182. sender.sendPrivacySettings();
  183. sender.sendGameSettings();
  184. sender.sendFriendList();
  185. sender.sendIgnoreList();
  186. sender.sendCombatStyle();
  187. sender.sendQuestData();
  188. sender.sendQuestInfo();
  189.  
  190. int timeTillShutdown = Instance.getServer().timeTillShutdown();
  191. if (timeTillShutdown > -1)
  192. sender.startShutdown((int) (timeTillShutdown / 1000));
  193.  
  194. if (player.getLastLogin() == 0L) {
  195. player.getInventory().add(new InvItem(4));
  196. player.getInventory().add(new InvItem(70));
  197. player.getInventory().add(new InvItem(376));
  198. player.getInventory().add(new InvItem(156));
  199. player.getInventory().add(new InvItem(87));
  200. player.getInventory().add(new InvItem(1263));
  201. player.getActionSender().sendInventory();
  202. player.setChangingAppearance(true);
  203. sender.sendAppearanceScreen();
  204. }
  205.  
  206. player.getActionSender().sendWakeUp1();
  207. sender.sendLoginBox();
  208. sender.sendMessage("@yel@Welcome to @whi@RSCAngel");
  209. sender.sendOnlinePlayers();
  210. sender.sendMessage(Constants.GameServer.MOTD);
  211.  
  212. if (player.clientWarn()) {
  213. player
  214. .getActionSender()
  215. .sendAlert(
  216. "@red@Alert! @whi@You are using an old client, please download the new client from our website. This client WILL stop working @red@soon.",
  217. false);
  218. player
  219. .getActionSender()
  220. .sendAlert(
  221. "@red@Alert! @whi@You are using an old client, please download the new client from our website. This client WILL stop working on @red@soon.",
  222. false);
  223. }
  224.  
  225. // sender.sendMessage("Subscriber?: " + player.isSubscriber());
  226.  
  227. if (player.isAdmin() || player.isMod()) {
  228. player.setnopk(true);
  229. player.setnonaggro(true);
  230. }
  231.  
  232. player.setLoggedIn(true);
  233. player.setBusy(false);
  234. } else
  235. player.destroy(true);
  236. }
  237. }
Add Comment
Please, Sign In to add comment