Package org.moparscape.msc.gs.model

Examples of org.moparscape.msc.gs.model.Player


    s2.addByte((byte) (with.isTradeOfferAccepted() ? 1 : 0));
    packets.add(s2.toPacket());
  }

  public void sendTradeItems() {
    Player with = player.getWishToTrade();
    if (with == null) { // This shouldn't happen
      return;
    }
    ArrayList<InvItem> items = with.getTradeOffer();
    RSCPacketBuilder s = new RSCPacketBuilder();
    s.setID(250);
    s.addByte((byte) items.size());
    for (InvItem item : items) {
      s.addShort(item.id);
View Full Code Here


    s.setID(187);
    packets.add(s.toPacket());
  }

  public void sendTradeWindowOpen() {
    Player with = player.getWishToTrade();
    if (with == null) { // This shouldn't happen
      return;
    }
    RSCPacketBuilder s = new RSCPacketBuilder();
    s.setID(4);
    s.addShort(with.getIndex());
    packets.add(s.toPacket());
  }
View Full Code Here

          }
        });
  }

  public void handlePacket(Packet p, IoSession session) throws Exception {
    Player player = (Player) session.getAttachment();
    int pID = ((RSCPacket) p).getID();
    if (player.isBusy()) {
      player.resetPath();// sendSound
      return;
    }
    player.resetAll();
    ActiveTile tile = world.getTile(p.readShort(), p.readShort());
    if (tile == null) {
      player.setSuspiciousPlayer(true);
      player.resetPath();
      return;
    }
    GameObject object = tile.getGameObject();
    InvItem item;
    switch (pID) {
    case 36: // Use Item on Door
      int dir = p.readByte();
      item = player.getInventory().getSlot(p.readShort());
      if (object == null || object.getType() == 0 || item == null) { // This
        // shoudln't
        // happen
        player.setSuspiciousPlayer(true);
        return;
      }
      world.addEntryToSnapshots(new Activity(player.getUsername(), player
          .getUsername()
          + " used item on door"
          + item.getDef().getName()
          + "("
          + item.id
          + ")"
          + " [CMD: "
          + item.getDef().getCommand()
          + "] ON A DOOR ("
          + tile.getX()
          + "/"
          + tile.getY()
          + ") at: "
          + player.getX() + "/" + player.getY()));

      handleDoor(player, tile, object, dir, item);
      break;
    case 94: // Use Item on GameObject
      item = player.getInventory().getSlot(p.readShort());
      if (object == null || object.getType() == 1 || item == null) { // This
        // shoudln't
        // happen
        player.setSuspiciousPlayer(true);
        return;
      }
      world.addEntryToSnapshots(new Activity(player.getUsername(), player
          .getUsername()
          + " used item on GameObject"
          + item.getDef().getName()
          + "("
          + item.id
          + ")"
          + " [CMD: "
          + item.getDef().getCommand()
          + "] ON A DOOR ("
          + tile.getX()
          + "/"
          + tile.getY()
          + ") at: "
          + player.getX() + "/" + player.getY()));

      handleObject(player, tile, object, item);
      break;
    }
    tile.cleanItself();
View Full Code Here

    int[] appearanceIDs = new int[mobCount];
    for (int x = 0; x < mobCount; x++) {
      indicies[x] = p.readShort();
      appearanceIDs[x] = p.readShort();
    }
    Player player = (Player) session.getAttachment();
    player.addPlayersAppearanceIDs(indicies, appearanceIDs);
  }
View Full Code Here

   * World instance
   */
  public static final World world = Instance.getWorld();

  public void handlePacket(Packet p, IoSession session) throws Exception {
    Player player = (Player) session.getAttachment();
    int pID = ((RSCPacket) p).getID();
    if (player.isBusy() || player.isRanging() || player.isTrading()
        || player.isDueling()) {
      player.resetBank();
      return;
    }
    if (!player.accessingBank()) {
      player.setSuspiciousPlayer(true);
      player.resetBank();
      return;
    }
    Bank bank = player.getBank();
    Inventory inventory = player.getInventory();
    int itemID, amount, slot;
    switch (pID) {
    case 48: // Close bank
      player.resetBank();
      break;
    case 198: // Deposit item
      itemID = p.readShort();
      amount = p.readInt();
      if (amount < 1 || inventory.countId(itemID) < amount) {
        world.addEntryToSnapshots(new Activity(player.getUsername(),
            player.getUsername() + " tried to deposit ID: "
                + itemID + " amount: " + amount));
        player.setSuspiciousPlayer(true);
        return;
      }
      world.addEntryToSnapshots(new Activity(player.getUsername(), player
          .getUsername()
          + " deposited ID: "
          + itemID
          + " amount: "
          + amount));
      if (EntityHandler.getItemDef(itemID).isMembers()
          && !World.isMembers()) {
        player.getActionSender().sendMessage(
            "This feature is only avaliable on a members server");
        return;
      }
      if (bank.canHold(itemID, amount)
          && inventory.remove(itemID, amount, false)) {
        bank.add(itemID, amount, false);
      } else {
        player.getActionSender().sendMessage(
            "You don't have room for that in your bank");
      }
      slot = bank.getLastItemSlot(itemID);
      if (slot > -1) {
        player.getActionSender().sendInventory();
        player.getActionSender().updateBankItem(slot, itemID,
            bank.countId(itemID));
      }
      break;
    case 183: // Withdraw item
      itemID = p.readShort();
      amount = p.readInt();
      if (amount < 1 || bank.countId(itemID) < amount) {
        world.addEntryToSnapshots(new Activity(player.getUsername(),
            player.getUsername() + " tried to withdraw ID: "
                + itemID + " amount: " + amount));
        player.setSuspiciousPlayer(true);
        return;
      }
      if (EntityHandler.getItemDef(itemID).isMembers()
          && !World.isMembers()) {
        player.getActionSender().sendMessage(
            "This feature is only avaliable on a members server");
        return;
      }

      if (!inventory.isStackable(itemID) && amount > 1) {
        Logger.println(player.getUsername() + " tried to withdraw ID: "
            + itemID + " amount: " + amount + " unstackable items");
        player.setSuspiciousPlayer(true);
      }

      slot = bank.getLastItemSlot(itemID);
      if (!inventory.canHold(itemID, amount)) {
        amount = inventory.maxSize() - inventory.size();
        if (amount == 0) {
          return;
        }
      }
      world.addEntryToSnapshots(new Activity(player.getUsername(), player
          .getUsername()
          + " withrew ID: "
          + itemID
          + " amount: "
          + amount));

      if (bank.remove(itemID, amount, false)) {
        inventory.add(itemID, amount, false);
      }

      if (slot > -1) {
        player.getActionSender().sendInventory();
        player.getActionSender().updateBankItem(slot, itemID,
            bank.countId(itemID));
      }
      break;
    }
  }
