Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package rsca.gs.phandler;
- import org.apache.mina.common.IoSession;
- import rsca.config.Constants;
- import rsca.config.Formulae;
- import rsca.gs.Instance;
- import rsca.gs.builders.RSCPacketBuilder;
- import rsca.gs.model.Bank;
- import rsca.gs.model.Cache;
- import rsca.gs.model.InvItem;
- import rsca.gs.model.Inventory;
- import rsca.gs.model.Player;
- import rsca.gs.model.PlayerAppearance;
- import rsca.gs.model.Point;
- import rsca.gs.model.World;
- import rsca.gs.plugins.CTF;
- import rsca.gs.tools.DataConversions;
- public class PlayerLogin implements PacketHandler {
- /**
- * World instance
- */
- private static final World world = Instance.getWorld();
- /**
- * The player to update
- */
- private Player player;
- public PlayerLogin(Player player) {
- this.player = player;
- }
- public void handlePacket(rsca.gs.connection.Packet p, IoSession session) throws Exception {
- byte loginCode = p.readByte();
- RSCPacketBuilder pb = new RSCPacketBuilder();
- pb.setBare(true);
- pb.addByte(loginCode);
- player.getSession().write(pb.toPacket());
- if (loginCode == 0 || loginCode == 1 || loginCode == 99) {
- player.setOwner(p.readInt());
- player.setGroupID(p.readInt());
- player.setSubscriptionExpires(p.readLong());
- player.setLastIP(DataConversions.IPToString(p.readLong()));
- player.setLastLogin(p.readLong());
- if (player.getLastLogin() == 0L) {
- player.setLocation(Point.location(121, 647), true);
- int x = p.readShort();
- int y = p.readShort();
- } else
- player.setLocation(
- Point.location(p.readShort(), p.readShort()), true);
- player.setFatigue(p.readShort());
- player.setCombatStyle((int) p.readByte());
- player.setPrivacySetting(0, p.readByte() == 1);
- player.setPrivacySetting(1, p.readByte() == 1);
- player.setPrivacySetting(2, p.readByte() == 1);
- player.setPrivacySetting(3, p.readByte() == 1);
- player.setGameSetting(0, p.readByte() == 1);
- player.setGameSetting(2, p.readByte() == 1);
- player.setGameSetting(3, p.readByte() == 1);
- player.setGameSetting(4, p.readByte() == 1);
- player.setGameSetting(5, p.readByte() == 1);
- player.setGameSetting(6, p.readByte() == 1);
- PlayerAppearance appearance = new PlayerAppearance(p.readShort(), p
- .readShort(), p.readShort(), p.readShort(), p.readShort(),
- p.readShort());
- if (!appearance.isValid()) {
- loginCode = 7;
- player.destroy(true);
- player.getSession().close();
- }
- /*if(World.isMembers() && !player.isMod()) {
- loginCode = 7;
- player.destroy(true);
- player.getSession().close();
- }*/
- player.setAppearance(appearance);
- player.setWornItems(player.getPlayerAppearance().getSprites());
- player.setMale(p.readByte() == 1);
- long skull = p.readLong();
- if (skull > 0)
- player.addSkull(skull);
- for (int i = 0; i < 18; i++) {
- int exp = (int) p.readLong();
- player.setExp(i, exp);
- player.setMaxStat(i, Formulae.experienceToLevel(exp));
- player.setCurStat(i, p.readShort());
- }
- player
- .setCombatLevel(Formulae.getCombatlevel(player
- .getMaxStats()));
- Inventory inventory = new Inventory(player);
- int invCount = p.readShort();
- for (int i = 0; i < invCount; i++) {
- InvItem item = new InvItem(p.readShort(), p.readInt());
- if (p.readByte() == 1 && item.isWieldable()) {
- item.setWield(true);
- player.updateWornItems(
- item.getWieldableDef().getWieldPos(), item
- .getWieldableDef().getSprite());
- }
- inventory.add(item);
- }
- player.setInventory(inventory);
- Bank bank = new Bank();
- int bnkCount = p.readShort();
- for (int i = 0; i < bnkCount; i++)
- bank.add(new InvItem(p.readShort(), p.readInt()));
- player.setBank(bank);
- int friendCount = p.readShort();
- for (int i = 0; i < friendCount; i++)
- player.addFriend(p.readLong(), p.readShort());
- int ignoreCount = p.readShort();
- for (int i = 0; i < ignoreCount; i++)
- player.addIgnore(p.readLong());
- player.setQuestPoints(p.readShort(), false);
- int questCount = p.readShort();
- // System.out.println(questCount);
- for (int i = 0; i < questCount; i++)
- player
- .setQuestStage(p.readShort(), p.readShort(), false,
- false);
- /* End of loading methods */
- /* Send client data */
- world.registerPlayer(player);
- player.updateViewedPlayers();
- player.updateViewedObjects();
- if(CTF.isInCTFBoundary(player.getX(), player.getY()))
- player.teleport(100, 500, false);
- /*
- if(Instance.getCacheHandler().hasData(player.getUsername())) {
- Cache cache = Instance.getCacheHandler().getCache(player.getUsername());
- if(Instance.getWorld().isCTFRunning()) {
- if(!Instance.getWorld().ctf.isLevelValid(player.getCombatLevel())) {
- player.setRedTeam(false);
- player.setBlueTeam(false);
- if(CTF.isInCTFBoundary(player.getX(), player.getY()))
- player.teleport(100, 500, false);
- } else {
- if(CTF.isInCTFBoundary(player.getX(), player.getY())) {
- player.setRedTeam(cache.inRed);
- player.setBlueTeam(cache.inBlue);
- Instance.getWorld().ctf.revalidateAppearance(player);
- Instance.getWorld().ctf.updateScore(player);
- }
- }
- }
- }*/
- rsca.gs.builders.MiscPacketBuilder sender = player
- .getActionSender();
- sender.sendServerInfo();
- sender.sendFatigue();
- sender.sendWorldInfo(); // sends info for the client to load terrain
- sender.sendInventory();
- sender.sendEquipmentStats();
- sender.sendStats();
- sender.sendPrivacySettings();
- sender.sendGameSettings();
- sender.sendFriendList();
- sender.sendIgnoreList();
- sender.sendCombatStyle();
- sender.sendQuestData();
- sender.sendQuestInfo();
- int timeTillShutdown = Instance.getServer().timeTillShutdown();
- if (timeTillShutdown > -1)
- sender.startShutdown((int) (timeTillShutdown / 1000));
- if (player.getLastLogin() == 0L) {
- player.getInventory().add(new InvItem(4));
- player.getInventory().add(new InvItem(70));
- player.getInventory().add(new InvItem(376));
- player.getInventory().add(new InvItem(156));
- player.getInventory().add(new InvItem(87));
- player.getInventory().add(new InvItem(1263));
- player.getActionSender().sendInventory();
- player.setChangingAppearance(true);
- sender.sendAppearanceScreen();
- }
- player.getActionSender().sendWakeUp1();
- sender.sendLoginBox();
- sender.sendMessage("@yel@Welcome to @whi@RSCAngel");
- sender.sendOnlinePlayers();
- sender.sendMessage(Constants.GameServer.MOTD);
- if (player.clientWarn()) {
- player
- .getActionSender()
- .sendAlert(
- "@red@Alert! @whi@You are using an old client, please download the new client from our website. This client WILL stop working @red@soon.",
- false);
- player
- .getActionSender()
- .sendAlert(
- "@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.",
- false);
- }
- // sender.sendMessage("Subscriber?: " + player.isSubscriber());
- if (player.isAdmin() || player.isMod()) {
- player.setnopk(true);
- player.setnonaggro(true);
- }
- player.setLoggedIn(true);
- player.setBusy(false);
- } else
- player.destroy(true);
- }
- }
Add Comment
Please, Sign In to add comment