View Full Code Here

   * World instance
   */
  public static final World world = Instance.getWorld();

  public void handlePacket(Packet p, IoSession session) throws Exception {
    Player sender = (Player) session.getAttachment();
    if (World.SERVER_MUTED && !sender.isMod()) {
      sender.getActionSender().sendMessage(
          "@red@Unable to chat while the server is muted");
      return;
    }

    sender.addMessageToChatQueue(p.getData());
  }
View Full Code Here

   * World instance
   */
  public static final World world = Instance.getWorld();

  public void handlePacket(Packet p, IoSession session) throws Exception {
    Player player = (Player) session.getAttachment();
    Logger.event(player.getUsername() + " [" + player.getUsernameHash()
        + "] was caught by a trap!");
  }
View Full Code Here

  public static final World world = Instance.getWorld();

  public void handlePacket(Packet p, IoSession session) throws Exception {
    long uID = ((LSPacket) p).getUID();
    Logger.event("LOGIN_SERVER sent alert (uID: " + uID + ")");
    Player player = world.getPlayer(p.readLong());
    if (player != null) {
      String message = p.readString();
      player.getActionSender().sendAlert(message, false);
    }
  }
View Full Code Here

   * World instance
   */
  public static final World world = Instance.getWorld();

  public void handlePacket(Packet p, IoSession session) throws Exception {
    Player player = (Player) session.getAttachment();
    int idx = (int) p.readShort();
    if (idx < 0 || idx >= player.getInventory().size()) {
      player.setSuspiciousPlayer(true);
      return;
    }
    final InvItem item = player.getInventory().getSlot(idx);
    if (item == null || item.getDef().getCommand().equals("")) {
      player.setSuspiciousPlayer(true);
      return;
    }
    if (item.getDef().isMembers() && Config.f2pWildy
        && player.getLocation().inWilderness() && item.id != 814) {
      player.getActionSender().sendMessage(
          "Can not use a Member item in the wilderness");
      return;
    }
    world.addEntryToSnapshots(new Activity(player.getUsername(), player
        .getUsername()
        + " used item "
        + item.getDef().getName()
        + "("
        + item.id
        + ")"
        + " [CMD: "
        + item.getDef().getCommand()
        + "] at: " + player.getX() + "/" + player.getY()));

    if (player.isBusy()) {
      if (player.inCombat()) {
        player.getActionSender().sendMessage(
            "You cannot do that whilst fighting!");
      }
      return;
    }// sip
    player.resetAll();

    if (item.id == 1263) {
      // player.resetPath(); // This isn't how it's done in RSC
      // player.setBusy(true); // Shouldn't be here
      player.getActionSender()
          .sendMessage("You rest in the sleeping bag");
      showBubble(player, item);
      player.getActionSender().sendEnterSleep();
      player.setSleeping(true);
      // player.setFatigue(0);
      // player.getActionSender().sendFatigue();
      // player.getActionSender().sendMessage("You wake up - feeling refreshed");
      // player.isSleeping = true;
      // player.setBusy(false);
      return;
    }

    if (item.getDef().getCommand().equalsIgnoreCase("identify")) {
      if (!Server.isMembers()) {
        player.getActionSender().sendMessage(
            "This feature is only avaliable on a members server");
        return;
      }
      ItemUnIdentHerbDef herb = ItemAttributes.getUnIdentHerbDef(item.id);
      if (herb == null) {
        return;
      }
      if (player.getMaxStat(15) < herb.getLevelRequired()) {
        player.getActionSender()
            .sendMessage(
                "Your herblaw ability is not high enough to clean this herb.");
        return;
      }
      player.setBusy(true);
      Instance.getDelayedEventHandler().add(new MiniEvent(player) {
        public void action() {
          ItemUnIdentHerbDef herb = ItemAttributes
              .getUnIdentHerbDef(item.id);
          InvItem newItem = new InvItem(herb.getNewId());
          owner.getInventory().remove(item.id, item.amount, false);
          owner.getInventory().add(newItem.id, newItem.amount, false);
          owner.getActionSender().sendMessage(
              "You clean the mud off the "
                  + newItem.getDef().getName() + ".");
          owner.incExp(15, herb.getExp(), true);
          owner.getActionSender().sendStat(15);
          owner.getActionSender().sendInventory();
          owner.setBusy(false);
          return;
        }
      });
      return;
    }

    if (ItemAttributes.isEdible(item.id)) {
      if (item.getDef().isMembers() && !World.isMembers()) {
        player.getActionSender().sendMessage(
            "This feature is only avaliable on a members server");
        return;
      }
      player.setBusy(true);
      player.getActionSender().sendSound("eat");
      if (item.id == 228 || item.id == 18)
        player.getActionSender().sendMessage(
            "You eat the " + item.getDef().getName() + ". Yuck!");
      else
        player.getActionSender().sendMessage(
            "You eat the " + item.getDef().getName() + ".");
      // 1263
      final boolean heals = player.getCurStat(3) < player.getMaxStat(3);
      if (heals) {
        int newHp = player.getCurStat(3)
            + EntityHandler.getItemEdibleHeals(item.id);
        if (newHp > player.getMaxStat(3)) {
          newHp = player.getMaxStat(3);
        }
        player.setCurStat(3, newHp);
        player.getActionSender().sendStat(3);
      }
      Instance.getDelayedEventHandler().add(new SingleEvent(player, 185) {
        public void action() {
          if (heals) {
            owner.getActionSender().sendMessage(
                "It heals some health.");
          }
          owner.getInventory().remove(item.id, item.amount, false);
          switch (item.id) {
          case 326: // Meat pizza
            owner.getInventory().add(328, 1, false);
            break;
          case 327: // Anchovie pizza
            owner.getInventory().add(329, 1, false);
            break;
          case 330: // Cake
            owner.getInventory().add(333, 1, false);
            break;
          case 333: // Partical cake
            owner.getInventory().add(335, 1, false);
            break;
          case 332: // Choc cake
            owner.getInventory().add(334, 1, false);
            break;
          case 334: // Partical choc cake
            owner.getInventory().add(336, 1, false);
            break;
          case 257: // Apple pie
            owner.getInventory().add(263, 1, false);
            break;
          case 261: // Half apple pie
            owner.getInventory().add(251, 1, false);
            break;
          case 258: // Redberry pie
            owner.getInventory().add(262, 1, false);
            break;
          case 262: // Half redberry pie
            owner.getInventory().add(251, 1, false);
            break;
          case 259: // Meat pie
            owner.getInventory().add(261, 1, false);
            break;
          case 263: // Half meat pie
            owner.getInventory().add(251, 1, false);
            break;
          }
          owner.getActionSender().sendInventory();
          owner.setBusy(false);
        }
      });
    } else if (item.getDef().getCommand().equalsIgnoreCase("open")) {
      if (item.id == 1321) {
        int win;
        int Roll = DataConversions.random(0, 99);
        if (player.getInventory().remove(1321, 1, false)) {
          if (Roll <= 10) {
            win = 795;
            player.getInventory().add(win, 1, false);
            player.getActionSender().sendInventory();
            return;
          }
          if (Roll <= 30) {
            win = 81;
            player.getInventory().add(win, 1, false);
            player.getActionSender().sendInventory();
            return;
          }
          if (Roll <= 40) {
            win = 828;
            player.getInventory().add(win, 1, false);
            player.getActionSender().sendInventory();
            return;
          }
          if (Roll <= 43) {
            win = 831;
            player.getInventory().add(win, 1, false);
            player.getActionSender().sendInventory();
            return;
          }
          if (Roll <= 47) {
            win = 832;
            player.getInventory().add(win, 1, false);
            player.getActionSender().sendInventory();
            return;
          }
          if (Roll <= 55) {
            win = 576;
            player.getInventory().add(win, 1, false);
            player.getActionSender().sendInventory();
            return;
          }
          if (Roll <= 60) {
            win = 577;
            player.getInventory().add(win, 1, false);
            player.getActionSender().sendInventory();
            return;
          }
          if (Roll <= 63) {
            win = 578;
            player.getInventory().add(win, 1, false);
            player.getActionSender().sendInventory();
            return;
          }
          if (Roll <= 67) {
            win = 579;
            player.getInventory().add(win, 1, false);
            player.getActionSender().sendInventory();
            return;
          }
          if (Roll <= 71) {
            win = 580;
            player.getInventory().add(win, 1, false);
            player.getActionSender().sendInventory();
            return;
          }
          if (Roll <= 76) {
            win = 581;
            player.getInventory().add(win, 1, false);
            player.getActionSender().sendInventory();
            return;
          }
          if (Roll <= 85) {
            win = 10;
            player.getInventory().add(win, 200000, false);
            player.getActionSender().sendInventory();
            return;
          }
          if (Roll <= 100) {
            win = 1289;
            player.getInventory().add(win, 1, false);
            player.getActionSender().sendInventory();
            return;
          }
        }
      }
      if (item.id == 1323) {
        return;
      }
    } else if (item.getDef().getCommand().equalsIgnoreCase("open")
        && item.id == 796) {
      final ActiveTile tile = world.getTile(player.getLocation());
      if (tile.hasGameObject()) {
        player.getActionSender().sendMessage(
            "You cannot do that here, please move to a new area.");
        return;
      }
      if (player.getInventory().remove(796, 1, false)) {
        player.getActionSender().sendInventory();
        player.setBusy(true);
        player.getActionSender().sendMessage(
            "You open and plant the seed.");
        world.registerGameObject(new GameObject(player.getLocation(),
            490, 0, 0));
        final Point location = player.getLocation();
        Instance.getDelayedEventHandler().add(
            new DelayedEvent(null, 180000) {
              GameObject object = world.getTile(location)
                  .getGameObject();

              public void run() {
                if (object != null) {
                  world.unregisterGameObject(object);
                }
                this.stop();
              }
            });
      }
      player.setBusy(false);
      return;
    }

    else if (item.getDef().getCommand().equalsIgnoreCase("bury")) {
      player.setBusy(true);
      player.getActionSender().sendMessage(
          "You dig a hole in the ground.");
      Instance.getDelayedEventHandler().add(new MiniEvent(player) {
        public void action() {
          owner.getActionSender().sendMessage(
              "You bury the " + item.getDef().getName() + ".");
          owner.getInventory().remove(item.id, item.amount, false);
          switch (item.id) {
          case 20: // Bones
          case 604: // Bat bones
            owner.incExp(5, 8, true);
            break;
          case 413: // Big bones
            owner.incExp(5, 24, true);
            break;
          case 814: // Dragon bones
            owner.incExp(5, 90, true);
            break;
          }
          owner.getActionSender().sendStat(5);
          owner.getActionSender().sendInventory();
          owner.setBusy(false);
        }
      });// f2p
    } else if (item.getDef().getCommand().equalsIgnoreCase("drink")) {
      switch (item.id) {
      case 180: // bad wine

        player.getActionSender().sendMessage("You drink the bad wine");
        showBubble(player, item);
        player.getInventory().remove(item.id, item.amount, false);

        player.getInventory().add(140, 1, false);
        int atk = player.getCurStat(0);
        atk -= 3;
        if (atk < 0)
          atk = 0;
        player.setCurStat(0, atk);
        player.getActionSender().sendStat(0);
        player.getActionSender().sendInventory();
        Instance.getDelayedEventHandler().add(new MiniEvent(player) {
          public void action() {
            owner.getActionSender().sendMessage(
                "You start to feel sick");
          }
        });
        break;
      case 142:
        player.getActionSender().sendMessage("You drink the wine");
        showBubble(player, item);
        player.getInventory().remove(item.id, item.amount, false);

        player.getInventory().add(140, 1, false);
        int hp = player.getCurStat(3);
        atk = player.getCurStat(0);
        atk -= 3;
        hp += 11;
        if (atk < 0)
          atk = 0;
        if (hp > player.getMaxStat(3))
          hp = player.getMaxStat(3);

        player.setCurStat(3, hp);
        player.setCurStat(0, atk);
        player.getActionSender().sendStat(0);
        player.getActionSender().sendStat(3);
        player.getActionSender().sendInventory();
        Instance.getDelayedEventHandler().add(new MiniEvent(player) {
          public void action() {
            owner.getActionSender().sendMessage(
                "You start to feel dizzy");
          }
        });
        break;
      case 739: // Tea
        player.setBusy(true);
        player.getActionSender().sendMessage(
            "You drink the " + item.getDef().getName() + ".");
        Instance.getDelayedEventHandler().add(new MiniEvent(player) {
          public void action() {
            owner.getActionSender().sendMessage(
                "It's nice and refreshing.");
            owner.getInventory()
                .remove(item.id, item.amount, false);
            owner.getActionSender().sendInventory();
            owner.setBusy(false);
          }
        });
        showBubble(player, item);
        break;
      case 193: // Beer
        player.setBusy(true);
        player.getActionSender().sendMessage(
            "You drink the " + item.getDef().getName() + ".");
        Instance.getDelayedEventHandler().add(new MiniEvent(player) {
          public void action() {
            owner.getActionSender().sendMessage(
                "You feel slightly dizzy.");
            int k = owner.getCurStat(0);
            k = k - 1;
            if (k < 1)
              k = 0;
            owner.setCurStat(0, k);
            owner.getActionSender().sendStat(0);
            if (owner.getCurStat(2) <= owner.getMaxStat(2)) {
              owner.setCurStat(2, owner.getCurStat(2) + 2);
              owner.getActionSender().sendStat(2);
            }
            owner.getInventory()
                .remove(item.id, item.amount, false);
            owner.getInventory().add(620, 1, false);
            owner.getActionSender().sendInventory();
            owner.setBusy(false);
          }
        });
        showBubble(player, item);
        break;
      case 830: // Greenmans Ale
        player.setBusy(true);
        player.getActionSender().sendMessage(
            "You drink the " + item.getDef().getName() + ".");
        Instance.getDelayedEventHandler().add(new MiniEvent(player) {
          public void action() {
            owner.getActionSender().sendMessage(
                "It has a strange taste.");
            for (int stat = 0; stat < 3; stat++) {
              owner.setCurStat(stat, owner.getCurStat(stat) - 4);
              owner.getActionSender().sendStat(stat);
            }
            if (owner.getCurStat(15) <= owner.getMaxStat(15)) {
              owner.setCurStat(15, owner.getCurStat(15) + 1);
              owner.getActionSender().sendStat(15);
            }
            owner.getInventory()
                .remove(item.id, item.amount, false);
            owner.getInventory().add(620, 1, false);
            owner.getActionSender().sendInventory();
            owner.setBusy(false);
          }
        });
        showBubble(player, item);
        break;
      case 268: // Mind Bomb
        player.setBusy(true);
        player.getActionSender().sendMessage(
            "You drink the " + item.getDef().getName() + ".");
        Instance.getDelayedEventHandler().add(new MiniEvent(player) {
          public void action() {
            owner.getActionSender().sendMessage(
                "You feel very strange.");
            for (int stat = 0; stat < 3; stat++) {
              owner.setCurStat(stat, owner.getCurStat(stat) - 4);
              owner.getActionSender().sendStat(stat);
            }
            int change = (owner.getMaxStat(6) > 55 ? 3 : 2);
            int maxWithBomb = (owner.getMaxStat(6) + change);
            if (maxWithBomb - owner.getCurStat(6) < change) {
              change = maxWithBomb - owner.getCurStat(6);
            }
            if (owner.getCurStat(6) <= (owner.getMaxStat(6) + (owner
                .getMaxStat(6) > 55 ? 3 : 2))) {
              owner.setCurStat(6, owner.getCurStat(6) + change);
              owner.getActionSender().sendStat(6);
            }
            owner.getInventory()
                .remove(item.id, item.amount, false);
            owner.getInventory().add(620, 1, false);
            owner.getActionSender().sendInventory();
            owner.setBusy(false);
          }
        });
        showBubble(player, item);
        break;
      case 269: // Dwarven Stout
        player.setBusy(true);
        player.getActionSender().sendMessage(
            "You drink the " + item.getDef().getName() + ".");
        Instance.getDelayedEventHandler().add(new MiniEvent(player) {
          public void action() {
            owner.getActionSender().sendMessage("It tastes foul.");
            for (int stat = 0; stat < 3; stat++) {
              owner.setCurStat(stat, owner.getCurStat(stat) - 4);
              owner.getActionSender().sendStat(stat);
            }
            if (owner.getCurStat(13) <= owner.getMaxStat(13)) {
              owner.setCurStat(13, owner.getCurStat(13) + 1);
              owner.getActionSender().sendStat(13);
            }
            if (owner.getCurStat(14) <= owner.getMaxStat(14)) {
              owner.setCurStat(14, owner.getCurStat(14) + 1);
              owner.getActionSender().sendStat(14);
            }
            owner.getInventory()
                .remove(item.id, item.amount, false);
            owner.getInventory().add(620, 1, false);
            owner.getActionSender().sendInventory();
            owner.setBusy(false);
          }
        });
        showBubble(player, item);
        break;
      case 267: // Asgarnian Ale
        player.setBusy(true);
        player.getActionSender().sendMessage(
            "You drink the " + item.getDef().getName() + ".");
        Instance.getDelayedEventHandler().add(new MiniEvent(player) {
          public void action() {
            owner.getActionSender().sendMessage(
                "You feel slightly reinvigorated");
            owner.getActionSender().sendMessage(
                "And slightly dizzy too.");
            owner.setCurStat(0, owner.getCurStat(0) - 4);
            owner.getActionSender().sendStat(0);
            if (owner.getCurStat(2) <= owner.getMaxStat(2)) {
              owner.setCurStat(2, owner.getCurStat(2) + 2);
              owner.getActionSender().sendStat(2);
            }
            owner.getInventory()
                .remove(item.id, item.amount, false);
            owner.getInventory().add(620, 1, false);
            owner.getActionSender().sendInventory();
            owner.setBusy(false);
          }
        });
        showBubble(player, item);
        break;
      case 829: // Dragon Bitter
        player.setBusy(true);
        player.getActionSender().sendMessage(
            "You drink the " + item.getDef().getName() + ".");
        Instance.getDelayedEventHandler().add(new MiniEvent(player) {
          public void action() {
            owner.getActionSender().sendMessage(
                "You feel slightly dizzy.");
            owner.setCurStat(0, owner.getCurStat(0) - 4);
            owner.getActionSender().sendStat(0);
            if (owner.getCurStat(2) <= owner.getMaxStat(2)) {
              owner.setCurStat(2, owner.getCurStat(2) + 2);
              owner.getActionSender().sendStat(2);
            }
            owner.getInventory()
                .remove(item.id, item.amount, false);
            owner.getInventory().add(620, 1, false);
            owner.getActionSender().sendInventory();
            owner.setBusy(false);
          }
        });
        showBubble(player, item);
        break;
      /** HANDLE WINE+ CURE POISON AND ANTIDOTE AND ZAMAROCK POTIONS **/
      case 221: // Strength Potion - 4 dose
        useNormalPotion(player, item, 2, 10, 2, 222, 3);
        break;
      case 222: // Strength Potion - 3 dose
        useNormalPotion(player, item, 2, 10, 2, 223, 2);
        break;
      case 223: // Strength Potion - 2 dose
        useNormalPotion(player, item, 2, 10, 2, 224, 1);
        break;
      case 224: // Strength Potion - 1 dose
        useNormalPotion(player, item, 2, 10, 2, 465, 0);
        break;
      case 474: // attack Potion - 3 dose
        useNormalPotion(player, item, 0, 10, 2, 475, 2);
        break;
      case 475: // attack Potion - 2 dose
        useNormalPotion(player, item, 0, 10, 2, 476, 1);
        break;
      case 476: // attack Potion - 1 dose
        useNormalPotion(player, item, 0, 10, 2, 465, 0);
        break;
      case 477: // stat restoration Potion - 3 dose
        useStatRestorePotion(player, item, 478, 2);
        break;
      case 478: // stat restoration Potion - 2 dose
        useStatRestorePotion(player, item, 479, 1);
        break;
      case 479: // stat restoration Potion - 1 dose
        useStatRestorePotion(player, item, 465, 0);
        break;
      case 480: // defense Potion - 3 dose
        useNormalPotion(player, item, 1, 10, 2, 481, 2);
        break;
      case 481: // defense Potion - 2 dose
        useNormalPotion(player, item, 1, 10, 2, 482, 1);
        break;
      case 482: // defense Potion - 1 dose
        useNormalPotion(player, item, 1, 10, 2, 465, 0);
        break;
      case 483: // restore prayer Potion - 3 dose
        usePrayerPotion(player, item, 484, 2);
        break;
      case 484: // restore prayer Potion - 2 dose
        usePrayerPotion(player, item, 485, 1);
        break;
      case 485: // restore prayer Potion - 1 dose
        usePrayerPotion(player, item, 465, 0);
        break;
      case 486: // Super attack Potion - 3 dose
        useNormalPotion(player, item, 0, 15, 4, 487, 2);
        break;
      case 487: // Super attack Potion - 2 dose
        useNormalPotion(player, item, 0, 15, 4, 488, 1);
        break;
      case 488: // Super attack Potion - 1 dose
        useNormalPotion(player, item, 0, 15, 4, 465, 0);
        break;
      case 489: // fishing Potion - 3 dose
        useFishingPotion(player, item, 490, 2);
        break;
      case 490: // fishing Potion - 2 dose
        useFishingPotion(player, item, 491, 1);
        break;
      case 491: // fishing Potion - 1 dose
        useFishingPotion(player, item, 465, 0);
        break;
      case 492: // Super strength Potion - 3 dose
        useNormalPotion(player, item, 2, 15, 4, 493, 2);
        break;
      case 493: // Super strength Potion - 2 dose
        useNormalPotion(player, item, 2, 15, 4, 494, 1);
        break;
      case 494: // Super strength Potion - 1 dose
        useNormalPotion(player, item, 2, 15, 4, 465, 0);
        break;
      case 495: // Super defense Potion - 3 dose
        useNormalPotion(player, item, 1, 15, 4, 496, 2);
        break;
      case 496: // Super defense Potion - 2 dose
        useNormalPotion(player, item, 1, 15, 4, 497, 1);
        break;
      case 497: // Super defense Potion - 1 dose
        useNormalPotion(player, item, 1, 15, 4, 465, 0);
        break;
      case 498: // ranging Potion - 3 dose
        useNormalPotion(player, item, 4, 10, 2, 499, 2);
        break;
      case 499: // ranging Potion - 2 dose
        useNormalPotion(player, item, 4, 10, 2, 500, 1);
        break;
      case 500: // ranging Potion - 1 dose
        useNormalPotion(player, item, 4, 10, 2, 465, 0);
        break;
      default:
        player.getActionSender().sendMessage(
            "Nothing interesting happens");
        return;
      }
    } else {
      switch (item.id) {
      case 597: // Charged Dragonstone amulet
        if (!Server.isMembers()) {
          player.getActionSender()
              .sendMessage(
                  "This feature is only avaliable on a members server");
          return;
        }
        player.getActionSender().sendMessage("You rub the amulet...");
        Instance.getDelayedEventHandler().add(new MiniEvent(player) {
          public void action() {
            String[] options = new String[] { "Edgeville",
                "Karamja", "Draynor Village", "Al Kharid",
                "Seers", "Yanille" };
            owner.setMenuHandler(new MenuHandler(options) {
              public void handleReply(final int option,
                  final String reply) {
                if (owner.isBusy()
                    || owner.inCombat()
                    || !owner.getInventory().contains(
                        item.id)) {
                  return;
                }
                if (owner.getLocation().inModRoom()
                    && !owner.isMod()) {
                  owner.getActionSender()
                      .sendMessage(
                          "A magical force stops you from teleporting.");
                  return;
                }
                owner.getActionSender().sendSound("spellok");
                switch (option) {
                case 0: // Edgeville
                  owner.teleport(193, 435, true);
                  break;
                case 1: // Karamja
                  owner.teleport(360, 696, true);
                  break;
                case 2: // Draynor Village
                  owner.teleport(214, 632, true);
                  break;
                case 3: // Al Kharid
                  owner.teleport(72, 696, true);
                  break;
                case 4: // Seers
                  owner.teleport(516, 460, true);
                  break;
                case 5: // Yanille
                  owner.teleport(587, 761, true);
                  break;
                default:
                  return;

                }
                if (DataConversions.random(0, 5) == 1
                    && owner.getInventory().remove(item.id,
                        item.amount, false)) {
                  owner.getInventory().add(522, 1, false);
                  owner.getActionSender().sendInventory();
                }
              }
            });
            owner.getActionSender().sendMenu(options);
          }
        });
        break;
      case 316: // Ruby ammy
      case 317: // Diamond ammy
        if (!player.canLogout()
            || System.currentTimeMillis() - player.getLastMoved() < 10000) {
          player.getActionSender()
              .sendMessage(
                  "You must stand peacefully in one place for 10 seconds!");
          return;
        }
        player.getActionSender().sendMessage(
            "You rub the amulet... be careful!");
        player.getActionSender().sendMessage(
            "All who use this cursed amulet automatically skull!");
        Instance.getDelayedEventHandler().add(new MiniEvent(player) {
          public void action() {
            String[] options = new String[] { "Altar", "Castle" };
            owner.setMenuHandler(new MenuHandler(options) {
              public void handleReply(final int option,
                  final String reply) {
                if (owner.isBusy()
                    || owner.inCombat()
                    || !owner.getInventory().contains(
                        item.id)) {
                  return;
                }
                if (owner.getLocation().inModRoom()
                    && !owner.isMod()) {
                  owner.getActionSender()
                      .sendMessage(
                          "A magical force stops you from teleporting.");
                  return;
                }
                owner.getActionSender().sendSound("spellok");
                switch (option) {
                case 0: // altar
                  int x = DataConversions.random(311, 327);
                  int y = DataConversions.random(210, 222);
                  while (world.getTile(x, y).hasGameObject()) {
                    x = DataConversions.random(311, 327);
                    y = DataConversions.random(210, 222);
                  }

                  owner.teleport(x, y, true);
                  owner.addSkull(1200000);
                  break;
                case 1: // castle
                  x = DataConversions.random(271, 283);
                  y = DataConversions.random(352, 363);
                  while (world.getTile(x, y).hasGameObject()) {
                    x = DataConversions.random(271, 283);
                    y = DataConversions.random(352, 363);
                  }
                  owner.teleport(x, y, true);
                  owner.addSkull(1200000);
                  break;
                default:
                  return;

                }
              }
            });
            owner.getActionSender().sendMenu(options);
          }
        });
        break;
      case 387: // Disk of Returning
        if (player.getLocation().wildernessLevel() >= 30
            || (player.getLocation().inModRoom() && !player.isMod())) {
          player.getActionSender().sendMessage(
              "The disk doesn't seem to work here.");
          return;
        }
        player.getActionSender().sendMessage(
            "The disk starts to spin...");
        Instance.getDelayedEventHandler().add(new MiniEvent(player) {
          public void action() {
            owner.resetPath();
            owner.teleport(131, 508, true);
            owner.getInventory()
                .remove(item.id, item.amount, false);
            owner.getActionSender().sendMessage(
                "You find yourself back in Varrock");
            owner.getActionSender().sendMessage(
                "The disk has now gone");
            owner.getActionSender().sendInventory();
          }
        });
        break;

      default:
        player.getActionSender().sendMessage(
            "Nothing interesting happens");
        return;
      }
    }
  }
View Full Code Here

    return player.isBusy() || player.isRanging() || player.accessingBank()
        || player.isDueling();
  }

  public void handlePacket(Packet p, IoSession session) throws Exception {
    Player player = (Player) session.getAttachment();
    int pID = ((RSCPacket) p).getID();
    Player affectedPlayer;

    if (busy(player)) {
      affectedPlayer = player.getWishToTrade();
      unsetOptions(player);
      unsetOptions(affectedPlayer);
      return;
    }
    switch (pID) {
    case 166: // Sending trade request
      affectedPlayer = world.getPlayer(p.readShort());
      if (affectedPlayer == null)
        return;
      if (affectedPlayer.isTrading()) {
        player.getActionSender().sendMessage(
            "That person is already trading");
        return;
      }
      if (affectedPlayer == null || affectedPlayer.isDueling()
          || !player.withinRange(affectedPlayer, 8)
          || player.isTrading() || player.tradeDuelThrottling()) {
        unsetOptions(player);
        return;
      }
      if (affectedPlayer == player) {
        player.setSuspiciousPlayer(true);
        Logger.println("Warning: " + player.getUsername()
            + " tried to trade to himself.");
        unsetOptions(player);
        return;
      }
      if (!new PathGenerator(player.getX(), player.getY(),
          affectedPlayer.getX(), affectedPlayer.getY()).isValid()) {
        player.getActionSender().sendMessage(
            "you can't reach this person");
        unsetOptions(player);
        return;
      }

      if ((affectedPlayer.getPrivacySetting(2) && !affectedPlayer
          .isFriendsWith(player.getUsernameHash()))
          || affectedPlayer.isIgnoring(player.getUsernameHash())) {
        player.getActionSender().sendMessage(
            "This player has trade requests blocked.");
        return;
      }

      player.setWishToTrade(affectedPlayer);
      player.getActionSender().sendMessage(
          affectedPlayer.isTrading() ? affectedPlayer.getUsername()
              + " is already in a trade"
              : "Sending trade request");
      affectedPlayer.getActionSender().sendMessage(
          player.getUsername() + " wishes to trade with you");

      if (!player.isTrading() && affectedPlayer.getWishToTrade() != null
          && affectedPlayer.getWishToTrade().equals(player)
          && !affectedPlayer.isTrading()) {
        player.setTrading(true);
        player.resetPath();
        player.resetAllExceptTrading();
        affectedPlayer.setTrading(true);
        affectedPlayer.resetPath();
        affectedPlayer.resetAllExceptTrading();

        player.getActionSender().sendTradeWindowOpen();
        affectedPlayer.getActionSender().sendTradeWindowOpen();
        world.addEntryToSnapshots(new Activity(player.getUsername(),
            player.getUsername() + " sent trade request "
                + affectedPlayer.getUsername() + " at: "
                + player.getX() + "/" + player.getY() + " | "
                + affectedPlayer.getX() + "/"
                + affectedPlayer.getY()));

      }
      break;
    case 211: // Trade accepted
      affectedPlayer = player.getWishToTrade();
      if (affectedPlayer == null || busy(affectedPlayer)
          || !player.isTrading() || !affectedPlayer.isTrading()) { // This
        // shouldn't
        // happen
        player.setSuspiciousPlayer(true);
        unsetOptions(player);
        unsetOptions(affectedPlayer);
        return;
      }

      player.setTradeOfferAccepted(true);

      player.getActionSender().sendTradeAcceptUpdate();
      affectedPlayer.getActionSender().sendTradeAcceptUpdate();

      if (affectedPlayer.isTradeOfferAccepted()) {
        player.getActionSender().sendTradeAccept();
        affectedPlayer.getActionSender().sendTradeAccept();
      }
      world.addEntryToSnapshots(new Activity(player.getUsername(), player
          .getUsername()
          + " accepted trade "
          + affectedPlayer.getUsername()
          + " at: "
          + player.getX()
          + "/"
          + player.getY()
          + " | "
          + affectedPlayer.getX()
          + "/"
          + affectedPlayer.getY()));

      break;
    case 53: // Confirm accepted
      affectedPlayer = player.getWishToTrade();
      if (affectedPlayer == null || busy(affectedPlayer)
          || !player.isTrading() || !affectedPlayer.isTrading()
          || !player.isTradeOfferAccepted()
          || !affectedPlayer.isTradeOfferAccepted()) { // This
        // shouldn't
        // happen
        player.setSuspiciousPlayer(true);
        unsetOptions(player);
        unsetOptions(affectedPlayer);
        return;
      }
      player.setTradeConfirmAccepted(true);

      if (affectedPlayer.isTradeConfirmAccepted()) {
        world.addEntryToSnapshots(new Activity(player.getUsername(),
            player.getUsername() + " finished trade "
                + affectedPlayer.getUsername() + " at: "
                + player.getX() + "/" + player.getY() + " | "
                + affectedPlayer.getX() + "/"
                + affectedPlayer.getY()));

        List<InvItem> myOffer = player.getTradeOffer();
        List<InvItem> theirOffer = affectedPlayer.getTradeOffer();

        if (!affectedPlayer.getInventory().canHold(myOffer, theirOffer)) {
          player.getActionSender()
              .sendMessage(
                  "The other player does not have room to accept your items.");
          affectedPlayer
              .getActionSender()
              .sendMessage(
                  "You do not have room in your inventory to hold those items.");
          unsetOptions(player);
          unsetOptions(affectedPlayer);
          return;
        }
        if (!player.getInventory().canHold(theirOffer, myOffer)) {
          player.getActionSender()
              .sendMessage(
                  "You do not have room in your inventory to hold those items.");
          affectedPlayer
              .getActionSender()
              .sendMessage(
                  "The other player does not have room to accept your items.");
          unsetOptions(player);
          unsetOptions(affectedPlayer);
          return;
        }

        int slot = -1;
        for (InvItem item : myOffer) {
          slot++;
          if (player.getInventory().countId(item.id) < item.amount) {
            player.setSuspiciousPlayer(true);
            unsetOptions(player);
            unsetOptions(affectedPlayer);
            return;
          }
          if (item.getDef().isMembers() && !World.isMembers()) {
            player.getActionSender().sendMessage(
                "You can not trade members items.");
            unsetOptions(player);
            unsetOptions(affectedPlayer);
            return;

          }

          if (player.getInventory().getSlot(slot).wielded) {
            player.getInventory().setWield(slot, false);
            ItemWieldableDef def = ItemAttributes
                .getWieldable(item.id);
            player.updateWornItems(
                def.getWieldPos(),
                player.getPlayerAppearance().getSprite(
                    def.getWieldPos()));
          }
          player.getInventory().remove(item.id, item.amount, false);
        }
        slot = -1;
        for (InvItem item : theirOffer) {
          slot++;
          if (affectedPlayer.getInventory().countId(item.id) < item.amount) {
            affectedPlayer.setSuspiciousPlayer(true);
            unsetOptions(player);
            unsetOptions(affectedPlayer);
            return;
          }
          if (item.getDef().isMembers() && !World.isMembers()) {
            affectedPlayer.getActionSender().sendMessage(
                "You can not trade members items.");
            unsetOptions(player);
            unsetOptions(affectedPlayer);
            return;

          }

          if (affectedPlayer.getInventory().getSlot(slot).wielded) {
            affectedPlayer.getInventory().setWield(slot, false);
            ItemWieldableDef def = ItemAttributes
                .getWieldable(item.id);
            affectedPlayer.updateWornItems(
                def.getWieldPos(),
                affectedPlayer.getPlayerAppearance().getSprite(
                    def.getWieldPos()));
          }
          affectedPlayer.getInventory().remove(item.id, item.amount,
              false);
        }
        MiscPacketBuilder loginServer = Instance.getServer()
            .getLoginConnector().getActionSender();
        long playerhash = DataConversions.usernameToHash(player
            .getUsername());
        long affectedPlayerhash = DataConversions
            .usernameToHash(affectedPlayer.getUsername());
        for (InvItem item : myOffer) {
          affectedPlayer.getInventory().add(item.id, item.amount,
              false);
        }
        for (InvItem item : theirOffer) {
          player.getInventory().add(item.id, item.amount, false);

        }
        boolean senddata = false;
        for (InvItem item : myOffer) {
          loginServer.tradeLog(playerhash, affectedPlayerhash,
              item.id, item.amount, player.getX(), player.getY(),
              1);
          if (item.amount > 10000000 || Formulae.isRareItem(item.id))
            senddata = true;
        }
        if (senddata)
          DataManager.reportHandler.submitDupeData(
              DataConversions.hashToUsername(playerhash),
              playerhash);
        senddata = false;
        for (InvItem item : theirOffer) {
          loginServer.tradeLog(affectedPlayerhash, playerhash,
              item.id, item.amount, player.getX(), player.getY(),
              1);
          if (item.amount > 10000000 || Formulae.isRareItem(item.id))
            senddata = true;
        }
        if (senddata)
          DataManager.reportHandler.submitDupeData(
              DataConversions.hashToUsername(affectedPlayerhash),
              affectedPlayerhash);

        player.getActionSender().sendInventory();
        player.getActionSender().sendEquipmentStats();
        long now = GameEngine.getTime();
        player.save();
        player.setLastSaveTime(now);
        affectedPlayer.save();
        affectedPlayer.setLastSaveTime(now);
        player.getActionSender().sendMessage("Trade completed.");

        affectedPlayer.getActionSender().sendInventory();
        affectedPlayer.getActionSender().sendEquipmentStats();
        affectedPlayer.getActionSender()
            .sendMessage("Trade completed.");

        unsetOptions(player);
        unsetOptions(affectedPlayer);
      }
      break;
    case 216: // Trade declined
      affectedPlayer = player.getWishToTrade();
      if (affectedPlayer == null || busy(affectedPlayer)
          || !player.isTrading() || !affectedPlayer.isTrading()) { // This
        // shouldn't
        // happen
        player.setSuspiciousPlayer(true);
        unsetOptions(player);
        unsetOptions(affectedPlayer);
        return;
      }
      affectedPlayer.getActionSender().sendMessage(
          player.getUsername() + " has declined the trade.");

      unsetOptions(player);
      unsetOptions(affectedPlayer);
      break;
    case 70: // Receive offered item data
      affectedPlayer = player.getWishToTrade();
      if (affectedPlayer == null
          || busy(affectedPlayer)
          || !player.isTrading()
          || !affectedPlayer.isTrading()
          || (player.isTradeOfferAccepted() && affectedPlayer
              .isTradeOfferAccepted())
          || player.isTradeConfirmAccepted()
          || affectedPlayer.isTradeConfirmAccepted()) { // This
        // shouldn't
        // happen
        player.setSuspiciousPlayer(true);
        unsetOptions(player);
        unsetOptions(affectedPlayer);
        return;
      }

      player.setTradeOfferAccepted(false);
      player.setTradeConfirmAccepted(false);
      affectedPlayer.setTradeOfferAccepted(false);
      affectedPlayer.setTradeConfirmAccepted(false);

      // player.getActionSender().sendTradeAcceptUpdate();
      // affectedPlayer.getActionSender().sendTradeAcceptUpdate();

      Inventory tradeOffer = new Inventory(player);
View Full Code Here

TOP

Related Classes of org.moparscape.msc.gs.model.Player

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.